- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段 - 强制每个任务都必须有唯一 id,且由用户负责生成 - 修改合并模式逻辑,merge=true 下保留未提及的旧任务 - 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress) - 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled - 优化状态转换校验,允许特定状态间合法切换 - 简化任务变更消息,移除详细的新增/更新/移除统计 - 更新文档和示例,明确 id 必须由用户生成和使用 - 修复和补充测试,增强状态转换和合并模式验证 - 调整任务时间戳生成逻辑,统一使用当前时间及索引 - 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
8.1 KiB
vc +notes
前置条件: 先阅读
../lark-shared/SKILL.md了解认证、全局参数和安全规则。
查询会议纪要,支持通过会议 ID、妙记 Token 或日程事件 ID 获取纪要文档、逐字稿、AI 总结、待办和章节。只读操作。
本 skill 对应 shortcut:lark-cli vc +notes。
命令
# 通过会议 ID 查询(逗号分隔支持批量,最多 50 个)
lark-cli vc +notes --meeting-ids 69xxxxxxxxxxxxx28
lark-cli vc +notes --meeting-ids 69xxxxxxxxxxxxx28,69xxxxxxxxxxxxx29
# 通过妙记 Token 查询(从妙记 URL 中提取)
lark-cli vc +notes --minute-tokens obbxxxxxxxxxxxxxxxxxx
lark-cli vc +notes --minute-tokens obbxxxxxxxxxxxxxxxxxx,obbyyyyyyyyyyyyyyyyyy
# 指定逐字稿输出目录(仅 --minute-tokens 路径有效)
lark-cli vc +notes --minute-tokens obbxxxxxxxxxxxxxxxxxx --output-dir ./output
lark-cli vc +notes --minute-tokens obbxxxxxxxxxxxxxxxxxx --overwrite
# 通过日程事件 ID 查询(从 calendar +agenda 获取 event_id)
lark-cli vc +notes --calendar-event-ids xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_0
# 输出格式
lark-cli vc +notes --meeting-ids 69xxxxxxxxxxxxx28 --format json
# 预览 API 调用
lark-cli vc +notes --meeting-ids 69xxxxxxxxxxxxx28 --dry-run
参数
| 参数 | 必填 | 说明 |
|---|---|---|
--meeting-ids <ids> |
三选一 | 会议 ID,逗号分隔支持批量 |
--minute-tokens <tokens> |
三选一 | 妙记 Token,逗号分隔支持批量 |
--calendar-event-ids <ids> |
三选一 | 日程事件 ID,逗号分隔支持批量 |
--output-dir <dir> |
否 | 逐字稿输出目录。未指定时默认落到 ./minutes/{minute_token}/transcript.txt(与 minutes +download 共享目录);显式指定时沿用旧布局 ./{output-dir}/artifact-{title}-{token}/transcript.txt。仅 --minute-tokens 路径有效 |
--overwrite |
否 | 覆盖已存在的逐字稿文件,仅 --minute-tokens 路径有效 |
--dry-run |
否 | 预览 API 调用,不执行 |
核心约束
1. 三种参数互斥
每次只能指定一种输入方式。同时传入多种会报错。
2. 仅支持 user 身份
该命令仅支持 user 身份,使用前需完成 lark-cli auth login。
3. 批量上限
每次最多传入 50 个 ID/Token。
4. 按路径检查权限
不同输入方式需要不同权限,命令会自动检查对应路径所需的 scope:
| 输入 | 所需权限 |
|---|---|
--meeting-ids |
vc:meeting.meetingevent:read、vc:note:read、vc:record:readonly |
--minute-tokens |
vc:note:read、minutes:minutes:readonly、minutes:minutes.artifacts:read、minutes:minutes.transcript:export |
--calendar-event-ids |
calendar:calendar:read、calendar:calendar.event:read、vc:meeting.meetingevent:read、vc:note:read、vc:record:readonly |
输出结果
有纪要文档时
返回 notes 数组,每条记录包含:
| 字段 | 说明 |
|---|---|
meeting_id |
会议 ID(--meeting-ids / --calendar-event-ids 路径) |
minute_token |
会议对应的妙记 Token(--meeting-ids / --calendar-event-ids 路径自动通过录制 API 反查并附加) |
note_id |
纪要 ID — 用于继续进入 Note 域(note +detail / note +transcript) |
note_display_type |
纪要展示类型:unknown / normal / unified,区分普通纪要和 unified 纪要 |
note_doc_token |
AI 智能纪要文档 Token — AI 生成的总结、待办、章节 |
meeting_notes |
用户绑定的会议纪要文档 Token 列表 — 用户主动关联到会议的文档(仅 --calendar-event-ids 路径返回) |
verbatim_doc_token |
逐字稿文档 Token — 完整的逐句文字记录,含说话人和时间戳;unified 纪要的逐字稿请改用 note +transcript |
shared_doc_tokens |
会中共享文档 Token 列表 |
creator_id |
创建者 ID |
create_time |
创建时间(格式化) |
选择哪个 token? 用户说"会议纪要""总结""待办""纪要内容" → 返回
note_doc_token和meeting_notes(如有)。用户说"逐字稿""完整记录""谁说了什么" → 见下方「按note_display_type路由逐字稿」。意图不明确时,展示所有文档链接让用户选择。📌 不确定该返回哪个 token?参见
vc-domain-boundaries.md的产物链路对比表,了解 AI 总结链路 vs 录制链路的区别。
按 note_display_type 路由逐字稿 / 原始记录
逐字稿走哪条路由由 note_display_type 决定,不要只看 verbatim_doc_token 是否为空:
| 字段 / 条件 | Agent 动作 |
|---|---|
| 用户要纪要正文 / 总结 / 待办 / 章节 | docs +fetch --api-version v2 --doc <note_doc_token> |
note_display_type=normal + 用户要逐字稿 |
docs +fetch --api-version v2 --doc <verbatim_doc_token> |
note_display_type=unknown + verbatim_doc_token 非空 + 用户要逐字稿 |
docs +fetch --api-version v2 --doc <verbatim_doc_token>;不要猜成 unified |
note_display_type=unknown + 无可用逐字稿 token |
先 note +detail --note-id <note_id> 复核,再按返回的展示类型路由 |
note_display_type=unified + 用户要逐字稿 / 原始记录 |
note +transcript --note-id <note_id> → 切到 lark-note |
minute_token 存在 + 用户要音视频媒体 |
minutes +download --minute-tokens <minute_token> |
unified纪要的逐字稿不是独立文档,必须用note +transcript按note_id拉取,输出更结构化。即使 unified 也返回了非空verbatim_doc_token,仍以note_display_type为准。
minute-tokens 路径的 AI 产物
通过 --minute-tokens 查询时,返回的 artifacts 字段包含 AI 内置产物:
| 字段 | 说明 |
|---|---|
artifacts.summary |
AI 总结(JSON 内联) |
artifacts.todos |
待办事项(JSON 内联,只读);每条含 content、is_done 及 todo_id。todo_id 仅供 minutes +todo 更新/删除待办时使用,不必展示给用户。新建妙记内待办请用 minutes +todo,不要用 lark-task |
artifacts.chapters |
章节纪要(JSON 内联) |
artifacts.keywords |
妙记推荐关键词(JSON 内联) |
artifacts.transcript_file |
逐字稿本地文件路径。默认落到 ./minutes/{minute_token}/transcript.txt(与 minutes +download 聚合);显式 --output-dir 时走旧布局 ./{output-dir}/artifact-{title}-{token}/transcript.txt |
如何获取输入参数
| 输入参数 | 获取方式 |
|---|---|
meeting_id |
vc +search 搜索历史会议 → 结果中的 id 字段 |
minute_token |
从妙记 URL 中提取,如 https://sample.feishu.cn/minutes/obbyyyyyyyyyyyyyyyyyy → obbyyyyyyyyyyyyyyyyyy |
calendar_event_id |
calendar +agenda 查看日程 → 结果中的 event_id 字段 |
常见错误与排查
| 错误现象 | 根本原因 | 解决方案 |
|---|---|---|
exactly one of ... is required |
未传入参数或同时传了多种 | 只指定一种输入方式 |
no notes available for this meeting |
该会议未生成纪要 | 尝试用 --minute-tokens 路径 |
121005 no permission |
非会议参与者无权查看 | 使用 --minute-tokens 降级到内置产物 |
missing required scope(s) |
权限不足 | 按提示运行 auth login --scope |
too many IDs |
超过批量上限 | 分批查询,每批最多 50 个 |
提示
- 默认使用
--format json输出,你更佳擅长解析 JSON 数据。 - 排查参数与请求结构时优先使用
--dry-run。 --meeting-ids和--calendar-event-ids路径最终都走纪要详情 API,需要vc:note:read权限。--minute-tokens路径无纪要权限时会自动降级,不会报错,而是下载内置产物到本地。
参考
- lark-vc — 视频会议全部命令
- lark-vc-search — 搜索历史会议(获取 meeting_id)
- lark-shared — 认证和全局参数