diff --git a/.claude/agents/os-dev.md b/.claude/agents/os-dev.md index 0c31ba1f0d..3523bb85d4 100644 --- a/.claude/agents/os-dev.md +++ b/.claude/agents/os-dev.md @@ -27,8 +27,8 @@ model: opus - 认领带 `Resume-from: BRANCH@SHA` ⇒ 从 `origin/BRANCH` 建同名分支续写,先合 `origin/main`。 - ⛔ 永不编辑共享检出(PreToolUse 钩子会拦);修复横跨姊妹仓时一仓一 worktree。 - 动笔前记下基点 `BASE=$(git rev-parse HEAD)`,它是标准条款节里家族规则的锚。 - - 建好分支后的第一个动作是推空分支:任何编辑之前 `git push -u origin `。 - - 它既是认领评论所指分支的落地标记,又是写路由探针(容器凭据不对称)。 + - 建好分支后先推空分支(任何编辑前 `git push -u origin `):落地标记兼写路由探针。 + - 卡线程分支由平台指定、harness 推送,⛔ 不推空分支;探针规则只对自建分支。 - 探针遇 403 ⇒ 停下报 `blocked`,⛔ 不进重试循环;只有网络错误才退避重试。 - Scratchpad 按 issue 隔离:在 scratchpad 目录下建 `issue-/` 子目录,临时文件全写进去。 - 同批 agents 共用一个 scratchpad 目录,自然命名的文件会被彼此静默覆盖。 diff --git a/.claude/skills/pm-dispatch/SKILL.md b/.claude/skills/pm-dispatch/SKILL.md index e8db8f4a11..5c7d6cbebb 100644 --- a/.claude/skills/pm-dispatch/SKILL.md +++ b/.claude/skills/pm-dispatch/SKILL.md @@ -30,7 +30,7 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - ⛔ 永不代维护者答产品或架构问题,⛔ 无代裁通道:席位只分析与推荐,裁决恒出自人工。 - ⛔ 永不编辑共享检出,一任务一 worktree;⛔ 永不 `git stash`。 - ⛔ 永不在代码 PR 里改 `content/docs/releases/`。 -- ⛔ GitHub 之外永不维护任何跟踪状态;org Project 只是视图,权威层是 issue 正文 + REST。 +- ⛔ GitHub 之外永不维护跟踪状态;看板(org Project)只是视图,权威层是 issue 正文 + REST。 - ⛔ 永不跑版本发布、不合并 Version Packages PR;发布动作的完整清单以 AGENTS.md 为权威。 - ⛔ 未经人工的发布痕迹按事故立案,不代跑补救性发布;机械通道存在不构成授权。 - ⛔ 分诊席永不认领卡、派发 dev 飞或写代码;执行席只在本车道认领,永不改 `domain:*`。 @@ -51,10 +51,10 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 | arg | 含义 | 默认 | |---|---|---| | `triage` | 以分诊座位身份运行(只扫/分类/路由,永不认领) | — | -| ``(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行 | — | +| ``(如 `spec`、`skills`) | 以该 `domain:*` 车道的执行座位身份运行;承办该车道的项目即「车道项目」 | — | | `epic:#` | 以父单 #n 的 epic PM 身份运行(见 `references/seat-lifecycle.md` 〈Epic 子树车道〉) | — | -| `director` | 以项目总监席身份运行(人工召唤;三职与章程见 `references/lanes/director.md`) | — | -| `coordinator` | 以项目协调者身份运行(项目会话:开席位线程与卡线程、跨车道调度;接口见 `references/coordinator.md`) | — | +| `director` | 以总监席身份运行(人工召唤;所在项目即「总监项目」;三职与章程见 `references/lanes/director.md`) | — | +| `coordinator` | 以协调者身份运行(项目会话:开席位线程与卡线程、跨车道调度;接口见 `references/coordinator.md`) | — | | `label:` | backlog 过滤标签;`label:all` = 全部 open 未认领 | `pm:queue` | | `repo:` | 扫哪个仓的 backlog(单 issue 的落地仓看它自己的 `repo:*` 标签) | `objectstack-ai/objectstack` | | `batch:` | 席位同时在飞的子代理总上限,按 `Agent` 调用、`create_session` 与卡线程计:dev、复核、普查皆计,⛔ 只读不豁免 | 默认 `3`;`n` 的维护者天花板 `5` | @@ -68,11 +68,11 @@ PM 的工作是循环:选卡 → 认领 → 派发 → 收集 → 复核 → 报 - fire = 一次唤醒;fire 到达时上一轮未清空的接续处理,⛔ 不重开、不重排。 - 批 = 一个上下文里读完的 ≤5 张同族卡,是质量单位,⛔ 不是预算。 - 班 = 一个会话的任期,只以交接或惰性回收结束。 -- 入座即建唯一自绑 cron Routine(`create_trigger`,`own_followup`)作默认唤醒;id 记座位贴说明段。 -- 轮末 `send_later` 是可选加速器:在飞 ≤55 分钟,⛔ 不作唯一唤醒;只定下次唤醒,不定轮长。 +- 席位两形:Routine 席与项目席(会话是车道项目的线程);细则见 `references/seat-lifecycle.md`。 +- 项目席唤醒 = PR 订阅事件 + 每项目一个巡查 routine;⛔ 无自绑 cron、无 `send_later` 链。 - 探针先行:fire 的第一动作是一次最便宜的车道盘点查询,⛔ 在它之前不读任何长文本。 - 队列空 + 无在飞 + 无待复核 + 决策箱无新答复 ⇒ 自退。 -- 分诊席跑普通直连会话、默认判断档;裁决不在本席,归维护者召唤的总监席。 +- 分诊席跑直连会话、默认判断档;直连会话按召唤跑,⛔ 无自醒不常驻;裁决归总监席。 - 子代理裁决逐份过转录核验采信。 ## 阶段细则索引 diff --git a/.claude/skills/pm-dispatch/references/coordinator.md b/.claude/skills/pm-dispatch/references/coordinator.md index 5d76a8fffd..06fea74d3f 100644 --- a/.claude/skills/pm-dispatch/references/coordinator.md +++ b/.claude/skills/pm-dispatch/references/coordinator.md @@ -1,6 +1,6 @@ -# 项目协调者(Project Coordinator) +# 协调者(Coordinator) -项目会话里开席位线程与卡线程、跨车道调度的那一席读本文。 +项目会话里开席位线程与卡线程、跨车道调度的那一席读本文;项目席见 `seat-lifecycle.md`。 它不是 `domain:*` 席:不坐座位贴、不认领卡;席位线程照 SKILL.md 与 `execution-duties.md` 跑循环。 项目指令只写「按仓库规则执行;管 X、Y 车道」;规则住本仓,⛔ 不在项目指令里转贴。 本文只写 coordinator 与席位线程之间的接口,七节各注明读者。 @@ -21,7 +21,7 @@ ## 三、全项目一个上限,p1 先(coordinator 调度读;席位交候选时读) - 卡线程上限全项目一个数,由维护者按项目言明;未言明取各席 `batch` 之和。 -- 席位随时交候选:卡号、优先级、派发令文件、建议 effort;⛔ 不等自己的槽位。 +- 席位随时交候选:卡号、优先级、派发令全文、建议 effort;⛔ 不等自己的槽位。 - coordinator 排队开线程:p1 先于 p2,同级先到先开;满即排队,线程交回或 PR 合入即释放。 - 槽位只算在建的线程:等人(授权批准、决策卡)或等席位复核的卡线程不占槽。 - S 卡的席内子代理只计该席 `batch`,不计本上限。 diff --git a/.claude/skills/pm-dispatch/references/cross-repo-coordination.md b/.claude/skills/pm-dispatch/references/cross-repo-coordination.md index 370393c474..678a2a69d5 100644 --- a/.claude/skills/pm-dispatch/references/cross-repo-coordination.md +++ b/.claude/skills/pm-dispatch/references/cross-repo-coordination.md @@ -41,7 +41,7 @@ - 直派的审计评论逐字引用授权指令。 - 多车道仓分诊空缺时,会话型执行 PM 可代扫:只做分诊动作,不跨车道认领,贴上注明。 - 代扫在分诊座位有主时立即停止。 -- 规则 5:一块板不设第二跟踪器:pm 标签就是状态机,org Project 只是维护者的聚合视图。 +- 规则 5:一块板不设第二跟踪器:pm 标签就是状态机,看板(org Project)只是维护者的聚合视图。 - 认领即跟到 MERGED:派发后发现跨车道面(含 spec)不移卡,复核按面定档,未达档借隔离复核。 - 复核记录带 `Implemented-by:`/`Reviewed-by:`;`pm:retriage` 改路由只对未派发卡。 - 转移落对方队列:目标仓立单带 `pm:queue`、出处行与一行可执行判据,依赖用 `Blocked-by:`。 diff --git a/.claude/skills/pm-dispatch/references/dispatch-runbook.md b/.claude/skills/pm-dispatch/references/dispatch-runbook.md index d6060af4ff..3fa334a361 100644 --- a/.claude/skills/pm-dispatch/references/dispatch-runbook.md +++ b/.claude/skills/pm-dispatch/references/dispatch-runbook.md @@ -132,14 +132,14 @@ - S 级机械卡留席内 `mode:subagent`:开线程要重新克隆、重读技能与 `os-dev.md`,起步成本不值。 - 披露纪律卡(私密细节不得离开席位会话)也留席内,认领写明;卡线程照计 `batch`。 - 项目的 coordinator 跨席位统一调度卡线程;每席一个线程跑 PM 循环,卡线程即 dev。 -- 席位随时把候选卡交 coordinator,附优先级、派发令文件与建议 effort,⛔ 不等自己的槽位。 +- 席位随时把候选卡交 coordinator,附优先级、派发令全文与建议 effort,⛔ 不等自己的槽位。 - coordinator 按优先级开线程,p1 先;全项目上限由维护者按项目定(`coordinator.md`),满即排队。 - 卡线程交回或其 PR 合入,席位当即告知 coordinator 释放槽位。 - 请 coordinator 开线程附维护者原话消息:它只凭维护者明言设线程的 model 与 effort。 - 席位留认领文本、派发令、契约复核、ACCEPT 与落地;线程实施、开 draft PR、驱动 CI。 -- 派发令落项目共享目录 `/mnt/project-files/<席位>/dispatch-.md`:线程读不到席位 scratchpad。 -- 线程开起后第一动作:向席位报告指定推送分支并等待;⛔ 线程不贴认领、不写 assignee。 -- 席位按 AGENTS.md 的顺序写 assignee+`pm:dispatched`,再贴带该 `Branch:` 的认领;之后线程才开工。 +- 派发令由 coordinator 写进卡线程开场消息,⛔ 不落共享目录;卡上派发评论留一行指针。 +- coordinator 开线程即读线程分支交席位(读不到则线程自报);⛔ 线程不认领、不写 assignee。 +- 席位写 assignee+`pm:dispatched`+带该 `Branch:` 的认领;线程核对最新认领指向本分支方开工。 - 分支约定仍是 `claude/issue--`;线程只能推指定分支是实测平台例外,认领如实写。 - worktree 照建;仓 `.claude/agents` 类型未加载(实测),线程照读 `os-dev.md`。 - 交回:PR 与报告落地后给席位线程发一条消息(PR、head、报告要点);审核期线程不关,接 FAIL。 diff --git a/.claude/skills/pm-dispatch/references/execution-duties.md b/.claude/skills/pm-dispatch/references/execution-duties.md index 1377fdd64d..72a36dda1a 100644 --- a/.claude/skills/pm-dispatch/references/execution-duties.md +++ b/.claude/skills/pm-dispatch/references/execution-duties.md @@ -154,8 +154,8 @@ - 收集先扫 GitHub(各模式),标记评论在 = 报告完整;评论与返回消息皆无才进探活/判死。 - 标记两种拼写等效(HTML 注释形、首行 `os-dev-report`);⛔ 永不把没收到失败通知读作还在跑。 - 报告点名 PR ⇒ 会话席当即 `subscribe_pr_activity` 并记座位贴;中继开的 PR 永不自动挂会话。 -- ① 巡检首动作 `list_triggers` 确认 Routine 启用,在飞重挂加速器;唤醒归 Routine,漏挂不断链。 -- ② 在飞期间主巡检间隔 ≤45 分钟,待命期 60–70;节奏维护者明示可改。 +- ① Routine 席巡检首动作 `list_triggers` 确认 Routine 启用;项目席由事件与巡查 routine 唤醒。 +- ② Routine 席在飞期间主巡检间隔 ≤45 分钟,待命期 60–70;节奏维护者明示可改。 - ③ 已派发未回报的 dev 逐个发状态询问;派发后 ~45 分钟无远程产出即到门槛。 - 已有远程分支/PR 不豁免探针。 - ④ 活着 ⇒ 进度与阻塞点;回 no active task; resumed from transcript ⇒ 生前已死,询问即复活。 diff --git a/.claude/skills/pm-dispatch/references/lanes/director.md b/.claude/skills/pm-dispatch/references/lanes/director.md index b9f99361a2..5497705cdd 100644 --- a/.claude/skills/pm-dispatch/references/lanes/director.md +++ b/.claude/skills/pm-dispatch/references/lanes/director.md @@ -1,4 +1,4 @@ -# 席位章程:项目总监(Project Director) +# 席位章程:总监席(Director Seat) 见 SKILL.md 〈升级与决策〉,⛔ 不复制框架本体;本文是岗位说明,现值状态恒在座位贴。 diff --git a/.claude/skills/pm-dispatch/references/lanes/skills.md b/.claude/skills/pm-dispatch/references/lanes/skills.md index 7a1b6b6845..487738cfd3 100644 --- a/.claude/skills/pm-dispatch/references/lanes/skills.md +++ b/.claude/skills/pm-dispatch/references/lanes/skills.md @@ -9,7 +9,7 @@ - 受管面治理执行文件:`.github/CODEOWNERS` 路由半边 + SUBJECT 是受管面本身的门禁/审计脚本。 - 全量判据在 SKILL.md 域车道表;受管面定义与两层分档见 SKILL.md 〈路径分叉〉,⛔ 不另抄。 - QA 管理循环执行归本席;qa-run 记录是协议载体不是工作。 -- 契约复核归派发席席内、决裁勤务归项目总监席(`director.md`);本席保留 skill 与治理文本。 +- 契约复核归派发席席内、决裁勤务归总监席(`director.md`);本席保留 skill 与治理文本。 ## 常设承诺 diff --git a/.claude/skills/pm-dispatch/references/rest-channel.md b/.claude/skills/pm-dispatch/references/rest-channel.md index e2c9774311..9c52fa05e5 100644 --- a/.claude/skills/pm-dispatch/references/rest-channel.md +++ b/.claude/skills/pm-dispatch/references/rest-channel.md @@ -59,7 +59,7 @@ ## 不可迁移 —— 只有这三件,围着它们排计划;红窗守候规则住 `platform-readings.md` 配额段 1. 语义搜索:`/search/*` 被出口代理按设计拒绝。退路 = REST 列表端点加本地 grep。 -2. Projects field_values:GraphQL-only —— 舰队并不需要它;MCP 服务器端无条件抓它才是漏点。 +2. 看板(org Project)field_values:GraphQL-only,舰队不需要它;MCP 服务端无条件抓它才是漏点。 3. `issue transfer`:issues 端点表无此路由(未实调)⇒ 同为 GraphQL-only;配方住 `platform-readings.md`。 ## 第三桶 —— git 零配额等价物 diff --git a/.claude/skills/pm-dispatch/references/seat-lifecycle.md b/.claude/skills/pm-dispatch/references/seat-lifecycle.md index 9e549c6984..5a226eaa58 100644 --- a/.claude/skills/pm-dispatch/references/seat-lifecycle.md +++ b/.claude/skills/pm-dispatch/references/seat-lifecycle.md @@ -23,6 +23,8 @@ ## 座位贴协议 - 贴 = 座位(标签 `pm:seat`),正文固定四段现值:当前 PM / 继承台账 / 热文件串行队 / 说明。 +- 项目席的贴是存根,只留他账号要读的;模板见 `seat-post-protocol.md`。 +- 存根外的姿态、台账与轮报住项目;标题、assignee、坐席审计评论与跨账号移交简报照旧。 - 正文只由在任座位 PM 编辑且为权威;标题与 assignee 是派生视图,三者同笔更新。 - 标题只放慢状态,快状态留在说明段。 - 维护者强制接管令取席位、队列、未起工卡与待落地 PR;⛔ 不取在飞卡,由原认领者跟完。 @@ -65,6 +67,7 @@ ## 轮次报告与节奏 - 每轮向维护者打中文轮次报告(chat 通道):issue → 判决 → PR 链接 → 备注的表。 +- 项目席轮报 = 卡线程清单,⛔ 不逐轮发聊天表;五项健康指标进总监项目的每日摘要。 - 报告加升级项、呈裁清单、awaiting a human merge 项、逐 PR 熔断命中项(无则 none)。 - 报告含 `UNRECOGNISED` 行:对本轮门禁日志 grep `UNRECOGNISED` 逐行照录,`NOT APPLICABLE` 行也在内。 - 健康指标五个:可派发库存(open `pm:queue` 未认领及趋势);决策箱(待维护者数)。 @@ -88,8 +91,5 @@ ## 断粮与跨墙恢复(5 小时用量墙) - 权威的墙信号是失败本身:撞墙报文里的重置时刻在那一刻可得、事前查不到,记下来。 -- 跨墙定时器:拿到重置时刻 ⇒ 一发定点(reset + 缓冲)优先。 -- 没有重置时刻 ⇒ 挂每小时 cron Routine,⛔ 不用 send_later 链。 -- 第一枪成功的 fire 跑恢复后删除 cron;fired 文本照定时器写法纪律。 -- 恢复 playbook 链的是既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活。 -- 随后重挂常规巡检 → 照常跑轮。 +- 恢复 playbook 链既有规则:逐个探在飞云卡 → 直接验收兜底或 transcript 复活 → 照常跑轮。 +- 项目席巡查 routine 每 2–4 小时跑各车道待命项(含前提过时);撞墙记入存根,⛔ 无 cron 链。 diff --git a/.claude/skills/pm-dispatch/references/seat-post-protocol.md b/.claude/skills/pm-dispatch/references/seat-post-protocol.md index 1f33a4a9ff..d311fa3139 100644 --- a/.claude/skills/pm-dispatch/references/seat-post-protocol.md +++ b/.claude/skills/pm-dispatch/references/seat-post-protocol.md @@ -14,6 +14,8 @@ - 当前 PM 段登记三元:GitHub 账号(`get_me` 自查)、会话 ID 或 Routine ID、上任时刻。 - 审计与认领评论的作者字段是平台盖章的硬读数,接管仲裁与活性判定优先用它对账正文。 - 班次叙事 ⛔ 不进贴正文:逐卡状态在卡与 PR 上必填,轮次合计走轮次报告。 +- 存根四项:在座账号与项目 · 上任时刻 · 热文件串行队 · 指针行「姿态台账住项目」。 +- 第五行可选撞墙注记(预计 HH:MM 恢复);存根只在坐席、串行队改、撞墙、移交刷新。 - 接管压缩:接任 PM 把交接的有效内容按四段模板重述为新正文,编辑历史即存档。 - 旧账留在上一版 body revision,审计评论带版本指针(哪一版、何时)。 - 热文件串行队是跨轮跨班次的常设事实:文件 → 有序卡片清单 → 每张卡认领的区域。 @@ -48,16 +50,14 @@ 5. 第 2、3 步由 `node scripts/pm/check-handover.mjs --session=ID --account=LOGIN` 核,退出 0 才写空座正文。 6. 贴正文改 `⏳ vacant` + 台账:前任会话 ID、注销时间、队列快照、串行队、跨车道备忘。 7. 收班简报与审计评论存档;接任指引 = `/pm-dispatch 接手` + 先读座位贴。 -8. `list_triggers` 清点本会话定时器:删入座 Routine,一次性的逐个清理或随移交物转交。 -9. 在飞卡与留跑会话贴里点名(卡号+派发会话 ID);派出的会话离任 PM 自己 `archive_session`。 -10. 向维护者交最终报告。 +8. 在飞卡与留跑会话贴里点名(卡号+派发会话 ID);派出的会话离任 PM 自己 `archive_session`。 +9. 向维护者交最终报告。 ## 座位 Routine 创建 - 由维护者在 claude.ai 的 Routines UI 创建,凭据随 Routine 所挂 repo sources 走。 - Routines UI 并无 GitHub 连接器入口。 -- 会话内 `create_trigger` 的 fresh-session Routine 不挂 repo sources,拿不到 GitHub 工具。 -- 表现为静默零产出;⛔ 不要在会话里 `create_trigger` 出一个座位 Routine 就当它在跑。 +- 会话内 `create_trigger` 的 Routine 拿不到 GitHub 工具、零产出;⛔ 不把它当座位 Routine 在跑。 - 模型不能经 API 钉住,同样在 UI 钉;Routine 继承环境默认模型,环境默认变了它跟着变。 - 创建后先手动 fire 一轮烟测,判据取 GitHub 上的产出:标签写入、审计评论、座位贴编辑。 - ⛔ 不取会话看起来起来了;零产出即技术性失败。