开源 subagent 运行时:让 Codex 和 Claude Code 多 agent 协作更可控 Codex CLI 和 Claude Code 让“终端里跑一个 coding agent”这件事变得很常见但大多数团队在真正落地时会卡在同一个地方当一个任务要拆成多个子任务、再由多个 agent 协作完成时体验立刻变得混乱。上下文互相干扰、子任务跑飞、主循环失去控制、结果难以合并、中间过程没有日志可查——这些问题并不是模型能力不够而是缺少一层稳定的运行时来管住 subagent 的“生命周期”。本周 Show HN 上出现的这个开源项目就是冲着这个 gap 去的一个开源的 runtime用来提升 Codex 和 Claude 的 subagent 使用体验。它不是一个新模型不是一个 GUI 壳也不打算取代 Codex CLI 或 Claude Code。它的位置更靠近“编排层”把 subagent 的创建、调度、上下文隔离、工具范围限制、结果回收和错误重试做成可复用的本地运行时。这类运行时的核心设计有一个非常务实的思路值得先说清楚在多 agent 系统里不要把 subagent 当成一个“自由行动的同事”而是把它当作一种特殊的“高级 tool”。主 agent 通过一次工具调用触发 subagentsubagent 在受限环境里执行并返回结构化结果然后交还主循环继续决策。这种“主从模式 subagent-as-tool”的方式能显著降低多 agent 协作的不确定性。这篇文章会把该项目涉及的核心能力、本地部署思路、环境准备、启动方式、功能测试、接口调用、批量任务、资源占用、常见故障和最佳实践完整拆开来讲。项目发布时具体接口可能微调我会尽量给通用可套用的验证流程。如果你正在研究 Codex/Claude 的多 agent 调度或者想把 subagent 接入自己的 CI 和批处理链路这篇可以直接收藏。1. subagent 运行时核心能力速览先给结论这个项目解决的不是“跑通单个 Claude Code/Codex”而是“让多个 subagent 可以被主流程安全、可控、批量地调度”。从项目公开的定位看它承担的核心职责包括能力项说明项目类型面向 Codex / Claude subagent 场景的开源运行时编排层核心价值把 subagent 当作“高级 tool”进行调度提供生命周期、日志、结果回收、失败重试支持对象Codex CLI、Claude Code 以及基于这两类 CLI 构建的 agent 外层运行模型主从模式主 agent 发起调度subagent 在受限范围内执行任务启动方式CLI 命令启动或作为本地 sidecar HTTP 服务运行硬件要求不需要 GPU对显存无要求普通开发机可运行环境依赖本机安装 Node/Python 环境、Codex CLI 或 Claude Code、模型 API Key接口能力提供服务接口用于任务提交与结果查询具体端点以项目 README 为准批量任务适合多模块并行修改、批量测试、仓库级维护等队列化场景适用场景跨模块重构、测试修复、文档批量更新、多文件代码生成和检查如果用一句话概括它的定位Codex 和 Claude Code 是干活的手而这个 runtime 是管手的管理者。它不为模型增加智力但为多 agent 协作增加秩序。1.1 为什么需要 runtime 而不是直接开多个终端可能有人会问我开五个终端各跑一个 Claude Code 是不是也能并行短期可以但会遇到几个硬问题上下文互相污染每个 agent 都读取同一个仓库状态改同一个文件时会发生冲突。主流程失去控制主任务拆成子任务后没人负责汇总最终还是要人工介入。缺少可观测性五个终端同时滚动日志出现问题无法定位是谁改坏了文件。失败恢复成本高其中一个 agent 超时或中断它的中间结果全部丢失。成本失控并行调用不可控token 消耗没有预算。runtime 的作用正是在这些问题还没发生之前就把“调度的边界”定义清楚。类似分布式系统里“控制面和数据面分离”的思路subagent 只负责执行而运行时负责控制。2. subagent 运行时的设计思路为什么把它当工具调用这个项目背后比较核心的一个架构观点是最新的多 agent 设计里主从模式越来越常见而本质上把 subagent 当成“另类的 tool”进行调用最有利于控制复杂度和保证结果稳定。2.1 subagent-as-tool 的调用路径在传统 agent 设计里主 agent 的每一步都自己做“思考 - 调用工具 - 获得结果”。如果引入 subagent最自然的方式是把 subagent 当作工具列表里的一项主 agent ├─ 工具: 读取文件 ├─ 工具: 执行 shell 命令 └─ 工具: 调用 subagent(task修复支付模块的 3 个测试用例)主 agent 一旦调用 subagent 工具runtime 会做下面这些事情为目标 subagent 创建独立的工作空间或临时任务目录。注入针对该子任务的 system prompt 和可用工具白名单。追踪 subagent 执行的每一步操作记录关键输出。在 subagent 完成后收集生成的 diff、测试结果、总结文本。将结果序列化返回给主 agent。这个模式下subagent 对主 agent 而言就成为一个有输入、有输出的函数而不再是一个需要持续关注的后台进程。2.2 上下文隔离的价值传统 agent 之间共享同一份上下文容易产生“上下文污染”。例如subagent A 在分析支付模块时读取了大量鉴权代码这些内容如果混入主上下文会导致主 agent 后续决策时被误导。subagent 运行时一般会做“上下文隔离”subagent 可以看到的子任务描述、文件目录、约束条件是被显式注入的。subagent 执行期间产生的完整对话记录默认不回流到主上下文。只有最终的结构化结果diff 路径、测试结果、完成状态、结论摘要才返回给主 agent。这就像每个 subagent 是一个独立的“工作线程”只把自己的返回值交回主线程。这种做法在很长上下文任务里的收益非常明显能显著降低 token 消耗也能避免主 agent 注意力被无关代码干扰。2.3 结果回收与容错subagent 执行过程中经常会发生超时、模型 API 报错、工具执行失败等情况。runtime 需要具备最基本的容错能力超时控制为每个 subagent 设置最大执行时间。重试策略对临时性 API 错误进行有限次重试。结果持久化即使主 agent 中途崩溃也可以从日志或结果文件中恢复现场。结束条件判断如果 subagent 已经完成指定任务及时止损避免它继续“自由发挥”。这几点是这个项目在工程上比较有价值的部分。大模型的输出天然不稳定如果让多个 subagent 裸奔最后的代码质量往往要靠运气。通过 runtime 定义清晰的执行边界相当于把不确定性框在一个可控范围内。3. 适用场景与使用边界这类 subagent runtime 并不是“放之四海而皆准”的银弹。实际使用前最好先判断自己的任务类型是否匹配。3.1 适合的使用场景仓库级代码重构把后端重构拆成 API 层、数据层、测试层三个 subagent 并行执行最终由主 agent 汇总合并。多模块测试修复代码库有 20 个失败测试按模块分组每个 subagent 负责一个模块互相不干扰。文档与代码同步更新代码改动量大文档更新点分散可以用 subagent 分别处理不同目录。代码审查辅助多个 reviewer subagent 分别从安全性、性能、可维护性三个角度审查同一个 diff。CI 失败分析接入 CI 后当一个构建失败runtime 调度 subagent 分析日志并给出修复建议。这类任务的特点是子任务之间有明确边界可以并行且最终需要合并到统一结果中。3.2 不适合的场景高度依赖实时人机交互的任务如果每个子任务都需要人工确认agent 自由调度的价值会被削弱。需要统一事务性的代码改动两个 subagent 同时修改同一段核心模块代码时即使有 runtime冲突仍然不可避免。对成本极度敏感的小任务简单的单文件修改直接用 Codex 或 Claude Code 就好引入 runtime 属于过度设计。安全敏感、需要强审计的场景subagent 的每一步操作必须人工审批运行时仍然只是辅助不能替代审计流程。3.3 安全合规边界使用 subagent 处理代码时需要时刻注意几点如果代码仓库属于公司内部或受版权保护需要确认是否有权把这些代码发送给第三方模型 API。如果涉及用户隐私数据、个人身份信息不能直接塞进 subagent 的上下文中。涉及人脸、个人信息、受版权素材等场景时必须获得合法授权。runtime 给了 subagent 执行命令的权限意味着它理论上可能执行破坏性命令。第一次测试时尽量使用沙箱目录或临时仓库先用只读模式跑通流程。批量运行时要注意 API 用量和调用频率避免因高并发触发平台限流或产生超额费用。4. 本地部署环境准备虽然这是一个“运行时”不承载大模型权重但环境准备仍然有几个关键项。以下检查清单适用于大多数同类项目具体版本以后续项目 README 为准。4.1 基础环境要求检查项要求操作系统Linux / macOS 优先Windows 可用 WSL 或原生终端尝试命令行工具git、curl、jq解析 JSON 用Python 版本Python 3.10 或 3.11 及以上Node.js如果使用 Claude Code 或 Codex CLI 的 npm 分发版本需要 Node.js 18Codex CLI已安装 codex 命令且能通过命令行正常调用Claude Code已安装 claude 命令且能通过命令行正常调用API Key模型服务商提供的 Key 已配置到环境变量工作目录为 subagent 分配独立目录避免直接操作仓库根目录启动前先在终端确认命令状态# 检查两个 CLI 是否存在并能执行 which codex codex --version which claude claude --version # 检查 Python / Node python3 --version node --version如果 codex 或 claude 命令不存在需要先按照对应官方文档安装并登录。这一步不能跳过因为 runtime 本质上是在进程层面调度这两个 CLI。4.2 模型 API Key 配置这个 runtime 本身不直接连接模型但调度 subagent 时会通过 Codex CLI 或 Claude Code 调用底层模型所以模型访问凭证必须提前配置好。常见方式是通过环境变量export ANTHROPIC_API_KEY你的 Anthropic API Key export OPENAI_API_KEY你的 OpenAI API Key如果使用其他模型服务商或本地模型网关通常还需要配置 base_url 变量。这里需要特别注意Codex CLI 和 Claude Code 在连接自定义网关时可能对协议版本有要求如果调不通最常见的报错是“local proxy failed while handling codex endpoint”。这类问题的原因通常有两个一是网关与 Codex 期望的协议不完全兼容二是本地转发服务的路由规则没配置正确。排查时优先检查网关日志而不是反复重装 CLI。5. 安装部署与启动方式项目刚发布时安装方式可能还在快速变化。下面给出一个通用安装与启动流程实际命令要以项目仓库 README 为准。5.1 获取项目代码# 示例将项目克隆到本地目录 # 仓库地址以项目 README / Releases 页为准这里仅给出通用命令 git clone project-repo-url subagent-runtime cd subagent-runtime5.2 Python 依赖安装# 创建虚拟环境隔离依赖 python3 -m venv .venv source .venv/bin/activate # 安装依赖假设项目使用 setuptools 管理 pip install -r requirements.txt pip install -e .如果项目是 Node.js 版本则使用 npm install 或 pnpm install并在安装完成后执行编译命令。5.3 编写基础配置文件运行 subagent 之前最好把需要调度的 subagent 定义到一个配置文件中例如runtime.yamlversion: 1 server: host: 127.0.0.1 port: 8999 providers: claude: api_key_env: ANTHROPIC_API_KEY openai: api_key_env: OPENAI_API_KEY subagents: - id: code-fixer model: claude instruction: | 你是一个代码修复子代理。你的任务是定位并修复指定测试用例。 只修改与任务相关的文件输出修改摘要。 tools: - read - edit - run_test max_iterations: 6 timeout_seconds: 180 working_dir: ./workspace/task-code-fixer - id: code-reviewer model: codex instruction: | 你是一个代码审查子代理。请从安全性和可维护性两个维度审查 diff。 不要修改任何文件只输出审查结论清单。 tools: - read - git_diff max_iterations: 4 timeout_seconds: 120 working_dir: ./workspace/task-reviewer这是一个通用配置模板。真实的 subagent 定义可能还包括允许执行的命令白名单、禁止访问目录、输出格式要求、模型版本等。配置的原则是子任务的“权力范围”越小运行越安全。5.4 启动 runtime 服务如果项目提供 server 模式可以通过命令启动本地服务# 启动 runtime 服务端 runtime start --config runtime.yaml # 或者显式指定端口 runtime start --config runtime.yaml --port 8999启动成功后通常会有类似提示runtime started on http://127.0.0.1:8999 loaded 2 subagents如果端口被占用可以换一个端口或者在配置文件中修改 server.port 后重启。启动服务时的注意事项默认建议只绑定 127.0.0.1不要绑定 0.0.0.0避免局域网内其他机器可以直接调用你的 subagent 服务。如果通过 Docker 启动遇到“oci runtime create failed”这类容器运行时错误通常和容器环境本身有关可以先检查 Docker 服务状态和镜像是否完整而不是怀疑业务代码。6. 功能测试与效果验证启动完成后不要上来就跑复杂的仓库级重构。先设计一组“小但能说明问题”的验证任务确认 runtime 的基本链路是否通畅。6.1 冒烟测试单 subagent 调用测试目标验证 runtime 能正确创建 subagent 实例、执行工具、返回结果。在一个临时测试仓库中放入一个简单的失败测试文件然后通过 runtime CLI 提交一个“修复代码”任务# 假设 runtime 提供命令行提交模式 runtime run --subagent code-fixer --task 修复 test_math.py 中失败的 test_add 用例判断标准subagent 成功定位到目标文件。subagent 修改了代码并且运行测试通过。runtime 返回了包含修改文件列表和测试结果的 JSON。主流程日志清晰能确认 subagent 的输出没有“失控”。如果这一步失败优先检查配置文件中的 working_dir 是否可写、模型 API Key 是否生效、工具的路径权限是否正确。6.2 工具权限验证测试目标确认 subagent 只能在白名单范围内操作。给 subagent 一个会用到未授权工具的任务比如让它读取工作目录之外的密码文件或者删除指定文件。预期行为是runtime 拦截该操作subagent 被限制在权限范围内并在日志中记录一次“权限拒绝”。这一条对生产环境非常重要建议在第一次使用时专门验证。6.3 并行 subagent 调度测试目标验证多个 subagent 并行执行时任务之间不会互相干扰。准备两个完全独立的测试目录分别提交两个耗时任务# 终端 1 runtime run --subagent code-fixer --task 修复目录 A 中的代码问题 # 终端 2 runtime run --subagent code-reviewer --task 审查目录 B 的最新 git diff观察要点两个任务是否都能正常启动没有因为端口或文件锁冲突。两个 subagent 的工作目录是否隔离。日志中任务 ID 是否清晰能否区分不同任务。如果一个任务失败另一个是否不受影响。判断成功的标准两个任务独立返回结果不互相阻塞。6.4 长任务中断恢复测试目标验证 subagent 执行时间较长时runtime 是否能维持任务状态。选择一个超过 1 分钟的任务在任务执行到一半时尝试中断 runtime 进程然后重启 runtime检查中间结果是否保留了执行进度或至少保留了可追踪的日志。对于生产化使用这一步很关键。如果没有持久化机制遇到中断后至少应该能在日志中定位到是哪个 subagent、执行到哪一步。6.5 输出质量验收subagent 跑完后不能只看“状态为 succeeded”。需要打开它生成的 diff逐行检查是否符合预期。尤其是使用 Claude Code 或 Codex 自动修改代码时可能出现为了通过测试而删除了不相关的断言。修改了不该修改的格式化代码。引入了测试专用写死逻辑。把错误信息吞掉只输出一个“成功”的结论。runtime 本身不能保证代码质量它只负责调度和结果回收。最终的质量把关人仍然是人。7. 接口 API 与批量任务如果 runtime 以 sidecar 服务方式运行通常就可以用 HTTP 接口做批量任务提交。这一节给出一套通用调用流程。7.1 通过 HTTP API 创建 subagent 任务import requests import json url http://127.0.0.1:8999/v1/subagent/run payload { subagent_id: code-fixer, task: 修复 payment_service.py 中导致单测失败的两个问题, context: { workspace: ./workspace/task-code-fixer, scope: [payment, tests] }, timeout_seconds: 120 } resp requests.post(url, jsonpayload, timeout150) print(resp.status_code) print(json.dumps(resp.json(), ensure_asciiFalse, indent2))如果返回结果包含 task_id、status、output 等字段说明接口链路已通。具体字段名以项目实际实现为准。7.2 批量任务提交与队列批量任务的价值在于不需要人工一个一个启动 subagent。而是把所有任务写成一个 JSON 数组一次性提交给 runtime由 runtime 内部决定并行度。{ tasks: [ { subagent_id: code-fixer, task: 修复 tests/test_auth.py 中 5 个失败用例, priority: 1 }, { subagent_id: code-reviewer, task: 审查 modules/auth 下的最新改动, priority: 2 }, { subagent_id: code-fixer, task: 修复 modules/payment 下的代码风格问题, priority: 3 } ], concurrency: 2, output_dir: ./batch-results }批量任务建议的工程化设计每个任务必须有独立输出目录。每个任务的任务描述要尽可能具体避免模糊表述。为不同优先级设置不同的超时时间。增加失败重试最多 1 次重试过多会掩盖真实错误。批量任务结束后生成一份汇总报告列出每个任务的状态、耗时、修改文件数、token 估算消耗。7.3 批量结果合并当多个 subagent 各自产生代码 diff 后直接 merge 可能产生冲突。建议的合并流程是runtime 先把各 subagent 的 diff 输出到独立目录。主 agent 汇总所有 diff判断哪些改动涉及相同文件。对涉及相同文件的改动按任务优先级依次应用。使用自动测试验证合并结果。人工 review 最终的合并 diff。如果你的团队已经习惯“AI 生成代码 人工 review”的工作流那这个 runtime 可以被改造成一个后台批量服务接到代码仓库的 webhook 上自动运行。8. 资源占用与性能观察这个 runtime 不做本地推理所以没有 VRAM 压力但性能仍然要关注。它更像一个进程调度器资源占用主要集中在三个方面。8.1 本地 CPU 与内存占用runtime 服务本身占用的 CPU 通常很低但它会通过 CLI 拉起 Codex/Claude 子进程这些子进程要加载 node 运行时、解析项目上下文会占用一定内存。如果同时并行 5 个 subagent内存占用会明显增加。观察方法# 查看 runtime 主进程的资源占用 ps aux | grep runtime # 查看派生出的 claude/codex 子进程 ps aux | grep -E claude|codex如果多个 subagent 同时执行出现系统响应变慢通常不是 CPU 被占满而是内存或文件 IO 到达瓶颈。此时应该降低 concurrency而不是升级机器。8.2 Token 与成本观察每次 subagent 执行都会产生模型 token 消耗。runtime 日志如果能记录 token 数量对成本控制非常有价值。如果没有记录可以按输出日志中的 model_usage 字段统计。成本估算公式可以参考单任务成本 输入 token 数 × 输入单价 输出 token 数 × 输出单价批量任务上线前建议先随机抽样 10 个任务统计平均 token 消耗再估算整批成本。8.3 影响性能的关键参数参数影响单任务 max_iterations限制 subagent 最大思考轮数减少无效循环任务输入代码量代码越长模型处理越慢越容易出现偏离并行 subagent 数量并行越高总耗时越短但内存和 API 限流风险越高上下文最大长度过长上下文会拖慢响应并增加成本命令超时时间超时设置过长会让失败任务长时间占用资源调优建议先小参数跑通再逐步放大。每次只改一个参数观察变化。不要一次性把 max_iterations、并行数、上下文长度全部调高否则出了问题很难定位是哪个改动造成的。9. 常见问题与排查方法以下表格覆盖部署和运行阶段最常遇到的问题。表格中的“可能原因”是通用排查思路具体要以实际日志为准。问题现象可能原因排查方式解决方向启动时报找不到配置文件配置路径错误检查启动命令的路径参数使用绝对路径或进入项目目录后启动runtime 启动后端口冲突端口被其他服务占用使用 lsof -i :8999 检查修改配置端口并重启提交任务后长时间无响应API Key 未配置检查环境变量确认 ANTHROPIC_API_KEY / OPENAI_API_KEYCLI 报 codex 命令不存在Codex CLI 未安装或不在 PATHwhich codex按官方文档安装 Codex CLICLI 报 claude 命令不存在Claude Code 未安装which claude安装 claude CLI 并确认执行权限agent 修改了非授权文件工具权限未正确限制检查 subagent 配置的 tools 白名单收紧 tools 白名单并重新测试subagent 执行超时任务描述过于宽泛查看任务日志定位卡住步骤拆分子任务、缩小代码范围调用模型网关时报 local proxy failed本地网关协议不完全兼容查看网关日志和 CLI 日志检查 base_url 和协议版本批量任务中一个失败影响其他任务未做任务隔离检查工作目录是否独立为每个任务分配独立 working_dirDocker 启动报 oci runtime create failed容器运行时异常检查 docker info / 磁盘空间重建镜像或重启容器服务输出中代码缺失大段逻辑subagent 被 max_iterations 截断查看日志中的 cycle 数提高迭代上限或拆细 prompt合并多个 subagent diff 时冲突子任务边界重叠检查 tasks 配置尽量把改动文件按模块隔离9.1 日志问题的定位顺序遇到任何问题先不要急着改配置。推荐的排查顺序是看 runtime 主服务日志确认任务是否被正确接收。看具体 subagent 的执行日志确认模型调用是否成功。看工具执行日志确认文件操作和命令是否被拦截。看最终结果对比“任务预期”和“实际输出”的差异。第 4 步通常是最容易出问题的。很多 subagent 执行时看起来每一步都正常但最终输出的代码并不能满足需求这是 LLM 类任务固有的不确定性导致不是 bug。此时应该把任务描述写得再窄一点。10. 最佳实践与使用建议把这类 subagent runtime 接入真实开发流程前面会有一段“看起来什么都能做但跑起来到处要调整”的阶段。下面这几条经验可以显著降低踩坑概率。10.1 每个 subagent 要有一个非常窄的任务任务宽度直接决定结果质量。例如差的 prompt修复 payment 模块的问题。好一点的 prompt修复 payment_service.py 中 3 个与退款金额计算相关的失败单测。更好的 prompt读取 tests/test_payment_refund.py 中的失败断言找到 payment_service.py 中对应实现修改代码使测试通过。不要改动其他文件。越窄的任务subagent 越少自由发挥空间可控性越强。10.2 限制工具白名单和文件作用域不要给所有 subagent 同样的权限。修复测试的 agent 可能只需要 read、edit、run 三个工具代码审查 agent 只需要 read 和 git diff。文件作用域上尽量让一个任务只能影响一个模块。subagents: - id: payment-fixer tools: [read, edit, run_test] allowed_paths: - ./src/payment - ./tests/test_payment.py forbidden_paths: - ./src/legacy白名单越严格越不会出现“agent 顺手改掉无关代码”的情况。10.3 强制使用 diff 而不是直接写入可以让 subagent 先输出代码变更方案或生成 patch 文件再由外部流程执行应用。这样即使 subagent 修改出错回滚成本也低而且 diff 记录本身可以作为审计日志。典型的流程是subagent 修改代码。自动生成 git diff。主 agent review diff。人工确认后应用。如果 runtime 暂时不支持这种模式至少要在任务配置里要求 subagent 最终输出“修改了哪些文件”的清单。10.4 控制并发不要无限并行看起来并行 subagent 数量越高效率越高实际上会带来几个问题多个 agent 同时读写同一仓库可能导致文件锁冲突。模型 API 并发超过阈值会被限流。输出结果太多主 agent 反而消化不了。定位问题时大量相似日志会提高排查成本。建议先设置 concurrency1~2跑通后再逐步提升。除非是彼此完全独立的模块否则不要一次性开 8 个 subagent。10.5 批量任务加入重试与审计生产环境使用批量任务时建议保留一份结构化结果日志。每个任务记录task_idsubagent_id开始时间和结束时间输入任务摘要输出 diff 路径最终状态成功/失败/超时模型 token 用量失败原因摘要这些日志既可以帮助做成本核算也是后续排查问题时的关键依据。10.6 合规与授权最后再强调一次边界仓库代码是否允许发送给第三方模型 API需要先确认授权。不要将包含用户隐私、账号密钥、内部敏感信息的文件直接放入 subagent 任务。如果参与商业项目还要关注模型提供方的数据使用条款。让 subagent 执行任何命令前先确认该命令不会破坏测试环境或生产数据。特别涉及人脸信息、声音、版权素材等受法律保护的数据时必须确保已获得合法授权并在测试环境中验证后再继续。11. 总结与下一步这个开源项目切的位置比较精准它不在模型层卷能力而在工程层解决 subagent 的稳定性问题。只要你对 Codex 和 Claude 的 subagent 调度有需求它都能提供一套基础的运行时模板。即使不直接用它的代码参考它的 subagent-as-tool 设计思路也能改善自己多 agent 应用的架构。最先应该验证的功能有三个单 subagent 的任务执行是否可追踪、工具权限控制是否生效、批量并行时目录隔离是否正常。最容易踩的坑则是任务描述过宽和工具权限过大这两点会直接导致 subagent 输出失控。后续值得扩展的方向包括把 runtime 接入本地 CI 流水线让失败的构建自动触发 subagent 诊断在 subagent 执行后增加基于 git diff 的自动 review 阶段把任务结果持久化到一个轻量数据库做历史查询和成本分析。如果你的团队正在把 Codex 或 Claude Code 从“个人助手”往“团队自动化流水线”方向推进这个 runtime 值得跑一次完整验证。