用途
飞书日历(lark-calendar,v4)是围绕飞书日历与日程管理构建的技能,用于以命令行方式完成日程预约、日历维护、参会人管理和忙闲协调等工作。它以 lark-workflow-feishu-cli 技能集合的一部分形式提供,通过 lark-cli 命令调用。
主要能力
技能覆盖以下核心场景:
- 预约日程:这是最核心的场景,目标是以较低成本帮助用户完成日程预约。技能强调定位为智能助理,提供辅助决策,而不是表单填写机或替用户做主。
- 查看与搜索日程:可通过 Shortcut 或原生 API 查看日程安排、搜索日历与日程。
- 创建与更新日程:支持创建日程、更新日程、删除日程、获取日程以及查询日程视图。
- 参会人管理:支持添加、删除和获取日程参与人列表。
- 忙闲查询与时间推荐:可查询用户主日历的忙闲信息和 RSVP 状态,并在时间未确定时提供多个时间推荐方案。
使用方式
前置要求
- 开始前必须先用 Read 工具读取 ../lark-shared/SKILL.md,其中包含认证、权限处理。
- 所有 Shortcuts 在执行前,务必先用 Read 工具读取其对应的说明文档,禁止直接盲目调用命令。
Shortcuts(推荐优先使用)
Shortcut 是对常用操作的高级封装,格式为 lark-cli calendar +<verb> [flags]。有 Shortcut 的操作优先使用。
- +agenda:查看日程安排(默认今天)。
- +create:创建日程并邀请参会人(ISO 8601 时间)。
- +freebusy:查询用户主日历的忙闲信息和 rsvp 的状态。
- +suggestion:针对时间未确定的预约日程需求,提供多个时间推荐方案。
调用 +suggestion 前,务必读取 lark-calendar-suggestion 中的使用说明,禁止直接调用命令。示例:
lark-cli calendar +suggestion --start "2026-03-10T00:00:00+08:00" --end "2026-03-10T11:00:00+08:00" --attendee-ids "ou_xxx,oc_yyy" --duration-minutes 30
原生 API
- 调用 API 前必须先查看参数结构:lark-cli schema calendar.<resource>.<method>
- 调用 API:lark-cli calendar <resource> <method> [flags]
- 使用原生 API 时,必须先运行 schema 查看 --data / --params 参数结构,不要猜测字段格式。
资源包括:
- calendars:create(创建共享日历)、delete(删除共享日历)、get(查询日历信息)、list(查询日历列表)、patch(更新日历信息)、primary(查询用户主日历)、search(搜索日历)。
- event.attendees:batch_delete(删除日程参与人)、create(添加日程参与人)、list(获取日程参与人列表)。
- events:create(创建日程)、delete(删除日程)、get(获取日程)、instance_view(查询日程视图)、patch(更新日程)、search(搜索日程)。
- freebusys:list(查询主日历日程忙闲信息)。
核心概念
- 日历(Calendar):日程的容器。每个用户有一个主日历,也可以创建或订阅共享日历。
- 日程(Event):日历中的单个事件条目,包含起止时间、地点、标题、参与人等属性,支持单次与重复日程,遵循 RFC5545 iCalendar 国际标准。
- 全天日程(All-day Event):只按日期占用、没有具体起止时刻的日程,结束日期包含在日程时间内。
- 日程实例(Instance):日程的具体时间实例,本质是对日程的展开。普通日程和例外日程对应 1 个 Instance,重复性日程对应 N 个 Instance。按时间段查询时可通过实例视图将重复日程展开。
- 重复规则(Rrule / Recurrence Rule):定义重复性日程的重复规则,例如 FREQ=DAILY;UNTIL=20230307T155959Z;INTERVAL=14 表示每 14 天重复一次。
- 例外日程(Exception):重复性日程中与原重复性日程不一致的日程。
- 参会人(Attendee):日程的参与者,可以是用户、群、会议室资源、外部邮箱地址等,每个参与人有独立的 RSVP 状态。
- 响应状态(RSVP):参与人对日程邀请的回复状态(接受/拒绝/待定)。
- 忙闲时间(FreeBusy):查询用户在指定时间段的忙闲状态,用于会议时间协调。
资源关系:Calendar(日历)包含 Event(日程),Event 关联 Attendee(参会人)和 Reminder(提醒)。
时间与日期推断规范
在涉及时间推断时需遵循:
- 星期的定义:周一是一周的第一天,周日是一周的最后一天。计算下周一等相对日期时,务必基于当前真实日期和星期基准推算。
- 一天的范围:当用户提到明天、今天等泛指某一天时,时间范围默认覆盖整天,不要自行缩减。
- 历史时间约束:不能预约已完全过去的时间。唯一例外是跨越当前时间的日程,即开始时间在过去但结束时间在未来。
预约日程的工作流
- 智能推断默认值:标题、参与人、时长均存在默认值,无需频繁与用户确认。参会人如未明确指定其他人,默认仅为用户自己;搜索特定参与人(人、群、会议室)出现多个结果无法唯一确定时,必须询问用户选择确认,并记录为长期记忆。会议室目前不支持主动预定,除非上下文中已存在对应会议室 ID(omm_ 前缀)且需添加到日程中。标题根据对话上下文自动生成,无法推断则默认为「会议」。时长基于会议类型和上下文推断(如评审/汇报推断为 60 分钟),无法推断则默认 30 分钟。
- 时间建议与辅助决策:有明确时间点时,先查询该时间段参会人的忙闲状态(若参会人已有日程的 RSVP 状态为拒绝,则认为该时段空闲)。若均无冲突,直接确认并创建;若有冲突,提示用户并询问是否继续创建或重新选择时间。有时间区间时,获取该区间内所有参会人的多个时间推荐方案供用户选择,必须在用户确认方案后才能执行创建,且用户一旦选择推荐方案,无需再次查询忙闲信息。无任何时间信息时,默认推断一个合理区间并获取多个推荐方案供用户快速选择。生活类需求(如健身、游泳、遛弯、约饭、奶茶等,「约咖啡」算工作场景)预期不调用 suggestion 工具,应自行推断合适的非工作时间给用户确认,无法推断则主动询问并形成记忆。
- 模糊语义消解与长期记忆:针对用户专属时间表达习惯(如「上班后」「下班前」)或存在歧义的时间场景(如未指明上下午的 12 小时制),严禁主观臆断,应主动澄清并把个性化定义沉淀为长期偏好。
- 非阻断式执行:待用户确认具体时间选项后,执行 lark-cli calendar +create --summary "..." --start "..." --end "..." --attendee-ids ...
- 友好反馈:返回创建成功的日程摘要信息。
权限表
- calendars.create:calendar:calendar:create
- calendars.delete:calendar:calendar:delete
- calendars.get:calendar:calendar:read
- calendars.list:calendar:calendar:read
- calendars.patch:calendar:calendar:update
- calendars.primary:calendar:calendar:read
- calendars.search:calendar:calendar:read
- event.attendees.batch_delete:calendar:calendar.event:update
- event.attendees.create:calendar:calendar.event:update
- event.attendees.list:calendar:calendar.event:read
- events.create:calendar:calendar.event:create
- events.delete:calendar:calendar.event:delete
- events.get:calendar:calendar.event:read
- events.instance_view:calendar:calendar.event:read
- events.patch:calendar:calendar.event:update
- events.search:calendar:calendar.event:read
- freebusys.list:calendar:calendar.free_busy:read
适用场景
适用于需要通过飞书日历安排会议、协调参会人时间、查询忙闲、管理共享日历以及查看日程安排的工作场景,尤其适合将日程预约作为工作流一环进行自动化处理的用户。
限制与注意事项
- 涉及日期(时间)字符串与时间戳的相互转换时,务必调用系统命令或脚本代码等外部工具处理,以确保转换绝对准确。
- 使用原生 API 前必须先查看 schema,不要猜测字段格式。
- 会议室目前不支持主动预定。
- 不能预约已完全过去的时间。
- 关于收费、价格、平台兼容性等未在资料中提供的信息,暂未提供。