Day 10|打造“可观测 + 可监控”的智能体系统

124 阅读5分钟

日志、追踪、审计、回放、失败恢复的全套体系(工程级)

智能体一旦进入生产环境,你很快会遇到这些问题:

  • 为什么智能体突然输出风格变了?
  • 为什么某个工具调用失败?
  • 为什么昨天还能用、今天就报错?
  • 为什么模型一直重复某段话?
  • 用户说有 bug,但你无法复现?
  • 明明给了知识库,却没检索到?

智能体系统就像一台“黑箱”。如果你没有建立:

  • 日志(Logs)
  • 追踪(Tracing)
  • 审计(Audit)
  • 回放(Replay)
  • 错误恢复(Recovery)
  • 自我保护(Self-Guard)

智能体将在生产环境里失控,今天我们做一件重要的事:

智能体 系统从“黑箱”变成“透明可控的可观测系统”。

⭐ Part 1:为什么智能体必须要“可观测”?

以下是 AI 系统特有的复杂度:

  1. 模型不可预测(非确定性)

同样 Prompt → 两次结果可能完全不同。

  1. 多工具交互带来链式失败

一个工具失败 → 后续全崩。

  1. RAG 检索链不透明

智能体究竟检索了哪些文档? 为什么没召回?Embedding 质量如何?

  1. 多角色/多 Agent 调用链复杂

Workflow → Planner → Router → Tool → Validate → Re-run

问题可能出在任何一环。

  1. 错误不可复现

用户任务 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
  • ✔ 必须支持自动恢复
  • ✔ 必须有自我保护机制

这套体系,是企业级智能体落地的关键指标。