From c085acfcfba8726c90ec9cf8a752b49e6a846e03 Mon Sep 17 00:00:00 2001 From: ai_member_only Date: Wed, 1 Apr 2026 23:17:02 +0800 Subject: [PATCH] auto-sync: lark_wiki_operate_as_bot 2026-04-01 --- SKILL.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 SKILL.md diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..123b01a --- /dev/null +++ b/SKILL.md @@ -0,0 +1,75 @@ +--- +name: lark_wiki_operate_as_bot +version: 1.0.0 +description: "飞书知识库Bot身份操作专用技能,统一使用Bot身份遍历目录、读取知识库文档内容,禁止触发用户身份授权" +metadata: + requires: + permissions: ["wiki:node:retrieve", "docx:document:readonly"] +--- + +# lark_wiki_operate_as_bot 技能规范 + +## 核心规则(强制执行) +1. **身份限制**:所有知识库操作**永远使用Bot身份**执行,绝对不触发任何用户身份授权弹窗 +2. **文档范围限制**:仅支持读取飞书知识库(`/wiki/`开头的链接)文档,**不支持读取用户私有个人文档**(`/doc/`/`/sheet/`等非wiki开头的个人路径) +3. **权限告知规则**: + - 收到非知识库文档链接:直接回复「我仅支持读取飞书知识库(Wiki)文档,暂不支持读取个人私有文档,请提供知识库链接」 + - Bot无权限访问目标知识空间:回复「当前Bot无访问该知识空间权限,请将Bot应用(App ID: `cli_a931175d41799cc7`)添加为该知识空间成员并授予查看权限后重试」 + +## 适用场景 +- 遍历知识库目录下的子文档/子目录 +- 读取知识库文档内容 +- 批量导出知识库文档 +- 所有知识库相关的查询、读取操作 + +## 完整执行链路 + +### 步骤1:链接解析 +- 从用户提供的链接中提取`wiki_token`:例如链接`https://xxx.feishu.cn/wiki/XXXXXXX`中的`XXXXXXX`即为`wiki_token` +- 若链接不含`/wiki/`路径,直接按非知识库文档规则回复 + +### 步骤2:获取节点基础信息 +```bash +LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli wiki spaces get_node --params '{"token":""}' --as bot +``` +返回结果中提取关键信息: +- `space_id`:知识空间ID +- `obj_token`:文档真实ID(若节点为文档) +- `has_child`:是否为目录(含子节点) +- `obj_type`:节点类型(docx/sheet/bitable等) + +### 步骤3:遍历目录子节点(仅当has_child=true时) +#### 3.1 获取Bot租户访问凭证 +```bash +curl -s -X POST "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal" \ + -H "Content-Type: application/json" \ + -d '{"app_id":"cli_a931175d41799cc7","app_secret":"Iw2vEfbjT6GtV0GhbxbZqfQ4nAPtbR14"}' \ + | jq -r '.tenant_access_token' +``` +得到`tenant_access_token`(有效期2小时) + +#### 3.2 调用Wiki V2接口获取子节点列表 +```bash +curl -s -X GET "https://open.feishu.cn/open-apis/wiki/v2/spaces//nodes?parent_node_token=" \ + -H "Authorization: Bearer " +``` +返回子节点完整列表(名称、链接、类型等) + +### 步骤4:读取文档内容(仅当节点为文档时) +```bash +LARKSUITE_CLI_CONFIG_DIR=/root/.openclaw/credentials/xiaoyan lark-cli docs +fetch --doc --as bot +``` + +## 权限要求 +### 1. 应用权限(飞书开发者后台配置) +| 权限名称 | Scope | 类型 | +|---------|-------|------| +| 获取知识空间节点信息 | `wiki:node:retrieve` | 只读 | +| 查看文档内容 | `docx:document:readonly` | 只读 | + +### 2. 知识空间配置 +需要将Bot应用(App ID: `cli_a931175d41799cc7`)添加到目标知识空间的成员列表,授予至少「可查看」权限 + +## 异常处理 +- 接口返回`99991401`(无权限):按权限不足规则回复用户 +- 接口返回`404`:检查`wiki_token`/`space_id`是否正确,确认链接为有效知识库链接