parallel-dispatch — 并行调度与子分身机制总规则
定位: 本规则是所有"多任务并行 / 子分身"决策与执行的唯一权威入口,整合全局调度裁定、
rules/01_workflows.md规则 16/17/18/19/20/22/33、retro-pm-124 探针经验,以及 Kimi Code 原生分身能力(Agent / AgentSwarm / 后台任务;历史工具名映射见第 28 行注记)。 自动触发: 命中下方「场景自动匹配表」任一行时,无需用户显式指令,主动按本规则执行。
一、总则(2026-08-14 用户裁定五条铁律;2026-08-16 增补第 0 条门禁与量纲裁定)
PARALLEL-GATE 强制门禁(2026-08-16 用户裁定,最高优先;2026-08-15 增补单刀双掷开关机械执行):只要出现多任务(≥2 个子任务/诉求,任何来源),首轮规划必须先输出结构化声明,再谈执行:
[PARALLEL-GATE] 子任务数:N | 无依赖:M | 判定:parallel/sequential | 机制:subagent×M / workflow / 串行(依赖链理由)判定
sequential必须写明依赖链理由,留空即违规。本门禁无触发词依赖——多任务出现即触发,不要求用户说"并行";声明同步载于全局AGENTS.md调度裁定节(每会话在场,不依赖本技能是否被加载)。分身闸定位与 A/B 殊途同归(2026-08-23 用户终裁):分身闸(单刀双掷 dispatch_switch)是并行闸的最后一步程序,无条件触发、单任务亦扳(开关自判串行/轻量)。闸内强制流程:任务量分析(文件数唯一量纲)→ 依赖链判定 → 分片条件判定(规模轴×数量轴)→ 掷点输出。不管判 A 还是判 B,符合条件即生成子分身——掷点 B 仅是串行拓扑(分片照切、分身照生,按依赖链顺序调度执行),不是免分身旁路;串行结论同样是分身判定全程跑完的产物,不是绕过判定的豁免通道。拓扑(依赖决定)与分身生成(分片条件决定)是两个独立维度。 触发时点锚定(2026-08-24 用户裁定):整个 parallel-dispatch 并行闸追加在任务步骤方案制定完成之后触发——核心场景:任务清单/步骤方案创建完毕 → 并行闸逐项分析上游依赖(无依赖、或上游依赖已完成 → 可并行)→ 闸内最后一步扳
dispatch_switch.py掷点。无论判 A 判 B,哪怕串行,任务量评估(文件数唯一量纲)都必须跑;符合分片条件的照常切片走子分身。本条锚定的是并行闸的挂载时点,与上方 2026-08-23 终裁(末步程序、A/B 殊途同归)配套:方案未完成不触发,方案一完成即强制触发。 单刀双掷开关机械执行(2026-08-15 裁定):声明的判定禁止手写,必须扳动开关照抄输出:python3 scripts/dispatch_switch.py --files <文件数> --units <无依赖单元数> [--coupled [--dep-type contract|artifact]] [--batch] [--force-serial --dep-reason "依赖链理由"] --desc "<任务描述>"开关四态:退出码
0=掷点 A(执行并行,照抄声明后立即扇出,禁止只评估不执行);2=掷点 B(合法串行,多任务串行理由已备案留痕);3=CLARIFY(信号不足,禁止扳动,先澄清三要素);4=VIOLATION(多任务判串行却无--dep-reason,或掷点 A 前置缺失,开关拒绝扳动——要么补理由要么改判 A)。多任务想串行的唯一合法通道是--force-serial+--dep-reason。Kimi Code 适配(2026-08-24 迁移): 本技能已在 Kimi Code 环境执行。工具名映射:
todo_write→TodoList、subagent/subagent_fork→Agent、workflow→AgentSwarm。会话日志定位顺序:--session-log显式指定优先 > mtime 活跃启发式;Kimi 日志~/.kimi-code/sessions/*/*/agents/main/wire.jsonl(纯文本)与 旧版session.jsonl.zstd双格式由scripts/session_log_compat.py统一解析,子分身日志为同 session 目录agents/<id>/wire.jsonl。 掷点 A 机械前置三道闸(2026-08-16 用户裁定"用扳手解决概率触发问题",N 值按收益拐点量化):判 A 时开关自检当前会话日志(权威来源--session-log显式指定,缺省按 mtime 活跃启发式自动定位),三道闸全过才放行:- 闸1 清单登记:本 turn 必须已存在 todo/write 事件且清单条目数 ≥ 扇出单元数——未登记或覆盖不全即 exit 4 拒扳,须先
todo_write登记全部子任务再重扳。GUI 任务面板/进度展示不再依赖模型自觉。 - 闸2 基线存在:有效文件数 ≥4(对齐规模轴 ≤3 免评估)时必须
--baseline <路径1,路径2>携带统一上下文基线文件,且逐个机械核验真实存在且非空——缺失即 exit 4。治"各分身上下文不一致→合并冲突返工"。 - 闸3 探针实证:扇出单元 ≥6 时必须存在 30 分钟内已完成往返的扇出类调用实证——缺失即 exit 4,先前台派 1 个极小探针任务再重扳。治 retro-pm-124"通道盲扇出"。N=6 为收益拐点量化值:净收益 f(N)=p·C·N−c−摩擦(N),探针成本 c≈0.3 路、通道故障率 p≈5%(retro-pm-124 实证)→ N=c/p≈6,恰与数量轴 6~9 分组档起点重合,双轴同数。* 扇出收尾闸(2026-08-16 用户裁定"概率即扳手"原则):凡本 turn 扳过掷点 A 或登记过任务清单,终答前必须扳收尾闸照抄输出:
python3 scripts/fanout_seal.py # --session-log 显式指定优先,缺省自动定位当前会话三道机械校验:① 真扇出——本 turn 每次掷点 A 留痕必须有 subagent/subagent_fork/workflow 调用实证,无实证即"只评估不执行"违规;② 全销号——本 turn 最终 todo/write 清单必须全部 completed,残留 pending/in_progress 逐条列出;③ 基线阅读——掷点 A 携带的基线文件,本 turn 每个子分身日志必须有其引用,未读分身逐个列出("上下文脱基线")。exit
0=SEAL 方允许终答;4=VIOLATION 逐条整改后重扳;3=CLARIFY 补--session-log。每次扳动留痕~/.agents/logs/dispatch_switch.jsonl,B/A 比率纳入复盘审计——每月运行python3 scripts/dispatch_switch_audit.py(分布与 B/A 比率/冒烟批剔除/注水嫌疑/ALERT 告警,--strict时有 ALERT 则 exit 1,供月度复盘门禁)。- 闸1 清单登记:本 turn 必须已存在 todo/write 事件且清单条目数 ≥ 扇出单元数——未登记或覆盖不全即 exit 4 拒扳,须先
任务分解产生 ≥2 个无依赖子任务 时,默认主动并行 spawn 子分身,无需用户显式指令;只评估不执行视为故意串行化(对齐规则 33)。
是否用分身只看两条:① 任务量是否值得拆;② 当前场景是否支持分身(Kimi Code 原生支持 Agent 子分身,默认满足)。任务量量纲唯一化(2026-08-16 裁定):只用文件数量评估,禁用小时/体感估算(第三节矩阵)。
扇出前先行 最小探针 验证分身通道可用,探针失败直接串行(对齐 retro-pm-124)。
母体职责不可省:统一上下文基线 + 合并校验(时点分层见第五节)。
合并方向(会话级分身实践 vs 引擎级机制)不设限,以解决问题为准;可机械化的校验成果只沉淀进技能/规则层(
~/.agents/skills/、~/.agents/rules/),禁止下沉进引擎代码/引擎规则层(2026-08-15 用户裁定:引擎需可对外分发,他人可能使用自己的引擎,私有规则硬编码只会带来冲突——坚持轻量化、通用)。
二、场景自动匹配触发表
命中任一信号即进入本规则的决策矩阵(第三节),主动触发,不等指令:
| # | 场景信号 | 自动动作 |
|---|---|---|
| 1 | task_breakdown 拆解后产出 ≥2 个子任务 |
立即做依赖判定,无依赖项默认标记 parallel 并立即 spawn(规则 33:评估只是入口,并行才是目的) |
| 2 | 用户一句话内提出多个互不相干的诉求("顺便把 A、B、C 都…") | 按无依赖子任务处理,直接扇出 |
| 3 | 多任务: 编号清单句式("多任务:1干什么 2干什么 3干什么…",2026-08-17 用户裁定) |
有几个编号就生成几条 todo 清单并直接并行,不再逐项确认:① todo_write 登记 N 条(N=编号数)→ ② 扳 dispatch_switch.py(PARALLEL-GATE)→ ③ 同一 assistant 消息内一次性扇出 N 路。用户声明"多任务"即已确认无上游依赖 |
| 4 | 触发词:并行 / 分身 / 子分身 / 扇出 / 批量 / 同时做 / 多任务 / 拆任务 | 加载本规则,走双维决策 |
| 5 | 批量同类操作(N 个文件审计、N 个页面截图解析、N 条数据迁移) | 数量轴判定:≥10 必须切 workflow 编排 |
| 6 | SPM/DPM 产出 PRD + 接口契约后,测试设计 / 前端 / 后端三方可启动 | 按规则 17 三方并行(引擎驱动则禁止手动串行指派) |
| 7 | UI 设计完成的 M/L 档任务 | 按规则 18/22 层级化并行(顶层 3 Agent × 各拆 3 子 Agent,同层 ≤9) |
| 8 | 子任务需要基于当前会话已发生的上下文继续深挖(跟进分析/复审/续作) | 选 subagent_fork(继承会话),不选 subagent |
| 9 | 用户显式要求 Ralph / fresh-agent 迭代 | 才允许走 ralph;其余场景禁止主动启用 |
定义边界(2026-08-17 用户裁定):多任务并行 ≠ 子分身。 多任务并行=N 个异构独立任务(如"生成 PPT / 整理数据 / 画图 / 改造框架",内容完全不同、互不依赖),每个任务一路,直接并行;子分身=母 Agent 把同一类内容切分给多个分身执行相同步骤(同质批量,内容不同步骤相同)。映射到双维矩阵:异构多任务走数量轴 2~9 的 subagent 扇出;同质内容切分才走"批量同类"轴(≥10 切 workflow)。禁止把异构多任务误当子分身做内容切分,也禁止把同质切分误当异构多任务逐路人肉 spawn。
三、双维决策矩阵(规模轴 × 数量轴,量纲 = 文件数量)
机械探针:
python3 scripts/dispatch_probe.py --files <文件数> --units <无依赖单元数> [--coupled] [--batch]离线输出档位/机制/扇出数/拓扑 JSON,并自动生成[PARALLEL-GATE]声明文本;信号不足时强制输出clarify澄清提示。门禁场景请直接用单刀双掷开关dispatch_switch.py(探针的上层封装:A/B 双掷点 + B 档理由强制 + 留痕),探针本体保留给纯档位评估复用。
规模轴(第一分流点,纯文件数判定,2026-08-16 量纲裁定)
| 档位 | 判定标准(数出来的,不是感觉的) | 分身机制 |
|---|---|---|
| 免评估 | ≤3 个文件,且无跨模块契约/状态耦合 | 会话级轻分身:直接 subagent 扇出 + 探针 + 母体合并,禁止做重评估空耗 |
| 需评估 | >3 个文件,或存在契约/状态耦合(不论文件数) | 先 task_breakdown 定档 → S 档:仍走轻分身(或按规则 19 关闭分身,单 Agent 串行);M/L 档:走引擎级分身机制(第七节) |
| 引擎级 | >10 个文件 且 task_breakdown 定档 M/L | 引擎级分身机制(第七节),机械校验走 engine |
单文件特例:一个文件内部的多修改点不拆分身(避免文件级写冲突),按串行处理;同文件多修改点可用规则 24(一条消息内并行多个 Edit)。
耦合前置细分:契约先行分片(2026-08-17 用户裁定,REFORM-GATE 判 A 落地,块文件 ~/.agents/logs/reform_gate_block_contract_sharding_20260817.md)
声明 --coupled 之前必须先分耦合类型,禁止笼统"有耦合→串行":
| 耦合类型 | 定义 | 判定 |
|---|---|---|
| 契约耦合 | 片间只共享 API/接口契约(端点路径、请求响应字段、组件文件名)——典型:后端 API / 前端页面 / 导航接线三片 | 先冻结契约(30 秒写死字段清单),冻约后各片视为无依赖 → 并行扇出;仅构建/验证等消费前序产物的节点串行收口 |
| 产物耦合 | 后片真实消费前片产出的文件/状态(读前片写的表、改前片创建的文件) | 走原 coupled 路径:task_breakdown 定档 / --force-serial+--dep-reason |
开关侧:dispatch_switch.py --coupled --dep-type contract → 冻约提示 + 按无耦合并行判定;--dep-type artifact 或缺省 → 原 coupled 语义不变。实证反例:2026-08-17 ETL 备份前后端集成 6 文件笼统 --coupled 判 B 全串行,构建期才暴露存量 tsc WIP 错误——契约耦合误判串行即缺斤短两。
数量轴(第二分流点:"扇出多少路",N = 无依赖独立单元数,按文件/按批计数)
| 数量 | 形态 | 机制 |
|---|---|---|
| 2~5 个 | 异构任务 | subagent 直接扇出,同一assistant消息内一次性并行发出,禁止逐个串行 spawn |
| 6~9 个 | 异构/分组 | subagent 扇出,按角色分组(规则 16:FE 归 FE、BE 归 BE);同层 >9 须 PM 显式审批 |
| ≥10 个或批量同类 | 同质批量 | 必须切 workflow 脚本编排(一段 JS 管 N 个分身、结构化结果一次回收),禁止逐个人肉 spawn 把主会话卡死在 prompt 开销与通知洪峰上 |
四、会话级分身机制(原生能力速查,工具名映射见首节注记)
4.1 subagent —— 独立上下文分身(默认首选)
- 默认后台运行:调用后立即返回 durable id,主会话继续干独立工作,不阻塞等待。
- prompt 必须自包含:子分身看不到本会话,目标、输入文件路径、约束、产出格式、验收标准一次给全。
- 结果回收:子分身 settle 后运行时会自动送来结果通知;未到齐前禁止忙轮询。
- 续派与中止:
send_message在同一子会话开启新轮次(用于回报后整改续派);interrupt_agent仅中止当前轮。 - 仅当主会话下一步动作依赖其结果时才设
run_in_background: false。
4.2 subagent_fork —— 上下文继承分身
- 子分身携带本会话全部已完成轮次(看不到在飞轮),适合跟进分析、复审、在既有结论上续作。
- 其余语义与
subagent相同(默认后台、可续派)。
4.3 workflow —— 脚本编排(≥10 / 批量同类专用)
- 一段 JS(非 TypeScript,无
export),顶层 await,return <JSON 值>作为结果。 - 元信息走
meta参数:name(kebab-case)+description必填,phases可选。 - 钩子:
agent(prompt, {schema?, label?, phase?})— 跑一个分身;带schema时返回校验后的结构化对象;失败resolve为null(用.filter(Boolean)过滤)。pipeline(items, ...stages)— 每 item 独立走完全部 stage,无屏障(多阶段首选);单 stage 抛错仅丢弃该 item。parallel(thunks)— 全并发 + 屏障,仅当后续 stage 确需全部前序结果时才用;抛错的 thunk resolve 为null。phase(title)/log(msg)— 进度叙事;args读取调用入参。
- schema 仅允许 type/properties/required/additionalProperties/items/enum/const/oneOf(无 pattern/format/数值界)。钩子误用会直接杀死整个脚本,不会降级为单 item null。
4.4 ralph —— fresh-agent 循环(仅显式指令)
- 每轮开启无会话种子的全新子分身,共享工作区作为长期记忆,轮间仅传递有界结构化报告。
- 仅当用户明确要求 Ralph / fresh-agent 迭代时启用;普通长任务用 goal 工具,有界委派用 subagent/workflow。
4.5 后台 job(长命令)
bash run_in_background: true返回 job id;job_output收集(仅在真正被阻塞时wait: true);job_kill终止不再需要的 job。- 每个后台 job id 必须登记跟踪;终答前收齐所有相关 job,禁止重复起同名 job。
五、母体职责与时点分层
5.1 上下文基线(不可省)
所有并行子分身必须读取同一上下文基线:pm_plan.json + task_slice_plan.json / dev_task_breakdown.json + .prd.md + .ui-proto.json(按任务类型取适用项)。禁止各自为政。(已机械固化:dispatch_switch 闸2 强制 --baseline 文件真实存在;fanout_seal 校验3 逐个核验子分身日志引用过基线文件,未读即点名违规)
5.2 时点分层(2026-08-14 用户提示)
| 时点 | 动作 |
|---|---|
| 单任务回报时 | 只做轻量收据:扫摘要,发现问题才即时 send_message 续派整改(早返工可与其他在跑任务并行) |
| 最后一路到齐后 | 一次执行正式合并校验:文件级冲突 + 契约级冲突 + 数据格式级冲突 + 完整性差集(全域大纲比对) |
禁止逐路重复验收仪式空耗上下文。
5.3 探针(扇出前置)
最小探针验证分身通道可用(如先派 1 个极小任务确认回报链路);探针失败直接转串行执行,并在回报中说明(retro-pm-124)。(已机械固化:dispatch_switch 闸3,扇出 ≥6 路强制 30 分钟内探针往返实证,N=6 为收益拐点量化值 c/p≈0.3/0.05)
六、分身生命周期三槽契约(2026-08-16 新增,协议风格对齐 expert-router slots-protocol)
分身全生命周期固定三个挂载点,纯规则层契约,不改平台原生代码;各调用方按协议接入,分身质量不依赖 prompt 临场发挥。
SLOT-PRE · 任务书槽(扇出前)
每个分身 spawn 前必须按六字段模板组装任务书(自包含,分身看不到母体会话):
| 字段 | 内容 |
|---|---|
| ① 目标 | 一句话说清要交付什么 |
| ② 输入路径 | 上下文基线文件绝对路径清单(第五节 5.1) |
| ③ 约束 | 禁止触碰的范围、目录安全铁律、依赖边界 |
| ④ 产出格式 | 交付物路径 + 格式要求 |
| ⑤ 验收标准 | 可机械判定的完成条件 |
| ⑥ todo 义务 | 开工先自建 todo 清单并随进展更新(禁止清单 11) |
| ⑦ 结果落盘路径(2026-08-17 用户裁定「结果落盘制」;2026-08-20 增补暂存区路径模板,REFORM-GATE v2 判A) | 母体为每片指定结果文件绝对路径;分身必须将最终结构化回报同时写入该文件——返回值/通知仅作信号,母体收编以落盘文件为准。单片失败/取消/中断即弃该片,禁止连坐丢弃其他分身已落盘成果(用户原话:部分分身出事很正常,不能同时丢弃其他分身已完成的任务,那些事有价值)。路径模板(2026-08-20 根源治理,防顶层残渣):落盘路径必须指向暂存区 <项目根>/.fanout/<YYYYMMDD-HHMM>/ 或任务指定的 archive/ 子目录,禁止指定项目顶层——产物从诞生起不进顶层,收编后暂存区整体一次 mv 入 archive 或删除清场(实证:2026-08-20 治理 fanout 自身 4 个 _gov 文件落顶层,与 7/25 三十三个 partial 同一根源动作) |
SLOT-RECEIPT · 回报槽(分身回报时)
分身最终汇报必须为结构化 JSON,母体机械校验,不合格即时 send_message 续派整改:
{
"status": "done|partial|blocked",
"artifacts": ["<产物绝对路径>"],
"deviation": "<与任务书的偏差说明,无则空串>",
"blocker": "<阻塞点,无则空串>",
"todo_final": "<任务清单完成状态:N/M 完成>"
}
机械校验(2026-08-16 REFORM-GATE item2 裁定):回报是否合格禁止手写判定,必须扳动校验脚本照抄结论:
python3 scripts/receipt_check.py --receipt <回报.json> # 或 stdin 喂入
# 退出码 0=五字段契约全部满足 / 1=违例并逐条列出(status 枚举、artifacts 数组与路径存在性、deviation·blocker·todo_final 字段存在)
门禁场景走 gate-switch 包装:gate_switch.py --spec ~/.agents/skills/receipt_gate/scripts/specs/receipt_gate.json --set receipt=<回报.json>。判 1 即续派整改,禁止肉眼放行。
结果落盘核验(2026-08-17 落地):母体收编每路时先扳 gate_switch.py --spec ~/.agents/skills/shard_result_gate/scripts/specs/shard_result_gate.json --set result=<任务书⑦路径>,判 A(结果文件真实存在且非空)才收编;判 B 即该路成果未落盘,按任务书续派补落盘或标记该路损失——其余各路已落盘成果照常收编,不连坐。
SLOT-MERGE · 合并槽(最后一路到齐后,一次执行)
四道校验一次性过完,禁止逐路重复验收:① 文件级冲突(两分身改同一文件)② 契约级冲突(接口/Schema 不一致)③ 数据格式级冲突 ④ 完整性差集(全域大纲比对,漏项即补派)。
机械校验(2026-08-16 REFORM-GATE item2 裁定):①④两道禁止手写判定,必须扳动校验脚本照抄结论:
python3 scripts/merge_check.py --manifest <分身A清单.json> <分身B清单.json> ... --expect <期望产物清单.txt>
# manifest 格式:{"agent":"<分身名>","changed_files":["<绝对路径>",...]};expect 清单一行一个绝对路径
# 退出码 0=无文件级冲突且产物完整 / 1=违例并列出冲突文件与缺失差集
门禁场景走 gate-switch 包装:gate_switch.py --spec ~/.agents/skills/merge_gate/scripts/specs/merge_gate.json --set manifests="a.json b.json" --set expect=<清单>。②契约级与③数据格式级冲突为纯语义判断,留软层由母体人工校验(自杀开关:纯语义不造门),禁止伪造机械结论。
七、引擎级分身机制(M/L 档专用)
- 前置:
task_breakdown产出task_slice_plan.json,标注估时、验收标准、依赖、技术栈。 - 层级化并行(规则 18):顶层 3 Agent(测试/前端/后端)× 各拆 3 子 Agent,同层 ≤9,超限须 PM 显式审批。
- 提出并行分叉/汇聚等结构性方案前,必须先读引擎代码确认底层支持(规则 25 教训:引擎
next_agents[0]不支持多数组调度的回滚事故)。
八、依赖判定与拓扑标记(规则 33 执行细则)
- 完全无依赖 → 标记
parallel,必须立即 spawn 并行;不得以任何理由改串行。 - 部分无依赖 → 依赖链串行、无依赖部分并行,形成混合拓扑。
- 全依赖链 / 资源冲突 → 标记
sequential串行,禁止强行并行;必须在task_slice_plan.json的execution_topology字段写明依赖链理由。 - 禁止在依赖关系未判明前盲目并行。
九、禁止清单(违例即视为故意串行化或违规并行)
- 禁止"只评估不执行":产出并行评估报告后不触发实际并行。(已机械固化:fanout_seal.py 收尾闸校验本 turn 掷点 A 留痕必须有真实扇出调用实证,无实证即违规拒答)
- 禁止以"先评估看看""等下一轮再并行""稳妥起见串行"为由拖延。
- 禁止用轻分身扛 M/L 档大需求;禁止对免评估小需求做重评估空耗。
- 禁止 ≥10 路逐个人肉 spawn(必须 workflow 编排)。
- 禁止跳过依赖判定盲目并行;禁止全依赖链强行并行。
- 禁止跳过母体合并校验直接推进下游;禁止子分身绕过母体直接汇报(规则 20)。
- 禁止引擎离线时静默降级为软执行。
- 禁止忙轮询后台分身/job(完成自动通知),禁止重复 spawn 已在跑的任务。
- 禁止无显式指令主动启用 ralph。
- 禁止把本规则的任何判定逻辑下沉进引擎代码/引擎规则层(2026-08-15 用户裁定:轻量化、通用方向,引擎对外分发不携带私有规则)。
- 禁止分身进度黑盒(2026-08-14 archmap 项目复盘裁定):分身任务书必须固定两条——①开工先自建 todo 清单并随进展更新;②最终汇报必须附任务清单完成状态。母体须把各分身子任务拆进自己的 todo,保证母体/分身/用户三方进度透明,禁止只有一个"进行中"黑盒。母体侧已机械固化(2026-08-16 裁定):
dispatch_switch.py掷点 A 前置强制校验本 turn todo/write 实证(条目数 ≥ 扇出单元数),未登记即拒扳;fanout_seal.py收尾闸强制校验最终清单全部 completed,漏销号逐条列出并拒答。概率触发问题由扳手接管。 - 禁止多任务出现时不输出
[PARALLEL-GATE]声明(2026-08-16 裁定):≥2 个子任务/诉求即触发,无触发词依赖;判定sequential而依赖链理由留空,视同违规。 - 禁止用小时/体感评估任务量(2026-08-16 量纲裁定):唯一量纲为文件数量;禁止单文件内多修改点拆分身(文件级写冲突风险)。
十、规则溯源
| 来源 | 内容 |
|---|---|
全局 AGENTS.md §多任务并行与子分身默认策略 |
2026-08-14 五条裁定(总则来源) |
rules/01_workflows.md 规则 16 |
依赖判定 / 角色分组 / 上下文基线 / 合并校验 |
| 规则 17 | SPM/DPM 后测试+前后端三方并行(契约先行、引擎驱动) |
| 规则 18 | 层级化 9-Agent 并行与规模控制 |
| 规则 19 | S 档可关分身串行;M/L 档必须 task_breakdown |
| 规则 20 | 任意 Agent 先 task_breakdown,子 Agent 不得绕过母体汇报 |
| 规则 22 | M/L 档前端任务强制并行拆分 |
| 规则 24 | 无依赖修改点一条消息内并行发出多个 Edit |
| 规则 25 | 结构方案前必读引擎代码确认底层能力 |
| 规则 33 | ≥2 子任务即触发并行,评估只是入口 |
| retro-pm-124 | 扇出前最小探针,探针失败直接串行 |
| 2026-08-16 用户裁定 | PARALLEL-GATE 强制门禁(多任务出现即触发)/ 量纲唯一化(只按文件数)/ 三槽契约(PRE-SPAWN·RECEIPT·MERGE) |
| 2026-08-23 用户终裁 | 分身闸=并行闸最后一步程序(无条件触发);A/B 殊途同归——判 B 仅串行拓扑非免分身,符合条件即生成子分身 |
| 2026-08-15 用户裁定 | 单刀双掷开关(dispatch_switch.py):门禁判定机械执行唯一出口,A/B 双掷点 + B 档理由强制 + --force-serial 人工串行备案 + 全程留痕审计 |
| 2026-08-17 用户裁定 | 多任务: 编号清单句式(触发表 #3):有几个编号生成几条 todo 并直接并行;定义边界——多任务并行(异构独立任务)≠ 子分身(同质内容切分、相同步骤) |
| 2026-08-17 用户裁定 | 契约先行分片(REFORM-GATE 判 A):coupled 前置细分契约耦合(冻约+并行)/ 产物耦合(才允许串行),开关侧 `--dep-type contract |