Report

上下文管理(LLM/Agent):从“全量回灌”到“结构化记忆+按需检索”

围绕 OpenClaw + qmd/“省 Token”线索的可复现落地方案

LLM上下文管理:结构化记忆+检索降Token并核验存储

2026-02-03 13:59
LLM上下文管理Token优化长期记忆RAGYAML/JSON

TL;DR

  • 定义:这里的“上下文管理”指 LLM/Agent 的对话上下文、记忆与检索(非编程语言的上下文管理器)。
  • 省 Token 的主杠杆:把“长对话历史、花哨 Markdown 格式、工具原始日志”从提示词里移出,改为“结构化状态摘要 + 按需检索证据”。
  • “YAML 比 Markdown 省 75%”“省 1 亿 Token”更像个案/营销口径;必须用同一 tokenizer、同一任务集做 A/B 才能复现与评估。
  • “永久记忆”必然落在文件/数据库/向量库/云端之一;先查清存哪里、是否上传、如何删除,再谈长期记忆。

Key Insights

  • Token 成本常见来源:历史消息全量回灌、系统提示词重复、Markdown 标题/表格/代码块等装饰性字符、以及工具调用的大段原始输出。
  • - 对策:只让模型看到“当前任务必需的信息”,其余内容外置并通过检索引用。

  • 结构化上下文(YAML/JSON)通常更“可压缩”:固定字段 + 短 key + 少自然语言,模型也更容易稳定解析。
  • - 注意:YAML 也会因缩进、长字段名膨胀;要用真实内容测 token,不要只看体感。

  • 长期记忆的核心不是“记得更多”,而是“检索得准、可纠错、可淘汰”。向量检索解决相关性,时间衰减/命中率与白名单字段解决噪声。
  • 任何优化都需要评测闭环:至少准备 20–50 条代表性任务,比较正确率/幻觉率/延迟/成本,避免“省 token 但更不准”。

Playbook

  • 先做基线与可观测性:
  • - 明确目标模型与窗口(8k/32k/128k 等),制定每轮输入/输出 token 预算。 - 记录 system、memory、retrieved_docs、history、tool_outputs 各部分 token;使用 tiktoken 或对应模型 tokenizer 统一口径计数。

  • 设计“分层记忆”,替代“全量对话”:
  • - Working Memory:每轮更新的结构化状态(目标、约束、决策、待确认问题),控制在 10–30 行。 - Long-term Memory:稳定事实卡片(偏好、项目背景、账号信息等)+ 向量索引;支持版本、撤销与删除。 - 如果你在用 Obsidian:建议把事实卡片做成独立笔记(YAML front matter 存字段,正文存原文),检索时只取字段+必要片段。

  • 把提示词改成 schema(可直接复制起步):

context:
  user_profile: <可选:职业/偏好>
  goal: <本轮目标>
  constraints: ['必须...', '禁止...']
  decisions:
    - id: D1
      text: <已确认结论>
      date: '2026-02-03'
  open_questions:
    - id: Q1
      text: <待确认问题>
retrieval:
  query: <本轮检索查询>
  top_k: 5
output_requirements:
  format: json
  • 核验“永久记忆”到底存哪(以 OpenClaw/clawdbot 一类项目为例):
  • - 在项目目录与运行日志里搜索关键词:memory、persist、sqlite、db、chroma、qdrant、vector、index;检查 .env/config.yaml/启动参数。 - 若用 Docker:检查 volume 挂载与容器内数据目录,验证停容器/重启后数据是否仍在。 - 增加“查看当前记忆/清空记忆/导出记忆”的显式指令与权限开关,避免不透明导致误存与信任问题。

Diagrams

