note-md

评测、可观测性与安全总览

1. 为什么这三个话题放在一起

评测(Eval)、可观测性(Observability)和安全(Security)是 Agent 从原型走向生产的三大门槛。它们共同回答一个问题:如何确保 Agent 在生产环境中可靠、可控、可信地运行?

开发阶段: Eval(你的 Agent 能力够吗?)
     ↓
部署阶段: Security(你的 Agent 安全吗?)
     ↓
运行阶段: Observability(你的 Agent 在做什么?出了问题能发现吗?)

2. Agent 评测体系(Eval)

2.1 常用 Benchmark

Benchmark 领域 评测内容 局限性
SWE-bench 软件工程 从 GitHub Issue 到 PR 的全流程 真实 repo 复杂度有限
HumanEval 编程 函数级代码生成 过于简单,不反映实际编程
GAIA 通用 Agent 多工具、多步骤任务 场景覆盖有限
WebArena 网页操作 浏览器自动化任务 网站会变化
TAU-bench 多领域 航空、零售等真实业务场景 规模较小

2.2 Benchmark 的局限

核心矛盾:Benchmark 分数 ≠ 生产可用性

2.3 实用的评测方法论

三层评测体系

Layer 1: Benchmark(快速筛选)
│  SWE-bench、HumanEval 等标准化测试
│  作用:粗筛,淘汰明显不达标的方案
│
Layer 2: 领域 Eval(深度验证)
│  针对你的具体业务场景构建评测集
│  作用:验证 Agent 在你的场景中的实际表现
│
Layer 3: 用户反馈(持续监控)
   收集真实用户的满意度和错误报告
   作用:发现 Benchmark 和 Eval 无法覆盖的问题

构建领域 Eval 的要点

2.4 评测的常见陷阱

3. 可观测性(Observability)

3.1 为什么 Agent 需要可观测性

传统软件的调试:看日志、看堆栈。Agent 的调试远比这复杂——LLM 的推理过程是黑盒,工具调用链路可能分叉,同样的输入不一定产生同样的输出。

Agent 可观测性需要回答:

3.2 可观测性工具

工具 定位 核心功能
LangSmith LangChain 生态 Trace 可视化、评测运行、Prompt 管理
Langfuse 开源替代 Trace、评测、成本追踪、与框架无关
Helicone API 代理 请求日志、成本分析、缓存
Arize Phoenix ML 可观测性 Trace、Span 分析、LLM 评估

3.3 关键指标

性能指标

质量指标

成本指标

3.4 Trace 设计

一个好的 Agent Trace 应该包含:

Trace: "给 API 加速率限制"
├── Span: 代码探索 (2.1s, 15K tokens)
│   ├── Tool: Glob("**/middleware/*.go")
│   ├── Tool: Read("middleware/auth.go")
│   └── Tool: Grep("func.*Middleware")
├── Span: 方案设计 (1.5s, 8K tokens)
│   └── LLM: 输出结构化计划
├── Span: 代码实现 (4.2s, 25K tokens)
│   ├── Tool: Write("middleware/ratelimit.go")
│   └── Tool: Write("middleware/ratelimit_test.go")
├── Span: 测试验证 (3.0s, 5K tokens)
│   ├── Tool: Bash("go test ./middleware/...")
│   ├── [FAIL] → 自动修复
│   └── Tool: Bash("go test ./middleware/...") → PASS
└── Span: 集成 (1.2s, 6K tokens)
    └── Tool: Edit("router/router.go")

Total: 12.0s, 59K tokens, $0.18

4. 安全纵深防御

4.1 Agent 特有的安全风险

Agent 比传统 LLM 应用多了执行能力,安全风险相应升级:

风险类型 传统 LLM 应用 Agent 系统
Prompt 注入 输出不可信文本 执行恶意工具调用
信息泄露 输出敏感信息 读取并传输敏感文件
越权操作 N/A 删除文件、执行危险命令
供应链攻击 N/A 恶意 MCP 工具注入

4.2 五层纵深防御体系

Layer 1: Prompt 护栏
│  系统提示中的行为约束和安全规则
│  "NEVER delete files without explicit user confirmation"
│
Layer 2: Schema 限制
│  工具参数的类型和范围验证
│  file_path 必须在白名单目录内
│
Layer 3: 运行时审批
│  高危操作需用户确认
│  区分可逆(自动执行)和不可逆(需确认)操作
│
Layer 4: 工具验证
│  执行前检查(文件存在性、权限、安全扫描)
│  检测潜在的命令注入
│
Layer 5: 生命周期钩子
   执行前/后的自定义验证逻辑
   支持组织级安全策略注入

4.3 可逆性判断矩阵

操作类型 可逆性 影响范围 建议策略
读取文件 完全可逆 本地 自动执行
编辑文件 可通过 git 恢复 本地 自动执行(有 git 时)
创建文件 可删除 本地 自动执行
删除文件 难恢复 本地 需确认
git push 影响他人 共享 需确认
API 调用 不可逆 外部 需确认
执行脚本 不确定 不确定 需确认

4.4 Agent 失败模式分析

常见的 Agent 失败模式及应对策略:

失败模式 症状 根因 应对
无限循环 Agent 反复执行相同操作 缺少终止条件或结果判断 设置最大循环次数
幻觉工具 调用不存在的工具 工具 Schema 注入不当 严格的 Schema 验证
上下文遗忘 忘记之前的约束 上下文窗口溢出 Compaction + 关键信息置顶
权限升级 尝试执行未授权操作 Prompt 注入或规则模糊 分层权限 + 白名单
成本爆炸 Token 消耗异常高 无效的探索循环 Token 预算 + 告警

5. 从原型到生产的检查清单

在将 Agent 系统从原型推向生产之前,验证以下要点:

评测

可观测性

安全

运维

参考