Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions .claude/skills/pm-dispatch/SKILL.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -52,20 +52,22 @@ metadata:
策箱无新
答复 ⇒ **自退**,不再读任何长文本 ——空转座位的成本上界就是这一次查询。

**座位 Routine 三原则**(创建细则见 `references/seat-post-protocol.md`):① 由维护者在 Routines
UI 创建、UI 钉模型 —— 凭据随 Routine 所挂 repo sources 走,Routines UI 并无 GitHub 连接器入口
(2026-08-23 实测;会话内 create_trigger 建的是静默零产出陷阱,细节在 references);② 创建后手动
fire 一轮烟测,判据取**GitHub 上的产出**;③ 每 fire 一轮:读座位
贴 → 从 labels 重建状态 → 跑一轮 → 结束,不继承上下文。**开轮互斥读法**(宁少跑,不让两
个同座位会话并行写标签):fire 开始、首个写动作之前读四个读数,任一未满一个轮次 ⇒ 自
退 —— 最近收班简报;晚于它的最新「开轮」标记(轮中会话在座位贴上唯一的痕迹);本车道
`pm:dispatched` 卡最新非本 session 的 `Claim:` 评论(拼写见「认领」,车道盘点已取);本车道
**座位 Routine 三原则**(细则见 `references/seat-post-protocol.md`):① 维护者在 Routines UI 创建、UI 钉
模型;② 手动 fire 烟测,判据取**GitHub 上的产出**;③ 每 fire 一轮:读座位贴 → 从 labels 重建状
态 → 跑一轮 → 结束,不继承上下文。**开轮互斥读法**(宁少跑,不让两个同座位会话并行写
标签;维护者 2026-08-27 裁「落协议」:近期窗口只管**未收班**活动):fire 开始、首个写动作之
前读四个读数,未收班活动任一未满一个轮次 ⇒ 自退 —— 最近收班简报;晚于它的最新
「开轮」标记(轮中会话在座位贴上唯一的痕迹);本车道 `pm:dispatched` 卡最新非本 session 的
`Claim:` 评论(拼写见「认领」,车道盘点已取;只计**认领本席车道派发**的 —— 评审链/总监
席落在车道卡上的笔迹是跨席作业不算占席,认领自带 session ID 与席位身份);本车道
`state=CLOSED` 按 `updated_at` 降序第一张卡的 `Claim:` session ID —— 第四读免疫标签惯例:不用
`pm:dispatched` 的会话对前三读完全隐形,叠加过期座位贴后与空席同形(实测:一个 16 分钟前还
在一趟合并五个 PR 的会话被读作「清」)。标记可漏写,认领不可省;第三、四读数只**增
加**自退、永不清座位;两读判「非本 session」把 subagent dev 的同 ID 认领读作本会话在飞、
不自退,是特意保留的安全方向 —— 同会话 dev 本非互斥对象,甄别靠分支(见「认领」)。
四读数皆清,先在座位贴留一行开轮标记(session ID + fire 时刻)再跑轮。
`pm:dispatched` 的会话对前三读隐形,与空席同形(实测:16 分钟前还在合并 PR 的会话被读作「清
」)。**收班简报 = 前任「不再写」的显式声明,是释放标记不是锁**:简报即最新事件 ⇒ 立即
坐席,滞后标题是进场顺手修的半状态(⛔ 不是阻塞),简报点名的留守尾巴作围栏(细则见
seat-post-protocol);维护者明示召唤是仲裁:有简报径直坐席,无简报(前任或死在轮中)才走保守确
认,确认终止即坐席。标记可漏写,认领不可省;第三、四读数只**增加**自退、永不清座位;两
读判「非本 session」对 subagent dev 的同 ID 认领不自退,是特意保留的安全方向(同会话 dev 本非
互斥对象,甄别靠分支)。互斥清,先在座位贴留一行开轮标记(session ID + fire 时刻)再跑轮。

