Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Subagent Supervisor turns Codex Agent delegation into a bounded, evidence-based workflow

CI status MIT license Codex Skill Windows macOS Linux

subagent-supervisor

让 Codex 的多 Agent 协作变得可控、可验证、可复盘。
Decide → Bound → Dispatch → Verify → Accept

如果你曾经对 Agent 说过“你们几个分工完成这个任务”,然后遇到过文件互相覆盖、结果只停留在总结里、Agent 重复启动、任务做完却不知道能不能信,这个项目就是为这些问题设计的。

Subagent Supervisor 是一个面向 Codex 原生 Subagent 的治理层。它不增加一个新的 Agent Runtime,也不把每个任务都拆成多人协作;它负责在真正值得委派时,把一次协作变成有边界、有证据、有生命周期的工程流程。

Comparison between unbounded agent delegation and the Subagent Supervisor workflow

30 秒看懂

普通的多 Agent 协作往往是:

“你们自己分工吧”
        ↓
多个 Agent 同时行动
        ↓
重复工作 / 写入冲突 / 结果难以验证

Subagent Supervisor 会把它变成:

先判断是否值得委派
        ↓
为每个任务写清目标、读范围、写范围和验收标准
        ↓
选择 explorer / worker / reviewer
        ↓
记录真实产物和验证证据
        ↓
由主 Agent 直接验收,再关闭 Agent

你可以把它理解为:

给多 Agent 协作增加了项目经理、变更审批、测试验收和审计日志。

它解决什么痛点?

你遇到的痛点 Subagent Supervisor 的处理方式
任务一复杂就盲目启动多个 Agent 默认保持 supervisor-only,只有并行、隔离或独立复核有明确收益时才委派
两个 Agent 修改同一个文件 每个任务声明 allowed_writes,系统拒绝重叠写入范围并发执行
Agent 说“完成了”,但结果不可信 必须提交真实文件、命令退出码、发现和证据;主 Agent 还要直接检查产物
子 Agent 越权修改无关内容 Explorer/Reviewer 只读,Worker 只能拥有明确的写入范围
一个 Agent 失败后不断复制替代者 记录失败类别、复用判断和重试预算,禁止无意义套娃
Worker 自己审查自己的代码 可以启动独立的 ss_reviewer,并绑定到某一次具体返回结果
Agent 超时后不知道它到底停没停 区分“停止等待”和“Agent 已停止”,不会把等待超时伪装成完成
迟到的旧结果覆盖新的取消决定 迟到结果只作为 late evidence 记录,不能重新打开终态任务
用了一堆 Agent 却不知道质量如何 统计分派模式、角色、返工率、失败率、证据覆盖率和运行时长
Native Subagent 和 OMX 的职责混在一起 Native 处理短期有界任务;OMX 只在明确要求持久化团队时进入

它是什么,不是什么

它是什么

  • 一个 Codex Skill;
  • 一套原生 Agent 角色配置;
  • 一组任务、分派、返回和验收契约;
  • 一个标准库实现的治理 CLI;
  • 一个可选的生命周期 Hook 插件;
  • 一个项目本地的、可审计的协作账本。

它不是什么

  • 不是新的大模型;
  • 不是自动把所有任务拆给 Agent 的“群聊机器人”;
  • 不是 tmux、邮件箱、Worktree 或持久化 Worker Runtime;
  • 不是对 Codex 原生线程状态的替代品;
  • 不是“Agent 说完成了就自动通过”的快捷按钮。

真正的 Agent 执行仍由 Codex 负责,Subagent Supervisor 负责让执行过程可控,让主 Agent 能够证明结果为什么可以接受。

一次典型任务是怎样工作的?

假设你有一个需求:

先定位一个回归问题,再修改指定目录里的代码,最后让另一个 Agent 独立复核。

它会被组织成这样的流程:

┌──────────────┐
│ Main Agent   │  拆解任务、授权范围、最终验收
└──────┬───────┘
       │
       ├── 1. ss_explorer  只读调查根因
       │       └─ 返回文件路径、代码位置、可复现证据
       │
       ├── 2. ss_worker    只修改明确目录
       │       └─ 返回 changed files、测试命令和退出码
       │
       ├── 3. ss_reviewer   只读独立复核
       │       └─ 绑定这一次具体 return receipt
       │
       └── 4. Main Agent   直接检查产物、决定 pass/rework/fail、关闭 Agent

