05.08概念更新于 2026年9月17日

Knowledge、Memory 与 Context

三个最常被混淆的概念。

05.08 · 课时讲解

Knowledge、Memory 与 Context

知识是共享的,记忆是个人或任务的,上下文是模型此刻看到的工作台。

1 / 12

一句话理解:Knowledge 是组织审核过、对所有人成立的共享信息;Memory 是 Agent 从交互中学到、针对某个用户或任务的信息;Context 是模型此刻看到的工作台——前两者只有被放进 Context,才会影响这一次的判断。

在需求评审会上,经常能听到这样的对话:“让 Agent 记住我们的退款政策”“把用户偏好放进知识库”“上下文里要有客户的历史记录”。三个词被随意混用,结果是方案里职责不清:规则被存进了某个用户的记忆,所以换个用户就不知道;用户随口说的一句话被写进了共享知识库,所有人都受影响;业务系统里的订单状态被当成“记忆”存下来,第二天就过期了。

这一课把三个概念,以及经常与它们混淆的“业务状态”,彻底分开。

三个概念,外加第四个

一张对照表

维度 Knowledge(知识) Memory(记忆) Context(上下文)
是什么 组织的规则、流程、手册、FAQ、案例 从交互中学到的偏好、事实、经验、进度 本次调用模型能看到的全部 Token
作用范围 所有用户(受权限约束) 某个用户、某个团队或某个任务 仅本次调用
谁来写 业务专家、文档负责人 Agent 自动写入,或用户要求写入 Harness 每次组装
写入前是否审核 通常经过审核发布 通常没有审核 不涉及
生命周期 随文档版本管理 需要主动设计过期与遗忘 调用结束即消失
可信度 高(权威来源) 中(可能记错、过期) 取决于放进去的内容
典型存储 文档库 + 检索索引 记忆文件、数据库、向量库 无,每次重新构建
出错的后果 所有人得到错误答案 某个用户的体验被带偏 这一次判断出错

一个简单的记法:Knowledge 是公司的制度手册,Memory 是你的工作笔记本,Context 是你此刻摊在桌上的材料。 制度手册和笔记本里的内容,只有被你翻到、摆上桌面,才会影响你现在的判断。

第四个概念:业务状态

还有一类信息既不是知识,也不是记忆,却最容易被错放:业务状态,即业务系统中实时变化的数据。

信息 类别 应该放在哪里
“签收超过 7 天的退款申请需人工审核” Knowledge 知识库,由业务部门维护
“客户 A 偏好邮件而不是电话通知” Memory(用户 / 客户级) 记忆存储,可查看、可修改
“这位客服专员习惯先看结论再看明细” Memory(用户级) 用户记忆或用户画像
“本次排查已排除支付通道故障” Memory(任务级)/ 任务状态 任务状态或工作笔记,任务结束后归档
“订单 ORD-1024 当前状态为已完成” 业务状态 订单系统,通过工具实时查询
“客户 A 当前欠款 3.2 万元” 业务状态 财务系统,通过工具实时查询
“上次处理类似问题时,先查发票状态最快定位” Memory(经验)→ 可能升级为 Knowledge 先作为经验记忆,验证后沉淀进 SOP 或 Skill

业务状态的原则只有一条:永远以业务系统为准,每次使用时实时查询。 把它写进记忆或知识库,等于制造了一份注定会过期的副本。状态的完整分类见 状态的五种类型。

按“谁共享”和“变化多快”两个维度,四类信息各有各的位置:

四类信息的定位:按作用范围与变化速度区分 Knowledge、Memory、业务状态与任务状态 共享 个人/任务 变化慢(周、月) 变化快(实时、每步) Knowledge 规则 · 流程 · 手册 · FAQ 放知识库,审核后发布 业务状态 订单状态 · 欠款金额 留在业务系统,每次实时查询 Memory 偏好 · 纠正 · 经验 记忆存储,用户可查看、可修改 任务状态 已排查项 · 当前假设 · 进度 任务状态或笔记,结束后归档
图 1 · 放在哪里取决于两件事:谁共享、变化多快

它们如何流动

三者之间的流动关系如下:

Knowledge、Memory 与业务系统如何进入 Context,以及记忆升级为知识的路径 Context · 本次调用 指令 · 工具 · 对话 · 结果 Knowledge 知识库 Memory 记忆存储 业务系统 订单 · 支付 · 发票 检索 / 按需读取 召回相关记忆 工具实时查询 Agent 写入 · 用户确认 多次验证的经验,经人审核后沉淀为知识
图 2 · 三条进入 Context 的路径,以及一条必须有人审核的升级路径

