CHAPTER 5 · EP 24

Agent Loop · 上下文管理 · 长期记忆 · Prompt Harness

第 5 章 · 第 24 讲 · 15:50

时长 15:50音色 云健 · 男声章节 5

同步字幕

章节导航(点击跳转)

0:00开场 · 用户只说了一句话,账单上却多了十美分1:32
1:32一 · 成本的大头藏在哪,以及越长越笨1:38
3:10二 · 压缩是取舍,不是全删或全留1:36
4:47三 · 用户的话是圣物,本地优先模型兜底1:31
6:19四 · 上下文不等于记忆,白板和笔记本1:21
7:40五 · 什么值得记,冲突了怎么办,注入怎么省2:17
9:57六 · 系统提示词分层,按需加载,别动前缀3:52
13:50可带走的判断清单1:59
解读全文

ep24 · 上下文管理 · 长期记忆 · Prompt Harness

  • 模块:M5 工程可行性
  • 课节:13 节
  • 配套音频:pm24-m5-播客.mp3(时长见集页)
  • 配套字幕:pm24-m5-播客.srt
  • 来源:xueai.miyang.cn(小山学堂 · 洛小山《学 AI 产品,从入门到精通》)
本集改编自小山学堂《学 AI 产品,从入门到精通》,音频为二次演绎配音版。音频讲主线与判断,文字稿给结构、清单和可复用的设计框架。

一、本集解决什么问题

做 AI 产品的人大多把注意力放在「模型聪不聪明、回答好不好」上,很少算过一次对话到底花多少钱。而成本的结构和直觉不一样:它不是按用户说了几句话算的,而是按底层跑了多少轮、每轮带了多少内容算的。用户只发一句话,底层可能跑了 10+ 轮循环、产生几十条 API 消息。

这一集把这笔账拆开,再给出三套可直接使用的设计框架:上下文怎么压、记忆怎么管、提示词怎么分层。

对产品经理而言,这三件事全是取舍,没有标准答案——哪些内容能删、什么值得记住、工具描述要不要全给,都要由产品拍板,而一旦定错,返工代价远高于一开始想清楚。

上下文管理不是性能优化,是基本功,没有可选的余地。放任不管的产品会变得又贵又笨,而用户只会觉得「这东西越来越不好用」,说不出为什么。

二、能力地图

层次关键概念它在回答什么你该追问的问题
成本层轮次、工具结果、上下文累积一次对话花多少钱成本大头在三类中的哪一类
压缩层可删 / 可压 / 不可动太长了怎么办这条内容属于哪一类
记忆层白板 vs 笔记本、守门员、冲突策略什么该跨会话留下记什么、怎么更新、怎么注入
提示词层身份 / 环境 / 工具 / 行为四层怎么组织系统提示词改一层会不会影响其他层
加载层按需加载、KV Cache 前缀稳定怎么省 Token、提准确率前缀里有没有会变的东西

读法两条。第一,自上而下是「越往下越省」:成本层暴露问题,压缩与记忆层解决当下,提示词与加载层决定长期可扩展性。第二,压缩层和记忆层是同一类思维:都是「判断什么有价值」,而不是「尽可能多留」或「尽可能多记」。


三、六个概念逐个拆开

1. 一条消息背后的真实成本

用户发一句话,底层可能跑 10+ 轮循环、几十条 API 消息。成本大头有三个来源:

来源说明
System Prompt每轮都要重复发送,轮次越多重复消耗越大
Tool Results工具返回文本通常很长(整个文件内容、搜索结果…)
上下文累积后一轮要带上前面所有消息,滚雪球式增长

核心结论:成本随轮次指数增长而非线性——每一轮都要把之前所有内容重新发送给模型。用户每说一句话,账单上可能多了 10 美分。

为什么对话越长越笨:

  • 越长越贵:每轮重发全部历史,费用像滚雪球
  • 越长越笨:注意力「两头热、中间冷」,中间信息最容易被忽略
  • 越长越危险:窗口有上限,满了之后最早的信息被直接丢弃