## 全体座位的不变量

Expand DownExpand Up@@ -159,8 +161,6 @@ fire 一轮烟测,判据取**GitHub 上的产出**;③ 每 fire 一轮:读座位
`git show origin/main:<path>`),⛔ 不用共享检出的工作树 —— 它的 HEAD由别的 agent 摆布。
- **零命中必须用确定存在的邻近词反查**,否则零命中不成立;仓不可达同理,⛔ 不因「查不了」当「查
过了干净」—— 在 issue 上贴出给对应座位的现成命令,等读数回贴再派。
- **GitHub 限流 ⇒ 先 `GET /rate_limit`(零配额)取精确 reset 与余量,⛔ 不盲等**;公开仓降级 WebFetch
读法与限流细则见 platform-readings。
- **定时器文本纪律(一切自设定时器适用)**:已删除的定时器仍会投递,投递时文本可能落后
现实数
轮 —— 每一枪**以「幂等 —— 动手前先重读状态」开头**,只写关键判
Expand Down
46 changes: 23 additions & 23 deletions .claude/skills/pm-dispatch/references/seat-post-protocol.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -16,9 +16,8 @@
- **「当前 PM」段登记三元**:GitHub 账号(`get_me` 自查)+ 会话 ID 或 Routine ID
+ 上任时刻。审计/认领评论的**作者字段**是平台盖章、不可自述错的硬读数 —— 接管仲
裁与活性判定优先用它对账正文。
- **读侧边界(接管与巡检)**:只读晚于正文最后编辑时间的评论 —— 评论无界增长而正
文有界,读全评论是纯 token 税;两个时刻都是平台盖章的硬读数,比对即得(批准出处在主文
件)。
- **读侧边界(接管与巡检)**:只读晚于正文最后编辑时间的评论(评论无界增长,读全评论是
纯 token 税;两个时刻都是平台盖章的硬读数,比对即得,批准出处在主文件)。
- **班次叙事不进贴正文**:逐卡状态在卡与 PR 上本就必填,轮次合计走轮次报告;贴正
文按写侧刷新点(下方)编辑,⛔ 不逐事件追加(无界贴会超出单次读取上限)。
- **接管压缩细则**:接任 PM 把交接的有效内容按四段模板重述为新正文,**编辑历史即
Expand All@@ -40,26 +39,27 @@
由,边界刷足以覆盖;中途状态的承载见上「班次叙事」条(原话在主文件)。协议/结构
升级迁移状态、或巡检发现正文不符时,当场改正文 + 审计评论。Routine 座位的收尾简报也
落自己的座位贴(它是下一轮自退守卫的读数)。
- **收班 = 状态 flush + 看护显式移交,⛔ 不等于在飞归零**(维护者 2026-08-13 拍板;实测:云卡本
就设计为活过 PM 会话,等它归零曾挂住座位数小时)。在飞归零对子代理
dev 是对的(随会话死);对云卡与合并队列尾巴是错的 —— 那些是持久的、GitHub 锚
定的进程,需要的是**看护者**。热移交三件齐即可收班:① 每张在飞卡落**收单注记**
(评审判据、落地步骤、当前状态);② 座位贴正文刷新到当下;③ 每件在飞物**点名接手看
护者** —— 默认下任座位
(在跑云会话用绑定会话 ID 的 poke 触发器投递,⛔ 非 `SendMessage` 直投,细则见
`dispatch-runbook.md`),已入队 PR 的看护同样点名接手座位。**评审判断不可外包**
:看护只守落地,热移交把评审交给下任座位,⛔ 不是跳过评审;会话内 `create_trigger` 的
Routine 拿不到 GitHub 工具(下方细则),⛔ 不是逃生舱。
- **交接收尾清单(退场序列,漏一步就是留残缺现场)**:① 立即停止新派发;② 在手工
件逐件处置 —— 能收则收,收不完走上一条热移交(⛔ 不为清零而等);③ 全量枚举本车
道队列 + 决策箱 + findings,形成接任台账;④ 贴正文改「⏳ vacant」+ 完整台账(前
任会话 ID、注销时间、队列快照、**热文件串行队**、跨车道备忘);⑤ 审计评论存档
(接任指引:`/pm-dispatch 接手` + 先读座位贴);⑥ `list_triggers` 清点本会话全
部自设定时器,逐个清理**或随移交物转交**(绑着移交中 PR 的定时器随 PR 转交,不
清);⑥ʹ 本座位派出的 dev 会话由**离任 PM 自己**逐个 `archive_session`,归档
义务**不可移交**(会话句柄是账号作用域的,细则见 `dispatch-runbook.md`);确须
留跑的会话在座位贴里点名、写明「归档不随交接转移」,⛔ 不留作接任者的欠账 ——
那是一条它做不到的待办;⑦ 向维护者交最终报告(零建议与三类上报纪律在主文件)。
- **收班 = 状态 flush + 在飞显式安置,⛔ 不等于在飞归零**(维护者 2026-08-13 拍板;云卡与队列
尾巴是持久、GitHub 锚定的进程)。安置默认**离任留守**(下条);留不了的才热移交:在飞卡落
**收单注记**(评审判据、落地步骤、当前状态)+ 点名接手看护者 —— 默认下任座位,在跑
云会话经 poke 触发器投递(⛔ 非 `SendMessage` 直投,见 runbook);看护只守落地,**评审判断不可外
包**。**收班序列**(维护者 2026-08-27 裁「落协议」):贴正文/标题刷新在先,**收班简报评论是
最终一笔**;继任的释放判据 = 简报在;标题滞后是可修半状态,坐席时顺手修,⛔ 不是阻塞。
- **离任留守(linger)= 收班后的默认看护形态**(维护者 2026-08-27 裁「落协议」;提案片段:
「立刻进行交接,并继续处理完手上的任务到合并」;「清标即落地」的延伸,谁评审
谁落地):离任 PM 可继续把在手项驱动到 MERGED;写面恰为**简报点名的项**(已 ACCEPT 待队列
PR、落地中评审链载体),⛔ 不读队列、不新派发、不碰未点名卡,残余定时器同界;末尾巴
合并 ⇒ 贴上一条尾清注记。继任立即坐席,点名集作围栏(声明式,同热文件串行队);标题词
表不扩,收班座位恒 `⏳ vacant`,留守登记(谁、哪些尾巴)= 「说明」段一行。
- **交接收尾清单(退场序列,漏一步就是留残缺现场)**:① 立即停止新派发;② 在手工件逐件
处置 —— 能收则收,收不完留守或热移交(⛔ 不为清零而等);③ 全量枚举本车道队列 + 决
策箱 + findings,形成接任台账;④ 贴正文改「⏳ vacant」+ 完整台账(前任会话 ID、注销时间、
队列快照、**热文件串行队**、跨车道备忘);⑤ 收班简报/审计评论存档(最终一笔;接任指
引:`/pm-dispatch 接手` + 先读座位贴);⑥ `list_triggers` 清点本会话全部自设定时器,逐个清理、
随移交物转交(移交中 PR 的定时器随 PR 走)或随留守保留(只触点名项);⑥ʹ 本座位派出的
dev 会话由**离任 PM 自己**逐个 `archive_session`,归档义务**不可移交**(会话句柄是账号作用域
的,细则见 `dispatch-runbook.md`);确须留跑的会话在座位贴里点名、写明「归档不随交接转移」
(⛔ 不留作接任者的欠账);⑦ 向维护者交最终报告(零建议与三类上报纪律在主文件)。
- **epic 委托不入座位贴体系**(父单正文自带会话与领地,`label:pm:epic` 即全量索
引);座位贴只记常设座位,一件事只记一处。`packages/spec` 恒归 spec 座位。

Expand Down
Loading