Files
dsh_ai1net_server/归档/技能包快照/session-mechanism-20261004/references/taskgraph.md
T
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

3.4 KiB
Raw Blame History

任务图规范(防干等的核心件)

任务图细则档:本档给写法、算法、模板。架构层判据 ⇒ references/architecture.md;原技能存档 ⇒ references/collab-detail.md §3。

1 为什么需要它

没有显式依赖图 ⇒ 三个必然浪费:

  1. 该并行的没并行(不知道谁不依赖谁)
  2. 在非关键路径上花时间(不知道谁决定总工期)
  3. 有活没人干、或有人干着等前置(看不出"可派未派"和"干等")

2 文件格式

任务图.json(路径在配置 taskgraph 指定):

{
  "goal": "一句话说清要达成什么",
  "updated": "YYYY-MM-DDTHH:MM",
  "rules": {
    "dispatch": "只派依赖已满足的节点;优先关键路径;一条线只挂一个",
    "domain": "域锁按节点涉及的文件/子目录声明;禁止整工作区粗域",
    "handoff": "收口即派(+1~2 分钟)",
    "waste": "可派集合非空 ∧ 无棒在跑 ⇒ 可派未派 ⇒ 立即派"
  },
  "critical_path": ["N5", "N8", "N9"],
  "nodes": [
    { "id": "N1", "title": "做什么", "line": "line-a", "deps": [],
      "status": "done", "evidence": "可核对的产物/读数(⛔ 不写自述)" },
    { "id": "N5", "title": "做什么", "line": "line-a", "deps": ["N1"],
      "status": "blocked", "blocker": "卡在哪、缺什么" },
    { "id": "N8", "title": "做什么", "line": "line-b", "deps": ["N5"],
      "status": "todo" }
  ]
}

字段口径:

字段 口径
status todo / running / blocked(依赖已满足但技术卡住) / done
deps 只有前置 done 才解除阻塞;blocked 不解除(它本身要人干)
evidence 必须可核对(文件 / rc / 端口 / 数据对照)—— 这是"真成果"的判据
critical_path 从目标倒推的最长依赖链(决定总工期)

3 程序怎么算(collabd.py 内 taskgraph())

for 每个未 done 节点:
    未满足的前置 = [d for d in deps if nodes[d].status != 'done']
    未满足为空  ⇒ ready(可派)
    未满足非空  ⇒ waiting(并记录"等谁")
waste = ready 非空 ∧ 没有任何棒在跑 ∧ 无锁      ← 🔴 可派未派=浪费

⇒ 输出进实时状态;waste 时写 READY.md 喊出来。

4 四条派活规则(写死在 rules,程序与人都照它)

  1. 只派 ready 节点 ⇒ 能并行的立刻并行
  2. 优先 critical_path 上的节点 ⇒ 非关键路径押后不拖工期
  3. 一条线同时只挂一个,多条线可同时挂
  4. 收口即派(+3~4 分钟) ⇒ ⛔ 不要 +58 分钟空窗(🔴 2026-10-01 用户口径:基准 = 收口 + **34 分钟**)

5 关键路径单线化 ⇒ 必须拆

若关键路径上只有一个执行主体,总工期 = 该主体的串行时间之和 ⇒ 必拆:

  • 把节点拆成更小的可独立验证步骤
  • 把不涉及该主体特有资源的部分并行出去(给别的线)
  • 例(真实):N5 20090 通路常驻 曾被拆成「① 能起 ② 能保持 ③ 掉线自愈」,其中"自愈策略"可交别的线并行

6 维护纪律

  • 状态变了就改(谁做的谁改;主会话判定后改)—— 任务图过期比没有更糟
  • evidence 只写可核对的东西;⛔ 不写"已完成""跑通了"这类自述
  • 节点粒度:一个节点 = 一个会话能在一轮里做完并给出读数的事