日志、追踪、审计、回放、失败恢复的全套体系(工程级)
智能体一旦进入生产环境,你很快会遇到这些问题:
- 为什么智能体突然输出风格变了?
- 为什么某个工具调用失败?
- 为什么昨天还能用、今天就报错?
- 为什么模型一直重复某段话?
- 用户说有 bug,但你无法复现?
- 明明给了知识库,却没检索到?
智能体系统就像一台“黑箱”。如果你没有建立:
- 日志(Logs)
- 追踪(Tracing)
- 审计(Audit)
- 回放(Replay)
- 错误恢复(Recovery)
- 自我保护(Self-Guard)
智能体将在生产环境里失控,今天我们做一件重要的事:
把 智能体 系统从“黑箱”变成“透明可控的可观测系统”。
⭐ Part 1:为什么智能体必须要“可观测”?
以下是 AI 系统特有的复杂度:
-
模型不可预测(非确定性)
同样 Prompt → 两次结果可能完全不同。
-
多工具交互带来链式失败
一个工具失败 → 后续全崩。
-
RAG 检索链不透明
智能体究竟检索了哪些文档? 为什么没召回?Embedding 质量如何?
-
多角色/多 Agent 调用链复杂
Workflow → Planner → Router → Tool → Validate → Re-run
问题可能出在任何一环。
-
错误不可复现
用户任务 1 小时前失败 → 你已经无法获取当时的上下文。
智能体不像传统软件:
Bug 不是“修掉的”,是“持续收敛 + 观测 + 限制”的。
⭐ Part 2:日志(Logging)
👉 记录“发生了什么”
智能体日志必须比传统软件更细:
① Prompt 日志(Prompt Trace)
记录所有 Prompt:
- 系统 Prompt
- 用户输入
- 中间思考(如果可访问)
- 注入的知识库内容
- Memory 注入内容
用于复现为什么模型输出错误。
② 工具调用日志(Tool Logs)
记录:
- 调用时间
- 输入参数
- 输出结果
- 成功 / 异常
- 工具响应时间
- 工具调用链
示例:
[TOOL_CALL] draft.create
Input: {title: "AI日报"}
Output: {id: 23381}
Status: success
③ RAG 检索日志(RAG Logs)
智能体最容易出问题的地方。
记录:
- 召回了哪些 chunk
- 相似度
- 是否使用了召回内容
- 是否命中知识库
示例:
RAG Hit: 3 docs, similarity: 0.82 / 0.78 / 0.73
Missing: "API 认证流程"
方便分析检索不准 / embedding 质量低问题。
④ 记忆注入日志(Memory Logs)
记录:
- 注入了什么长期记忆?
- 哪些用户偏好被读取?
- 哪些过期了?
示例:
[Memory] User prefers "B Style" writing
⑤ 输出质量日志(LLM Output Monitor)
记录模型输出是否异常:
- 是否出现重复句子
- 是否幻觉
- JSON 格式是否非法
- 语法错误
- 是否包含敏感内容
⭐ Part 3:追踪(Tracing)
👉 记录“过程是怎样的”
Tracing = 把复杂任务拆成时间轴,可视化执行链。
完整智能体的 Tracing 需要包含:
① Planner Trace(规划链路)
记录:
- 如何拆解任务
- 生成了哪些步骤
- 为什么选择这个策略
② Router Trace(工具路由链路)
记录:
- 为什么选择了工具
- 工具优先级参考了什么
- 是否 fallback 到别的工具
③ Workflow Trace(执行链路)
按时间显示:
00:00 → 用户输入
00:01 → 生成任务意图
00:02 → RAG 检索
00:04 → 工具 draft.create
00:05 → 工具 draft.submit
00:06 → 生成最终输出
这对调试非常关键。
⭐ Part 4:审计(Audit)
👉 记录“智能体做过什么决定”
这一层是企业级 智能体 必备。
审计内容包括:
- 每个版本的 Prompt
- 每次行为决策
- 每次工具调用
- 每次数据写入
- 是否越权调用
- 是否调用了敏感接口
审计示例:
[Audit] User A triggered publish API
[Check] Permission matched: editor
[Action] Publish Allowed
如果没有审计,智能体会成为 不可控风险源。
⭐ Part 5:回放(Replay Engine)
👉 复现问题最重要的能力
当用户说:
“昨天生成日报时崩了,你帮我看下?”
如果没有 Replay,你已经没法 debug。
智能体必须支持:
✔ 完整复现:
- 当时的 Prompt
- 当时的 RAG 召回
- 当时的 Memory 注入
- 当时的输入参数
✔ 一键重跑
- 用当前模型
- 用当时模型
- 用新策略
✔ 差异对比
这是智能体系统能否持续优化的关键能力。
⭐ Part 6:失败恢复机制(Recovery)
智能体一定会失败。
关键是失败后怎么“安全恢复”。
① Step-level Retry
每一个工具调用可以有自动重试。
② Knowledge-based Recovery
当失败后,自动查知识库:
Retry failed.
Searching knowledge: "common_api_failures"
Found: "Missing token".
Auto fix: Refresh token and retry.
③ Policy-based Recovery
根据失败类型执行预设策略:
- JSON 格式错 → 自动重生
- Hallucination → 重写
- 工具参数缺失 → 自动补充
- 计划冲突 → 重规划
④ 最终 fallback
不能继续 → 输出对用户友好的错误:
系统当前遇到异常,我已记录错误并发送给管理员。
你可以尝试重新运行任务。
智能体必须不能“死机”。
⭐ Part 7:自我保护(Self-Guard)
保护两类:
✔ 1. 保护系统不被智能体破坏
- 限制调用频率
- 限制调用哪些 API
- 限制写入敏感库
- 限制格式内容
- 防循环调用
- 防超长输出
✔ 2. 保护智能体自己
- 防 prompt 注入
- 防无限递归
- 防粗暴知识覆盖
- 防伪造工具返回值
Self-Guard 属于安全层,是企业级必须要做的。
⭐ Part 8:可观测智能体框架:你可以直接照着搭
最终,你的智能体系统应该包含 6 个模块:
1. Logging(记录所有输入/输出/Prompt/工具)
2. Tracing(完整调用链时间轴)
3. RAG & Memory Monitor(检索 + 记忆注入)
4. Audit Trail(权限 / 行为记录)
5. Replay Engine(复现与重跑)
6. Recovery(自愈 + 自动修复)
只要完成这 6 个能力:
你的智能体就从一个黑箱 → 成为“可控、稳定、可持续演化”的系统。
⭐ Part 9:可直接使用的智能体可观测性 Checklist
- ✔ 必须记录 Prompt(全链路)
- ✔ 必须收集工具调用日志
- ✔ 必须记录 RAG 召回
- ✔ 必须记录 Memory 注入
- ✔ 必须有追踪链路
- ✔ 必须有权限审计
- ✔ 必须支持一键重跑
- ✔ 必须支持策略 fallback
- ✔ 必须支持自动恢复
- ✔ 必须有自我保护机制
这套体系,是企业级智能体落地的关键指标。