# 学习笔记:Agent 项目到底应该测什么?

今天梳理自己的 Agent / RAG 项目时,发现一个很重要的点:  
Agent 项目不能只看“它能不能回答”,更要看“它为什么这样做、每一步是否可控、失败时有没有兜底”。

传统后端测试更多关注接口、函数、数据库读写是否正确;但 Agent 项目多了 LLM 决策、工具调用、长期记忆、检索证据和多轮状态,所以测试目标也会变化。

## 1. 工具调用是否选对

Agent 不只是生成文本,而是会在多个工具中做选择。  
例如搜索资源、打开节点、查询上下文、查看 trace、提交记忆等。

要测的是:  
当用户提出一个任务时,Agent 是否选择了正确工具,而不是乱调用或漏调用。

## 2. 工具参数是否正确

即使工具选对了,参数错了也会导致任务失败。

例如:

- `resource_id` 是否传对
- `query` 是否保留了用户真正意图
- 排除条件是否被错误删除
- 用户身份、session id 是否正确传递

这类问题很隐蔽,但会直接影响最终结果。

## 3. 工具失败后是否重试或 fallback

真实系统里,工具调用可能超时、失败、返回空结果。  
Agent 不能一失败就崩,也不能假装成功。

需要测试:

- 是否有重试机制
- 是否有 fallback 路径
- 是否能告诉用户证据不足或工具不可用
- 是否避免在失败后编造答案

## 4. 多轮状态是否正确延续

Agent 往往不是单轮问答,而是连续任务。  
所以要测试 session summary、当前目标、历史 turn 是否能正确延续。

关键不是“记住所有内容”,而是保留和当前目标相关的信息,同时丢掉闲聊和无关内容。

## 5. 长期记忆是否该写才写,不该写不写

长期记忆很重要,但也很危险。

需要测试:

- 用户明确偏好是否被写入
- 一次性的临时表达是否不被写入
- 成功资源路径是否能沉淀为 task experience
- 用户画像和任务经验是否分开
- 是否避免记忆污染

好的记忆系统不是“什么都记”,而是“有选择地记”。

## 6. 检索是否命中正确证据

对于 RAG / Agent Context 项目,检索质量是基础。

要测试:

- 是否命中正确章节
- 是否避开 metadata、无关段落
- 是否支持当前资源范围限制
- 是否能理解“不要讲 X”这类排除意图
- 长文总结是否覆盖多个关键章节,而不是只看开头

## 7. 证据不足是否拒答

Agent 最容易出问题的地方不是答不出来,而是没证据还硬答。

所以要专门设计拒答用例:

- 当前文档没有相关信息时,是否拒答
- 检索结果为空时,是否说明证据不足
- 是否避免用相邻但错误的知识强行回答

拒答不是能力弱,而是可靠性的体现。

## 8. Trace 是否能解释每一步

Agent 系统必须可观察。  
只给最终答案不够,还要知道它用了什么上下文、为什么选这些证据、每一步是否可回查。

一个好的 trace 至少应该包含:

- 调用了哪些工具
- 命中了哪些资源
- 每个资源的分数和命中词
- 节点路径和 drill-down trail
- 记忆命中情况
- 压缩前后的上下文大小
- 失败和 fallback 记录

Trace 的价值是让系统从“黑盒生成”变成“可调试工程”。

## 9. 成本、Token、延迟是否受控

Agent 项目很容易因为多轮调用和长上下文导致成本失控。

需要关注:

- 单次任务调用了几次模型
- prompt 和 context 有多长
- 每轮 token 消耗
- 工具调用耗时
- 总响应延迟
- 是否有最大步数和上下文预算

一个 Agent 不只是能完成任务,还要能稳定、可控地完成任务。

## 10. 端到端任务成功率

最后还是要回到任务本身:用户的问题有没有被解决。

端到端成功率不是单元测试,而是用一批真实任务评估系统整体表现。  
例如:

- 是否完成了用户目标
- 是否使用了正确证据
- 是否没有违反约束
- 是否在失败时给出合理解释
- 多轮任务是否保持一致

这也是 eval harness 的意义:用固定任务集持续验证系统行为,而不是只看一次 demo。

## 总结

今天最大的收获是:Agent 项目的测试重点,不只是代码对不对,而是行为是否可靠。

可以把 Agent 测试分成三层:

1. **工具层**:工具是否选对、参数是否正确、失败是否兜底。
2. **状态层**:多轮状态、长期记忆、上下文压缩是否正确。
3. **任务层**:检索证据、拒答策略、trace、成本和端到端成功率是否可控。

对我自己的 KnowledgeContextEngine 来说,当前已经覆盖了 RAG 检索、长期记忆、拒答、trace 和 eval harness。  
后续如果要从 Context Engine 进一步走向完整 Agent,还需要补上 Tool Registry、LLM Function Calling、Plan-Act-Reflect 和工具调用 trace。

一句话总结:  
**Agent 工程的核心不是让模型“看起来聪明”,而是让它的每一步都可验证、可解释、可回滚、可优化。**

对了,有人帮我看一下简历吗

更多推荐