2. 压缩是一门取舍的艺术

全删不对,全留也不对。真正的答案是分三类:

类别内容处理
可以删旧的工具调用结果、已处理完的中间步骤、重复的确认消息直接删
可以压缩AI 的长篇回复、多轮讨论的结论、搜索 / 查询的详细结果摘要压缩
不能动用户的原始消息、System Prompt、关键的偏好设定永不触碰

压缩优先级(从先到后):工具输出 → AI 回复 → 用户消息(不可删)。

3. 用户的话是圣物

AI 的输出可以摘要、工具结果可以截断,但用户的原话删了就回不来——而且用户一定会发现:「我明明说了 xxx,你怎么忘了?」

用户输入的每一句都承载着需求、偏好和上下文。一旦删除,丢失的不只是信息,更是用户的信任。宁可删 AI 自己说的 1000 字,也别动用户说的 10 个字。

4. 本地压缩 vs LLM 压缩

维度本地压缩LLM 压缩
原理正则匹配、字符截断、模板替换让另一个 LLM 读一遍后写摘要
成本零(纯本地计算)要花钱(调用一次 API)
延迟<1ms1~5 秒
效果粗糙,可能丢关键信息精准,能保留核心语义
适合工具输出、JSON 结果、重复内容多轮对话摘要、复杂上下文浓缩

正确顺序:先免费后花钱(流水线先后环节,不是二选一):

  1. 本地截断 —— 删掉工具输出、截断超长 JSON
  2. 模板替换 —— 把重复结构替换为占位符
  3. 检查是否够 —— 还超窗口?进入下一步
  4. LLM 摘要 —— 花钱让 AI 精炼上下文

案例:用户让助手查北京到上海的高铁,一句话背后跑了 10 轮、用掉 4200 tokens。其中车次查询返回 15 条结果 800 字、座位查询返回 500 字 JSON、酒店搜索返回 600 字——而用户在意的只是最后那一句推荐。这 1900 字查完就再也不会看,是典型的「可以直接删」。

5. 上下文 ≠ 记忆

白板(上下文窗口)笔记本(长期记忆)
类比开会时的白板,会议结束就擦会议纪要,下次开会能翻出来
优势随时可用、读写极快跨会话保留、容量可扩展
代价容量有限、对话结束即消失需要写入决策、检索需额外步骤

常见误解:以为把上下文窗口开得足够大就等于有了记忆。不是的——窗口再大也是一次性的,对话结束就清空。真正的跨会话能力必须靠外部存储 + 检索,两套系统谁也替代不了谁。

记忆守门员:

值得记不值得记
用户的偏好(喜欢 / 不喜欢)语气词(嗯、好的、哈哈)
重要事实(生日、城市、职业)一次性问题(今天天气怎么样)
长期习惯(早起、吃素、用某设备)纯闲聊(无具体信息量)
明确表达的需求模式已经过时的临时信息
如果什么都记,记忆库很快变成垃圾场。守门员比记忆力更重要。

记忆冲突的四种策略:

策略适用
覆盖更新信息有明确的新旧关系时
合并扩展新旧信息互补时
标记冲突无法确定谁对时(两条都留,等用户确认)
跳过不存信息不够确定时

记忆注入:全量注入(全部塞进 prompt)简单但贵且噪声多;推荐按需检索,每次只注入最相关的 3~10 条。

记忆条数全量注入可行性
10 条还行
100 条又贵又吵
1,000 / 10,000 条完全不可行
记忆的价值在于每次能拿出最相关的几条,记了多少条并不重要。好的记忆系统像一个称职的秘书:不会把整个档案柜搬到会议室,只会提前把今天需要的三份文件放在桌上。

6. Prompt Harness:分层、按需、稳前缀

① System Prompt 四层分层

