Skip to content

Commit 5acb93a

Browse files
os-zhuangclaude
andauthored
docs(pm-dispatch): 协调模型改版 —— 分诊/执行纵向拆分 + 一人一车道双射 + 登记表正文即真相 + 座位 Routine 化 (#5472) (#5522)
* docs(pm-dispatch): 协调模型改版 —— 分诊/执行纵向拆分 + 一人一车道双射 + 登记表正文即真相 + 座位 Routine 化 (#5472) 维护者 2026-08-05 拍板的 PM 协调模型改版,落到 `.claude/skills/pm-dispatch/SKILL.md` (唯一文件面)加一份 changeset。前提已对 origin/main 核过:同文件今天已合的 #5130 (决策轴)与 #5095(域表 22 包)成果全部保留,engine 域拆分与本单其余条款在 main 上均未落地,按增量施工。 - Multi-repo rule 4 重写为「纵向拆分 + 双射」:1 个分诊 PM(全仓唯一,只扫/分类/ 打标签/拆跨域/查重,永不认领派发,`domain:*` 的唯一生产者)+ N 个执行 PM(信任 标签、跳过分诊、只在本车道认领)。旧的分片阶梯 / 同队列禁令 / Borrowing 三段 删除,只留一处「越界许可已删除」的墓碑句。 - 跨域例外路径成为唯一越界通道:分诊座位指定单一车道 PM 认领 + 申报文件面 + 定向在飞检查(写明触发条件与检查范围);全局在飞检查从每轮常备税降级为该路径专用。 - 座位表协议(#4604):正文表格即唯一权威现状,行=座位 / 列=座位|范围|当前 PM|说明, 接管即就地编辑该行 + 审计评论;评论不承载状态;无心跳,活性惰性判定,>24h 无产出 可回收。epic 登记退回 `pm:epic` 父单正文(`label:pm:epic` 即索引),座位表不重复记。 - rule 5 补 org Project 的分层定位:视图层、无任何机器读它、GraphQL 配额不进循环 热路径;权威层坚持 issue 正文 + REST。 - 域表重切:`domain:engine` 拆为 `domain:engine-core`(objectql / metadata* / platform-objects / core / formula / plugin-pinyin-search)与 `domain:drivers` (`plugins/driver-*`),附存量标签迁移与座位表加行要求;拆分后每包恰好一域。 - 座位 Routine 化的运行形态(Dispatch backends / Collect / step 9):每座位一个 cron Routine、fresh session per fire、频率随队列深度独立调、读 #4604 拿范围 → 从 labels 重建状态 → 跑一轮 → 结束;轮次互斥取「fire 开始查上一轮产出时间, 间隔不足即自退」。⛔ 如实记录 #5474 试点实测:CCR 会话内 create_trigger 创建的 Routine 不携带 GitHub 连接器,fired session 无 mcp github 工具即静默零产出, 座位 Routine 须由维护者从 claude.ai Routines UI 带连接器创建并先烟测。 - round loop 新增职责划分表(step 0 / step 2 分类半边属分诊座位,step 1、3-9 属 执行座位)+ step 0 三处扫描排除 + Guardrails 两条新 binding。 刻意未动:`.claude/agents/os-dev.md`(在飞 #5441 的领地)、`content/docs/releases/`、 已发布目录 `skills/objectstack-pm-dispatch/`、#4604 正文本身(运行态登记由 PM 落地)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3uGFF8teXbpgtbEJ1aYXu * docs(pm-dispatch): 与 #5501 的语义合并 —— 座位 Routine 与停摆纠偏/串行接力的层级互引 (#5472) #5501(#5441 的实施)已于 2026-08-05T15:02:23Z 合入 main,本分支终轮 git merge origin/main 无冲突(两 PR 的落点区段互不相交)。机械合并之后补两处**语义**叠加, 使两侧意图相加而不是并排放置: - step 6 Collect:#5501 的停摆纠偏靠 SendMessage 唤醒一个还活着的对面,而座位 Routine 的 fire 结束后没有可唤醒的 subagent —— 停摆与「会话已销毁」在 GitHub 上是同一个读数。补一段:验证管线可能超过一个 fire 的活,一开始就走 mode:cloud, 把恢复权交给下一轮的 GitHub 读数。 - 座位 Routine 化一节:补跨 fire 长流程的可行性依据 —— 串行接力(一棒一整圈 + 棒间 PM 复核)必然跨多个 fire,能跨过去是因为交接物全是 GitHub 读数(draft/ ready、auto-merge 是否挂上、预期红停放那份签名级清单写在 PR body 里);因此 对长流程只加一条要求:接力/停放的每一项都要落成 GitHub 上可读的文本,不许把 「下一棒该干什么」留在会话记忆里。 未改 #5501 的任何原文(含其「飞行中范围重叠拦截」段 —— 它说的是 PM 为**自己** 在飞的 agent 复查 main,双射之下天然就是本车道范围,与本单删掉的跨 PM 全局在飞 检查不是同一个机制,无需改写)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01N3uGFF8teXbpgtbEJ1aYXu --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 60e430b commit 5acb93a

2 files changed

Lines changed: 327 additions & 133 deletions

File tree

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
---
3+
4+
docs(pm-dispatch): 协调模型改版 —— 纵向拆分(分诊/执行)+ 一人一车道双射 + 登记表正文即真相 + 座位 Routine 化,`engine` 域一分为二 (#5472)
5+
6+
维护者 2026-08-05 拍板的 PM 协调模型改版落到 `.claude/skills/pm-dispatch/SKILL.md`
7+
背景是三笔实测成本:#4604 三天累积 79 条登记评论,「现状」与「历史」同通道使对账
8+
成本随评论数线性涨;全局在飞检查是 O(PM 数 × 在飞数) 的每轮常备税,判据却只是自由
9+
文本申报;objectstack 是最大的仓,单 PM 的认知吞吐不够,同仓多 PM 必须保留 —— 于是
10+
把协调税改成结构性防撞。
11+
12+
- **Multi-repo coordination rule 4 重写为「纵向拆分 + 双射」**:1 个**分诊 PM**
13+
(全仓唯一,只扫/分类/打标签/拆跨域/查重,⛔ 永不认领派发)+ N 个**执行 PM**
14+
(信任标签、跳过分诊、只在本车道认领)。分诊座位是 `domain:*`**唯一生产者**,
15+
「未打标签不可认领」因此第一次有机械保障;执行座位发现误标只上报、不改标签。
16+
每个执行 PM 恰好一个 `domain:*` 车道(双射),旧的 **borrowing 越界许可删除**
17+
(全文只留一处墓碑句):突发积压调频率/`batch`,持续积压**拆域**走 PR。
18+
- **跨域例外路径成为唯一越界通道**:分诊座位指定单一车道 PM 认领 + 认领评论申报
19+
完整文件面 + **定向**在飞检查。全局在飞检查从每轮常备税**降级为该路径专用**,
20+
并写明触发条件(当且仅当认领跨域例外单)与检查范围(申报文件面所触及的域,
21+
不是全仓)。
22+
- **座位表协议(#4604)**:正文表格 = 唯一权威现状,行 = 座位(分诊 + 各域 +
23+
姊妹仓整仓)、列 = 座位 | 范围 | 当前 PM | 说明,接管/移交 = **就地编辑那一行**
24+
+ 一条审计评论;评论只作交接审计、不承载状态。**无心跳**,活性惰性判定(Routine
25+
座位查 `last_fired` / `next_run`,会话座位查最近产出评论),仅在接管冲突时评估,
26+
>24h 无产出可回收。**epic 委托退回 `pm:epic` 父单正文**登记(`label:pm:epic`
27+
即全量索引,座位表不重复记);`packages/spec` 恒归 `domain:spec` 座位。
28+
- **rule 5 补 org Project 的分层定位**:Project**视图层**(auto-add workflow
29+
`pm:*` / `domain:*` / `repo:*` 聚合三仓),**没有任何机器读它**,且因只有
30+
GraphQL 入口(配额 5000/时,Operational note 3 实测一天三次归零)**绝不进循环
31+
热路径**;权威层坚持 issue 正文 + REST(core 配额 15000/时,独立计)。
32+
- **域表重切**:`domain:engine` 拆为 **`domain:engine-core`**(objectql /
33+
metadata\* / platform-objects / core / formula / plugin-pinyin-search)与
34+
**`domain:drivers`**(`plugins/driver-*` 四个),并写明存量 `domain:engine`
35+
由分诊座位按落点改标、清零后删旧标签,座位表同批加行。拆分后每包仍恰好一域。
36+
- **座位 Routine 化的运行形态**(补进「Dispatch backends」/「Collect」/ step 9):
37+
每座位一个 cron Routine(fresh session per fire),频率随队列深度独立调;每次
38+
fire 读 #4604 正文拿范围 → 从 labels 重建状态 → 跑一轮 → 结束。轮次互斥采用
39+
「fire 开始查上一轮产出时间,间隔不足即自退」。⛔ 如实记录 #5474 试点实测的运维
40+
约束:经 CCR **会话内** `create_trigger` 创建的 Routine **不携带 GitHub 连接器**,
41+
fired session 拿不到 `mcp__github__*` → 静默零产出(2026-08-05 烟测近 50 分钟零
42+
写入,已回滚),座位 Routine 必须由维护者从 claude.ai Routines UI 带连接器创建,
43+
且创建后先手动 fire 一轮烟测按 GitHub 产出验收;模型不能经 API 钉住
44+
(`update_trigger` 返回 `model_update_disabled`),Routine 继承环境默认模型。
45+
- **round loop 职责划分表**:step 0 与 step 2 的分类半边属分诊座位,step 1、3–9
46+
属执行座位;分诊座位空缺时由会话型执行 PM **代扫**(只做分诊动作,不跨车道认领)。
47+
step 0 补三处扫描排除(`tracking` / `status:parked` / 座位表本身)与每轮限量。
48+
49+
仅改 `.claude/` 内部 agent 协议文本,不发布任何包;空 frontmatter 仅为满足 changeset
50+
门禁。刻意未动:`.claude/agents/os-dev.md`(在飞 #5441 的领地)、已发布目录
51+
`skills/objectstack-pm-dispatch/`(发布内容另单)、#4604 正文本身(issue 正文由 PM
52+
落地,本 PR 只改 SKILL 引用使其与实态一致)。

0 commit comments

Comments
 (0)