Docker 通过 Cagent 提供 AI 代理确定性测试

作者:Matt Foster
  • 2026-01-27
    北京
  • 本文字数:1159 字

    阅读完需:约 4 分钟

Docker对Cagent运行时的定位是一种 AI 代理确定性测试方法,旨在解决团队在构建生产级代理系统时面临的日益严重的问题。

 

随着 AI 代理系统的日益普及,工程团队正面临测试概率性输出带来的挑战。传统企业系统基于一个简单的假设:同样的输入产生同样的输出。智能代理系统打破了这一假设,为了适应这种变化,如今的生态系统大多采用了评估变异性而非消除变异性的方式。

 

在过去的两年里,评估框架应运而生,它们的目标是使智能代理的行为变得可观察、可测量。诸如LangSmithArize PhoenixPromptfooRagasOpenAI Evals等工具可以捕获执行轨迹,并运用定性或基于大型语言模型的评分机制来评估结果。

 

这些工具对于监控安全性和性能至关重要,但它们引入了一种不同的测试模型。输出结果很少是二元的。团队越来越多地依赖阈值、重试和软失败来应对评估器的差异性。举例来说,关于 AI 代理测试,有行业报道指出,传统的 QA 假设对于 AI 代理来说不成立了,因为输出是概率性的,结果评估需要更灵活的概率描述框架,而不是严格的通过/失败断言。

 

与此同时,有些团队重新挖掘了一种更传统的测试方法,通过记录与重放模式实现测试的可重复性和确定性。这种模式借鉴了vcr.py等集成测试工具的做法,能够一次性捕获真实的 API 交互过程,并在后续测试中确定性地重放。LangChain 已明确推荐将该技术应用于大型语言模型测试,他们指出,记录 HTTP 请求与响应可使 CI 执行速度更快、成本更低且更具可预测性。不过在实践中,该方案通常来说仍然是被看成一个外部测试环节,而非智能代理执行机制的核心组成部分。

 

Docker的Cagent就遵循这个范例。从架构上讲,Cagent 使用了 proxy-and-cassette 模型。在录制模式下,它将请求转发给像 OpenAI 或 Anthropic 这样的真实提供商,捕获完整的请求和响应,规范化 ID 等易失性字段,并将交互过程存储于 YAML 格式的 cassette 文件中。在重放模式下,Cagent 会完全阻止外部调用,将传入请求与 cassette 文件匹配,并返回记录的响应。如果智能代理的执行出现偏差,如使用了不同的提示、工具调用或序列,那么运行就一定会失败。

 

就成熟度来说,Cagent 仍处于早期阶段。Docker 自己的 GitHub 仓库对该项目的描述是正在积极开发当中,因此预计后续会有重大的变化,而且迄今为止,大多数公开的示例都来自 Docker 的文档,而不是大规模生产部署。

 

Cagent 的目标并不是取代现有的评估框架,但它揭示了 AI 代理测试发展过程中的一个不同方向。虽然如今有许多工具聚焦于执行完成后评估结果,但 Cagent 从一开始就将注意力转移到了使 AI 代理行为可再现上。随着团队尝试越来越复杂的 AI 代理工作流程,这种区别变得越来越明显。确定性重放并不判断代理的输出是否正确,但它确实使代理的行为变化变得更为显性化,为测试提供了一个更接近传统软件工程的基础。

 

原文链接:

https://www.infoq.com/news/2026/01/cagent-testing/