Decision Map ↑ Control / Consistency Speed / Convenience → A 沿着“OpenClaw + q… 2 先确认 OpenClaw、qm… 3 实现要点:对话只回灌一份 me… B 主流 RAG 组件化(Lang…
Options · 速度 vs 可控性 的决策图(基于 Options 文本自动定位)
Execution Steps 1 先做基线与可观测性 2 明确目标模型与窗口… 3 记录 system… 4 设计“分层记忆”,… 5 Working M… 6 Long-term… 7 如果你在用 Obs… 8 把提示词改成 sc…
Playbook · 执行步骤时间线(基于 Playbook 文本自动提取)

Options

  • 方案 A:沿着“OpenClaw + qmd”路线做轻量上下文层
  • - 先确认 OpenClaw、qmd、PageIndex 的准确含义(repo/版本/协议/是否与 Quarto .qmd 或其他格式相关);未核验前不要对外承诺节省比例。 - 实现要点:对话只回灌一份 memory.yaml/json + 少量检索片段;历史全文落盘但不进提示词。

  • 方案 B:主流 RAG 组件化(LangChain/LlamaIndex + 向量库)
  • - 滚动摘要(summary memory)+ 混合检索(BM25+向量)是最常见、可替换性强的组合;适合与你的 Obsidian/文档库对接。

  • 方案 C:使用“记忆优先”的 Agent 框架(如 Letta/MemGPT 思路)
  • - 适合长期陪伴、多任务并行;代价是更复杂的记忆治理、评测与隐私控制。

  • 分支(另一种定义):如果你指的是编程语言里的“上下文管理器”(例如 Python with
  • - 重点将转向资源生命周期(文件句柄/锁/事务)与异常安全;需要补充语言与使用场景后再单独调研。

Expert Views

  • 开源数据工程师(paraphrase):优先用 SQLite/纯文本做事实源与版本管理,向量库只做索引层;可备份、可回滚比“更智能的记忆”更重要。
  • LLM 应用架构师(paraphrase):把系统指令(安全边界)与用户记忆(事实/偏好/决策)彻底分离;记忆写入前要做去幻觉校验,避免把模型猜测当事实固化。
  • 数据隐私与合规顾问(paraphrase):长期记忆属于持续数据处理,需要告知与最小化收集;必须提供删除/导出与保留期设置;若会上传云端或训练用途要额外授权。
  • 产品经理(paraphrase):用户需要“可控与可解释”的记忆——展示记忆摘要、允许纠错与一键清空,才能把“永久记忆”从卖点变成信任资产。

Evidence & Confidence

  • “结构化摘要 + 按需检索”能显著减少输入 token(confidence: medium):是常见工程实践,但效果取决于检索质量与摘要策略,需本地评测确认。
  • “YAML/JSON 往往比花哨 Markdown 更省 token”(confidence: medium):在字段名短、去掉装饰性格式时通常成立;但若 YAML 冗长或包含大量解释性文本,优势会下降。
  • “省 75% / 省 1 亿 Token”(confidence: low):来自转述链接与个体实测描述,缺少可复现的基准(模型版本、样本、计数方法、对照组)。
  • “永久记忆一定有明确存储位置且可被检查/清理”(confidence: high):任何持久化都必然落在磁盘/数据库/云端之一,可通过代码与运行时文件系统验证。

Next Steps

  • 先把线索落地成“可核验信息”:打开小红书/微信链接,提取 OpenClaw、qmd、PageIndex、clawdbot 的准确 repo/产品页、配置项与宣称点(截图/摘录关键段落)。
  • 做一次最小 A/B:同一段项目背景分别用 Markdown 与 YAML/JSON 表达,用 tokenizer 计数输入 token,并记录模型在关键任务上的正确率差异。
  • 追踪“记忆永存”链路:运行一次带长期记忆的会话后,定位新增文件/DB/网络请求,验证重启后是否仍存在、是否会上传、如何一键清空。
  • 根据目标选架构:个人知识库优先“本地存储+可检索+可删除”;若要做产品,再补齐多用户隔离、权限、审计与合规说明。

Details (Optional)

Details

TL;DR

  • 定义:这里的“上下文管理”指 LLM/Agent 的对话上下文、记忆与检索(非编程语言的上下文管理器)。
  • 省 Token 的主杠杆:把“长对话历史、花哨 Markdown 格式、工具原始日志”从提示词里移出,改为“结构化状态摘要 + 按需检索证据”。
  • “YAML 比 Markdown 省 75%”“省 1 亿 Token”更像个案/营销口径;必须用同一 tokenizer、同一任务集做 A/B 才能复现与评估。
  • “永久记忆”必然落在文件/数据库/向量库/云端之一;先查清存哪里、是否上传、如何删除,再谈长期记忆。

Key Insights

  • Token 成本常见来源:历史消息全量回灌、系统提示词重复、Markdown 标题/表格/代码块等装饰性字符、以及工具调用的大段原始输出。
  • - 对策:只让模型看到“当前任务必需的信息”,其余内容外置并通过检索引用。

  • 结构化上下文(YAML/JSON)通常更“可压缩”:固定字段 + 短 key + 少自然语言,模型也更容易稳定解析。
  • - 注意:YAML 也会因缩进、长字段名膨胀;要用真实内容测 token,不要只看体感。

  • 长期记忆的核心不是“记得更多”,而是“检索得准、可纠错、可淘汰”。向量检索解决相关性,时间衰减/命中率与白名单字段解决噪声。
  • 任何优化都需要评测闭环:至少准备 20–50 条代表性任务,比较正确率/幻觉率/延迟/成本,避免“省 token 但更不准”。

Playbook

  • 先做基线与可观测性:
  • - 明确目标模型与窗口(8k/32k/128k 等),制定每轮输入/输出 token 预算。 - 记录 system、memory、retrieved_docs、history、tool_outputs 各部分 token;使用 tiktoken 或对应模型 tokenizer 统一口径计数。

  • 设计“分层记忆”,替代“全量对话”:
  • - Working Memory:每轮更新的结构化状态(目标、约束、决策、待确认问题),控制在 10–30 行。 - Long-term Memory:稳定事实卡片(偏好、项目背景、账号信息等)+ 向量索引;支持版本、撤销与删除。 - 如果你在用 Obsidian:建议把事实卡片做成独立笔记(YAML front matter 存字段,正文存原文),检索时只取字段+必要片段。

  • 把提示词改成 schema(可直接复制起步):

context:
  user_profile: <可选:职业/偏好>
  goal: <本轮目标>
  constraints: ['必须...', '禁止...']
  decisions:
    - id: D1
      text: <已确认结论>
      date: '2026-02-03'
  open_questions:
    - id: Q1
      text: <待确认问题>
retrieval:
  query: <本轮检索查询>
  top_k: 5
output_requirements:
  format: json
  • 核验“永久记忆”到底存哪(以 OpenClaw/clawdbot 一类项目为例):
  • - 在项目目录与运行日志里搜索关键词:memory、persist、sqlite、db、chroma、qdrant、vector、index;检查 .env/config.yaml/启动参数。 - 若用 Docker:检查 volume 挂载与容器内数据目录,验证停容器/重启后数据是否仍在。 - 增加“查看当前记忆/清空记忆/导出记忆”的显式指令与权限开关,避免不透明导致误存与信任问题。

Expert Views

  • 开源数据工程师(paraphrase):优先用 SQLite/纯文本做事实源与版本管理,向量库只做索引层;可备份、可回滚比“更智能的记忆”更重要。
  • LLM 应用架构师(paraphrase):把系统指令(安全边界)与用户记忆(事实/偏好/决策)彻底分离;记忆写入前要做去幻觉校验,避免把模型猜测当事实固化。
  • 数据隐私与合规顾问(paraphrase):长期记忆属于持续数据处理,需要告知与最小化收集;必须提供删除/导出与保留期设置;若会上传云端或训练用途要额外授权。
  • 产品经理(paraphrase):用户需要“可控与可解释”的记忆——展示记忆摘要、允许纠错与一键清空,才能把“永久记忆”从卖点变成信任资产。

Options

  • 方案 A:沿着“OpenClaw + qmd”路线做轻量上下文层
  • - 先确认 OpenClaw、qmd、PageIndex 的准确含义(repo/版本/协议/是否与 Quarto .qmd 或其他格式相关);未核验前不要对外承诺节省比例。 - 实现要点:对话只回灌一份 memory.yaml/json + 少量检索片段;历史全文落盘但不进提示词。

  • 方案 B:主流 RAG 组件化(LangChain/LlamaIndex + 向量库)
  • - 滚动摘要(summary memory)+ 混合检索(BM25+向量)是最常见、可替换性强的组合;适合与你的 Obsidian/文档库对接。

  • 方案 C:使用“记忆优先”的 Agent 框架(如 Letta/MemGPT 思路)
  • - 适合长期陪伴、多任务并行;代价是更复杂的记忆治理、评测与隐私控制。

  • 分支(另一种定义):如果你指的是编程语言里的“上下文管理器”(例如 Python with
  • - 重点将转向资源生命周期(文件句柄/锁/事务)与异常安全;需要补充语言与使用场景后再单独调研。

Evidence & Confidence

  • “结构化摘要 + 按需检索”能显著减少输入 token(confidence: medium):是常见工程实践,但效果取决于检索质量与摘要策略,需本地评测确认。
  • “YAML/JSON 往往比花哨 Markdown 更省 token”(confidence: medium):在字段名短、去掉装饰性格式时通常成立;但若 YAML 冗长或包含大量解释性文本,优势会下降。
  • “省 75% / 省 1 亿 Token”(confidence: low):来自转述链接与个体实测描述,缺少可复现的基准(模型版本、样本、计数方法、对照组)。
  • “永久记忆一定有明确存储位置且可被检查/清理”(confidence: high):任何持久化都必然落在磁盘/数据库/云端之一,可通过代码与运行时文件系统验证。

Next Steps

  • 先把线索落地成“可核验信息”:打开小红书/微信链接,提取 OpenClaw、qmd、PageIndex、clawdbot 的准确 repo/产品页、配置项与宣称点(截图/摘录关键段落)。
  • 做一次最小 A/B:同一段项目背景分别用 Markdown 与 YAML/JSON 表达,用 tokenizer 计数输入 token,并记录模型在关键任务上的正确率差异。
  • 追踪“记忆永存”链路:运行一次带长期记忆的会话后,定位新增文件/DB/网络请求,验证重启后是否仍存在、是否会上传、如何一键清空。
  • 根据目标选架构:个人知识库优先“本地存储+可检索+可删除”;若要做产品,再补齐多用户隔离、权限、审计与合规说明。

Sources

Sources

Closing Summary

  • 结论:LLM上下文管理:结构化记忆+检索降Token并核验存储
  • 下一步:先确认 OpenClaw/qmd 的真实实现与记忆存储位置,再做 token 量化对比。

One next action

先确认 OpenClaw/qmd 的真实实现与记忆存储位置,再做 token 量化对比。