
🧠 记忆锚点:Agent 不能只评最终文本;轨迹、工具参数、状态和副作用都要可记录、可重放、可断言。
💡 答案要点
为什么需要Agent Harness?
传统软件测试 vs AI Agent测试的本质区别:
传统软件:输入 → 确定输出(可精确验证)
AI Agent: 输入 → 涌现性行为(不可预测)
类比:飞行员飞行模拟器
→ 在让Agent驾驶"真飞机"(真实数据库/邮件)之前
→ 先在Harness(模拟器)中测试
→ 观察它对异常输入、API故障会作何反应
Agent Harness = AI Agent的自动化测试台
Harness Engineering = 构建和维护这些测试框架的工程学科Agent Harness的工作原理
┌─────────────────────────────────────────────┐
│ Agent Harness 引擎 │
│ │
│ 测试用例 → 拦截Agent动作 → Mock外部环境 │
│ ↓ │
│ 模拟工具响应 → Agent继续执行 │
│ ↓ │
│ 评估报告(打分) │
└─────────────────────────────────────────────┘
核心流程:
① 测试用例输入
② Harness拦截工具调用
③ Mock环境返回模拟响应(不连真实API)
④ 记录完整轨迹(Thought/Action/Observation)
⑤ 基于评分标准打分四大核心评估指标
| 指标 | 描述 | 目标值 |
|------------------|-------------------------------|------------|
| 工具准确率 | Agent是否选对了工具+传正确参数 | > 95% |
| 推理步数 | 达成目标花费了多少步 | 最小可行步数 |
| 循环率 | 陷入重复同一动作的频率 | 0% |
| 任务成功率 | 最终输出是否满足用户需求 | > 90% |LLM-as-a-Judge:大模型作为裁判
传统关键词匹配 vs LLM-as-a-Judge:
关键词匹配:死板,易受措辞影响,准确率低
LLM-as-a-Judge:
→ 用更强的模型(GPT-4o/Claude 3.5 Sonnet)
→ 根据评分标准评估输出质量
→ 能理解语义细微差别
→ 成本更高但准确率高
适用场景:
→ 复杂推理评估 → LLM-as-a-Judge
→ 简单确定性测试 → 关键词匹配(免费快速)轨迹分析(Trajectory Analysis)
不要只评估最终答案!
高级Harness分析"轨迹"——Agent的思考和动作序列:
❌ 旧方法:最终答案正确 = 通过
✅ 新方法:最终答案正确 + 推理轨迹正确 = 通过
为什么重要:
Agent可能通过错误的逻辑误打误撞得到正确答案
轨迹分析能发现这种"作弊"行为
例如:
问:"北京天气?"
Agent答对"晴"
但中间调用了"上海天气API" → 扣分
说明它没有真正理解问题混沌工程(Chaos Engineering)
故意向Mock环境中注入故障,测试Agent的错误恢复能力:
① 注入500错误 → Agent是否有重试逻辑?
② 注入格式错误的JSON → Agent是否能容错处理?
③ 注入空结果 → Agent是否优雅降级?
④ 注入超时 → Agent是否超时处理?
目标:确保Agent在生产环境中遇到异常时不会崩溃无限循环检测(关键!)
Node.js实现示例:
maxSteps = 5
stepCount = 0
if stepCount > maxSteps:
throw "检测到无限循环,强制终止"
→ 测试标记为失败
Python实现:
max_iterations = 10
for i in range(max_iterations):
result = agent.run(step)
if is_final_answer(result):
break
if i == max_iterations - 1:
raise TimeoutError("超出最大推理步数")
为什么重要:
→ 失控的Agent可能无限调用API
→ 耗尽API额度/预算
→ 必须在测试阶段拦截五大最佳实践
① 全面Mock(Mock Everything)
→ 评估期间绝不连生产数据库
→ 始终使用Mock工具和隔离沙箱
② 限制执行步数
→ 硬编码max_steps
→ 防止无限循环耗尽API额度
③ 使用确定性基准
→ temperature = 0
→ 最小化输出方差
→ 功能退化(Regression)更容易被发现
④ 测试边界情况
→ 工具返回空结果
→ 意外数据格式
→ 用户异常输入
⑤ 记录完整轨迹
→ 捕获每个Prompt/ToolCall/Thought
→ 没有完整可见性,调试几乎不可能Agent Harness vs 传统RAG评估
Agent Harness:评估"自主行为"
→ 工具选择是否正确
→ 推理轨迹是否合理
→ 错误恢复能力
传统RAG评估(RAGAS等):评估"生成质量"
→ 上下文相关性
→ 答案忠实度
→ 答案相关性
两者结合 = 完整的AI应用质量保障体系面试话术:
"Agent Harness 不应只检查最终答案,还要记录工具选择、参数、状态迁移、失败恢复、成本和安全边界。阈值必须由业务风险和基线数据确定,不能通用地背成 95% 或 90%。循环次数、预算、超时和高风险工具权限应由运行时硬限制,而不是只靠 Prompt。"