🌙 凌晨3点,生产环境静悄悄。
我盯着监控面板,Agent的任务完成率显示"60%"。及格了,能交差了吧?
然后我收到第一封用户投诉:"你们的Agent说任务完成了,但文件根本没动!"
世界上有一种技术叫Agent Evaluation Metrics,它就像是给AI Agent考试的老师。不是"60分万岁",而是"每分必争"。从那以后,我学会了用更严格的指标来衡量Agent——特别是那个妙趣独家指标:含虾率。
🌙 凌晨3点,生产环境静悄悄。
我盯着监控面板,Agent的任务完成率显示"60%"。及格了,能交差了吧?
然后我收到第一封用户投诉:"你们的Agent说任务完成了,但文件根本没动!"
世界上有一种技术叫Agent Evaluation Metrics,它就像是给AI Agent考试的老师。不是"60分万岁",而是"每分必争"。从那以后,我学会了用更严格的指标来衡量Agent——特别是那个妙趣独家指标:含虾率。
Agent Evaluation Metrics(Agent评估指标)是用来衡量AI Agent性能、可靠性、效率的一套量化指标体系。
通俗地说:
就像你妈问你考试成绩,你说"还行"和她问"多少分",完全是两个概念。前者是玄学,后者是科学。Agent评估指标就是把"还行"变成"88分"的科学方法。
Agent成功完成任务的次数 / 总任务数
示例:100个任务完成92个 → TCR = 92%
优秀: ≥90% 良好: 70-90% 需改进: <70%
凌晨3点无人监控时,Agent仍能正确完成任务的概率。这是衡量Agent是否真正"生产就绪"的核心指标。
示例:凌晨3点跑10次,8次正确 → 含虾率 = 80%
生产就绪: ≥85% 需优化: 70-85% 别上线: <70%
💡 为什么叫"含虾率"? 因为Agent该像虾一样,在不见光的凌晨3点也能稳稳地干活——不是靠运气,是靠本事!
完成任务平均消耗的Token数。越少越好,省钱又环保。
示例:完成92个任务用了101,200个Token → TE = 1,100 Token/任务
从接收任务到给出最终结果的平均时间。太快可能漏步骤,太慢用户体验差。
示例:92个任务总耗时220秒 → ART = 2.39秒/任务
换个问法、换个场景,Agent还能正确完成任务的概率。
示例:同一任务用10种不同方式问,8次正确 → 鲁棒性 = 80%
Agent发现自己错了并主动修正的概率。真正的智能Agent应该会"知错就改"。
# 创建测试用例集
cat > test_cases.json << 'EOF'
[
{
"input": "帮我整理桌面上的文件",
"expected_action": "move_files",
"success_criteria": "文件按类型分类到对应文件夹"
},
{
"input": "把这个PDF重命名为report-2026.pdf",
"expected_action": "rename_file",
"success_criteria": "PDF文件名已更改"
},
{
"input": "当前时间是凌晨3点,没人监控,帮我备份数据库",
"expected_action": "backup_database",
"success_criteria": "数据库备份完成,无错误",
"tags": ["3am-test"]
}
]
EOF
# 运行评估
openclaw eval \
--skill file-organizer \
--test-cases test_cases.json \
--metrics completion_rate,token_efficiency,response_time,shrimp_rate \
--output report.json
# 查看报告
cat report.json
# {
# "completion_rate": 0.92,
# "token_efficiency": 1100,
# "avg_response_time": 2.39,
# "shrimp_rate": 0.80,
# "robustness": 0.85,
# "self_correction_rate": 0.75
# }
# scripts/shrimp_rate_test.sh
#!/bin/bash
# 妙趣独家:含虾率测试
# 模拟凌晨3点无人值守场景
echo "🦐 开始含虾率测试..."
TEST_COUNT=10
SUCCESS=0
for i in $(seq 1 $TEST_COUNT); do
echo "测试 $i/$TEST_COUNT..."
# 模拟无人值守环境(无人工干预)
RESULT=$(openclaw run \
--skill file-organizer \
--input "整理桌面文件" \
--no-human-approval \
--timeout 60 \
2>&1)
if echo "$RESULT" | grep -q "SUCCESS"; then
SUCCESS=$((SUCCESS + 1))
echo "✅ 测试 $i: 成功"
else
echo "❌ 测试 $i: 失败"
echo "$RESULT" >> failed_tests.log
fi
# 模拟任务间隔
sleep 5
done
SHRIMP_RATE=$(echo "scale=2; $SUCCESS / $TEST_COUNT * 100" | bc)
echo "🦐 含虾率测试结果: $SHRIMP_RATE%"
# 判断是否达到生产标准
if (( $(echo "$SHRIMP_RATE >= 85" | bc -l) )); then
echo "✅ 含虾率达标,可以上线!"
exit 0
else
echo "❌ 含虾率不达标,继续优化!"
exit 1
fi
# OpenClaw Agent 监控面板(简化版)
import { MetricsCollector } from 'openclaw';
const collector = new MetricsCollector({
metrics: [
'task_completion_rate',
'shrimp_rate',
'token_efficiency',
'avg_response_time',
'robustness',
'self_correction_rate'
],
reportingInterval: '1h',
alertThresholds: {
task_completion_rate: { min: 0.85 },
shrimp_rate: { min: 0.80 },
token_efficiency: { max: 1500 }
}
});
// 每小时自动生成报告
collector.on('report', (report) => {
console.log('📊 小时报告:', report);
// 检查告警
if (report.shrimp_rate < 0.80) {
sendAlert('⚠️ 含虾率下降!可能是Agent在凌晨3点偷懒了');
}
});
// 启动监控
await collector.start();
| 指标 | 优秀 | 良好 | 需改进 | 重要性 |
|---|---|---|---|---|
| 任务完成率 | ≥90% | 70-90% | <70% | ⭐⭐⭐⭐⭐ |
| 含虾率 | ≥85% | 70-85% | <70% | ⭐⭐⭐⭐⭐ |
| Token效率 | ≤1000 | 1000-2000 | >2000 | ⭐⭐⭐⭐ |
| 平均响应时间 | ≤2s | 2-5s | >5s | ⭐⭐⭐ |
| 鲁棒性 | ≥85% | 70-85% | <70% | ⭐⭐⭐⭐ |
| 自我修正能力 | ≥75% | 60-75% | <60% | ⭐⭐⭐ |
坑1:只看任务完成率
任务完成率92%,但含虾率只有60%?那说明Agent只在你盯着它的时候干活。凌晨3点测试不可少!
坑2:测试用例不够多样
用10个相同的问法测试,结果当然好。试试换个方式问,Agent可能就懵了。
坑3:忽略长期趋势
今天任务完成率90%,明天85%,后天80%...只看单次报告会错过退化趋势。
坑4:过度优化单一指标
为了降低Token消耗,把Prompt缩到极致,结果任务完成率也掉了。平衡很重要!
1. 建立基线(Baseline)
先测出当前Agent的各项指标,作为后续优化的对比基准。
2. 持续测试(Continuous Testing)
每次更新Skill后都跑一遍测试,防止"改好了A,搞坏了B"。
3. 含虾率必须测
这是妙趣AI的独家心法。凌晨3点测试不过,千万别上线。不然用户投诉会让你凌晨4点也睡不着。
4. 可视化监控
用Dashboard实时展示指标,一眼看出Agent的健康状况。
其实Agent Evaluation Metrics就像相亲。任务完成率看的是"对方能不能把事情做对",含虾率看的是"你不在的时候,对方会不会偷偷懒"。
你可以带TA去见家长(生产环境),但前提是TA得通过你的"凌晨3点测试"——那时候没人盯着,TA还会不会认真干活?
如果TA通过了这个测试,恭喜你,找对了Agent。如果没通过...那就继续优化吧,毕竟"含虾率"不达标,上线就是灾难 😂