- 按用户指示清空原有 25 技能内容,只提交 session-mechanism(57 文件) - 附 .gitignore(产物 + 本机凭据) - 令牌明文已脱敏(历史 .neodata_token 与 pitfalls 引用均不入库) - 本提交为孤儿提交(父提交为空),历史自此重新开始
3.4 KiB
3.4 KiB
任务图规范(防干等的核心件)
任务图细则档:本档给写法、算法、模板。架构层判据 ⇒
references/architecture.md;原技能存档 ⇒references/collab-detail.md §3。
1 为什么需要它
没有显式依赖图 ⇒ 三个必然浪费:
- 该并行的没并行(不知道谁不依赖谁)
- 在非关键路径上花时间(不知道谁决定总工期)
- 有活没人干、或有人干着等前置(看不出"可派未派"和"干等")
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,程序与人都照它)
- 只派
ready节点 ⇒ 能并行的立刻并行 - 优先
critical_path上的节点 ⇒ 非关键路径押后不拖工期 - 一条线同时只挂一个,多条线可同时挂
- 收口即派(+3~4 分钟) ⇒ ⛔ 不要 +5
8 分钟空窗(🔴 2026-10-01 用户口径:基准 = 收口 + **34 分钟**)
5 关键路径单线化 ⇒ 必须拆
若关键路径上只有一个执行主体,总工期 = 该主体的串行时间之和 ⇒ 必拆:
- 把节点拆成更小的可独立验证步骤
- 把不涉及该主体特有资源的部分并行出去(给别的线)
- 例(真实):
N5 20090 通路常驻曾被拆成「① 能起 ② 能保持 ③ 掉线自愈」,其中"自愈策略"可交别的线并行
6 维护纪律
- 状态变了就改(谁做的谁改;主会话判定后改)—— 任务图过期比没有更糟
evidence只写可核对的东西;⛔ 不写"已完成""跑通了"这类自述- 节点粒度:一个节点 = 一个会话能在一轮里做完并给出读数的事