Dynobox:面向 AI 编码 Agent 的开源测试运行器发布
Dynobox 上线开源测试工具,可对 Claude Code、Codex、OpenCode 等 Agent 的工具调用…
Dynobox 近日在 Hacker News 以 Show HN 形式亮相,是一款面向 AI 编码 Agent 的开源测试运行器。它通过在临时工作目录中实际运行 Claude Code、OpenAI Codex、OpenCode 等主流编码 Agent,捕获工具调用、Shell 命令、文件变更、HTTP 请求与对话记录等可观测行为,并基于这些「证据」对 Agent 的执行结果做出确定性断言,而无需让一个模型去评判另一个模型。
核心能力
Dynobox 将单元测试的思路引入 Agent 评测,主要提供以下能力:
- 对工具调用、Shell 命令、文件产物、HTTP 请求、会话文本、最终回答等做正向与反向断言(如
tool.called、command.notCalled、artifact.contains)。 - 同一场景可在多种 Agent 环境(harness)中并行运行,便于横向对比不同模型或客户端的行为差异。
- 支持多轮迭代执行,统计通过率,识别偶发性失败(flaky behavior)。
- 失败时保留证据(实际命令输出、文件状态、调用记录),便于回溯定位。
工具还提供实验性的 CLI 模拟能力,允许把对外部可执行文件的调用替换为静态、顺序或动态处理器返回,从而把测试聚焦在 Agent 自身的决策逻辑上。
支持的 Agent 与运行方式
Dynobox 通过「harness」抽象接入不同的编码 Agent,当前已支持:
- Claude Code(默认)
- OpenAI Codex
- OpenCode
每个 harness 需要在本机完成安装、登录并加入 PATH。运行时可通过 --harness 参数指定单个或多个 harness 组合,也可通过 --iterations 重复运行同一场景以计算通过率。Dynobox 同时提供 JSON reporter,可接入 CI 流程;登录后可使用 --save-run 把摘要推送到官方 Dashboard,也可通过环境变量 DYNOBOX_UPLOAD_URL 推送到自有端点。
断言体系
Dynobox 的断言覆盖多个维度,常见类型包括:
- 工具类:
tool.called/tool.notCalled - 命令类:
command.called/command.notCalled - 文件类:
artifact.exists/artifact.contains/artifact.unchanged - 技能类:
skill.referenced - 网络类:
http.called/http.notCalled(仅捕获遵循 Dynobox 代理与 CA 设置的子进程流量) - 回答类:
transcript.contains/finalMessage.contains - 逻辑类:
sequence.inOrder/anyOf - 自定义校验:
verify.command
测试用例(称为「dyno」)可以使用 TypeScript、JavaScript 或 YAML 编写,集中描述 prompt、夹具设置、harness 列表与验收条件。
与模型评分评估的差异
Dynobox 在文档中明确将自己定位为「更接近单元测试,而非模型互评的 evals」。其评估对象是捕获到的可观测行为,而非对最终输出做主观打分,因此结果可重复、可断言,也更容易接入自动化流水线。对于需要为 Agent 编写回归测试、对比不同模型行为、或定位偶发失败的团队来说,这是一种与传统 prompt eval 互补的工程化路径。
项目目前为早期访问阶段,CLI、SDK 与报告格式在 1.0 之前仍可能调整;官方仓库同时提供 CLI 包 dynobox 与配套的 @dynobox/sdk,并欢迎社区通过 CONTRIBUTING 流程参与共建。
