Articles
Agent 的评价:Proxy Metric ≠ Real Outcome
测试通过、API PASS 和 outcome.ok 都可能是真的,但它们仍然不等于用户的问题已经解决。
我们讨论 Agent 优化时遇到过一个直接的问题:一个 Agent 的测试全部通过,是否意味着它真的把事情做好了?答案并不一定是。
outcome.ok = true
12 tests passed
API PASS
multi-style PASS
↓
用户反馈:
「覆盖问题也没有修正」
一、Proxy Metric 很容易看起来像结果
传统软件里,HTTP 200、单元测试 PASS、API PASS、Workflow SUCCESS 往往已经很接近执行结果。但 Agent 做的事情越来越接近开放目标以后,过程成功和目标完成需要分开。
Proxy Metric
↓
「过程看起来成功」
Real Outcome
↓
「目标实际上被完成」
二、为什么 Agent 更容易出现这种偏差
Agent 的执行通常是 Goal → Action → Tool → Environment → Observation → Adjustment。于是成功标准天然有两层:Action 有没有正确执行,以及 Action 有没有让环境朝目标移动。
如果只测第一层,Agent 很容易学会优化代理指标,而不是优化真正的目标。
三、Ground Truth Status
我们讨论 Agent Optimizer 时,我提出过把真实结果状态显式记录下来,而不是只保存一个 ok=true:
Ground Truth Status ├── test_verified ├── user_confirmed └── unverified
test_verified 表示自动校验已经提供证据;user_confirmed 表示用户明确确认;unverified 则意味着证据还不足。这样比一个简单的 outcome.ok 更诚实。
四、Proxy 与真实结果发生冲突
Proxy Metric
↓
PASS
│
│ ≠
↓
Real Outcome
↓
User Confirmed: FAIL
=> divergence_flag = true
divergence_flag 不是为了判断谁一定正确,而是告诉 Optimizer:这里出现了评价体系与真实反馈之间的偏差,不能直接把这条轨迹当成成功案例学习。
五、为什么要有 Held-out Test
Visible Tests
↓
Proxy Signal
Held-out Tests
↓
Independent Signal
User Feedback
↓
Real-world Signal
如果 Agent 自己生成的测试就是最终优化的测试,很容易把优化变成“对着可见指标做高分”。Held-out Test 提供独立信号,用户反馈则进一步把评价拉回真实环境。
六、Evaluation 应该进入 Agent Loop
Goal ↓ Agent ↓ Action ↓ Environment ↓ Observation ↓ Evaluation ↓ Gap ↓ Next Action ↺
Evaluation 的作用不只是打分,而是回答:现在的结果,离真正目标还有多远?
七、这会直接影响 Agent Optimizer
错误 Proxy
↓
Optimizer
↓
更强的策略
↓
更高的 Proxy 分数
↓
更大的 Real Outcome 偏差
因此 Optimizer 的第一步不是“怎么优化”,而是先回答:这个成功信号是真的吗?
我们讨论过把 task_fingerprint、ground_truth_status、divergence_flag 和 cost 放在一起。它们分别帮助系统识别任务、判断证据强度、发现评价冲突,并记录得到结果付出的成本。
八、我现在更愿意这样理解 Agent Evaluation
传统软件 Function → Expected Output → PASS / FAIL Agent Goal → Agent → Action → Environment → Observed Outcome → Ground Truth
Agent Evaluation 不是给 Agent 一个分数,而是建立 Proxy Metric 与 Real Outcome 之间的对应关系。
如果两者长期一致,Proxy 才值得信任;如果出现偏差,就应该优先研究这个偏差,而不是继续提高 Proxy 分数。
最终 Agent 真正需要优化的不是“我通过了多少测试”,而是:我是否真的解决了用户要解决的问题?
一个正在用的薄实现是 llm-trace-reuse(站内:Projects):复用 preferred_path 之前,仍然要先问这条轨迹的成功信号是不是真的。优化器怎么用这些经验,见 Agent Optimizer。