计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
task-and-schedule-manager【效率与协作】统一任务与日程管理入口。当用户说"提醒我"、"待办"、"创建任务"时,先判断谁干活,再路由到对应机制: ① 自己的活 → 滴答清单(dida-task,DIDA_ENABLED=true 时优先); ② 别人的活 → 飞书任务(lark-task); ③ Agent 的活 → schedule_create(定时任务); ④ 多阶段周期 → 时间线引擎(timelines.yaml)。 本技能同时承载定时任务管理和时间线引擎两大核心能力。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
统一路由入口——用户说任何与"任务/待办/提醒/日程"相关的话,先到这里判断路由,再分流到对应机制。
当用户说「提醒我」「待办」「创建任务」「记一下」等词时,先判断谁干活:
| 路径 | 条件 | 去哪 | 工具 |
|---|---|---|---|
| A. 自己的活 | 用户自己的待办/提醒,没有@别人 | → dida-task 技能 | dida_task_create(DIDA_ENABLED=true 时) |
| B. 别人的活 | 消息里有@某人、或"分配给XX"、"让XX做" | → lark-task 技能 | lark-cli task +create |
| C. Agent 的活 | 需要到点后 agent 自动处理(查日历、生成摘要、跑分析) | → schedule_create | 本技能直接执行 |
| D. 多阶段周期 | 绩效季、OKR、产品发布等多阶段编排 | → 时间线引擎 | 本技能直接执行 |
用户说「记一下周五交报告」「提醒我买牛奶」「帮我加个待办」时,转交 dida-task 技能:
skill_read dida-task 获取详细指引快速直接调用(不需读 skill,DIDA_ENABLED=true 时):
dida_task_create(title, project, due_date, tags, priority, ...)
work 或 life1(低,默认)0(不设)3(中,不要太多)5(高,不要随便用)dida_task_list(keyword, tags, status, ...)dida_task_complete(project, task_id)用户说「@张三周五前完成接口」「分配给XX」时,转交 lark-task 技能:
skill_read lark-task 获取详细指引用户说「每天8点发日程摘要」「每周五自动检查进度」时,直接调用 schedule_create:
{job_id, title, prompt, cron/interval, scene}schedule_create:
job_id: 简短英文/拼音title: 中文标题prompt: 触发时发送的内容cron: 5 段式(min hour day month weekday),周几用 mon-suncategory: 一次性用 one_off,周期性用 recurringscene: work / life(默认 work)总计最多 2 步:提取 → schedule_create。
用户说「绩效季配置」「OKR时间线」「产品发布编排」时,见下方时间线引擎章节。
references/ 除非用户明确要时间线引擎的高级操作/app/ethan/scheduler/ 下任何源码knowledge_search、不 web_search、不 fd_find离散的提醒和自动化任务,通过 schedule_create 工具创建。
当用户说「提醒我明天 10 点 xxx」「每周五下午 xxx」「设个提醒」且判断为路径 C 时:
{job_id, title, prompt, cron/interval, scene}schedule_create当用户说「看看定时任务」「我有哪些提醒」时,调用 schedule_list:
scene=work:只看工作场景category=one_off:只看一次性任务one_off) — 执行一次后自动删除(如:明天提醒开会)recurring) — 按 cron 重复(如:每周五发周报)work/life 等 scene,互不干扰schedule_list 支持按 scene/category 筛选工具:
schedule_create — 创建任务(参数:job_id, title, prompt, cron/interval_minutes, category, scene, end_date)schedule_list — 列出任务(参数:scene, category 筛选)schedule_delete — 删除任务schedule_patch — 暂停/恢复/重命名/改 prompt当对话/电话/妙记/文档/口述里出现时间节点或待办信号时(哪怕用户主要意图是别的),主动识别并列候选:
必须先确认再创建,模糊时间先问。people-kb / work-notes / team-manager 发现时间信号都转交到这条路径。详见 references/signal-recognition.md。
声明式批量任务生成器,适合多阶段周期事件(绩效季、OKR、产品发布、团建筹备)。
核心价值(schedule_create 替代不了的):
-2w/+1d),改锚点全调整skip_phase/advance_phase/pause/resume/cleanup当用户说「更新时间线」「加个时间线节点」「截止日期是X」时:
先判断节点类型:
schedule_create 建提醒(category=one_off)~/.ethan/{scene}/timelines.yaml路径 B 步骤:读 timelines.yaml → 改 phase/offset → 写回 → 提示「可说『同步时间线』立即生效」。
~/.ethan/{scene}/timelines.yaml(配置 anchor + phases + actions)| 指令 | 效果 |
|---|---|
| 「跳过这个阶段」 | 跳过当前 phase 所有未触发任务 |
| 「推进到下一阶段」 | 立即触发下一 phase 首个任务 |
| 「暂停时间线」 | 暂停该 timeline 所有任务 |
| 「恢复时间线」 | 恢复该 timeline 所有任务 |
| 「清理时间线」 | 删除该 timeline 所有任务(保留 state) |
详见 references/timeline-engine.md。
数据按 scene 隔离存储在 ~/.ethan/{scene}/ 下,预置 work 和 life:
~/.ethan/
├── work/ # 工作场景(默认)
│ ├── timelines.yaml # 时间线配置(绩效周期、OKR 等)
│ ├── .timeline_state.json # 时间线运行状态(按 scene 独立)
│ └── exports/ # 导出文件
│ └── timelines-{YYYY-MM-DD}.yaml
└── life/ # 生活/创业场景(与 work 完全隔离)
├── timelines.yaml # 独立时间线
├── .timeline_state.json # 独立运行状态
└── ...
Scene 隔离规则:
| 规则 | 说明 |
|---|---|
| 目录即 scene | timelines.yaml 放在哪个 scene 目录就属于哪个 scene |
| 运行状态隔离 | 每个 scene 独立的 .timeline_state.json,互不影响 |
| 预置 scene | work 和 life 首次启动自动创建 |
| 其他 scene | health/study/finance 按需自建目录即可被发现 |
| 定时任务 | schedule_create 创建时带 scene 字段,归属对应 scene |
定时任务有两种来源,在 UI 上平等展示:
schedule_create 工具,带 category(one_off/recurring)source_timeline 和 source_phase 标记所有 schedule 任务都带 scene 字段(work/life/health/study/finance/social),用于隔离和筛选。详见 references/scenes.md。
用户说「导出时间线」「备份时间线」「导入时间线」时:
timelines.yaml + .timeline_state.json 打包为 YAML/JSON详见 references/timeline-engine.md 中「导出与迁移」章节。
work 和 life 目录首次启动自动创建templates/timelines.yaml.example → ~/.ethan/{scene}/timelines.yaml,配置时间线schedule_create 直接可用,时间线需配置 yaml 后同步| 技能 | 联动方式 |
|---|---|
dida-task | 路径 A——用户自己的待办转交此技能处理(DIDA_ENABLED=true) |
lark-task | 路径 B——@别人的任务转交此技能处理 |
team-manager | 时间线常用于绩效周期;委派节点提醒、群扫描、CR 周度汇总的定时任务由本技能承载 |
people-kb | 含人物的时间信号(生日、约饭)在这里建提醒;人物档案本身归 people-kb |
work-notes | 项目进展中的时间节点转交本技能做信号识别 |
lark-im | 定时任务触发时通过飞书发送消息 |
lark-calendar | 时间线可选同步到飞书日历(sync_to_lark: true) |
mon-sun 而非 1-5