乐于分享
好东西不私藏

如何像专家一样测试 AI 智能体?一份超实用的评估指南

如何像专家一样测试 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 个维度:

维度
通俗解释
举例
结果
任务做完了吗?
项目能跑起来吗?
过程
步骤对吗?
有没有按预期调用工具?
风格
输出规范吗?
代码格式是否符合团队规范?
效率
有没有瞎折腾?
有没有重复运行命令?浪费 token?

💡 一句话总结:不仅要”做完了”,还要”做对了”、”做得好”、”做得快”。


四、动手之前:先写”成功标准”

这是最关键的一步,也是最容易被忽略的。

在写任何代码之前,先用文字写下:”什么样的结果算成功?”

举个栗子 🌰

假设你要做一个”自动搭建 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 的”假设”:

假设类型
问题
例子
触发假设
什么情况下该激活这个技能?
用户说”建个 React 项目”,AI 应该知道用这个技能
环境假设
需要什么前置条件?
目录必须是空的?npm 必须已安装?
执行假设
步骤顺序对吗?
有没有先装依赖再写代码?

推荐命令(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. 1. 显式调用:直接说出技能名称(如 test-01)
  2. 2. 隐式调用:描述目标但不提技能名(如 test-02)
  3. 3. 上下文调用:加一些背景信息,但核心需求一样(如 test-03)
  4. 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. 1. 先用技能生成代码
  2. 2. 再用 AI 检查生成的代码
  3. 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 步:扩展评估维度

技能成熟后,可以增加更多检查:

检查项
目的
实现方式
命令计数
检测 AI 是否”瞎折腾”
统计执行了多少条命令
Token 预算
控制成本
监控输入/输出 token 数
构建检查
确保代码能编译
运行 npm run build
冒烟测试
确保能运行
启动服务,用 curl 测试
仓库清洁度
无垃圾文件
检查是否有多余文件
权限检查
最小权限原则
验证在受限环境也能跑

第 7 步:建立回归测试

每次发现 bug,都要问自己:“怎么防止它再次发生?”

把每次手动修复变成自动化测试

  1. 1. 发现 AI 漏装了依赖
  2. 2. 手动修复这个问题
  3. 3. 写一个检查:checkRanNpmInstall()
  4. 4. 加入测试套件
  5. 5. 以后每次改代码都自动跑一遍

第 8 步:持续迭代

评估不是一次性的,而是伴随技能全生命周期的:

写技能 → 手动测试 → 发现问题 → 加检查 → 改技能 → 再测试 → ...

关键心态

  • • 每次失败都是改进的机会
  • • 每个检查都是对未来的保护
  • • 评估越完善,改代码越放心

六、高级技巧:基准测试与 A/B 对比

并行评估(Claude Code 特色功能)

问题:顺序跑 20 个测试很慢,而且上下文会互相污染

解决方案:启动多个独立代理并行运行

claude eval --parallel 5 --skill ./my-skill --prompts tests.csv

好处

  • • ✅ 每个代理在干净上下文中运行
  • • ✅ 独立的 token 和计时指标
  • • ✅ 更快的结果,无交叉污染

A/B 对比测试

场景:比较两个技能版本,或”有技能 vs 无技能”

方法

  1. 1. 准备两个版本(A 和 B)
  2. 2. 用”比较代理”同时评估
  3. 3. 代理不知道哪个是哪个,独立判断
  4. 4. 对比结果,看改动是否真的有帮助

用途

  • • 验证技能升级是否有效
  • • 判断能力提升技能是否该退役(如果无技能版本也能过)

七、触发精度调优

问题:技能多了以后,描述精度很关键

问题
后果
例子
描述太宽泛
虚假触发
一说”写代码”就激活 React 技能
描述太狭窄
从不触发
用户换个说法就识别不出来

解决方案

Claude Code 的 skill-creator 可以分析当前描述与示例提示,建议如何减少假阳性和假阴性。

实测效果:在 6 个公开技能上测试,5 个看到了触发改善。


八、核心要点总结

5 个关键原则

  1. 1. 衡量重要的:好的评估让回归清晰、失败可解释
  2. 2. 从成功定义出发:先写标准,再写代码
  3. 3. 基于行为检查:用 JSON 日志做确定性验证
  4. 4. 规则不够时用 AI:定性标准用评分制检查
  5. 5. 让真实失败驱动:每个 bug 都变成测试用例

2 个必问问题

问题
适用场景
判断标准
“技能还必要吗?”
能力提升技能
无技能时模型也能通过评估 → 可以退役
“触发够准吗?”
编码偏好技能
假阳性/假阴性都低 → 描述精准

一句话心法

运行 AI → 记录发生了什么 → 用一小套检查打分 → 持续改进


九、适合谁读?

人群
收获
AI 应用开发者
学会系统化测试 AI 技能
产品经理
理解如何定义 AI 的成功标准
测试工程师
掌握 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

如果觉得有帮助,欢迎点赞、转发、收藏。你的支持是我持续分享的动力!