Skip to main content

task-and-schedule-manager

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

설치로 이동

소스 정보

저장소
llm011/ethan-agent
최근 소스 활동
2026년 8월 10일 02:54
감지된 SKILL.md 언어
중국어
스타
8
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
6 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
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时间线」「产品发布编排」时,见下方[时间线引擎](#场景-b时间线引擎)章节。 --- ## 🚫 禁令 - 不读 `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 隔离规则**: | 规则 | 说明 | |---|---| | 目录即 scene | `timelines.yaml` 放在哪个 scene 目录就属于哪个 scene | | 运行状态隔离 | 每个 scene 独立的 `.timeline_state.json`,互不影响 | | 预置 scene | `work` 和 `life` 首次启动自动创建 | | 其他 scene | `health`/`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
GitHub에서 보기