인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

task-and-schedule-manager

task-and-schedule-manager

统一任务与日程管理入口。当用户说"提醒我"、"待办"、"创建任务"时,先判断谁干活,再路由到对应机制: ① 自己的活 → 滴答清单(dida-task,DIDA_ENABLED=true 时优先); ② 别人的活 → 飞书任务(lark-task); ③ Agent 的活 → schedule_create(定时任务); ④ 多阶段周期 → 时间线引擎(timelines.yaml)。 本技能同时承载定时任务管理和时间线引擎两大核心能力。

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: task-and-schedule-manager version: 2.0.0 description: > 统一任务与日程管理入口。当用户说"提醒我"、"待办"、"创建任务"时,先判断谁干活,再路由到对应机制: ① 自己的活 → 滴答清单(dida-task,DIDA_ENABLED=true 时优先); ② 别人的活 → 飞书任务(lark-task); ③ Agent 的活 → schedule_create(定时任务); ④ 多阶段周期 → 时间线引擎(timelines.yaml)。 本技能同时承载定时任务管理和时间线引擎两大核心能力。 trigger: "提醒我|待办|创建任务|设个提醒|记一下|帮我记|定时任务|定时提醒|每天提醒|每周提醒|周期性任务|一次性任务|分配任务|schedule|cron|时间线|timelines|绩效周期|OKR周期|季度汇报|配置周期|加节点|更新时间线|导出时间线|备份时间线|导入时间线|恢复时间线|同步时间线|时间线节点|截止日期|DDL|跳过阶段|推进阶段|暂停时间线|恢复时间线|时间信号|识别时间|电话里说|通话记录|妙记|会议纪要|到点提醒|交付提醒|巡检|例行|我的任务|看看任务" author: Ethan Agent license: MIT platforms: [linux, macos, windows] metadata: ethan: tags: [Schedule, Timeline, Task, Reminder, Automation, Routing] fast_path: true

任务与日程管理 (Task & Schedule Manager)

统一路由入口——用户说任何与"任务/待办/提醒/日程"相关的话,先到这里判断路由,再分流到对应机制。

⚡ 快速路由(最优先,命中即执行)

当用户说「提醒我」「待办」「创建任务」「记一下」等词时,先判断谁干活:

路径条件去哪工具
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、产品发布等多阶段编排→ 时间线引擎本技能直接执行

路由判断规则

  1. 有@人名/分配语气 → 路径 B(飞书任务)
  2. 需要 agent 到点干活 → 路径 C(schedule_create)
  3. 多阶段周期事件 → 路径 D(时间线引擎)
  4. 以上都不是,就是用户自己的待办 → 路径 A(滴答清单)
  5. 不确定时 → 问用户:"需要我到点自动处理,还是只设个待办提醒你?"

路径 A:自己的活 → 滴答清单

用户说「记一下周五交报告」「提醒我买牛奶」「帮我加个待办」时,转交 dida-task 技能:

  1. skill_read dida-task 获取详细指引
  2. 按 dida-task 的快速路径执行

快速直接调用(不需读 skill,DIDA_ENABLED=true 时):

  • 创建:dida_task_create(title, project, due_date, tags, priority, ...)
    • tag 必带 work 或 life
    • priority 按用户偏好规则(详见 dida-task 技能「优先级判定」):
      • 一般任务 → 1(低,默认)
      • 无关紧要/可做可不做/不确定 → 0(不设)
      • 很重要、要引起重视 → 3(中,不要太多)
      • 非常紧急、不做后果严重 → 5(高,不要随便用)
  • 查询:dida_task_list(keyword, tags, status, ...)
  • 完成:dida_task_complete(project, task_id)

路径 B:别人的活 → 飞书任务

用户说「@张三周五前完成接口」「分配给XX」时,转交 lark-task 技能:

  1. skill_read lark-task 获取详细指引
  2. 按 lark-task 的快速路径执行

路径 C:Agent 的活 → schedule_create

用户说「每天8点发日程摘要」「每周五自动检查进度」时,直接调用 schedule_create:

  1. 从消息提取 {job_id, title, prompt, cron/interval, scene}
  2. 调用 schedule_create:
    • job_id: 简短英文/拼音
    • title: 中文标题
    • prompt: 触发时发送的内容
    • cron: 5 段式(min hour day month weekday),周几用 mon-sun
    • category: 一次性用 one_off,周期性用 recurring
    • scene: work / life(默认 work)
  3. 回复确认:任务名、触发时间、所属 scene

总计最多 2 步:提取 → schedule_create。

路径 D:多阶段周期 → 时间线引擎

用户说「绩效季配置」「OKR时间线」「产品发布编排」时,见下方时间线引擎章节。


🚫 禁令

  • 不读 references/ 除非用户明确要时间线引擎的高级操作
  • 不读 /app/ethan/scheduler/ 下任何源码
  • 不 knowledge_search、不 web_search、不 fd_find
  • 路径 A/B 转交后由对应技能处理,本技能不再重复执行

🎯 核心场景 C:定时任务

离散的提醒和自动化任务,通过 schedule_create 工具创建。

创建定时任务