层回答什么变化频率
身份层我是谁?性格、角色、基本人设几乎不变
环境层现在什么情况?系统状态、用户上下文每次会话可能不同
工具层能用什么?可调用的工具和 API中等(随功能迭代增删)
行为层怎么行动?输出格式、决策规则、安全护栏最高频

「一坨文本」的混乱写法把身份、环境、工具、行为全搅在一起——改一处可能影响全部,出了问题只能靠猜。

分层的四个好处:改一层不影响其他层;多人协作不冲突(产品改行为、工程师加工具、运营调人设);A/B 测试更精准(只替换行为层,变量单一);排查问题更容易(按层检查)。

② 按需加载工具

Token 开销
全量加载(100 个工具)~34,000 tk
按需加载~2,800 tk

三步走:首轮只给名字列表 → 用到时再展开完整描述 → 用完就收回。

类比公司通讯录:不需要每个人的完整简历,只需要名字和职位。

③ Skill:可运营的 Prompt 模块

组成内容
触发条件什么情况下启用
允许的工具列表白名单控制风险
执行流程从头到尾的步骤,可带分支
输出格式要求格式、长度、风格

为什么不直接写进 System Prompt:System Prompt 是全局的,改了影响所有场景;Skill 是按需加载的,只在特定场景注入,不污染其他任务;且 Skill 是独立文件,可单独版本管理,谁改了什么一目了然。文件即配置,改了就生效。

④ 提示词与缓存的微妙关系

KV Cache 规则极其简单:前缀一模一样就命中,差一个字就全部重算。

做法结果
System Prompt 含「当前时间: 14:35:22」每秒指纹不同 → 永远 MISS → 每次从头算
时间放入 user message,System 保持固定前缀不变 → 持续 HIT

Skill 的注入方式也影响缓存:

  • 把 Skill 插进 System → 切换 Skill 时 System 变了 → 缓存失效
  • 把 Skill 作为独立消息追加在 System 之后 → System 永远不变 → 前缀缓存始终命中
不只是时间戳,所有动态注入到 System Prompt 的内容都是缓存杀手:Skill、用户 ID、Session 标记…任何会变的东西都不该出现在前缀里。

四、审查清单

设计或迭代一个 Agent / 长对话产品时,按顺序过这九条:

  1. 成本归因:能不能说清一次对话的成本大头在三类(System Prompt 重复 / 工具结果 / 上下文累积)中的哪一类?
  2. 轮次预算:典型任务跑几轮?有没有为失败重试预留成本?
  3. 压缩分类:上下文里的每条内容是否归入了「可删 / 可压 / 不可动」?
  4. 圣物保护:用户原话是否有机制保证永不被删?
  5. 压缩顺序:是否遵循「先本地后 LLM」?有没有跳过免费步骤直接花钱?
  6. 记忆守门员:有没有明确的「值得记 / 不值得记」标准?冲突策略选了哪种?
  7. 注入策略:是按需检索 3~10 条,还是全量塞入?记忆增长到 1000 条时方案还成立吗?
  8. 提示词分层:System Prompt 是否分成身份 / 环境 / 工具 / 行为四层?改一层是否影响其他层?
  9. 前缀稳定性:System Prompt 前缀里有没有会变的内容(时间、Skill、用户 ID)?

五、约束说明

以下约束来自本集原始素材,属于设计与承诺时的边界条件:

  1. 成本随轮次指数增长,不是线性。多一个工具调用、多一轮自动重试,账单上是乘一截而非加一点。
  2. 用户原话不可删。删除丢失的不只是信息,更是用户信任。优先级:工具输出 > AI 回复 > 用户消息。
  3. 压缩顺序不能反。本地压缩与 LLM 压缩是流水线先后环节,先用免费方法,压不下去再花钱。
  4. 上下文窗口再大也不等于记忆。窗口是一次性的,跨会话能力必须靠外部存储 + 检索。
  5. 守门员比记忆力重要。什么都记会让记忆库变成垃圾场。
  6. 全量注入不可扩展。按需检索不是优化项,是记忆增长后的唯一可行方案。
  7. KV Cache 规则是硬约束。前缀差一个字即全部重算;任何动态内容都不该出现在前缀里。
  8. Tool 全量加载代价高。100 个工具全量约 34,000 tk,按需约 2,800 tk。
  9. 本集不含题库内容。本集无题库页,全部素材均为正文讲解。

