docs/wiki/集成扩展/飞书云盘数据源接入说明.md
飞书云盘数据源(feishu_drive / lark_drive)可以把飞书/Lark 云盘某个文件夹下的文档和文件自动同步到 WeKnora 知识库,支持增量同步、定时同步和子文件夹递归。
cli_ 开头)和 App Secret,配置数据源时需要填写。注意:飞书(open.feishu.cn)和 Lark(open.larksuite.com)是两个独立体系,应用不通用。同步飞书云盘用飞书应用,同步 Lark Drive 用 Lark 应用,凭据不能混用。
在应用后台「权限管理」中开通以下 3 个权限:
| 权限标识 | 名称 | 用途 | 缺少时的表现 |
|---|---|---|---|
drive:drive:readonly | 查看云空间中的文件 | 列举文件夹内容(list API)、下载云盘普通文件 | 加载文件夹/同步时报 403,提示「需先将文件夹分享给应用所在的群」 |
drive:export:readonly | 导出云文档 | 把 docx/doc/sheet/bitable 导出为 docx/xlsx 再解析 | 云文档类文件同步失败 |
docx:document:readonly | 读取新版文档内容 | 通过 blocks API 解析 docx 文档正文与附件(导出失败时的主路径) | docx 文档解析失败或回退导出也失败 |
说明:
wiki:wiki:readonly,其余权限相同。drive:drive(读写)或 space:document:retrieve 作为替代,但推荐只开只读的 drive:drive:readonly,最小授权。飞书的权限模型要求:即使应用开通了上述 API 权限,也只能访问被显式分享给它的文件。
PS: 不拉进群也会导致没有访问权限
这是一次性操作,但不做的话,加载文件夹会直接报「应用无权访问该文件夹」。
入口:知识库 → 设置 → 数据源 → 新建数据源,选择「飞书云盘」。
选择「飞书云盘」(国际版选「Lark Drive」)。
填写 App ID 和 App Secret,点击下一步时系统会自动测试连接(验证 tenant_access_token 能否获取)。此步只验证应用身份,不验证文件夹权限。
folder_token,或直接粘贴文件夹的完整链接(飞书 https://xxx.feishu.cn/drive/folder/<token> 或 Lark https://xxx.larksuite.com/drive/folder/<token>,系统按路径自动提取 token,两种链接都支持);注意:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 同步计划 | cron 表达式,默认每 6 小时一次;留空则只手动触发 | 0 0 */6 * * * |
| 同步模式 | 增量(按修改时间游标)/ 全量 | 增量 |
| 冲突策略 | 内容变更时覆盖 / 跳过 | 覆盖 |
| 同步删除 | 源端删除的文档只计数,不自动删除知识库内容,需在知识库手动删除 | 开启 |
保存后数据源开始按策略运行,也可在数据源卡片上手动「触发同步」。
| 云盘类型 | 处理方式 |
|---|---|
docx / doc(新旧文档) | blocks API 解析正文与附件,失败时回退导出为 docx 解析 |
sheet / bitable(表格/多维表格) | 导出为 xlsx 解析 |
file(普通上传文件,如 PDF/PPT/图片) | 直接下载后按文件类型解析 |
shortcut(快捷方式) | 自动解析为目标文件同步(快捷方式不能指向文件夹) |
folder(文件夹) | 递归遍历 |
mindnote / slides / board | 不支持,跳过 |
补充行为:
飞书新版云文档(docx)有两种解析路径,由环境变量 FEISHU_DOCX_PARSE_MODE 控制。该变量作用于 WeKnora app 服务(不是数据源配置),对飞书云盘和飞书知识库两个连接器同时生效。
| export(默认) | blocks | |
|---|---|---|
| 环境变量值 | 留空 / export | blocks |
| 解析路径 | 异步导出 API -> .docx 二进制 -> docreader 解析 | blocks API -> Markdown |
| 图片与文档关联 | ✅ 图片 inline 进父文档,parent_chunk_id 关联 | ❌ 图片作为独立知识条目,与文档割裂 |
| 检索 / Wiki / 智能体能否关联图片 | 是 | 否 |
| 同步速度 | 慢(异步导出 + docx 解析) | 快 |
| docx 内附件(file block) | 丢失(.docx 导出不含) | 保留,作为独立条目 |
| 所需权限 | drive:drive:readonly + drive:export:readonly | drive:drive:readonly + drive:export:readonly + docx:document:readonly |
parent_chunk_id 建立同知识条目的父子关联,三个场景都能在一次检索中把图片内容与文档一起返回。![图片]() 占位符,图片单独下载成独立知识条目,与父文档只有元数据级弱关联。WeKnora 的检索、Wiki 构建、智能体问答链路都不会把图片内容关联回文档,图片和正文是割裂的。在 WeKnora 服务的 .env 或 docker-compose.yml 的 app 服务环境变量中设置:
FEISHU_DOCX_PARSE_MODE=blocks
不设置或设为 export 即用默认模式。修改后需重启 app 服务生效。
| 现象 | 原因与处理 |
|---|---|
| 「请输入具体文件夹的 folder_token,不支持云空间根目录」 | 输入为空或粘贴的是根目录链接,换具体文件夹链接 |
| 「应用无权访问该文件夹。请…分享给应用所在的群」 | 未完成第 3 节的分享,或分享的对象不是应用所在的群 |
| 「应用凭证无效或缺少云盘权限」 | App ID/Secret 错误,或第 2 节权限未开通/未发布版本 |
| 「folder_token 不存在或已删除」 | token 复制有误,从文件夹「分享 → 复制链接」重新获取 |
| 同步日志中部分条目失败 | 点开日志看失败阶段:list_children 多为子文件夹未授权,fetch 多为单文件权限或类型不支持 |
| 知识列表中来源显示 | 云盘同步的文档来源标记为「飞书云盘」,与知识库同步的「飞书」区分 |