如果 Worker 返工,旧的 Reviewer 结论不会自动继续有效。新的返回凭证必须由新的复核任务重新确认。

Subagent Supervisor architecture showing the main Agent, bounded roles, contracts, state, evidence, hooks, and optional OMX

三个内置角色

角色 权限 适合做什么 明确不能做什么
ss_explorer 只读 查代码、查日志、定位根因、整理证据 修改文件、创建 Agent、最终验收
ss_worker workspace-write,但受任务范围限制 完成一个边界明确的实现任务并运行验证 越权扩展范围、创建子 Agent、最终验收
ss_reviewer 只读 独立检查正确性、回归、范围和证据 修复代码、替主 Agent 做最终决定、复核自己

Profile 模板位于 assets/agent-profiles/

七种协作决策

模式 直白解释
supervisor-only 主 Agent 自己完成,最适合简单任务
reuse 继续使用已经打开且范围匹配的 Agent
native-spawn 启动一个受限的原生 Agent
native-parallel 启动多个互不冲突的 Agent
omx-team 用户明确要求时,交给可用的持久化 OMX 团队
stop-waiting 不再等待某个 Agent,但不假设它已停止
close 关闭已完成、过时、失败或不再安全的 Agent

项目的默认原则很简单:

任务复杂,不等于一定要拆 Agent。只有协作带来的收益能被解释和验证时,才值得增加协调成本。

每个任务都有一份“工作合同”

一个 Task Envelope 至少声明:

  • 要完成什么;
  • 可以读取哪些路径;
  • 可以修改哪些路径;
  • 明确禁止碰什么;
  • 依赖哪些任务;
  • 什么条件算完成;
  • 什么情况必须停止;
  • 预期产生什么文件;
  • 超时时间和权限快照;
  • 幂等键。

示意:

{
  "role": "ss_worker",
  "objective": "Implement one bounded change",
  "allowed_reads": ["src", "tests"],
  "allowed_writes": ["src/example.py"],
  "forbidden_scope": ["Do not modify unrelated files"],
  "acceptance_criteria": ["Focused tests pass"],
  "stop_conditions": ["Stop if another file is required"]
}

这解决的是 Agent 协作里最重要的一类问题:

大家都在努力做事,但没有人明确谁可以碰什么。

结果不是“总结”,而是验收凭证

Agent 返回时需要提供:

  • 实际检查过的文件;
  • 实际修改过的文件;
  • 执行过的命令及退出码;
  • 发现和证据引用;
  • 风险与阻塞项。

返回凭证只是 Agent 的声明,不等于验收。主 Agent 还必须:

  1. 直接检查真实文件;
  2. 对照验收标准;
  3. 检查测试或验证输出;
  4. 记录 pass、partial、rework 或 fail;
  5. 关闭不再需要的 Agent。

独立复核是硬门,不是装饰

如果 Worker 任务设置 independent_review_required: true,它不能直接通过。

复核任务必须声明:

dependency_gate: returned
role: ss_reviewer
review_target:
  task_id: <worker-task>
  return_receipt_id: <exact-worker-return>

只有当 Reviewer 自己被验收为 accepted 后,Worker 才能通过最终验收。

这样可以避免两个常见误区:

  • “审查过这个 Agent”不等于“审查过这一次具体结果”;
  • “之前通过过”不等于“返工后的新结果仍然通过”。

生命周期和失败处理

任务会经过明确状态:

planned → ready → dispatched → active → returned → verifying
                                                ↓
                              accepted / partial / rework / failed
                                                ↓
                                               closed

失败会被区分为合同错误、范围越权、验证失败、证据缺失、依赖变化、权限阻塞、Agent 停滞、基础设施故障和用户改向。

项目有有限重试预算:

  • 合同格式错误:最多立即修正一次;
  • 证据不足:最多补一次集中证据;
  • 实现失败:最多两轮有新证据的返工;
  • 权限问题、重复失败或用户取消:不会自动无限重试。

Native Subagent 和 OMX 怎么选?

选择 Native Subagent

  • 任务短期、边界清晰;
  • 当前主 Agent 能够等待和验收;
  • 不需要持久化邮箱;
  • 不需要独立 Worktree;
  • 不需要跨进程恢复。

选择 OMX Team

  • 用户明确要求 OMX;
  • Worker 要跨较长时间持续运行;
  • 需要共享状态、邮箱或 Worktree;
  • 需要独立进程恢复;
  • 本机 OMX Runtime 已经准备好。

仅仅因为机器上安装了 OMX,并不会自动启动 OMX。

