Files
Starlight_Lancher/.agents/skills/lark-calendar/references/lark-calendar-schedule-meeting.md

6.1 KiB
Raw Blame History

预约/改约日程或会议、查询/搜索可用会议室的工作流

执行摘要

  • 第一步永远是判断任务类型:新建日程,还是编辑已有日程。
  • 编辑已有日程时,必须先定位目标日程或实例的 event_id
  • 默认做智能助理,不做表单填写机。 能根据上下文补全的默认值就直接补全,仅在必须决策的冲突或无法唯一确定的场景下才发起询问。
  • 新建流先补默认值,编辑流先继承已定位日程信息。
  • 明确时间 → 进入 明确时间分支
  • 模糊时间或无时间信息 → 进入 模糊时间分支
  • BLOCKING REQUIREMENT: 面临时间方案或会议室方案的选择时,必须先向用户展示选项并等待确认,禁止未经确认直接创建/更新日程。
  • 必须按顺序执行。 不要跳过"任务类型判定""目标日程定位(编辑流)""补默认值/继承基线信息""判断时间明确性"这些前置步骤。

严禁行为

  • 严禁在未读取对应子命令文档前直接调用命令。
  • 严禁在尚未判断"新建"还是"编辑"之前,就直接进入创建日程或查会议室动作。
  • 严禁把带有既有日程锚点 + 修改动词的请求当成新建日程。
  • 严禁在编辑已有日程时跳过目标定位步骤。 未拿到唯一 event_id 前,不得调用 +update
  • 严禁在面临时间/会议室方案选择时,未经用户确认就擅自创建/更新日程。

适用场景

  • "帮我约个会" / "下周找时间和 XX 开会"
  • "帮我订/找/搜索一个可用会议室"
  • "明天下午3点约个日程"
  • "把明天上午的日程加上 小明"
  • "给下周一的周会换个会议室"
  • "把这个日程改到明天下午,并加上学清 F201"

核心概念

  • 会议室是日程的一种参与人attendee / resource不能脱离日程单独预定。
  • 预定或查找会议室,均需先确定时间块。
  • 当用户说"查会议室""找会议室",默认意图是查会议室可用性,不是检索会议室资源名录。

任务类型判定

类型 典型语言信号 第一动作
新建日程 "约个会""安排会议""新建日程""订个会议室开会" 补默认值,再进入时间判断
编辑已有日程 "给某日程加人/删人/加会议室""把某日程改到…""换会议室" 先定位目标 event_id

规则:

  • 只要同时出现既有日程锚点(标题、时间段、这个日程这场会)和修改动词(添加、移除、改到、换),默认判定为编辑。
  • 对重复性日程的编辑,必须先定位到对应实例的 event_id

编辑流:先定位目标日程

定位规则:

  • 优先利用用户给出的标题、日期、时间范围等锚点,通过 +agenda+search-event 或实例视图缩小范围
  • 命中多个候选日程时,必须向用户展示候选项并要求确认
  • 重复性日程必须继续定位到该次实例的 event_id

编辑流分支路由:

编辑子场景 下一步
仅增删普通参会人/群组,不改时间,不涉及会议室 直接 +update(详见 lark-calendar-update.md
新增会议室,不改时间 基于已定位日程 start/end → 明确时间分支
只改时间,不涉及会议室 判断时间明确性 → 对应分支
既改时间,又新增/更换会议室 先确定最终时间 → 再查会议室 → 落地

新建日程:智能推断默认值

  • 标题:根据上下文自动生成;如无法推断,默认"会议"
  • 参会人:如未指定,默认仅用户自己
  • 时长:基于上下文推断;默认 30 分钟
  • 无时间信息:默认推断合理区间(如"今天"或"近两天"),进入时间推荐流程,禁止询问用户

搜索参与人出现多个结果无法唯一确定时,必须询问用户并记录长期记忆。

判断时间是否明确

时间基准规则:

  • 新建流:使用用户给出的时间,或默认补全出的时间范围
  • 编辑流且不改时间:已定位日程的当前 start/end 就是明确时间
  • 编辑流且改时间:用户想改到的新时间;若表达模糊,进入模糊时间分支 注意: 在执行修改日程/会议时间的任务时,必须先获取原日程的持续时长。如果用户只提供了新的开始时间,你必须根据原时长自动计算出新的结束时间,严格保持原时长不变,禁止擅自改变原日程的时长。

分支路由

判定结果 下一步读取
明确时间 schedule-clear-time.md
模糊时间 / 无时间信息 schedule-fuzzy-time.md

落地日程变更

用户确认后调用:

lark-cli calendar +create \
  --summary "..." \
  --start "<start>" \
  --end "<end>" \
  --attendee-ids "ou_xxx,oc_xxx,omm_xxx"

lark-cli calendar +update \
  --event-id "<event_id>" \
  --start "<start>" \
  --end "<end>" \
  --add-attendee-ids "omm_new_room"

落地规则:

  • 编辑流必须始终沿用前面定位得到的目标 event_id;禁止在最后一步重新猜测目标日程
  • 编辑流中"新增会议室"默认仅追加 room_id,不移除已有会议室
  • 仅当用户明确说"更换会议室"时,才同时 --remove-attendee-ids 旧 + --add-attendee-ids
  • 需要会议室时,将选中的 room_id 写入参与人列表

参考