s09:建议基于 MEMORY.md 目录按需读取记忆,简化默认自动召回流程
Author: lll1024Created Sep 9, 2026Updated Sep 9, 2026
建议
能否让 s09 默认采用类似 Skill 渐进式加载的方式:每轮注入 MEMORY.md 目录,由主模型判断相关性,再通过 read_file 按需读取 .memory/ 中的具体记忆?提前自动召回可以作为进阶方案介绍。
当前实现
阅读 s09_memory/code.py 时发现:
agent_loop()先调用load_memories(messages),再构建系统提示词。select_relevant_memories()扫描记忆文件,用名称和描述重新构建目录;存在记忆和查询时,额外调用一次模型选择记录,默认最多 5 条,调用异常时退回关键词匹配。build_system()同时向主模型注入MEMORY.md的完整目录和已选记忆的正文。- 主模型已经具备
read_file工具。
因此,当前主模型已经能看到完整目录,但在它处理请求前,又单独运行了一套记忆选择流程。对于教学示例和小规模记忆库,这一步是否有必要?
建议的最小改动
- 将
agent_loop()开头简化为system = build_system(),取消默认路径上的提前筛选和正文注入。 - 在系统提示词中明确:目录条目对应
.memory/下的文件;按任务需要读取相关记忆,不能把目录摘要当作已读过完整正文。 - 保留记忆提取、保存、整理和
MEMORY.md重建流程,以及“记忆是背景信息,当前用户请求优先”的约束。 - 在三语 README 中解释目录与正文的渐进式加载,并说明自动召回适用的场景。
这里不需要引入统一接口或新的框架,复用现有目录和文件读取工具即可。
收益与取舍
这样可以减少默认流程中的独立筛选逻辑,让主模型结合它已获得的任务上下文决定读取哪些记忆,也便于理解 Skill 与 Memory 都可以采用“先看目录,再读正文”的方式。
这并不保证总成本或延迟一定下降:按需读取通常需要额外工具往返,模型也可能忽略应读的记忆。提前召回则能让选中记忆在主模型第一次处理请求时就可用,但当前基于相关性的筛选同样可能漏掉长期偏好。建议在文档中明确这些取舍;如果保留现有默认实现,也希望说明它相对于按需读取方案的教学目的。
相关讨论:#469 曾涉及 Skill/Memory 的上下文管理;本提议聚焦默认记忆读取方式的简化。
本文由 AI 协助核对代码并整理,源于学习 s09 时对召回设计的讨论。
Source: shareAI-lab/learn-claude-code