安装

作为 Codex Skill 安装

Windows PowerShell:

$skillRoot = Join-Path $env:USERPROFILE '.codex/skills/subagent-supervisor'
git clone https://github.com/sitabanubanu/subagent-supervisor.git $skillRoot
python "$skillRoot/scripts/install_agent_profiles.py" install

macOS/Linux:

git clone https://github.com/sitabanubanu/subagent-supervisor.git ~/.codex/skills/subagent-supervisor
python ~/.codex/skills/subagent-supervisor/scripts/install_agent_profiles.py install

重新打开 Codex 任务后,Skill 会按照入口描述参与路由。安装器会把三个受管理 Profile 写入 ~/.codex/agents/,并记录哈希;如果用户手动修改过 Profile,卸载时会保留用户修改。

可选:生命周期 Hook 插件

plugin/ 是可选运行时组件,不安装它也不影响核心治理能力。

它只记录 SubagentStart 和 SubagentStop 的最小生命周期元数据,不保存 Prompt、聊天内容、Token、Cookie 或密钥。由于 Codex 对 Hook 有信任边界,安装后应在 Codex 的 Hook 审核界面检查并信任来源,不要绕过安全确认。

常用命令

初始化一次治理 Run:

python scripts/supervisorctl.py init-run --workspace . --objective "Review and implement bounded changes"

验证一个任务合同:

python scripts/supervisorctl.py validate --kind task-envelope --file tests/fixtures/task-worker.json --workspace .

查看当前 Run:

python scripts/supervisorctl.py status --workspace . --run-id <run-id>

查看近 30 天使用情况:

python scripts/usage_report.py --root . --since-days 30
python scripts/usage_report.py --root . --since-days 30 --json

数据和隐私边界

治理账本默认写入:

<workspace>/.codex-supervisor/

它记录的是:

  • 角色、状态和时间;
  • 分派模式和原因码;
  • 任务合同中明确提供的字段;
  • 文件路径和证据引用;
  • 验收结论;
  • 幂等事件。

它不会主动记录:

  • 原始 Prompt;
  • Assistant 回复;
  • Transcript 内容或路径;
  • 环境变量;
  • Token、Cookie、Credential 或 Authorization 数据;
  • 完整命令输出。

注意:任务目标和证据引用是你主动写入合同的内容,仍然可能包含敏感信息。公开项目或共享工作区时,应保持它们最小化。

项目结构

.
├── SKILL.md                         # Codex 的触发规则和主流程
├── agents/openai.yaml                # Skill 的 Agent 接口描述
├── assets/agent-profiles/            # explorer / worker / reviewer
├── assets/hooks/hooks.json           # 可选 Hook 配置资产
├── references/                       # 策略、契约、生命周期、失败和 OMX 文档
│   └── schemas/                      # 五类 JSON Schema
├── scripts/
│   ├── supervisorctl.py              # 治理状态、校验、事件账本
│   ├── install_agent_profiles.py    # 安装/卸载原生 Agent Profile
│   └── usage_report.py               # 隐私友好的使用统计
├── plugin/                          # 可选 Codex 生命周期插件
└── tests/                            # 契约、状态机、Windows、Hook 和 CLI 测试

验证

项目核心只依赖 Python 标准库,运行测试:

python -m unittest discover -s tests -t . -v

当前测试覆盖:

  • 任务、分派、返回和验收契约;
  • 路径安全与大小写冲突;
  • 依赖和并发写入冲突;
  • 独立复核硬门;
  • 幂等事件和迟到结果;
  • Windows 原子写入和锁恢复;
  • Hook 脱敏;
  • Profile 安装器;
  • 完整 CLI 生命周期。

什么时候不应该使用它?

如果只是查一个文件、改一行代码、回答一个简单问题,直接让主 Agent 完成通常更好。这个项目的价值在于降低协作风险,而不是为所有任务增加流程。

它也不会替你决定业务正确性。它可以强制要求证据、范围和验收,但最终的业务判断仍然属于主 Agent 和用户。

贡献

欢迎提交 Issue 或 Pull Request。建议任何新增能力都同时补充:

  1. 对应的 Skill/参考文档;
  2. JSON Schema 或运行时契约;
  3. 正向测试和失败路径测试;
  4. Windows/macOS/Linux 兼容性说明;
  5. 对隐私和权限影响的说明。

License

MIT License,见 LICENSE

About

Auditable governance for Codex native subagent delegation

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages