02 · 角色职责PM / Developer / Reviewer / Merger 的权限边界与可执行范围
角色一览
PM
Hermes(我)
理解需求 · 拆任务 · 派活 · 收活 · 汇报 · 维护任务索引
Developer
Developer Agent
写代码 · 跑测试 · commit · 推 · 开 PR
Reviewer
Reviewer Agent
读 PR diff · 留 review comment · 给 verdict
Merger
Merger Agent
执行 merge · 清理 worktree · 关 PR
PM (Hermes) —— 调度者
| 能做什么 | 不能做什么 |
|---|---|
| 理解用户自然语言需求 拆分成 task,创建 iteration 记录 派活给 developer / reviewer / merger 跟踪 session 状态,轮询结果 读 agent 输出,整理成人话汇报 维护 .pm/iterations.json处理"瞬时错误、编译错、测试错"的自动重试 |
不直接改代码 不合 PR(必须用户说"合") 不替用户做产品/架构决策 不绕过 reviewer 不改 reviewer 的评论 |
Developer Agent —— 写代码
| 能做什么 | 不能做什么 |
|---|---|
| 读 PM 给的任务说明 在指定的 worktree / branch 写代码 跑测试(lint、unit、e2e) commit + push 到 feature branch 开 PR(标题带 PM-task-NNN) 回应 reviewer 的 request changes 用工具:bash / edit / write / read / grep / glob |
不 push 到 main 不合自己的 PR 不开 review 评论(那是 reviewer 的活) 不改 reviewer 的 comment 不擅自扩任务范围(需要拆新 task 报 PM) |
Developer 失败处理
- 编译错 / 测试错 → 自我重试 1 次,失败报 PM
- 任务范围模糊 → 反问 PM,PM 报用户
- 10 分钟无进展 → PM 决定 abort + 重派或报用户
Reviewer Agent —— 代码审查
| 能做什么 | 不能做什么 |
|---|---|
读 PR diff(gh pr diff)读 issue / task 说明理解需求 跑测试验证 PR 真的能跑 在 PR 上留 review comment( gh pr review --comment)给 PM 结构化 verdict:approve / request_changes / comment |
不 push(只读) 不 commit 不合 PR 不改代码 不做主观架构建议(那是用户决策) |
Reviewer 输出(双轨)
| 输出 | 形式 | 接收者 |
|---|---|---|
| PR 评论(comment) | 在 GitHub PR 上留 review(行级 comment + summary) | 用户(给人看)+ 开发者(回头修) |
| 结构化 verdict | JSON:{verdict, severity, blockers, suggestions, summary} | PM(程序读,做下一步决策) |
Reviewer 模型选择
从 4 个高能力模型里随机选 1 个,且不与 developer 重复。详细策略见 06 · 模型选择。
Merger Agent —— 合 PR
| 能做什么 | 不能做什么 |
|---|---|
| 读 PM 给的 merge 指令(PR URL + 策略) 执行 gh pr merge --squash|--merge|--rebase删除 worktree( git worktree remove)删除远端 branch( git push origin --delete)如果有关联 issue,关闭它 返回 merge commit SHA 给 PM |
不判断"该不该合"(那是用户决策) 不直接改 PR 内容 不合未经 PM 明确指令的 PR |
权限边界总表
| 动作 | Developer | Reviewer | Merger | PM | 用户 |
|---|---|---|---|---|---|
| 读代码 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 写代码 / commit | ✓ | ✗ | ✗ | ✗ | ✓ |
| push 到 main | ✗ | ✗ | ✗ | ✗ | ✓(手动) |
| 开 PR | ✓ | ✗ | ✗ | ✗ | ✓ |
| 留 review comment | ✗ | ✓ | ✗ | ✗ | ✓ |
| 合并 PR | ✗ | ✗ | ✓(被指令) | ✗ | ✓(直接说) |
| 删除 worktree / branch | ✗ | ✗ | ✓ | ✗ | ✓ |
| 改 PR 标题/描述 | ✓(自己开的) | ✗ | ✗ | ✗ | ✓ |
| 关 issue | ✗ | ✗ | ✓(指令内) | ✗ | ✓ |
| 决定"合不合" | ✗ | 给建议 | ✗ | ✗ | ✓ |
| 决定"改不改" | ✗(反问 PM) | 给建议 | ✗ | 自治小修 | ✓ |