六、实践提示

提示一 · 先做一次「单对话成本归因」

选一个最典型的用户任务,把底层跑了多少轮、每轮的输入输出 Token、工具返回各占多少,全部打点记录下来。这个动作一般会在第一次就带来惊喜——多数团队会发现成本大头不是用户输入,而是某一次返回了整页搜索结果的工具调用。归因做完,优化方向通常是明确的:给那个工具加返回长度限制,或者处理完立刻把原始结果从上下文里删掉。

提示二 · 给压缩策略写一张「三类清单」

不要笼统地说「上下文太长了就压缩」,而是把上下文里出现的每一类内容列成一张表,逐行标注可删、可压、不可动,并写明处理方式。这张表是压缩策略的核心交付物,也是和工程对齐的依据。写的过程中你往往会发现争议点——比如「AI 上一轮的思考过程到底能不能删」,这类争议必须在设计阶段解决,不能等线上出问题再补。

提示三 · 给记忆系统先定「不记什么」

设计记忆功能时,先写「不值得记」的清单,再写「值得记」的清单。顺序很重要:不值得记的清单能立刻挡掉绝大部分噪声(语气词、闲聊、一次性问题),而剩下的自然就是有价值的。同时把四种冲突策略的适用条件写清楚,尤其是「标记冲突」——当新旧信息矛盾且无法判断谁对时,两条都留着等用户确认,远比自作主张覆盖要安全。

提示四 · 把 System Prompt 按四层拆开,并锁死前缀

把现有的 System Prompt 拆成身份、环境、工具、行为四个独立部分,各自管理。拆分之后立刻做一次检查:身份层内容是否是长期不变的?会变的内容(时间、当前技能、用户 ID)是否都被移到了 System Prompt 之后?这一步做完,缓存命中率通常会有立竿见影的变化,而且后续迭代时改行为层不用再担心影响全局。


七、可带走的判断清单

  1. 重新理解一次对话的成本。它按底层跑了多少轮、每轮带了多少内容算,不按用户说了几句话。成本随轮次指数增长。
  2. 把上下文压缩当成基本功。判断框架是三类:工具输出可删,模型回复和搜索结果可压成摘要,用户原话、系统提示词和关键偏好绝不能动。
  3. 压缩顺序是先免费后花钱。先本地截断、删除、模板替换,压不下去再调用模型做摘要。二者是流水线先后环节,不是二选一。
  4. 上下文和记忆是两套系统。白板负责当场记住,笔记本负责长远记住。记忆要有守门员,冲突有覆盖、合并、标记、跳过四种策略,注入时按需检索三到十条。
  5. 系统提示词必须分层,且前缀必须稳定。身份、环境、工具、行为四层各管各的;工具描述按需加载;所有会变的内容放在系统提示词之后,让前缀永远不变。

这五条的共同点:它们都在回答同一个问题——怎么让一次对话既便宜又可靠。答案不在模型里,在你对上下文、记忆和提示词的设计里。


八、音频与文字稿说明

  • 音频为单人口播,面向非工程背景听众,全程不直接口播英文缩写,数字以中文读法呈现。
  • 文字稿按「能力地图—概念拆解—审查清单—约束说明—实践提示」组织,可直接作为团队内部培训材料使用。
  • 音频的八段结构与本文第三、四节对应,建议先听音频建立主线,再回到本文查清单。

来源:xueai.miyang.cn(小山学堂 · 洛小山《学 AI 产品,从入门到精通》)