当用户说「提醒我明天 10 点 xxx」「每周五下午 xxx」「设个提醒」且判断为路径 C 时:

  1. 从消息提取 {job_id, title, prompt, cron/interval, scene}
  2. 调用 schedule_create
  3. 回复确认

列出定时任务

当用户说「看看定时任务」「我有哪些提醒」时,调用 schedule_list:

  • 不带参数:列出全部
  • scene=work:只看工作场景
  • category=one_off:只看一次性任务

定时任务能力

  1. 一次性任务 (one_off) — 执行一次后自动删除(如:明天提醒开会)
  2. 周期性任务 (recurring) — 按 cron 重复(如:每周五发周报)
  3. scene 隔离 — 任务归属 work/life 等 scene,互不干扰
  4. 筛选查询 — 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

定时信号识别(从任意内容里抠时间节点)

当对话/电话/妙记/文档/口述里出现时间节点或待办信号时(哪怕用户主要意图是别的),主动识别并列候选:

  1. 抽取所有候选信号(时间表达式、解析后日期、事件、来源、置信度)
  2. 列出候选清单给用户看
  3. 用户回编号确认
  4. 对确认的按路由规则判断走路径 A(滴答)还是路径 C(schedule)
  5. 回复已创建的提醒

必须先确认再创建,模糊时间先问。people-kb / work-notes / team-manager 发现时间信号都转交到这条路径。详见 references/signal-recognition.md。


🎯 核心场景 D:时间线引擎

声明式批量任务生成器,适合多阶段周期事件(绩效季、OKR、产品发布、团建筹备)。

核心价值(schedule_create 替代不了的):

  1. 批量生成 — 一条配置 = N 阶段 × M 动作 = N×M 个任务,自动生成
  2. 相对时间编排 — action 用 offset 相对锚点(-2w/+1d),改锚点全调整
  3. 阶段概念 — 收集→汇总→撰写→校准→沟通,每阶段不同动作
  4. lifecycle 管理 — skip_phase/advance_phase/pause/resume/cleanup
  5. 周期轮转 — 本周期结束自动准备下一周期,无需手动重建

更新时间线节点

当用户说「更新时间线」「加个时间线节点」「截止日期是X」时:

先判断节点类型:

  • A. 绝对日期的一次性截止节点(如「7/23 23:59 自评截止」)→ 用 schedule_create 建提醒(category=one_off)
  • B. 调整时间线阶段配置(如「把集中汇总期提前到 -3w」)→ 直接编辑 ~/.ethan/{scene}/timelines.yaml

路径 B 步骤:读 timelines.yaml → 改 phase/offset → 写回 → 提示「可说『同步时间线』立即生效」。

使用流程

  1. 编辑 ~/.ethan/{scene}/timelines.yaml(配置 anchor + phases + actions)
  2. 说「同步时间线」→ Engine 编译配置为具体定时任务
  3. 生成的任务和手动创建的平等展示在时间轴上

lifecycle 操作

指令效果
「跳过这个阶段」跳过当前 phase 所有未触发任务
「推进到下一阶段」立即触发下一 phase 首个任务
「暂停时间线」暂停该 timeline 所有任务
「恢复时间线」恢复该 timeline 所有任务
「清理时间线」删除该 timeline 所有任务(保留 state)

详见 references/timeline-engine.md。


📁 数据存储

Scene 目录隔离

数据按 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 隔离规则:

规则说明
目录即 scenetimelines.yaml 放在哪个 scene 目录就属于哪个 scene
运行状态隔离每个 scene 独立的 .timeline_state.json,互不影响
预置 scenework 和 life 首次启动自动创建
其他 scenehealth/study/finance 按需自建目录即可被发现
定时任务schedule_create 创建时带 scene 字段,归属对应 scene

定时任务的来源

定时任务有两种来源,在 UI 上平等展示:

  1. 手动创建 — 通过 schedule_create 工具,带 category(one_off/recurring)
  2. 时间线生成 — 由 timelines.yaml 编译而来,带 source_timeline 和 source_phase 标记

🏷️ 场景标签

所有 schedule 任务都带 scene 字段(work/life/health/study/finance/social),用于隔离和筛选。详见 references/scenes.md。

📤 导出/导入时间线

用户说「导出时间线」「备份时间线」「导入时间线」时:

  • 导出:将某 scene 的 timelines.yaml + .timeline_state.json 打包为 YAML/JSON
  • 导入:读取导出文件,校验格式,写入指定 scene,可选 dry_run 和 merge 模式

详见 references/timeline-engine.md 中「导出与迁移」章节。

⚙️ 首次配置

  1. work 和 life 目录首次启动自动创建
  2. (可选)复制 templates/timelines.yaml.example → ~/.ethan/{scene}/timelines.yaml,配置时间线
  3. 开始使用——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)

⚠️ 约束

  • cron 周几用名称:APScheduler 的数字 weekday 约定与标准 cron 不同,用 mon-sun 而非 1-5
  • 时间线配置需校验:导入或手动编辑 timelines.yaml 后,Engine 会校验格式(anchor 合法、offset_start <= offset_end 等)
  • 不越权:Agent 不自行修改用户已确认的 DDL 或取消任务
  • 路由优先:本技能是路由入口,先判断路径再执行,不要跳过路由直接用 schedule_create
저장한 Skills