SuperAPI AI 工具集

lark-calendar

办公与效率

查看项目

更新于 10-15 08:33

技能介绍

飞书日历(lark-calendar)是飞书 CLI 中的日历技能,用于管理日历日程和会议室。开始前需先阅读 ../lark-shared/SKILL.md 了解认证与权限处理。凡涉及预约日程/会议室、调整时间或查询/搜索会议室,第一步必须阅读 references/lark-calendar-schedule-meeting.md;仅编辑字段(改标题/描述)或增删参会人(不涉及时间和会议室)时可跳过,直接读 references/lark-calendar-update.md。

身份选择 按日程归属选择身份:查看/管理登录用户本人的日程使用 --as user(默认,绝大多数场景);查看/管理 bot 自己创建/拥有的日程使用 --as bot。作为字段取值的人称(参会人、会议 owner 等)不参与身份判定。示例:lark-cli calendar +agenda --as user(用户本人日程)、lark-cli calendar +agenda --as bot(bot 自建或参与的日程)。

主要能力(Shortcuts) +agenda 查看日程安排(默认今天);+meeting 通过日程事件 ID 获取关联的视频会议信息(日程开过视频会议才会有 meeting_id);+create 创建日程并邀请参会人(ISO 8601 时间);+update 更新既有日程字段或增量添加/移除参会人和会议室,重复性日程/例外必须传 --apply-to;+delete 删除日程,重复性日程/例外必须传 --apply-to;+freebusy 查询主日历的忙闲/RSVP 状态/空闲时间段;+room-find 针对明确时间块查找可用会议室;+rsvp 回复日程(接受/拒绝/待定);+join-event 凭分享 token 加入日程;+suggestion 推荐多个可用时间块方案;+transfer 转让日程组织者(不可逆,需 --yes);+list-attendees 列出参与人和会议室(支持按 --type 过滤 user / resource / chat / third_party)。

单项操作说明 +get:通过 calendar_id + event_id 获取单个日程详情,calendar_id 不传默认 primary。日程描述统一使用 description 字段,按 Markdown 富文本处理;+get 返回不含参会人和会议室。 +search-event:按关键词、时间范围和参会人搜索日程,仅返回基础字段,需详情走 +get;--attendee-ids 支持 ou_ 用户 / oc_ 群聊 / omm_ 会议室前缀,同类型内为 OR(并集)语义。 +delete:删除日程,可传 --notify=true。 +agenda:查看近期日程,默认当天,结果整理为按日期分组、按开始时间升序的时间线;已取消日程自动过滤,时间范围超过 40 天会自动拆分查询并合并结果。 +freebusy:一个入口承担四种视角——busy(合并后的忙碌区间)、raw_busy(原始日程块 + rsvp_status)、free(空闲区间,可带 --min-duration)、common_free(多人共同空闲区间,可带 --min-duration)。min-duration 为 Go duration 格式,如 30m、1h、90m。若目标是“给会议推荐合适时间段”,必须优先使用 +suggestion。

前置条件路由与规则 先判断是否重复性日程:若为重复性日程,必须先读重复性日程操作规范,并在用户未明确范围时先确认“仅此次/全部/此次及后续”(不要默认仅此次)。预约日程/会议、调整时间、查会议室需先读 schedule-meeting 文档;仅编辑字段或增删参会人需先定位 event_id 再读 update 文档;调用任何 Shortcut 前先读其对应 reference 文档。写操作完成后直接基于命令返回结果反馈用户,不要主动二次查询。

核心概念 日程实例是重复性日程展开后的具体时间实例;重复性日程例外是“仅此次”编辑产生的独立日程(拥有独立 event_id),删除/更新“全部”时必须同时处理例外。全天日程只按日期占用,结束日期包含在日程时间内。时间块是具体确定的时间段(如 14:00~15:00),+room-find 必须基于确定时间块,不能基于模糊范围。会议室是日程的一种参与人(resource attendee),不能脱离日程单独预定。日程会议 ID 是日程的历史视频会议 ID。日程分享链接(https://<domain>/calendar/share?token=<token>)与会议链接(https://<domain>/j/<number>)是不同事物,不可混用。

意图路由要点 用户口语中的“日程/日历”意图通常指向日程(Event)的创建或查询。查询过去的会议需先读“日程与视频会议的关系”;未来的会议等价于查日程;按关键词搜索日程走 +search-event;从日程获取关联视频会议 ID 走 +meeting;查看参会人/会议室走 +list-attendees;分享日程需先 calendar events share_info 取日程分享链接,再走 lark-im 发送。编辑已有日程的强信号是提到已存在日程锚点并表达修改动作,默认走编辑流,不能按新建处理。

时间推断规范 周一是一周第一天,周日是最后一天,计算“下周一”等相对日期基于当前真实日期推算。用户提到“明天”“今天”等泛指某天时,时间范围应覆盖整天,不要自行缩减。不能预约已经完全过去的时间,唯一例外是跨越当前时间的日程。

会议室规则 凡预定/查询/搜索可用会议室都必须进入 schedule-meeting 工作流。+room-find 时间输入必须是确定时间块。用户仅要求查会议室但未提供明确时间时,必须先调用 +suggestion 获取可用时间块,严禁猜测时间盲目调用。编辑已有日程时“添加会议室”默认是增量语义,保留已有会议室,只有明确“更换/移除会议室”时才删除旧会议室。

API Resources 通用调用格式:lark-cli calendar <resource> <method> [flags]。calendar_id 可直接传 primary 代表当前调用身份的主日历 ID。查询用户主日历:lark-cli calendar calendars primary。获取日程分享链接:lark-cli calendar events share_info --calendar-id <calendar_id> --event-id <event_id>。删除日程:lark-cli calendar events delete --calendar-id <calendar_id> --event-id <event_id>。列出资源方法:lark-cli calendar <resource> -h;查看方法 flag:lark-cli calendar <resource> <method> -h;查看 API 参数:lark-cli schema calendar.<resource>.<method>。resource 为 calendars / events / event.attendees / freebusys。

常用其他域命令 lark-cli contact +search-user --queries "<q1>,<q2>" --as user 批量搜索用户;lark-cli im +chat-search --query <query> --as user 搜索群聊。搜索用户/群不支持 bot 身份,必须用 --as user;解析不到或类型不明确时向用户澄清。

不在本 skill 范围 查询过去的视频会议记录走 lark-meeting;待办任务管理走 lark-task;通讯录走 lark-contact;即时通讯走 lark-im;会议室物理设施管理走管理员后台。

注意(强制性) 涉及日期(时间)字符串与时间戳的相互转换时,务必调用系统命令或脚本代码等外部工具处理,以确保转换绝对准确;换算禁止依赖容器默认时区(常为 UTC,会导致 8 小时偏移),必须显式指定目标时区。