Agent Eval / Test Harness 到底是什么
本文最后更新于 2026年6月29日 晚上
这篇先不急着展开实现细节。先把一个问题讲清楚:我到底要做什么,为什么它值得做,以及第一步到底应该怎么开始。
0. 一句话
Agent Eval / Test Harness 可以先理解成:
给 AI Agent 准备一套“自动化测试台”:把任务喂进去,让 Agent 做事,然后用程序记录它做得对不对、错在哪里、花了多少时间和 token。
它不是模型训练,不是聊天机器人,也不是先做一个很大的平台。
它更像你过去熟悉的测试开发 / CI:
1 | |
1. Harness 是不是自己造轮子
是,也不是。
“是”的部分:第一版确实要自己写一个很小的轮子,因为只有自己写过一次,才会真正理解:
- 一个 Agent 任务怎么变成测试用例;
- 模型输出为什么不能只靠肉眼看;
- 什么样的任务能自动判分,什么样的任务不能;
- 为什么 trace、成本、延迟、失败原因是 AI 工程里的基本盘。
“不是”的部分:目标不是发明一个比 Promptfoo、Inspect AI、Langfuse 更好的框架。目标是先做一个最小可理解版本,然后再迁移到工业工具。
所以这个练习的本质不是“造轮子炫技”,而是:
造一个小轮子,理解轮子为什么这样转。之后看到工业轮子时,知道它解决了什么问题。
2. 它到底要测什么
先不要想复杂 Agent。先从最贴近自己的任务开始:
给模型一份简历和一份岗位 JD,让它输出匹配项、短板、下一步学习计划。
这件事肉眼看很简单,但要做成测试,就必须回答几个问题:
- 输出必须有哪些字段?
- 至少要列出几个匹配项?
- 是否必须提到
Python、CI/CD、Kubernetes、Agent Infra? - 如果它胡说了一个简历里没有的经历,算不算失败?
- 如果它没给下一步行动,算不算失败?
一旦这些规则写清楚,它就从“让 AI 帮我分析一下”变成了“一个可回归的 Agent 测试用例”。
3. 最小闭环
第一版只需要 5 个东西。
flowchart LR
A["task<br/>任务样本"] --> B["runner<br/>执行器"]
B --> C["model / agent<br/>模型或 Agent"]
C --> D["scorer<br/>评分器"]
D --> E["report<br/>报告"]
对应到文件就是:
1 | |
4. 第一件事不是写代码
第一件事是写 3 条任务样本。
先不要新建一堆目录,也不要写 runner。只写一个 tasks.jsonl,里面放 3 条你自己能肉眼判定对错的任务。
第一条任务可以是:
1 | |
如果这条任务你自己都不知道怎么判对错,就先不要自动化。
5. 我真正要学的是什么
这个小项目真正训练的是 5 种能力:
- 把模糊任务改写成可测试任务;
- 把模型输出改成稳定结构化输出;
- 把“感觉不错”变成 pass rate、失败原因、延迟、成本;
- 把 Agent 行为记录成 trace,方便复盘;
- 把 AI 系统放回测试开发和 CI/CD 的工程语境里。
这正好连接几个岗位方向:
- DeepSeek
Agent Infra / Agent Harness / 测试开发; - NVIDIA
SWQA / SDET / DGX Cloud Test; - 自己原来的 DevOps / 研发效能 / 测试平台经验。
6. 暂时不要展开的东西
下面这些都重要,但不是第一步:
- LangGraph;
- MCP;
- vLLM;
- CUDA;
- Langfuse;
- Promptfoo;
- Inspect AI;
- GitHub Actions。
先把 3 条任务写明白。否则后面所有工具都会变成新的噪音。
7. 下一步对话
我现在先回答一个问题:
我能不能把一个“AI 要完成的任务”,写成一条“我可以判定对错的测试用例”?
如果能,后面才进入第二步:写最小 runner。
如果不能,就继续改任务,不写代码。