Skip to content

CyberSecurityErial/task_appender

Repository files navigation

个人任务图管理器

这是一个本地优先的个人任务图管理器,适合配合 Codex 做长期维护。CLI 仍是稳定入口,同时提供一个可选的本地 Web UI,用于拖拽任务图、右键改状态和新建任务。

核心概念

任务类型:

  • short:短期可执行任务,通常应该有截止日期。
  • long:长期目标或学习方向,不强制要求截止日期。
  • daily:每日重复任务,必须有 recurrence 元数据。
  • milestone:阶段性检查点,常用于长期目标或项目。

任务状态:

  • todo:待办。
  • doing:进行中。
  • blocked:被阻塞。
  • done:已完成。
  • archived:已归档。

关系类型:

  • parent / children:目标拆解关系,例如长期目标下面拆出多个短期任务。
  • depends_on:执行依赖关系,例如任务 A 必须等任务 B 完成后才能做。

依赖图必须是无环图。

文件结构

任务数据存放在:

data/tasks.yaml

导出文件存放在:

exports/graph.mmd
exports/graph.dot
exports/tasks.md
exports/graph.html
exports/scoreboard.html

发布说明存放在:

RELEASE_NOTES.md

主要源码:

taskmgr/model.py       # 任务模型
taskmgr/store.py       # YAML 读写和 ID 分配
taskmgr/graph.py       # 校验和环检测
taskmgr/analytics.py   # 收获提取、经验、等级和产出量化
taskmgr/render.py      # Mermaid / DOT / Markdown / HTML 导出
taskmgr/recurrence.py  # 每日任务和简单日期解析
taskmgr/cli.py         # CLI 入口

常用命令

平时启动任务图 UI:

./start_ui.sh

然后打开 http://127.0.0.1:8765/。这个入口是默认推荐方式;在浏览器里可以拖动任务块、右键任务块修改状态或编辑任务信息、在图上新建任务。服务运行时不要关闭启动它的终端;停止服务就按 Ctrl-C

新增长期目标:

python -m taskmgr.cli add --kind long --title "学习 Triton" --tag triton

新增短期任务,并挂到父任务下面:

python -m taskmgr.cli add --kind short --title "写 matmul demo" --parent T-0001 --due 2026-05-01 --tag triton

新增每日任务:

python -m taskmgr.cli add --kind daily --title "每天复盘工程实验" --time "23:00" --tag daily

建立执行依赖:

python -m taskmgr.cli link --task T-0002 --depends-on T-0001

调整父任务:

python -m taskmgr.cli move --task T-0002 --parent T-0001
python -m taskmgr.cli move --task T-0002 --root

查看任务:

python -m taskmgr.cli list
python -m taskmgr.cli list --blocked
python -m taskmgr.cli today
python -m taskmgr.cli scoreboard

启动可写入任务库的本地 UI:

./start_ui.sh

默认地址是 http://127.0.0.1:8765/。在这个页面里可以拖动任务块、右键任务块修改状态或编辑标题、类型、状态、截止、优先级、父任务、子任务、依赖、标签和备注,也可以在图上新建任务。写入后会复用任务库校验并自动重建全部导出文件;误操作后可按 Ctrl-Z 撤销最近一次 UI 写入。CLI 的 addlinkdonemove 等命令仍然保留。

校验和导出:

python -m taskmgr.cli validate
python -m taskmgr.cli render --format mermaid
python -m taskmgr.cli render --format dot
python -m taskmgr.cli render --format markdown
python -m taskmgr.cli render --format html
python -m taskmgr.cli render --format scoreboard

也可以一次完成校验和全部导出:

python -m taskmgr.cli sync

HTML 输出是自包含文件:

exports/graph.html
exports/scoreboard.html

它们内嵌 SVG/HTML/CSS/JS,不需要浏览器插件。graph.html 现在是可交互任务图 UI:任务块可以手动拖动,连线会跟随重绘,支持搜索、类型/状态筛选、缩放、右侧任务详情和浏览器本地布局保存。静态打开 exports/graph.html 时只能查看和调整本地布局;要右键改状态或新建任务,需要使用 python -m taskmgr.cli serve 启动本地服务。scoreboard.html 侧重成长计分板、等级、经验、产出和已完成任务收获。

v0.1 成长系统

v0.1 会从任务库自动推导两个激励视图:

  • 已完成任务收获:从 done / archived 任务的标题、备注和标签中提取“我完成了什么、沉淀了什么”。
  • 成长计分板:按任务类型、优先级、依赖复杂度、子任务数量、标签和产出类型计算 XP、等级、待领取经验、技能标签和产出数量。

adddonelinkunlinkmoveapply-inbox 成功写入后会自动重建全部导出文件,保证计分板和任务图同步。默认任务库写到仓库 exports/;使用 --db 指向其他任务库时,写到该任务库旁边的 exports/

v0.1.0rc1 补丁

v0.1.0rc1 调整成长计分板表现:

  • 技能标签改成单根技能树,从“星核主干”展开到输出、推理、工程和工具分支。
  • 技能描述改为更短的科技/魔幻风格短句。
  • 等级增加字符段位标志,例如 {== V ==} Lv.5 任务图构建者
  • Markdown 和 HTML 导出都会在注脚列出完整等级谱和对应字符标志。

从收件箱导入自然语言任务:

python -m taskmgr.cli apply-inbox TASK_INBOX.md

兼容入口仍然可用:

python task_appender.py validate

Codex 工作流

当你让 Codex 更新任务时,推荐这样说:

先读 AGENTS.md,然后把 TASK_INBOX.md 里的任务应用到任务图。
使用 CLI,不要直接改 data/tasks.yaml。
完成后运行 validate、render 和测试。

Codex 应该优先通过 CLI 修改任务图。只有当 CLI 缺少必要能力时,才允许补充最小功能或直接编辑数据文件。

macOS 定时提醒

./start_ui.sh 现在会同时启动 Web UI 和提醒检查器。提醒检查器只在该进程运行期间工作:关闭终端或按 Ctrl-C 后,Web UI 与提醒都会停止;本项目不会安装 launchd 或其他系统常驻服务。

首次使用:

  1. 运行 ./start_ui.sh 并打开页面。
  2. 点击“通知设置”→“初始化通知 App”。macOS 如弹出通知权限请求,请允许。
  3. 点击“发送测试通知”。成功只表示 macOS 接受了请求,专注模式或通知设置仍可能抑制横幅。
  4. 打开“启用任务通知”并保存。
  5. 在有截止日期的任务中添加一条或多条“提前天数 + 时间”提醒。

每日任务继续使用 recurrence.time,每天提醒一次。有截止日期的任务可配置多条提醒,例如提前一天和截止当天。默认仅补发最近 120 分钟内错过的提醒,已完成或已归档任务不会提醒。

CLI 也可修改截止提醒:

conda run -n agent python -m taskmgr.cli add --kind short --title "交作业" --due 2026-07-04 --reminder 1d@09:00 --reminder 0d@09:00
conda run -n agent python -m taskmgr.cli reminders set --task T-0001 --rule 2d@20:00 --rule 0d@09:00
conda run -n agent python -m taskmgr.cli reminders clear --task T-0001

本地设置保存在任务库旁的 settings.yaml,投递去重状态保存在 reminder_state.json。二者都不属于任务图导出物。

发布规则

每次发布新版本都必须更新 RELEASE_NOTES.md,写清楚该版本的 release note。

About

task appender(vibe coding)

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages