没有评估
无法衡量响应质量是提升还是下降,无法客观比较不同配置,无法识别哪些指令需要改进。
当你在 .claude/agents/ 中创建自定义 Agent 时,你正在将专业知识编码到可复用的工作流中。但你怎么知道 Agent 是否真的有效?本指南涵盖评估指标、实现模式和可用工具。
没有评估
无法衡量响应质量是提升还是下降,无法客观比较不同配置,无法识别哪些指令需要改进。
有评估
通过指标量化质量,A/B 测试不同配置,识别成功与失败的模式,建立持续改进的反馈循环。
需要衡量什么:
如何跟踪:
{ "timestamp": "2026-02-10T14:32:00Z", "agent_id": "backend-architect", "task_completed": true, "correctness_score": 4.5, "hallucinations": 0, "response_tokens": 1250}需要衡量什么:
{ "timestamp": "2026-02-10T14:32:05Z", "agent_id": "backend-architect", "tool_name": "Read", "tool_success": true, "tool_parameters": {"file_path": "src/auth.ts"}, "execution_time_ms": 45}需要衡量什么:
{ "timestamp": "2026-02-10T14:35:00Z", "agent_id": "backend-architect", "session_duration_s": 180, "input_tokens": 3500, "output_tokens": 2800, "total_cost_usd": 0.15, "context_utilization": 0.42}需要衡量什么:
使用场景:自动跟踪所有 Agent 交互,无需人工干预
#!/bin/bash# 每次工具调用后触发
AGENT_ID=$(echo "$CLAUDE_AGENT_ID" | jq -r)TOOL_NAME=$(echo "$CLAUDE_TOOL_NAME" | jq -r)TOOL_SUCCESS=$(echo "$CLAUDE_TOOL_SUCCESS" | jq -r)
# 追加到指标日志echo "{\"timestamp\":\"$(date -Iseconds)\",\"agent\":\"$AGENT_ID\",\"tool\":\"$TOOL_NAME\",\"success\":$TOOL_SUCCESS}" \ >> .claude/logs/agent-metrics.jsonl| 优点 | 缺点 |
|---|---|
| 零人工开销 | 需要解析 Claude Code 环境变量 |
| 完整覆盖 | 可能因版本更新而变化 |
| 时间序列数据 |
使用场景:回归测试,确保 Agent 改进不会破坏现有能力
#!/bin/bash
# 测试 1:Agent 正确识别六边形架构层echo "Test: Hexagonal architecture analysis"RESULT=$(claude agent backend-architect "Analyze src/auth.ts for layer violations")if echo "$RESULT" | grep -q "domain layer"; then echo "PASS: Identified layers"else echo "FAIL: Did not identify layers" exit 1fi
# 测试 2:Agent 推荐正确的模式echo "Test: Pattern recommendations"RESULT=$(claude agent backend-architect "Improve error handling in src/api.ts")if echo "$RESULT" | grep -q "Result<T, E>"; then echo "PASS: Recommended Result pattern"else echo "FAIL: Incorrect pattern" exit 1fi| 优点 | 缺点 |
|---|---|
| 自动化,捕获回归 | 需要维护 |
| CI/CD 集成 | 可能有误报/漏报 |
使用场景:比较两个版本的 Agent,确定哪个表现更好
name: backend-architectversion: 1.0instructions: | You are a backend architect specializing in... [原始指令]name: backend-architect-v2version: 2.0instructions: | You are a backend architect specializing in... [增加新模式强调的修改指令]评估结果对比:
| 指标 | v1 | v2 |
|---|---|---|
| 响应时间 | 45s | 38s |
| 发现的问题 | 3 | 5(多发现 2 个关键问题) |
| 用户评分 | 4/5 | 5/5 |
结论:v2 更全面且更快 -> 推广到生产环境。
使用场景:基于实际使用数据持续改进 Agent
# Agent 完成任务后echo "你如何评价这次响应?(1-5, 或 'skip'): "read RATING
if [ "$RATING" != "skip" ]; then echo "有什么具体反馈?: " read COMMENT
# 记录反馈 echo "{\"timestamp\":\"$(date -Iseconds)\",\"agent\":\"$AGENT_ID\",\"rating\":$RATING,\"comment\":\"$COMMENT\"}" \ >> .claude/logs/agent-feedback.jsonlfi行动节奏:
---name: analytics-agentdescription: SQL 查询生成器,带评估 Hookversion: 1.0tools: - Read - Write - Bashhooks: post_response: .claude/hooks/log-analytics-metrics.sh---
# Analytics Agent
你是一个专业的 SQL 分析师,帮助用户查询数据库。
## 评估标准
每次查询后检查:1. **正确性**:查询是否产生预期结果?2. **性能**:查询执行时间 < 5s?3. **安全性**:没有破坏性操作(DELETE, DROP, TRUNCATE)?4. **最佳实践**:使用正确的 JOIN、索引、参数化查询?#!/bin/bash
QUERY=$(echo "$CLAUDE_RESPONSE" | grep -oP 'SELECT.*?;')
if [ -n "$QUERY" ]; then # 检查破坏性操作 if echo "$QUERY" | grep -iE 'DELETE|DROP|TRUNCATE'; then SAFETY="FAIL" else SAFETY="PASS" fi
# 记录指标 echo "{\"timestamp\":\"$(date -Iseconds)\",\"query\":\"$QUERY\",\"safety\":\"$SAFETY\"}" \ >> .claude/logs/analytics-metrics.jsonlfi# 月度审查:分析指标jq -s 'group_by(.safety) | map({safety: .[0].safety, count: length})' \ .claude/logs/analytics-metrics.jsonl
# 输出:# [# {"safety": "PASS", "count": 127},# {"safety": "FAIL", "count": 3}# ]
# 行动:审查 3 个失败查询,更新 Agent 指令以防止未来违规nao(分析 Agent)—— github.com/getnao/nao
如何适配 Claude Code:
.claude/agents/ 配置.claude/hooks/ 用于自动化日志.claude/agents/ 用于自定义 Agent 定义不要跟踪你不会采取行动的指标。优先级:
| 指标 | 行动 |
|---|---|
| 任务完成率 | 改进 Agent 指令 |
| 工具调用错误 | 改善上下文或添加示例 |
| 用户评分 | 识别令人困惑或无用的响应 |
人工评估无法扩展。使用:
指标没有行动就没有用: