lark-calendar 是一个面向 AI 智能体的日历操作技能(skill),发布于 open.feishu.cn,通过 lark-cli 命令行工具操作飞书/Lark 日历中的日程。使用开始前需先阅读 ../lark-shared/SKILL.md(认证、权限处理)。
【用途与身份】 该技能按日程归属选择身份:查看/管理登录用户本人的日程使用 --as user(默认,绝大多数场景);查看/管理 bot 自己创建或拥有的日程使用 --as bot。人称映射规则为:「我」指登录用户,「你」指应用(bot);作为字段取值的人称(参会人、会议 owner 等)不参与身份判定。
【主要能力(Shortcuts)】
- +agenda:查看日程安排(默认今天),结果按日期分组、按开始时间升序整理。
- +meeting:通过日程事件 ID 获取关联的视频会议信息(meeting_id、meeting_note);视频会议链接获取需走 +get 命令。
- +create:创建日程并邀请参会人(ISO 8601 时间)。
- +update:更新既有日程字段,或独立增量添加/移除参会人和会议室;重复性日程/例外必须传 --apply-to。
- +delete:删除日程;重复性日程/例外必须传 --apply-to。
- +freebusy:查询主日历的忙闲/RSVP 状态/空闲时间段,含 busy、raw_busy、free、common_free 四种视角,free/common_free 可带 --min-duration。
- +room-find:针对一个或多个明确的时间块查找可用会议室(无明确时间时禁止直接调用,需先走 +suggestion)。
- +rsvp:回复日程(接受/拒绝/待定)。
- +join-event:凭分享 token 加入日程(分享链接/二维码/分享卡片/RSVP 卡片)。
- +suggestion:根据非明确时间或一段时间范围,推荐多个可用时间块方案。
- +transfer:把日程组织者转让给另一个用户或机器人;不可逆,需 --yes。
- +list-attendees:列出日程的参与人和会议室(支持按 --type 过滤:user / resource / chat / third_party)。
- +get:通过 calendar_id + event_id 获取单个日程详情,返回不含参会人和会议室。
- +search-event:按关键词、时间范围和参会人搜索日程,仅返回基础字段。
【使用方式与命令示例】 通用格式为 lark-cli calendar <resource> <method> [flags]。calendar_id 可直接传 primary 代表当前调用身份的主日历。示例:
- 查看本人日程:lark-cli calendar +agenda --as user
- 创建:lark-cli calendar +create ...
- 查询忙闲:lark-cli calendar +freebusy --start 2026-03-11 --end 2026-03-11 --user-id ou_a,ou_b --type busy
- 搜索日程:lark-cli calendar +search-event --query "周会" --start 2026-04-20 --end 2026-04-27 --attendee-ids "ou_user1,oc_chat1,omm_room1"
- 获取日程分享链接:lark-cli calendar events share_info --calendar-id <calendar_id> --event-id <event_id> 日程描述统一使用 description 字段,按 Markdown 富文本处理。查询资源方法列表用 lark-cli calendar <resource> -h,查看 flag 用 lark-cli calendar <resource> <method> -h,查看 API 参数用 lark-cli schema calendar.<resource>.<method>。
【前置条件路由与核心概念】 凡涉及预约日程/会议室、调整时间或查询/搜索会议室,第一步必须阅读 references/lark-calendar-schedule-meeting.md;仅编辑字段(改标题/描述)或增删参会人时可跳过,直接读 references/lark-calendar-update.md。操作重复性日程前必须先读「重复性日程操作规范」,并在用户未明确范围时先确认「仅此次/全部/此次及后续」(不要默认仅此次)。核心概念包括:日程实例(Instance)、重复性日程例外(Exception)、全天日程、时间块 vs 时间范围、会议室(Room,属于 resource attendee,不能脱离日程单独预定)、日程会议 ID、日程分享链接与会议链接的区别。
【适用场景】 适用于通过 AI 智能体查询个人或他人日程、创建会议、邀请参会人、预定/查询会议室、查询忙闲与公共空闲时段、回复日程邀请、转让日程组织者、获取日程关联视频会议信息等。
【限制与不在本 skill 范围内的内容】 查询过去的视频会议记录走 lark-meeting;待办任务管理走 lark-task;通讯录走 lark-contact;即时通讯走 lark-im;会议室物理设施管理走管理员后台。搜索用户/群不支持 bot 身份,必须用 --as user。涉及日期字符串与时间戳转换必须调用外部工具处理,并显式指定目标时区,禁止依赖容器默认时区。写操作完成后直接基于命令返回结果反馈,不要为「确认是否生效」主动二次查询,除非用户明确要求复查或返回信息不足。+room-find 的时间输入必须是确定时间块。