桃子桃子快讯
返回首页
工具

Dynobox:面向 AI 编码 Agent 的开源测试运行器发布

Dynobox 上线开源测试工具,可对 Claude Code、Codex、OpenCode 等 Agent 的工具调用…

2026.08.13 · 周四4 分钟阅读

Dynobox 近日在 Hacker News 以 Show HN 形式亮相,是一款面向 AI 编码 Agent 的开源测试运行器。它通过在临时工作目录中实际运行 Claude Code、OpenAI Codex、OpenCode 等主流编码 Agent,捕获工具调用、Shell 命令、文件变更、HTTP 请求与对话记录等可观测行为,并基于这些「证据」对 Agent 的执行结果做出确定性断言,而无需让一个模型去评判另一个模型。

核心能力

Dynobox 将单元测试的思路引入 Agent 评测,主要提供以下能力:

  • 对工具调用、Shell 命令、文件产物、HTTP 请求、会话文本、最终回答等做正向与反向断言(如 tool.calledcommand.notCalledartifact.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 流程参与共建。

信源