用途
本工具是面向 Lark(飞书)日历的日程优化助手工作流,主要用于对已有日程进行诊断和优化。与 smart-scheduler(约新会议:找空闲时段→创建日程)互补,形成「日程双子套件」。它解决的是「现有日程是否合理、存在哪些冲突与碎片」这类问题,而非创建新会议。
触发场景包括:「帮我优化明天的日程」「处理日程冲突」「看看我的日程有什么问题」「日程安排合理吗」「哪些会议可以推掉」「日程太满了怎么优化」「帮我整理一下这周的日程」「Calendar optimizer」「明天有日程冲突」「帮我重新排一下日程」等。
前置条件与授权
支持 user 身份。执行前需确保已授权:
lark-cli auth login --domain calendar
开始前必须先使用 Read 工具读取 lark-shared/SKILL.md,其中包含认证、权限处理和安全规则。
主要能力
工具通过以下流程工作:指定分析范围 → 获取全部日程 → 日程分析引擎(冲突检测、碎片分析、效率评估)→ 生成诊断报告与优化方案 → 用户确认后可选执行修改。
1. 获取日程数据
参考 lark-calendar/SKILL.md,命令如下:
lark-cli calendar +agenda --start "<start>" --end "<end>"
日期使用 date 命令计算,例如:
# 获取明天
date -v+1d "+%Y-%m-%dT00:00:00%z"
date -v+1d "+%Y-%m-%dT23:59:59%z"
# 获取本周
date -v-monday "+%Y-%m-%dT00:00:00%z"
date -v+friday "+%Y-%m-%dT23:59:59%z"
2. 日程分析引擎
冲突检测:遍历日程列表(按开始时间排序),检查相邻事件。冲突类型包括:
- A. 完全重叠:事件 B 完全在事件 A 的时间范围内
- B. 部分重叠:事件 B 的开始时间 < 事件 A 的结束时间
- C. 首尾相连(无缓冲):事件 B 开始时间 == 事件 A 结束时间
已拒绝(decline)的日程标记为不占用时间,不参与冲突检测。
碎片时间分析:碎片 = 两个会议之间的空闲段,分类为:
- 微碎片(< 15分钟):几乎无法利用
- 小碎片(15-30分钟):只能做简单任务
- 有效空闲(30-60分钟):可以处理中等任务
- 专注时段(> 60分钟):适合深度工作
效率评估指标:
- 会议占比 = 会议总时长 / 工作时间,健康阈值 < 40%
- 最长连续会议 = 连续无间断的会议总时长,健康阈值 < 2 小时
- 专注时段数 = > 1 小时连续空闲的段数,健康阈值 ≥ 2 段
- 午休保护 = 12:00-13:00 是否有会议,健康阈值 无会议
- 缓冲时间 = 相邻会议间 ≥ 15 分钟的比例,健康阈值 > 70%
3. 生成诊断报告
输出包含整体评估(日程总数、会议总时长及占比、健康度)、发现的问题(时间冲突表格、碎片时间表格、连续会议、效率指标表格)、时间线可视化,以及优化方案(方案 A 冲突解决、方案 B 增加缓冲、方案 C 释放深度工作时间)。用户可选择方案或调整后确认执行。
4. 执行优化(可选,用户确认后)
安全规则:必须用户确认后才修改日程。
# 修改日程时间
lark-cli calendar events patch --event "<event_id>" \
--start "<新开始时间>" --end "<新结束时间>"
# 或取消日程(如果用户决定推掉某个会议)
lark-cli calendar events delete --event "<event_id>"
注意:修改他人发起的日程可能无权限。如果是他人组织的会议,建议改为「拒绝」而非修改时间:
lark-cli calendar +rsvp --event "<event_id>" --rsvp "decline"
容错机制
- 目标日期无日程:提示「该日期暂无日程」,建议选择其他日期
- calendar 命令报权限或身份错误:v1.0.5 起 calendar 不再自动回退到 bot 身份,需显式 user 登录,提示用户执行
lark-cli auth login --domain calendar - 无法修改他人日程:建议拒绝或联系组织者协调
- 全天事件:标记但不参与冲突计算(除非用户指定)
- 已拒绝的日程:标记为「已拒绝」,不参与冲突和时间计算
权限表
- 获取日程:
calendar +agenda,scopecalendar:calendar.event:read,必选 - 修改日程:
calendar events patch,scopecalendar:calendar.event:write,可选(执行优化时) - 拒绝日程:
calendar +rsvp,scopecalendar:calendar.event:write,可选 - 删除日程:
calendar events delete,scopecalendar:calendar.event:write,可选
参考
- lark-shared —— 认证、权限(必读)
- lark-calendar —— +agenda、events patch、+rsvp 详细用法