worktrees-hives 技能
面向 worktrees-hives 混合编排器的可安装智能体技能。
使用时机
在以下情况下使用此技能:
- 从 GitHub 或 Linear 问题中发现工作任务
- 生成用于代码变更的子智能体
- 在 CI 过程中照看 Pull Request
- 向操作员报告结果
安全护栏
以下规则不可协商。任何智能体、编排器或平台覆盖均不得放宽它们。
拒绝列表(绝不执行)
| 命令 / 操作 | 原因 |
|---|---|
gh pr merge | 智能体绝不合并 PR,必须由人工合并。 |
gh pr merge --auto | 同样禁止;自动合并也是一种合并。 |
git push --force(裸用) | 破坏性操作,会丢失历史记录。仅允许使用 --force-with-lease。 |
git push -f(裸用) | 相同破坏性推操作的简短形式。 |
GraphQL mergePullRequest | 通过 API 合并仍然是合并。 |
REST PUT /repos/.../merge | 通过 REST 合并仍然是合并。 |
| 创建任何合并提交 | 在工作树中使用 git merge 合并 PR 分支。 |
force-with-lease 的允许列表
仅在以下条件下允许使用 git push --force-with-lease:
- 智能体正在将其自己的功能分支变基到更新的基分支上。
- 智能体正在修复因远程引用过时而失败的强制推送。
- 操作员明确指示进行强制推送。
在使用 --force-with-lease 之前,智能体必须:
- 验证当前分支是分配的工作树分支(不是
main、master或其他智能体的分支)。 - 确认远程引用是智能体所期望的(没有意外的来自其他用户的推送)。
修复上限语义
规则: 每个 PR 在每个照看周期内最多允许 3 次代码修复提交。
- 计入上限: 更改源代码、测试、配置或影响行为文档的提交。
- 不计入上限: 来自变基的合并提交、CI 触发的提交(例如锁文件更新)、对 PR 的回复评论。
- 达到上限时: 智能体必须停止提交,并将剩余问题作为 PR 评论报告。智能体继续回复审查评论并监控 CI,但不再推送新的代码更改。
- 剩余问题报告: 达到上限后,智能体发布一条评论,列出:剩余的 CI 失败、未解决的审查线程以及建议的后续人工或下一周期步骤。
- 重置: 当操作员启动新的照看周期(显式重启,非自动)时,上限重置。
分支/工作树编辑前检查清单
在进行任何代码更改之前,智能体必须验证:
- 工作树隔离:
pwd位于分配的工作树路径内({worktree_root}/{owner}/{repo}/{job_id})。 - 分支正确性:
git branch --show-current与分配的功能分支匹配。 - 干净状态:
git status显示无来自其他工作的未提交更改。 - 远程对齐:
git fetch && git status确认分支跟踪预期的远程。 - 无跨界编辑: 不修改工作树外部的任何文件(无
../路径,无工作树根目录外的绝对路径)。
如果任何检查失败,智能体必须中止并报告不匹配情况。
最终状态指南
当照看周期结束时(成功或达到上限),智能体报告:
- PR 状态: 打开 / 待审查 / 阻塞
- 修复计数: 本轮推送的代码修复提交数量(例如 "2/3")
- 剩余问题: 未解决的 CI 失败、审查评论或阻塞项列表
- 智能体归属: 每个 PR 评论和提交消息都包含智能体标识
智能体绝不能声称自己合并了 PR。如果 PR 似乎已合并,智能体报告 "PR 已由人工合并" 并停止。
平台无关的工作者提示模板
在生成子智能体时,在提示中包含以下安全指令:
安全规则(不可协商):
- 绝不合并 PR 或调用任何合并 API/CLI
- 绝不使用裸的 `git push --force` 或 `git push -f`
- 仅允许在变基自己的分支时使用 `git push --force-with-lease`
- 绝不编辑你的分配工作树之外的文件
- 每个照看周期内提交的代码修复提交不超过 3 次
- 编辑前,验证:工作树路径、分支名称、干净状态
- 推送后,回复 SHA 和智能体归属
- 达到上限时,报告剩余问题;不要推送更多代码
执行层
这些护栏在多个层面强制执行:
- 智能体技能(本文件): 可移植的文档和提示模板。不是安全边界——如果平台未对其约束,智能体可能绕过。
- Python 编排器: 通过子进程桥接进行策略执行。计数修复提交,验证路径,并在命令到达 Rust 之前阻止拒绝列表中的命令。
- Rust 核心(
wh-core): 硬性执行。在进程边界拒绝不安全的 git/GitHub 操作。这是权威的安全层。
深度防御:所有三层执行相同规则。某一层的失败会被另一层捕获。