From 8432b94c54c1af442286721a044ee2cca8987157 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Tue, 24 Feb 2026 14:49:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(doc):=20=E9=A3=9E=E4=B9=A6=E2=86=92inbox?= =?UTF-8?q?=20skill=20=E4=B8=8E=E6=B5=81=E7=A8=8B=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E5=9C=A8=20AGENTS=20=E4=B8=AD=E5=BC=95?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .cursor/FLOW-FEISHU-INBOX.md | 67 +++++++++++++++++++++++++ .cursor/skills/feishu-to-inbox/SKILL.md | 47 +++++++++++++++++ AGENTS.md | 2 + 3 files changed, 116 insertions(+) create mode 100644 .cursor/FLOW-FEISHU-INBOX.md create mode 100644 .cursor/skills/feishu-to-inbox/SKILL.md diff --git a/.cursor/FLOW-FEISHU-INBOX.md b/.cursor/FLOW-FEISHU-INBOX.md new file mode 100644 index 0000000..8e41b3e --- /dev/null +++ b/.cursor/FLOW-FEISHU-INBOX.md @@ -0,0 +1,67 @@ +# 飞书会议记录 → Inbox → Inbox 分析 流程 + +本文描述如何跑通:**飞书会议记录通过飞书/机器人进入 inbox,再走 inbox 分析**。 + +--- + +## 流程总览 + +``` +飞书(会议纪要/文档) → 进入 inbox/ → 执行 inbox 分析(阶段一:分析报告 → 阶段二:执行并归档) +``` + +- **Inbox 分析**:按 `.cursor/skills/inbox-process/SKILL.md` 执行(识别实体、更新/新建 bible 与 beat、归档)。 +- **飞书 → inbox**:有两种方式,见下。 + +--- + +## 方式一:在 Cursor 里用飞书 MCP 拉取到 inbox(推荐先跑通) + +无需在飞书里配置机器人,在 Cursor 对话中完成「拉取 + 分析」。 + +### 步骤 + +1. **把飞书文档拉到 inbox** + - 对 AI 说:**「把飞书文档拉到 inbox」** 或 **「从飞书拉会议记录到 inbox」**,并给出: + - 飞书文档链接(如 `https://xxx.feishu.cn/docx/XXXX` 或 `https://xxx.feishu.cn/wiki/YYYY`),或 + - 文档标题/关键词(由 AI 用 MCP 搜索后选一个)。 + - AI 会使用 **user-lark-mcp** 的 `docx_v1_document_rawContent`(或先 `wiki_v2_space_getNode` 再取正文)拉取正文,写入 `inbox/{文件名}.md`,并在文首注明来源(飞书 docx/wiki)。 + +2. **对刚进 inbox 的文件跑 inbox 分析** + - 对 AI 说:**「对 inbox 的 {文件名} 跑 inbox 分析」** 或 **「处理 inbox / 处理 eureka」**(若只有一个待处理文件)。 + - AI 按 `inbox-process` skill:先做**阶段一(只读分析 + 输出报告)**,等你确认后做**阶段二(更新/新建 bible 与 beat、归档、摘要)**。 + +### 依赖 + +- Cursor 已启用 **user-lark-mcp**,且已配置好飞书应用与 token(用户身份拉 doc 需 useUAT)。 +- 文档链接中的 token:wiki 链接用 `wiki/` 后的节点 token;docx 链接用 `docx/` 后的 `document_id` 调 `docx_v1_document_rawContent`。 + +--- + +## 方式二:飞书机器人自动推到 inbox(后续扩展) + +希望「会议结束或有人分享会议纪要到群」时,自动在仓库里生成 inbox 文件时,可做: + +1. **飞书端** + - 创建自定义应用,开通所需权限(如:云文档读、群消息接收、会议相关事件等)。 + - 机器人订阅事件,例如: + - 群消息中有人发送会议纪要文档链接;或 + - 日历/会议结束后生成纪要 doc,通过 webhook 通知。 +2. **本地/服务器端** + - 提供一个 HTTP 端点(或 GitHub App / 仓库 webhook),接收飞书发来的「文档 link 或 document_id」。 + - 该端点调用飞书 API 拉取文档正文,在仓库中创建 `inbox/{标题或日期}.md`(或先写临时文件再由 Cursor 移动)。 +3. **分析** + - 你打开 Cursor 后对 AI 说「处理 inbox」或指定「对 inbox 的 xxx 跑 inbox 分析」即可。 + +当前 MCP 没有「会议事件」专用接口,机器人方案需要你在飞书开放平台配置事件与 webhook,并与仓库写入方式对接。 + +--- + +## 小结 + +| 阶段 | 做法 | +|----------------|------| +| 飞书 → inbox | **方式一**:在 Cursor 说「把飞书文档/会议记录拉到 inbox」并给链接或关键词,由 AI 用 Lark MCP 拉取并写入 `inbox/`。 | +| Inbox 分析 | 说「对 inbox 的 {文件名} 跑 inbox 分析」或「处理 inbox」,按 `inbox-process` 做分析 → 确认 → 执行并归档。 | + +先按方式一在 Cursor 里跑通一次「拉一条会议记录 → 跑 inbox 分析」,再如需自动化可扩展方式二。 diff --git a/.cursor/skills/feishu-to-inbox/SKILL.md b/.cursor/skills/feishu-to-inbox/SKILL.md new file mode 100644 index 0000000..1d01696 --- /dev/null +++ b/.cursor/skills/feishu-to-inbox/SKILL.md @@ -0,0 +1,47 @@ +--- +name: feishu-to-inbox +description: Use when 把飞书文档拉到 inbox、从飞书拉会议记录、飞书文档进 inbox、Feishu doc to inbox、Lark doc to inbox. 通过飞书 MCP 拉取文档正文并写入项目 inbox 目录,便于后续走 inbox 分析。 +--- + +# 飞书文档拉取到 Inbox + +当用户希望把飞书(Feishu/Lark)上的文档(如会议记录、Wiki 页面)拉取到本项目的 `inbox/` 目录时,按以下步骤执行。 + +## 触发表述 + +- 「把飞书文档拉到 inbox」「从飞书拉会议记录到 inbox」「飞书文档进 inbox」 +- 提供**飞书文档链接**或**文档标题/关键词**(用 MCP 搜索后选一个) + +## 步骤 + +### 1. 确定要拉取的文档 + +- 若用户给了**完整链接**: + - **Docx 链接**:`https://xxx.feishu.cn/docx/XXXX` → `document_id` = `XXXX`(即 `docx/` 后那一段) + - **Wiki 链接**:`https://xxx.feishu.cn/wiki/YYYY` → 节点 token = `YYYY`;Wiki 节点可能关联底层 docx,需先查节点信息得到实际文档 token 再取正文 +- 若用户只给了**标题或关键词**:调用 **user-lark-mcp** 的 `docx_builtin_search`(`search_key` 为关键词),在结果中让用户确认要拉取哪一篇,或取第一篇,得到对应 `document_id` + +### 2. 拉取正文 + +- **Docx**:调用 **user-lark-mcp** 的 `docx_v1_document_rawContent`,传入 `path.document_id`,**useUAT: true**(用户身份才能读个人/协作文档) +- **Wiki 节点**:若链接是 wiki: + - 先调用 `wiki_v2_space_getNode`,`params.token` = 链接中 `wiki/` 后的 token,`params.obj_type` = `wiki` + - 若返回中有关联的 docx 文档 id,用该 id 调 `docx_v1_document_rawContent`;若节点即 docx 类型,按文档 token 取正文 + +### 3. 写入 inbox + +- 文件名:优先用文档标题(去掉非法文件名字符),或 `会议记录-{日期}` / `飞书文档-{日期}.md`,避免与已有 inbox 重名 +- 保存路径:`inbox/{文件名}.md`(项目根下的 `inbox/`,不是 `kb/inbox/`) +- 内容格式: + - 文首可加一行来源说明,例如:`> 来源:飞书 Docx` 或 `> 来源:飞书 Wiki · docx`,若有链接可写 `> 链接:{用户提供的链接}` + - 接着写 MCP 返回的正文(已是纯文本,可保留换行) + +### 4. 建议下一步 + +- 告知用户已写入 `inbox/{文件名}.md` +- 提示可对 AI 说:**「对 inbox 的 {文件名} 跑 inbox 分析」** 或 **「处理 inbox」**,按 `inbox-process` 流程做分析与归档 + +## 注意 + +- 未归档的 inbox 文件不要写入 `archived` frontmatter;归档由 inbox 分析流程在确认执行后完成 +- 若 MCP 返回错误(如无权限、文档不存在),如实报错并提示检查链接或飞书应用权限 diff --git a/AGENTS.md b/AGENTS.md index 18a5d4c..cc7be09 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -96,6 +96,8 @@ Templater 语法对应:`<% await tp.system.prompt("提示", "默认值") %>` 当被要求处理某个 inbox 文件时,按 **`.cursor/skills/inbox-process/SKILL.md`** 执行全流程(识别实体、更新/新建 bible、Beat→Bible 反向同步、归档、输出摘要)。流程与摘要格式以该 skill 为准。 +若需将**飞书会议记录/文档**纳入 inbox 再分析:先用 **`.cursor/skills/feishu-to-inbox/SKILL.md`** 通过飞书 MCP 拉取文档到 `inbox/`,再对生成的文件跑 inbox 流程。端到端说明见 **`.cursor/FLOW-FEISHU-INBOX.md`**。 + ## 一致性检查 当被要求执行一致性检查时: