- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段 - 强制每个任务都必须有唯一 id,且由用户负责生成 - 修改合并模式逻辑,merge=true 下保留未提及的旧任务 - 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress) - 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled - 优化状态转换校验,允许特定状态间合法切换 - 简化任务变更消息,移除详细的新增/更新/移除统计 - 更新文档和示例,明确 id 必须由用户生成和使用 - 修复和补充测试,增强状态转换和合并模式验证 - 调整任务时间戳生成逻辑,统一使用当前时间及索引 - 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
8.9 KiB
vc +search
前置条件: 先阅读
../lark-shared/SKILL.md了解认证、全局参数和安全规则。
搜索已结束的历史会议记录,支持关键词、时间范围、组织者、参与者以及会议室等多条件过滤。只读操作,不修改任何会议数据。
本 skill 对应 shortcut:lark-cli vc +search(调用 POST /open-apis/vc/v1/meetings/search)。
关键词使用边界
--query 只用于真实会议关键词,例如会议主题、项目名、评审名、客户名。用户只是说"我这月参加的所有视频会议"、"最近两周我组织的所有视频会议"、"总结主要议题 / 看看参会情况"时,本质是历史会议列表和后续总结,不要把"回顾"、"所有视频会议"、"总结主要议题"等动作词放进 --query。这类请求应先用时间范围 + --participant-ids / --organizer-ids 搜全量候选,再按结果继续取纪要或录制信息。
列表阶段只负责找会议记录;总结阶段必须继续取证。若用户要求"主要议题"、"主要决策"、"参会情况",先确认搜索结果的 meeting_id、时间、组织者/参与者符合过滤条件,然后用 vc +notes 或 vc +recording / minutes 读取纪要、妙记或录制信息。没有纪要或妙记时,如实说明只能基于会议标题/参会数据汇总,不要编造议题。
典型触发表达
以下说法通常应优先使用 vc +search:
- 今天开过的会
- 今天开了哪些会
- 最近参加过哪些会
- 我这周开过的会
- 已结束的会议
- 历史会议记录
命令
# 关键词搜索
lark-cli vc +search --query "周会"
# 查询某一天开过的会(单日查询时,start 和 end 必须填写同一天)
lark-cli vc +search --start 2026-03-10 --end 2026-03-10
# 按时间范围搜索
lark-cli vc +search --start "2026-03-10T00:00+08:00" --end "2026-03-17T00:00+08:00"
lark-cli vc +search --start 2026-03-10 --end 2026-03-17
# 关键词 + 时间范围
lark-cli vc +search --query "周会" --start "2026-03-10T00:00+08:00" --end "2026-03-17T00:00+08:00"
lark-cli vc +search --query "周会" --start "2026-03-10T00:00+08:00"
lark-cli vc +search --query "周会" --end "2026-03-17T00:00+08:00"
# 按组织者过滤(open_id,逗号分隔)
lark-cli vc +search --organizer-ids "ou_a,ou_b"
# 按参与者过滤(open_id,逗号分隔)
lark-cli vc +search --participant-ids "ou_x,ou_y"
# 查询我这个月参加过的历史会议,不带关键词
lark-cli vc +search --start "<YYYY-MM-DD>" --end "<YYYY-MM-DD>" --participant-ids "ou_me"
# 查询最近两周我组织的历史会议,不带关键词
lark-cli vc +search --start "<YYYY-MM-DD>" --end "<YYYY-MM-DD>" --organizer-ids "ou_me"
# 按会议室过滤
lark-cli vc +search --room-ids "123,456"
# 多条件组合查询
lark-cli vc +search --organizer-ids "ou_a" --room-ids "123" --start "2026-03-10T00:00+08:00"
# 分页查询
lark-cli vc +search --query "周会" --page-size 15
lark-cli vc +search --query "周会" --page-token "next_page_token"
# 输出为表格/可读格式
lark-cli vc +search --query "周会" --format json
参数
| 参数 | 必填 | 说明 |
|---|---|---|
--query <text> |
否 | 搜索关键词 |
--start <time> |
否 | 开始时间(ISO 8601 或仅日期) |
--end <time> |
否 | 结束时间(ISO 8601 或仅日期) |
--organizer-ids <ids> |
否 | 组织者 open_id 列表,逗号分隔 |
--participant-ids <ids> |
否 | 参与者 open_id 列表,逗号分隔 |
--room-ids <ids> |
否 | 会议室 ID 列表,逗号分隔 |
--page-size <n> |
否 | 每页数量,默认 15,最大 30 |
--page-token <token> |
否 | 翻页标记,用于获取下一页 |
--dry-run |
否 | 预览 API 调用,不执行 |
核心约束
1. 至少提供一个过滤条件
所有参数均可选,但必须至少提供一个过滤条件:--query、--start、--end、--organizer-ids、--participant-ids 或 --room-ids。
没有真实关键词时,时间范围或人员过滤已经满足这个约束,--query 可以省略。
涉及"本月"、"最近两周"这类相对时间时,先基于执行当天计算 "<YYYY-MM-DD>" 占位符,再运行命令;不要沿用文档示例生成时的具体日期。
2. 仅搜索历史会议
vc +search 只能搜索已结束的历史会议记录,不用于查询未来日程。查询未来会议安排请使用 lark-calendar。
3. 仅支持 user 身份
该接口仅支持 user 身份,使用前需完成 lark-cli auth login 并具备 vc:meeting.search:read 权限。
4. 支持分页
当返回 has_more=true 时,使用响应中的 page_token 配合 --page-token 获取下一页结果。
5. 机器人可同时加入多个会议
机器人支持同时加入多个正在进行中的会议;加入新会议前,不需要先退出已经在会中的其他会议。
这意味着:
- 不要假设 bot 一次只能在一个会议中
- 如果用户要求 bot 再加入另一场会,可以直接继续执行对应的入会命令
- 只有在用户明确要求结束某一场会中的 bot 参会时,才调用对应的离会命令
6. 日期型 --end 包含当天整天
当 --end 传入的是仅日期格式(如 2026-03-10)时,CLI 会将它解释为当天 23:59:59,而不是当天 00:00:00。
这意味着:
--start 2026-03-10 --end 2026-03-10表示只查2026-03-10当天--start 2026-03-10 --end 2026-03-11表示查询2026-03-10和2026-03-11两天
如果用户说“昨天开过的会”“今天开过的会”“某一天开过的会”,应把 --start 和 --end 都设置为同一天,而不是把 --end 设成下一天。
时间格式
--start 和 --end 支持以下时间格式:
| 格式 | 示例 | 说明 |
|---|---|---|
| ISO 8601(带时区) | 2026-03-10T14:00:00+08:00 |
推荐 |
| ISO 8601(不带时区) | 2026-03-10T14:00:00 |
按本地时区解析 |
| 仅日期 | 2026-03-10 |
按天粒度解析;若用于 --end,表示当天 23:59:59 |
输出结果
- 默认输出 JSON,包含
items、total、has_more和page_token。
Pagination (has_more / page_token)
- 当结果中返回
has_more=true时,说明还有更多页可继续获取。 - 继续翻页时,使用响应中的
page_token搭配--page-token发起下一次查询。 - 不要假设调大
--page-size就能拿全结果;分页遍历时应以has_more和page_token为准。 - 未明确要求全量时,
total数量小于 50 可自动分页获取所有结果;total数量大于 50 时,先向用户确认是否继续获取全部结果。 - 用户明确说"所有 / 全部 / 统计 / 按时间排序"时,该全量意图优先于
total > 50的确认门槛;直接完成分页和去重,再排序或统计,不要只用第一页回答。
# First page
lark-cli vc +search --query "周会" --page-size 15
# Next page
lark-cli vc +search --query "周会" --page-size 15 --page-token "<PAGE_TOKEN>"
搜索结果中的下一步
搜索结果中的 meeting_id 可直接用于继续查询会议纪要或妙记:
# 如果要会议纪要 / 逐字稿 / AI 总结 / 待办 / 章节
lark-cli vc +notes --meeting-ids <MEETING_ID>
# 如果要会议对应的妙记信息 / minute_token / 妙记链接
lark-cli vc +recording --meeting-ids <MEETING_ID>
# 然后再用返回的 minute_token 调用:
lark-cli minutes minutes get --params '{"minute_token":"<MINUTE_TOKEN>"}'
常见错误与排查
| 错误现象 | 根本原因 | 解决方案 |
|---|---|---|
| 命令直接报错,要求提供过滤条件 | 没有传入 --query、时间范围或任何过滤 ID |
至少补充一个过滤条件后重试 |
| 时间参数校验失败 | --start 或 --end 格式不合法 |
改用 ISO 8601 或 YYYY-MM-DD |
| 搜不到未来会议 | vc +search 只查历史会议 |
改用 lark-calendar 查询未来日程 |
| 权限不足 | 未授权 vc:meeting.search:read |
使用 auth login 完成授权 |
提示
- 必须使用
--format json输出,你更佳擅长解析 JSON 数据。 - 排查参数与请求结构时优先使用
--dry-run。 - 搜索的时间范围最大为 1 个月,如果需要搜索更长时间范围的会议,需要拆分为多次时间范围为一个月查询。
- 不要使用
yesterday、today这类相对时间字面量;请先转换成明确日期,例如2026-03-10。 - 用户如果明确问的是“妙记信息”而不是“纪要内容”,不要默认走
vc +notes;应先用vc +recording。
参考
- lark-vc -- 视频会议全部命令
- lark-vc-recording -- 查询会议对应的 minute_token
- lark-vc-notes -- 获取会议纪要
- lark-shared -- 认证和全局参数