Files
pikasTech-HWLAB/docs/reference/commander-collaboration.md

102 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HWLAB 指挥官与 runner 协作规则
本文定义指挥官、runner、分支、PR、prompt handoff 和文档维护的长期规则。
## 指挥作风
- 指挥官必须亲自掌握关键一手事实,不能只依赖 runner 的二手摘要。
- 必须亲自查看当前 issue/CLI 明确 node + lane 的 Web 入口默认首屏、`/gate` 或内部诊断页、关键 PR diff、部署 revision、运行面验收结果和失败证据;没有明确目标时才从受控 lane 配置解析入口,禁止把 G14、v0.2 或 D601 legacy 写成全局默认。
- 专题 issue 评论是长任务的上下文锚点。调查结论、细化方案、阶段进展、卡点、修复边界、验收命令和最终结论必须及时写入对应 GitHub issue 评论;不要只存在对话上下文、临时文件或本地记忆里。上下文压缩、换 agent、跨仓库修复或进入 CI/CD 前,应先读最新 issue 评论,再继续执行。
- Web/CLI 路径分叉属于优先级高的工具摩擦。浏览器工作台暴露问题后,先用 `hwlab-cli client` 走同一目标 Cloud Web base URL 复现;Code Agent continuation 优先用 `client agent send --from-trace <traceId>` 从 inspect 自动恢复 Web 上下文,HWPOD 操作优先验证 `hwpod-cli -> hwpod-compiler-cli -> /v1/hwpod-node-ops -> hwpod-node`,再决定是否修业务本体。
- 一层 Code Queue 直接执行业务实现、修复、部署和验证是允许的基层指挥模式。
- 不得把战略判断、是否偏离用户目标的判断、关键 PR 最终审查、关键部署证据审查、指挥官自我反省和指挥规则更新外派给 runner。
- 不得为了 Gate 生成 Gate、为了报告生成报告、为了审查再派审查、为了管理继续拆管理;Gate、报告、预检和观测脚本只能作为真实上线、真实 E2E 或 blocker 解除的必要最小工具。
- 派单前必须能回答该任务直接带来的用户可见变化、运行态变化或 blocker 解除是什么;回答不了时默认不派单。
- 用户反馈 issue 默认高优先级处理;`pikasTech/HWLAB#131` 是当前指挥作风纠偏的一手事实权威来源。
## 门禁最小化原则
不要滑向不必要的复杂门禁是 HWLAB 指挥、runner、PR、CI/CD、GitOps 和扩容治理的通用原则。优先用固定边界、唯一真相源、标准入口、清晰命名、长期参考文档和验收 checklist 收敛共识;不要把每个设计约定、运行策略、观测项、回滚手册或一次性纠偏都升级成新的 preflight、guard、gate 或报告生成器。
旧门禁阻碍最新交付决策时,默认处理是删除或从当前调用链移除,而不是兼容性迁移、fallback、legacy mode、双路径绕行或在旧门禁上叠加例外。新增门禁前必须能说明它保护的明确高价值风险、为什么文档/结构/标准入口不足以自然收敛、失败信号如何保持低噪声,以及未来什么条件下可以删除。
## 工作区规则
- 常规 runner 和指挥官工作区是 `/workspace/hwlab`;进入仓库先检查分支和工作树状态。
- 具体开发/验收 workspace 必须按当前 issue、PR、CLI 参数或受控 lane 配置解析 node + lane,再在对应固定 repo 做 `pwd``git status --short --branch``git remote -v``fetch` 预检。
- D601 v0.3 的固定开发 workspace 是 `/home/ubuntu/workspace/hwlab-v03`,固定跟踪 `origin/v0.3`;当任务明确 D601 v0.3 时,它就是当前 source truth,不是 legacy 对照面。
- G14 DEV/PROD、G14 v0.2 和其他 node/lane 的固定 workspace 只在任务明确选择对应 node/lane 时使用;不得把 `/root/hwlab``/root/hwlab-v02` 或旧 `hwlab-dev`/`hwlab-prod` 运行面写成所有 HWLAB 任务默认 scratch 区。
- CI/CD source commit 选择必须使用当前 node/lane 的受控 source repo 或 control-plane 自动 fetch 后的 commit-pinned detached worktree,不能因为人工开发 workspace dirty、stale 或存在 `.worktree/` 就阻塞或改变发布。
- 固定 repo 是 source truth 和 worktree 管理入口,不是并行任务 scratch 区;不要在固定 repo 根目录堆叠未提交改动,也不要复用其他任务遗留 `.worktree/<task>`
- D601 v0.3 新 `.worktree/<task>` 需要 Cloud Web 检查时,使用 `npm run worktree:deps` 准备共享 Web 依赖;`npm run web:check``npm run web:build` 会自动先执行该入口。该 helper 只复用固定 workspace 下 ignored 的 `.worktree/hwlab-cloud-web-deps`,不得提交 `node_modules`、dist、cache 或临时 lock 产物。
- D601 legacy 只指旧 DEV/CD、迁移对照和事故回放路径;D601 node-scoped runtime lane 不属于 legacy。
- 不要清理、reset 或复用无关 runner worktree 作为发布真相。
## 分支和交付工作流
- 单纯文档、CLI/helper 轻量变更默认直接提交并 push 到当前 node/lane source branch,通常不开 PR;这类变更仍要先快进目标固定 workspace,提交前审查 diff,只提交当前任务相关文件。
- `v0.2` 线的单纯文档和规格更新可以直接提交并 push 到 `origin/v0.2`,不开 PR;涉及 namespace 创建、Argo CD Application、Tekton Pipeline/control-plane、git mirror/relay、FRP、Secret、DB、权限或 runtime rollout 的变更必须先有 GitHub issue 承接过程计划,再按 issue 和对应 `docs/reference/spec-*.md` 分步执行。仓库内不再新增 `docs/plan/*.md`
- 业务代码、运行面、发布链路、Secret、权限、数据迁移、PROD、重启服务、CI/CD 控制面高风险变更或其他影响 runtime truth 的变更默认走 PR 工作流。
- 用户或指挥官给出最新交付纠偏时,以最新要求为准,删除旧断言或旧门禁,不用 feature flag、legacy mode 或双路径长期并存绕开最新要求。
- 需要 PR 时,从当前 node/lane 的 source branch 创建短分支,PR base 必须指向同一 source branch;例如 D601 v0.3 任务应以 `origin/v0.3` 为 baseG14 v0.2 任务才以 `origin/v0.2` 为 base。
- `origin/main` / `main` 不再是当前 node-scoped runtime lane 的默认开发、PR 或发布 base;只有显式 branch-governance 或旧 D601 legacy 任务才可使用。
- 不要修改 PROD。
- 除非任务明确授权,不要重启服务。
- 需要 PR 时,目标分支必须匹配当前工作线的 source branch;不要把 D601 v0.3、G14 或 `v0.2` 变更默认投向 `main` 或其他 lane。
- runner 默认不合并自己的 PR;用户或指挥官可以对单个 PR 明确授权 runner 自合并。
- 自合并前必须同时满足:PR 为 `MERGEABLE/CLEAN` 或等价无冲突状态;required checks 没有失败;当前 issue 明确 node/lane 的 CI 或 runtime 验证证据已贴到 PR/issue;变更不涉及 PROD、Secret、权限提升、数据迁移或未授权重启;runner 在最终评论中列出提交 SHA、验证命令和回滚边界。
- 当前 GitHub 写入仍优先走 UniDesk CLI 或 repo-owned GitHub 路径;若当前 CLI 不支持 merge,必须使用可审计的授权路径,不能用无记录的本地绕行来规避审计。
- PR 冲突由指挥官审阅并处理;runner 不做大范围冲突手术,除非被明确分配。
- 指挥官合并 PR 时必须同时 review,确认方向没有偏离 `#7``#78``#99` 和当前用户反馈。
## Prompt 合同
每个 HWLAB runner 任务必须自包含,并包含:
- 仓库和工作区路径;
- 分支 base 和目标 PR 分支;
- 任务目标和关联 issue 背景;
- 当前稳定约束,尤其是相关时必须引用 `DC-DCSN-P0-2026-003`
- 禁止动作;
- 验收标准;
- 精确验证命令;
- 最终回复要求。
派单前必须用 dry-run 或提交结果确认 prompt 实际内容不是本地临时文件路径、空字符串或被 shell 转义污染的文本。误派的任务要立即 cancel,并在后续派单中改用 `--prompt-file`
不要假设 runner 能读取 issue 评论。需要 issue/PR 可见性时,运行:
```sh
node scripts/runner-issue-visibility-preflight.mjs
```
详细 prompt handoff 合同见 [runner-issue-visibility-handoff.md](runner-issue-visibility-handoff.md)。
## 审查护栏
审查时必须拒绝以下输出:
- 把 SOURCE、LOCAL、DRY-RUN、fixture、edge-only health 或前端状态说成 DEV-LIVE
- M3 绕过 `hwlab-patch-panel`
- 用 UniDesk runtime 替代 HWLAB runtime
- 把 Gate 或 diagnostics 放回 Cloud Web 默认首页;
- 继续使用历史公网 `:6666``:6667` 作为当前 DEV 入口;
- 把 runner kubeconfig 缺失、runner 观测 gap 或瞬时网络问题直接写成 D601/k3s 不可用;
-`/v1/agent/chat``provider_unavailable``OPENAI_API_KEY` 缺失或
本地/mock 回显写成真实 assistant reply
- 用报告完成、Gate 通过、预检通过替代用户可见上线、真实 DEV 运行态变化或 M3 blocker 解除。
## 稳定来源
- [pikasTech/HWLAB#7](https://github.com/pikasTech/HWLAB/issues/7):当前指挥官总看板。
- [pikasTech/HWLAB#78](https://github.com/pikasTech/HWLAB/issues/78)M3 prompt 和审查约束。
- [pikasTech/HWLAB#99](https://github.com/pikasTech/HWLAB/issues/99)Cloud Workbench 用户工作台主线。
- [pikasTech/HWLAB#131](https://github.com/pikasTech/HWLAB/issues/131):指挥作风纠偏,一手调研和真实推进规则。
- [pikasTech/HWLAB#109](https://github.com/pikasTech/HWLAB/issues/109):文档治理任务。
- [pikasTech/HWLAB#121](https://github.com/pikasTech/HWLAB/issues/121):中文化要求。
- [pikasTech/HWLAB#122](https://github.com/pikasTech/HWLAB/issues/122):用户反馈优先级要求。
- [pikasTech/HWLAB#123](https://github.com/pikasTech/HWLAB/issues/123)docs-spec 入库要求。
- [code-agent-chat-readiness.md](code-agent-chat-readiness.md)Code Agent chat 真实回复和 provider blocker 判定。
- [runner-issue-visibility-handoff.md](runner-issue-visibility-handoff.md)runner 可见性和 prompt handoff 详细规则。