Skip to content

Commit 6ff179d

Browse files
os-zhuangclaude
andauthored
docs(pm-dispatch): subagent default for S+M with per-dispatch tiering; seat-post read boundary (#7946)
Backend revision (maintainer ruling 2026-08-12): S-mechanical + M cards dispatch as mode:subagent with per-dispatch model tiering; mode:cloud is reserved for L/XL, work outliving the PM session, browser/dogfood verification, and build-heavy M by judgment. The archive duty narrows to cloud cards. Rationale recorded in references/dispatch-runbook.md. Seat-post read boundary: at takeover and on patrol, read the post body plus only comments newer than the body's last edit — older comments were absorbed by that edit and are archive, not state. Detail in references/seat-post-protocol.md. Ratchet ceiling 686 held (headroom 0): additions offset in the touched sections (backend paragraph, cloud-lessons paragraph, tiering reflow). Claude-Session: https://claude.ai/code/session_012Gg6rMAti8ZaueWb6BRsDn Co-authored-by: Claude <noreply@anthropic.com>
1 parent e7a7506 commit 6ff179d

3 files changed

Lines changed: 47 additions & 34 deletions

File tree

.claude/skills/pm-dispatch/SKILL.md

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ metadata:
4040
| `repo:<owner/name>` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` |
4141
| `batch:<n>` | 同时在飞的 dev 上限 | `3` |
4242
| `rounds:<n>` | 跑 N 轮后停 | 队列清空为止 |
43-
| `mode:subagent` \| `mode:cloud` | 派发后端 | 按卡分流:M+`cloud`,S 级机械 ⇒ `subagent`(维护者 2026-08-10 裁定) |
43+
| `mode:subagent` \| `mode:cloud` | 派发后端 | 按卡分流:S+M`subagent`,`cloud` 只留 L/XL 等保留面(维护者 2026-08-12 裁定) |
4444
| `#12 #34 …` | 显式 issue 清单,整体覆盖标签查询 ||
4545

4646
无角色参数时按执行姿态运行,车道由座位贴认定。角色参数的意义:座位 Routine 的prompt 收敛成一行
@@ -220,15 +220,16 @@ UI 创建并勾 GitHub 连接器、UI 钉模型(会话内 create_trigger 的Rout
220220
## 座位贴协议(一座位一贴,单写手)
221221

222222
多写手共编一个 body 机制上防不住互吞(维护者 2026-08-06 拍板):**贴 = 座位**(标签`pm:seat`),正
223-
文固定六段现值(**范围 | 当前 PM | 继承台账 | 热文件串行队 | 常设承诺
224-
| 说明**,没有一段随时间增长),**只由在任座位 PM 编辑**,正文为权威 —— 标题
225-
(`[PM seat] <座位名> — <状态>`)与 assignee 是它的派生视图,三者同笔更新。接管/移交 = 改正
226-
文 + 一条审计评论,**评论只作审计不承载状态**;接管压缩是标准步骤(按六段模板重述现值,编辑历史
227-
即存档)。**热文件串行队是正文具名段**(文件 → 有序卡片清单 → 每张卡认领的区域;区域写不清就只
228-
能整文件串行)。无心跳,活性惰性判定(只在接管冲突时评估,会话座位 >24h 无产出可回收);每轮巡检核
229-
对自己的贴;竞态(空缺争用)三招 —— 动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。状态
230-
词表、接管/退场收尾清单等细则见 `references/seat-post-protocol.md`;epic 委托不入座位贴体系
231-
;`packages/spec`恒归 spec 座位。
223+
文固定六段现值(**范围 | 当前 PM | 继承台账 | 热文件串行队 | 常设承诺 | 说明**,没有一段随时间
224+
增长),**只由在任座位 PM 编辑**,正文为权威 —— 标题(`[PM seat] <座位名> — <状态>`)与
225+
assignee 是它的派生视图,三者同笔更新。接管/移交 = 改正文 + 一条审计评论,**评论只作审计不承载
226+
状态**;接管压缩是标准步骤(按六段模板重述现值,编辑历史即存档)。**读侧闭环(维护者 2026-08-12
227+
批准):接管与巡检只读贴正文 + 晚于正文最后编辑的评论** —— 更早的已被那次编辑吸收,是存档不是现
228+
状。**热文件串行队是正文具名段**(文件 → 有序卡片清单 → 每张卡认领的区域;区域写不清就只能整文
229+
件串行)。无心跳,活性惰性判定(只在接管冲突时评估,会话座位 >24h 无产出可回收);每轮巡检核对自
230+
己的贴;竞态(空缺争用)三招 —— 动手前重 fetch 正文、审计评论时间戳先到先得、写后回读。状态词表
231+
、接管/退场收尾清单等细则见 `references/seat-post-protocol.md`;epic 委托不入座位贴体系
232+
;`packages/spec` 恒归 spec 座位。
232233

233234
## Epic 子树车道
234235

@@ -381,13 +382,13 @@ dev 侧推分支要早 —— 远程分支是在飞工作最硬的证据。**Sta
381382
还需要考虑的是派任务时使用什么模型,也应该项目经理决定,最低下限sonnet,最高可以 fable」;「比
382383
如 更新 项目经理技能 必须要使用 Fable 5」。政策:**派发模型是 PM 的逐卡显式决定** —— 下
383384
`sonnet`(机械卡:正确性由门禁农场机械判定,失败模式是漏跑门不是判断失误);默认判断
384-
`opus`(M/L、裁决实施、多面语义、任何带设计判断的卡;拿不准就升一档 —— 错派低档的返工贵过省
385-
下的额度);上限 `fable`(交付物本身是协议/流程/编排结构的最重卡,按卡取用不是新默认)。**强制
386-
条款(无向下裁量权):凡改 `.claude/skills/pm-dispatch/**` 的卡,
387-
`model: "claude-fable-5"` 派发。**档位**逐次派发显式传参,永不省略**(解析顺序:环境变
388-
量 → 派发参数 → 定义frontmatter → 主会话模型;pin 只管什么都不传的情形;被允许名单挡下时回退**
389-
继承的模型**,正是 pin 要防的静默继承),连同尺寸写进认领评论「Container & model」行;分诊
390-
suggestion 行是输入不是决定,不采纳给一句理由
385+
`opus`(M/L、裁决实施、任何带设计判断的卡;拿不准就升一档 —— 错派低档的返工贵过省下的额度)
386+
;上限 `fable`(交付物本身是协议/流程/编排结构的最重卡,按卡取用不是新默认)。**强制条款(无
387+
向下裁量权):凡改 `.claude/skills/pm-dispatch/**` 的卡,一律 `model: "claude-fable-5"` 派发。
388+
**档位**逐次派发显式传参,永不省略**(解析顺序:环境变量 → 派发参数 → 定义 frontmatter → 主会
389+
话模型;pin 只管什么都不传的情形;被允许名单挡下时回退**继承的模型**,正是 pin 要防的静默继承)
390+
,连同尺寸写进认领评论「Container & model」行;分诊 suggestion 行是输入不是决定,不采纳给一句
391+
理由
391392

392393
**派发词原则(构造细则与条款原文见 `references/dispatch-runbook.md`)。** ⛔ 默认不整段粘
393394
贴 issue 正文 —— 让 dev 自己读 GitHub 全文与全部评论,并**必须**要求 dev 自查正文完整性(截断
@@ -412,23 +413,22 @@ suggestion 行是输入不是决定,不采纳给一句理由。
412413
- **Premise-first 写明**:issue 正文是线索不是规格;`premise_still_valid: false` +无 PR 是合法
413414
且常常有价值的交付 —— 派发词预设 issue 为真,就把好运行变成表面抗命。
414415

415-
**资源与后端。** 并行 agent 共享一个容器,内存峰值来自 build+test(os-dev 定义已强制验证锁
416-
/heap 上限/scoped filter/收尾清理);build 重的降 `batch:2` 或走`mode:cloud`;OOM 死的单独重派
417-
**M 及以上默认云卡**(维护者 2026-08-10 裁定,原话:「确认,M 及以上默认云卡」):M+ ⇒
418-
`mode:cloud` 独享容器,⛔ 不混共享批次;只有 S 级**机械**卡留 `mode:subagent`;S 级但不机械(判
419-
断面在设计不在门禁)按 M 待遇 —— 尺寸不是档位的充分判据。判定连同档位写进认领评论。
420-
421-
**云卡四课**(细则见 `references/dispatch-runbook.md`;一次性云卡用`create_session`,⛔ 不
422-
用 create_trigger+fire —— 维护者 2026-08-07 拍板,trigger 流只留给定时/重复型):① 授权面
423-
随 source 不随环境(带 `source_url` + `outcome_branch` +显式 `model` + 车道名开头
424-
`title`);② 派发词必带**自驱条款**(⛔ 不为提问/中期汇报结束回合;合法回合终点只有推送完
425-
成 + 终报,或硬阻塞详报);③ 交付通道 = dev 自开draft PR + 终报以 issue 评论交付;④ **云卡 draft
426-
PR 一存在立即`subscribe_pr_activity` —— 硬步骤**(未订阅的云卡 PR 是轮询负债)。CCR 云会话不注
427-
册跨会话消息 roster —— `SendMessage` 直投 not-reachable 是设计而非故障(维护者2026-08-11 裁定
428-
:事件驱动架构即长期方案),⛔ 不复测 roster 路径。**接手中断的dev**:先试 SendMessage 复活
429-
,resume 不可用才走 worktree 接手协议(细则同上表)——⛔ 不重跑原派发词;worktree 不新建;
430-
逐 hunk 读既有工作再决定;验证完整重跑; assignee/认领评论/分支全不动(既有认领的延续,不是新认
431-
领)。
416+
**资源与后端(维护者 2026-08-12 裁定:中级卡改子 agent、模型由 PM 按难度逐卡指定;覆盖
417+
2026-08-10 的「M 及以上默认云卡」)。** S 级机械 + M ⇒ `mode:subagent`(PM 容器内并行,档位按
418+
Model tiering 显式传参);S 级但不机械(判断面在设计不在门禁)按 M 待遇。`mode:cloud` 只保留给
419+
:L/XL、必须活过 PM 会话的工作、浏览器/dogfood 验证、以及逐卡判断的 build 重 M 卡(争用只来
420+
自 build+test,docs/指令类 M 卡碰不到;论证见 `references/dispatch-runbook.md`)。**归档义务只
421+
落在云卡**(遗忘容器面随之收窄到 L 级派发);OOM 死的单独重派;判定连同档位写进认领评论。
422+
423+
**云卡四课**(细则见 `references/dispatch-runbook.md`;一次性云卡用 `create_session`,⛔ 不用
424+
create_trigger+fire —— 维护者 2026-08-07 拍板,trigger 流只留给定时/重复型):① 授权面随
425+
source 不随环境(带 `source_url` + `outcome_branch` + 显式 `model` + 车道名开头的 `title`)
426+
;② 派发词必带**自驱条款**(合法回合终点只有推送完成 + 终报,或硬阻塞详报);③ 交付通道 = dev
427+
自开 draft PR + 终报以 issue 评论交付;④ **云卡 draft PR 一存在立即 `subscribe_pr_activity`
428+
—— 硬步骤**(未订阅的云卡 PR 是轮询负债)。云会话 `SendMessage` not-reachable 是设计非故障(维
429+
护者 2026-08-11 裁定:事件驱动架构即长期方案),⛔ 不复测。**接手中断的 dev**:先试 SendMessage
430+
复活,resume 不可用才走 worktree 接手协议 —— ⛔ 不重跑原派发词;worktree 不新建;逐 hunk 读既
431+
有工作再决定;验证完整重跑;assignee/认领评论/分支全不动(既有认领的延续,不是新认领)。
432432

433433
### 收集
434434

.claude/skills/pm-dispatch/references/dispatch-runbook.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
一次性云卡用 `create_session`,⛔ 不用 create_trigger+fire(维护者 2026-08-07 拍
99
板;trigger 流只留给定时/重复型)。
1010

11+
**适用面与取舍论证(维护者 2026-08-12 裁定,覆盖「M 及以上默认云卡」)**:S 级机
12+
械 + M ⇒ `mode:subagent`(PM 容器内并行、逐卡显式 `model` 分档);云只保留给 L/XL、
13+
必须活过 PM 会话的工作、浏览器/dogfood 验证、以及逐卡判断的 build 重 M 卡 —— 共享
14+
容器争用只来自 build+test,docs/指令类 M 卡碰不到它。论证入档:云有三项固定税 ——
15+
归档债(实测一个座位积欠 11 个遗忘容器)、create/poke/subscribe/collect 派发收集管
16+
线、逐卡容器+clone 启动;subagent 的唯一实成本是「随 PM 会话死」,已由
17+
branch-early、draft-PR 时点报告、transcript 复活与 worktree 接手协议兜底。归档义务
18+
因此只落在云卡上,遗忘容器面收窄到 L 级派发。
19+
1120
1. **授权面随 source,不随环境**:trigger 拉起的会话没有仓库授权(只能只读勘察);
1221
`create_session``source_url` 的会话出生即持推送授权。同时带
1322
`outcome_branch`(= 认领分支)、显式 `model`(trigger 流不可指模型)、`title`

.claude/skills/pm-dispatch/references/seat-post-protocol.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
裁与活性判定优先用它对账正文。
2020
- **接管/移交 = 改该贴正文 + 一条审计评论;评论只作交接审计,不承载状态** —— 现状
2121
永远读正文,不读评论流(历史与现状挤同一通道,对账成本随评论数线性涨)。
22+
- **读侧边界(接管与巡检)**:读贴正文 + **只读晚于正文最后编辑时间的评论** —— 更早
23+
的评论已在那次编辑被吸收进正文(接管压缩即存档动作),属存档不属现状(维护者
24+
2026-08-12 批准)。评论无界增长而正文有界,读全评论是纯 token 税;正文编辑时刻与
25+
评论时间戳都是平台盖章的硬读数,比对即得。
2226
- **班次叙事不进贴正文**:逐卡状态在卡与 PR 上本就必填,轮次合计走轮次报告;贴正
2327
文只在接管、移交、结构变更时编辑,⛔ 不逐事件追加(无界贴会超出单次读取上限)。
2428
- **接管压缩是标准步骤**:接任 PM 把交接的有效内容按六段模板重述为新正文,**编辑

0 commit comments

Comments
 (0)