上下文管理解决了"当前对话中模型能看到什么"的问题,验证闭环解决了"模型的输出是否可信"的问题。但还有一个更隐蔽的问题:每次对话结束后,对话中产生的有价值信息去哪里了?
大部分系统的答案是:消失了。下一次对话,模型从零开始——不知道上次发现了什么 bug、不知道用户之前设置过什么偏好、不知道哪种 Prompt 写法效果更好。这不是 Agent 不够聪明,这是系统没有知识沉淀机制。
不是所有对话内容都值得保存。知识沉淀的第一课是区分"信息"和"知识":
| 信息(一次性) | 知识(可复用) |
|---|---|
| 用户今天的查询 | 用户对某种问题的偏好处理方式 |
| 某次工具调用的返回值 | 某个 API 的常见错误模式及解决方案 |
| 本次对话的日志 | 某种场景下最优的 Prompt 模板 |
| 用户的一次抱怨 | 系统在某个边界条件下的行为缺陷 |
知识沉淀的目标是将右侧的"知识"提取出来,让它们在未来的对话中可以主动被使用。
知识沉淀不是一次性的工程活动,而是需要嵌入到 Agent 的日常运行中的持续流程:
知识沉淀的五步流程:
Step 1: 捕获(Capture)
在对话中识别出"值得保存"的信息
→ 触发条件:解决问题后、发现新坑后、做出决策后
→ 执行者:Agent 主动识别 + 用户标记
Step 2: 结构化(Structure)
将原始信息转化为标准格式
→ 问题描述 / 解决方案 / 适用场景 / 注意事项
→ 格式:结构化的文本或 JSON
Step 3: 存储(Store)
写入持久化存储
→ 短期:当前会话的记忆层
→ 长期:知识库、技能文件、配置文件
→ 需要索引以便后续检索
Step 4: 索引(Index)
建立可检索的索引
→ 关键词标签、场景标签、向量 Embedding
→ 确保在相似场景下可以被自动检索到
Step 5: 复用(Reuse)
在未来的对话中主动加载
→ 场景匹配时自动注入上下文
→ 用户明确查询时返回 知识沉淀在工程实现上有两种模式,适用于不同场景:
Agent 在对话过程中自动识别并沉淀知识:
// 自动知识沉淀的触发逻辑
function checkKnowledgeOpportunity(conversation):
// 1. 问题解决后:用户说"解决了"、"搞定了"、"可以了"
if userExpressedResolution(conversation):
extract = callLLM("从这段对话中提取出解决问题的步骤")
saveAsPattern(extract)
// 2. 发现错误后:工具调用返回异常
if toolCallFailed(conversation):
error = conversation.lastToolError
if isNewError(error):
saveAsPitfall(error, conversation.solution)
// 3. 用户明确要求后
if userSaid("记住这个", "记下来", "以后注意"):
saveToMemory(conversation.lastExchange) 用户或开发者在对话结束后主动沉淀知识。适用场景:
两种模式不是二选一,而是互补。自动沉淀负责捕获日常对话中的"小知识"(一个参数、一个偏好、一个注意事项),手动沉淀负责提炼周期性的"大知识"(一个工作流、一个架构决策、一个最佳实践)。
知识沉淀最大的挑战不是"怎么存",而是"怎么维护"。一个不维护的知识库会迅速退化:
知识库健康度的三个指标:
覆盖率:知识库覆盖了多少常见的用户问题?
→ 不足 → 需要更多沉淀
准确率:知识库给出的建议有多准确?
→ 不足 → 需要清理过时条目
检索率:知识库中的条目被实际用到了多少?
→ 不足 → 需要更好的索引或剔除噪音 知识沉淀的终极目标不是"建一个文档库",而是让沉淀的知识自动影响系统的行为。
当知识条目的数量和质量达到一定阈值后,系统可以开始:
这就是 Harness 的"飞轮效应"——使用得越多,沉淀的知识越多;知识越多,系统越智能;系统越智能,产生更多可沉淀的知识。
知识沉淀的四要素:
1. 识别——区分"信息"和"知识"
× 用户今天的查询 → 一次性信息
✓ 用户偏好的处理方式 → 可复用知识
2. 提取——五步流程
捕获 → 结构化 → 存储 → 索引 → 复用
3. 维护——防止知识库退化
审计 × 度量 × 迭代 × 门槛
4. 进化——从文档到自动化
被动查询 → 主动提示 → 自动规避
知识沉淀不是一次性的文档工程,
而是 Agent 持续自我进化的燃料。
每一次对话都在为下一次对话积累势能。 上下文管理让模型"看得到",验证闭环让模型"靠得住",知识沉淀让系统"长记性"。三根缰绳合在一起,才构成 Harness 的完整图景——不是让模型更聪明,而是让每一次交互都成为系统能力的一部分,而不是消耗在对话结束的那一刻。
💬 评论