如何像专家一样测试 AI 智能体?一份超实用的评估指南
标签
#AI智能体#Agent测试#OpenAI#Codex#Claude#Anthropic#Evals#AI评估#自动化测试#大模型应用#LLM#AI开发实践#SkillCreator
一、先搞懂:什么是”智能体技能”?
想象你请了一个 AI 助手(比如 ChatGPT、Claude 或 Codex),你希望它能帮你完成特定任务——比如自动搭建一个 React 项目、或者帮你审一份 NDA 合同。
“技能”(Skill) 就是教 AI 怎么完成这个任务的”说明书”。它包含:
-
• 这个技能是干嘛的 -
• 需要用什么工具 -
• 按什么步骤执行 -
• 输出要符合什么规范
但问题来了:你怎么知道这个 AI 真的学会了?每次都能做对?模型升级后还能用吗?
这就是本文要讲的核心——系统化评估(Evals)。
二、两种类型的技能,两种评估思路
Anthropic 把技能分为两类,评估策略也不同:
1️⃣ 能力提升技能(Capability uplift)
是什么:教 AI 做它原本做不到或做不好的事
例子:
-
• 文档创建技能——编码了特定技巧,让输出比单纯提示更好 -
• 复杂数据处理技能——涉及多步骤推理
评估重点:
-
• ✅ 技能是否真的提升了能力? -
• ⚠️ 关键:随着模型进化,这类技能可能变得不必要!
💡 判断方法:如果基础模型不加载技能也能通过评估,说明技能的技术已被模型默认掌握,可以退休了。
2️⃣ 编码偏好技能(Encoded preference)
是什么:AI 本来就会做,但技能规定了”按我们团队的方式做”
例子:
-
• NDA 审查技能——按公司法律部的流程检查合同 -
• 周报生成技能——按固定格式汇总信息
评估重点:
-
• ✅ 是否忠实还原了实际工作流程? -
• ✅ 触发时机是否准确?(该用时用,不该用时别乱用)
三、评估的本质:不只是看结果
很多人测试 AI 只看一个指标:”任务完成了吗?”
但这远远不够。一个专业的评估应该检查 4 个维度:
|
|
|
|
| 结果 |
|
|
| 过程 |
|
|
| 风格 |
|
|
| 效率 |
|
|
💡 一句话总结:不仅要”做完了”,还要”做对了”、”做得好”、”做得快”。
四、动手之前:先写”成功标准”
这是最关键的一步,也是最容易被忽略的。
在写任何代码之前,先用文字写下:”什么样的结果算成功?”
举个栗子 🌰
假设你要做一个”自动搭建 React 演示项目”的技能:
结果目标:
-
• ✅ 生成一个能运行的 React 项目 -
• ✅ 包含 Tailwind CSS 配置 -
• ✅ 包含示例页面
过程目标:
-
• ✅ 必须运行 npm install安装依赖 -
• ✅ 必须创建 package.json -
• ✅ 不能跳过任何必要步骤
风格目标:
-
• ✅ 代码缩进用 2 个空格 -
• ✅ 组件命名用大驼峰(PascalCase) -
• ✅ 不要生成多余的注释
效率目标:
-
• ✅ 一次性完成,不重复执行命令 -
• ✅ token 消耗控制在合理范围
五、实战:8 步测试法
第 1 步:创建技能
技能就是一个文件夹,里面有个 SKILL.md 文件:
my-skill/├── SKILL.md # 技能说明书(核心)├── scripts/ # 可选:辅助脚本└── resources/ # 可选:模板文件
SKILL.md 长什么样?
---name: setup-react-demodescription: 自动搭建 React + Tailwind 演示项目---# 指令1. 在当前目录创建新项目2. 安装 React 和 Tailwind CSS3. 生成一个示例页面4. 确保项目能正常运行# 注意事项- 使用 npm 作为包管理器- 代码风格遵循 Airbnb 规范
💡 快速开始:Claude Code 和 OpenAI Codex 都提供了内置工具
$skill-creator帮你生成模板。
第 2 步:手动测试,暴露隐藏假设
第一次运行,重点观察 AI 的”假设”:
|
|
|
|
| 触发假设 |
|
|
| 环境假设 |
|
|
| 执行假设 |
|
|
推荐命令(OpenAI Codex 环境):
codex exec --full-auto \'Use the $setup-demo-app skill to create the project in this directory.'
第 3 步:准备测试用例(10-20 个足够)
不需要几百个测试,10-20 个精心设计的用例就能发现大部分问题。
测试用例模板(CSV 格式):
id,should_trigger,prompttest-01,true,"用 $setup-demo-app 技能创建名为 my-app 的项目"test-02,true,"搭建一个 React + Tailwind 的最小演示应用"test-03,true,"创建一个展示 Responses API 的演示项目"test-04,false,"给已有的 React 项目添加 Tailwind 样式"
4 种测试类型:
-
1. 显式调用:直接说出技能名称(如 test-01) -
2. 隐式调用:描述目标但不提技能名(如 test-02) -
3. 上下文调用:加一些背景信息,但核心需求一样(如 test-03) -
4. 负向控制:不该触发技能的情况(如 test-04)
第 4 步:自动化检查——让机器帮你打分
手动检查太麻烦,我们要写代码自动检查。
OpenAI Codex 支持输出结构化日志(JSONL 格式):
codex exec --json -o output.jsonl "你的指令"
检查示例 1:是否运行了 npm install?
functioncheckRanNpmInstall(events) {return events.some((e) => e.item?.type === "command_execution" && e.item.command.includes("npm install") );}
检查示例 2:package.json 是否存在?
functioncheckPackageJsonExists(projectDir) {return fs.existsSync(path.join(projectDir, "package.json"));}
这些检查是确定性的——要么通过,要么不通过,没有灰色地带。
第 5 步:用 AI 检查 AI——定性评估
有些标准很难用代码检查,比如:
-
• 代码风格是否符合规范? -
• 命名是否清晰? -
• 结构是否合理?
这时候可以让另一个 AI 来评分!
方法:
-
1. 先用技能生成代码 -
2. 再用 AI 检查生成的代码 -
3. 输出结构化评分
命令示例:
# OpenAI Codexcodex exec \"评估 demo-app 仓库是否符合这些要求..." \ --output-schema style-rubric.schema.json \ -o test-01.style.json# Claude Code 也有类似功能claude eval --skill ./my-skill --prompts test-prompts.csv
评分标准文件(JSON Schema):
{"type":"object","properties":{"overall_pass":{"type":"boolean"},"score":{"type":"integer","minimum":0,"maximum":100},"checks":{"type":"array","items":{"properties":{"id":{"type":"string"},"pass":{"type":"boolean"},"notes":{"type":"string"}}}}}}
输出示例:
{"overall_pass":true,"score":85,"checks":[{"id":"naming","pass":true,"notes":"组件命名规范"},{"id":"indent","pass":false,"notes":"部分文件缩进不统一"}]}
第 6 步:扩展评估维度
技能成熟后,可以增加更多检查:
|
|
|
|
| 命令计数 |
|
|
| Token 预算 |
|
|
| 构建检查 |
|
npm run build |
| 冒烟测试 |
|
|
| 仓库清洁度 |
|
|
| 权限检查 |
|
|
第 7 步:建立回归测试
每次发现 bug,都要问自己:“怎么防止它再次发生?”
把每次手动修复变成自动化测试:
-
1. 发现 AI 漏装了依赖 -
2. 手动修复这个问题 -
3. 写一个检查: checkRanNpmInstall() -
4. 加入测试套件 -
5. 以后每次改代码都自动跑一遍
第 8 步:持续迭代
评估不是一次性的,而是伴随技能全生命周期的:
写技能 → 手动测试 → 发现问题 → 加检查 → 改技能 → 再测试 → ...
关键心态:
-
• 每次失败都是改进的机会 -
• 每个检查都是对未来的保护 -
• 评估越完善,改代码越放心
六、高级技巧:基准测试与 A/B 对比
并行评估(Claude Code 特色功能)
问题:顺序跑 20 个测试很慢,而且上下文会互相污染
解决方案:启动多个独立代理并行运行
claude eval --parallel 5 --skill ./my-skill --prompts tests.csv
好处:
-
• ✅ 每个代理在干净上下文中运行 -
• ✅ 独立的 token 和计时指标 -
• ✅ 更快的结果,无交叉污染
A/B 对比测试
场景:比较两个技能版本,或”有技能 vs 无技能”
方法:
-
1. 准备两个版本(A 和 B) -
2. 用”比较代理”同时评估 -
3. 代理不知道哪个是哪个,独立判断 -
4. 对比结果,看改动是否真的有帮助
用途:
-
• 验证技能升级是否有效 -
• 判断能力提升技能是否该退役(如果无技能版本也能过)
七、触发精度调优
问题:技能多了以后,描述精度很关键
|
|
|
|
|
|
|
|
|
|
|
|
解决方案:
Claude Code 的 skill-creator 可以分析当前描述与示例提示,建议如何减少假阳性和假阴性。
实测效果:在 6 个公开技能上测试,5 个看到了触发改善。
八、核心要点总结
5 个关键原则
-
1. 衡量重要的:好的评估让回归清晰、失败可解释 -
2. 从成功定义出发:先写标准,再写代码 -
3. 基于行为检查:用 JSON 日志做确定性验证 -
4. 规则不够时用 AI:定性标准用评分制检查 -
5. 让真实失败驱动:每个 bug 都变成测试用例
2 个必问问题
|
|
|
|
|
|
|
|
|
|
|
|
一句话心法
运行 AI → 记录发生了什么 → 用一小套检查打分 → 持续改进
九、适合谁读?
|
|
|
| AI 应用开发者 |
|
| 产品经理 |
|
| 测试工程师 |
|
| 技术管理者 |
|
十、参考资源
-
• OpenAI 原文:Testing Agent Skills Systematically with Evals -
• Anthropic 原文:Improving skill-creator: Test, measure, and refine Agent Skills -
• Claude Code 文档:https://claude.ai/code -
• OpenAI Codex 文档:https://developers.openai.com/docs/codex -
• Skill Creator 插件:https://github.com/anthropics/claude-plugins-official/tree/main/plugins/skill-creator
如果觉得有帮助,欢迎点赞、转发、收藏。你的支持是我持续分享的动力!
夜雨聆风