几条关键路径:

  • 进入 Context:知识通过检索进入,记忆通过召回进入,业务状态通过工具进入。三者进入 Context 的方式和时机,都属于 上下文五问 要设计的内容。
  • 写入 Memory:Agent 在交互中发现值得记住的信息,写入记忆;敏感或影响较大的记忆,应该让用户确认。
  • 从 Memory 升级为 Knowledge:某条经验被多个用户、多次任务验证有效后,由负责人审核,沉淀为知识库文档或 Skill。这一步必须有人审核,不能让 Agent 自动把个人记忆发布为共享知识。

一个可参考的实现:Claude Code

Claude Code 的设计很清楚地体现了这种区分。根据其官方文档:

  • 项目说明文件(CLAUDE.md):由人编写,包含构建命令、代码规范、项目约定等“每次都应遵守”的内容,可以随代码仓库与团队共享。它更接近 Knowledge / 指令。
  • 自动记忆(auto memory):由 Claude 在工作中自己记录,包括用户的偏好、用户给出的纠正、无法从代码中推导出的项目背景等,存放在本机、按项目隔离,用户可以随时查看、编辑、删除。它就是 Memory。
  • 两者都会在会话开始时加载进上下文;自动记忆只加载索引文件的开头部分,具体的记忆条目在需要时再读取。这就是 Context 层面的管理。

文档还特别提到,这两类内容对模型来说是“上下文”,而不是强制执行的配置;需要确保某个动作一定被阻止时,应该使用 Hooks 等确定性机制。这一点同样适用于业务 Agent:重要规则不能只靠知识或记忆被“看到”,还要靠程序来保证。

混淆带来的典型问题

错误做法 后果 正确做法
把业务规则存在某个用户的记忆里 换一个用户,Agent 就不知道这条规则 规则进知识库或指令
把用户随口说的话自动写进共享知识库 一个人的误解变成所有人的“事实” 先作为个人记忆,经审核后再沉淀
把订单状态、欠款金额写进记忆 第二天记忆已过期,Agent 却很自信 每次通过工具实时查询
把知识库当成记忆,不设版本和负责人 知识库越来越乱,没人敢删 知识按文档管理,记忆按用户与过期策略管理
以为“存进去了”就等于“用上了” 知识和记忆没被检索或召回,模型根本没看到 检查 Trace,确认它们真的进入了 Context

最后一条最常见。用户抱怨“我跟它说过好几次了,它还是不记得”,排查时往往发现:记忆确实写入了,但召回逻辑没有把它放进这一次的上下文。

常见误区

  • “Memory 就是一个更小的知识库。” 两者的写入者、审核流程、作用范围和生命周期都不同,混在一起管理会同时破坏两者。
  • “上下文窗口很大,把知识和记忆全放进去就行。” Context 是每次调用都要重新组装的工作台,放得越多,腐化越严重,成本越高。
  • “Agent 记住的越多越好。” 记忆需要纠错、过期与遗忘机制,也需要用户可见可控。长期记忆的设计见 长期记忆。

产品经理检查清单

  • 方案中每一类信息,是 Knowledge、Memory、业务状态还是任务状态?是否都标注清楚了?
  • 知识库的负责人是谁?记忆的写入规则是什么?
  • 哪些记忆需要用户确认后才能写入?用户能否查看、修改、删除?
  • 是否存在把业务状态存为记忆或知识的情况?
  • 个人经验沉淀为共享知识的流程是什么?谁审核?
  • 出现“它不记得”时,能否在 Trace 中看到记忆是否被召回进了上下文?

练习

为订单售后诊断 Agent 分类以下 12 条信息,标注类别(Knowledge / 用户级 Memory / 任务级 Memory / 业务状态)和存放位置,并说明进入上下文的方式:

  1. 退款审核的处理时限为 5 个工作日
  2. 订单 ORD-1024 的签收时间
  3. 客服专员小王希望报告里先列金额最大的异常
  4. 本次排查已确认发票状态正常
  5. 华东区企业版客户的退款自 9 月 10 日起统一由售后二组审核
  6. 客户 B 上次投诉是因为通知太晚
  7. 错误码 E-4031 的含义
  8. 客户 B 当前的待退款金额
  9. 上个月处理同类问题时,先查发票状态最快
  10. 客户 B 合同约定的退款上限
  11. 今天 10 点已为 ORD-1031 创建人工退款工单
  12. 小王所属区域为华东

完成后,挑出你认为最容易被放错位置的两条,写出放错后会发生什么。

延伸阅读

下一步

知识库搭好了,怎么知道它答得好不好?本模块最后一课「RAG 效果评估」讲如何用召回率、准确率、忠实度与答案相关性,把“答不准”拆成可以改进的具体问题。

试试:上下文、MCP、沙箱、Prompt 注入、外链