行业资讯
跨会话还记得你:给 Agent 一块可写的 MEMORY.md
系列回顾主循环 · 代码库工具 · REPL · 项目上下文 · Skills · 权限 Write · MCP 概念 · MCP 实现 · Context Budget · Bash · compact 2.0 · autocompact · Hooks项目上下文 让 Agent 读懂仓库规矩Skills 按需加载工作流说明书。但还有一类东西放哪儿都不合适跨会话的个人/团队偏好——「提交用中文」「别动 auth」「默认用 bun」。写进AGENTS.md太重、要改仓库规范写进对话历史一/clear或新开 REPL 就没了。这篇讲v6-memory一块可写的.agents/memory/MEMORY.md走system prompt通道注入——仍然不改query()。三类「塞进模型的东西」差在哪AGENTS / CLAUDESkillsMemory本篇典型内容仓库协作规范可复用工作流说明偏好、约定、会话沉淀谁维护人文档人SKILL.md人或模型经 Write/Edit生命周期相对稳定启动扫描目录可跨会话持久会话中可改注入方式system 常驻目录常驻 正文按需system始终有指引段正文可空/clear仍在仍在仍在一句话AGENTS 是「这个仓库怎么干活」Memory 是「我还记得你上次说的偏好」。它也不替代autocompactcompact 压的是对话历史Memory 在 system 通道两边各管各的。存哪为什么不扫根目录 MEMORY.md约定路径只有一个.agents/memory/MEMORY.md相对当前工作区cwd。文件不存在时启动照样成功不会因为缺文件报错退出。但不等于「完全不告诉模型」——system 里仍会注入一段Memory 指引见下一节避免模型自己发明docs/notes/之类路径来记偏好。不在项目根到处找MEMORY.md是为了避免和普通文档重名、误注入。预算正文最多32KBUTF-8 字节超出截断并追加[memory truncated at 32KB]启动时还会ensureMemoryDirExists尽量建好.agents/memory/方便模型直接 Write而不必先 mkdir。怎么进模型指引始终在正文可有可无启动时loadSessionContext拉齐三块拼进systemPrompt1. AGENTS.md / CLAUDE.md项目说明可缺 2. Memory 段始终有——路径 remember 写法 ± MEMORY.md 正文 3. Skills 目录摘要有技能才有关键变化即使 MEMORY.md 缺失或为空Memory 段也会进 system。有正文就附上没有就标明 currently empty。模型因此始终知道持久记忆写在哪个路径.agents/memory/MEMORY.md用户说「记住…」时用 Write/Edit 更新这一份文件不要另开docs/notes/之类路径当跨会话记忆对应组装formatMemoryPromptSection始终 pushbuildSystemPrompt(projectContext,skills,memorySnapshot.content,cwd)// 内部parts.push(formatMemoryPromptSection(cwd, memory))空文件时模型看到的大致是## Agent Memory You have a persistent, file-based memory at .agents/memory/MEMORY.md … If the user explicitly asks you to remember something, save it immediately … Do not invent other note paths (for example docs/notes/) … ## MEMORY.md Your MEMORY.md is currently empty. When you save new memories, they will appear here.有正文时最后一段换成截断后的 MEMORY.md 内容。L1 CLI 启动 → ensure 目录 loadSessionContext含 memory 快照 L2 QueryEngine → 持有 systemPrompt memoryRefresh L3 runTurn 前 → 按 mtime 刷新 Memory变了才重建 systemPrompt L4 query() → 照旧透传 systemPrompt骨架不变会话中改了文件怎么办mtime 刷新Memory 允许在会话里被改模型 Write/Edit或你手动改文件。若启动只读一次改完模型还看不见。所以QueryEngine.runTurn开头会refreshMemoryIfNeeded() → 看 .agents/memory/MEMORY.md 的 mtime → 没变复用缓存 → 变了 / 删了重读或清空→ 重建 systemPrompt这样本轮写进 MEMORY.md 的偏好下一轮system 就能带上没改文件时零多余读盘成本只 stat怎么写没有专用 Memory 工具刻意不做「旁路写入」方式行为Write / Edit目标路径指向.agents/memory/MEMORY.md走既有门卫REPLy/N/ headlessALLOW_WRITERead模型可直接读该路径核对内容/memory只读展示路径 字符数不callModelREPL/memory # Memory: D:\…\.agents\memory\MEMORY.md128 chars # 或不存在 # Memory: …\MEMORY.md文件不存在/help已列出/memory。写入仍要过权限——Memory 可写但不等于「静默可写」。30 秒试一把# 甚至可以不先建文件启动也会 ensure 目录并注入「currently empty」指引bun run dev# 试「记住包管理器默认 bun」# 模型应 Write/Edit .agents/memory/MEMORY.md而不是 docs/notes/# 或预先写好正文mkdir-p.agents/memorycat.agents/memory/MEMORY.mdEOF # Agent Memory - 回复尽量用中文 - 包管理器默认 bun不要擅自改成 npm EOFbun run dev有正文时问「我们默认用什么包管理器」——应能直接根据 Memory 回答不必先 Read。再让它改 Memory会走 Write/Edit 确认或你本地改文件后继续聊——下一轮应吃到新内容。/memory # 看路径与长度 /clear # 清空对话Memory 指引及正文仍在 system 里和主循环的关系L1 CLI / REPL → ensure 目录加载快照/memory 只读状态 L2 QueryEngine → runTurn 前 mtime 刷新 重建 systemPrompt L3 query() → 不变system 里始终有 Memory 段 L4 services/memory → load / truncate / refresh / formatMemoryPromptSectionMemory 改的是「system 里常驻什么」不是 ReAct 怎么转也不是对话历史怎么压。和 Skills / Hooks 的分工机制一句话Skills按需说明书短 tool_result 正文注入Hooks工具前后拦 / 记Memory跨会话偏好system 常驻 可写刻意没做什么没做意味着什么session memory compact不把整段对话摘要进 Memory 文件那是另一套管线云端 memory store / 多 vault只认本地一个文件topic 文件 MEMORY 索引双步本版单文件指引里直接写 MEMORY.md专用 Memory 工具少一个表面Read/Write/Edit 够用根目录扫描MEMORY.md避免文档噪音子代理共享 / 清理语义留给后续子代理篇这一刀验证的是「可写记忆」的最小面约定路径 → 始终注入指引±正文→ 预算截断 → ensure 目录 → 轮次前 mtime 刷新 → 写入走既有权限 → /memory 可观测系列拼图篇能力项目上下文仓库说明书进 systemSkills工作流按需加载compact 三连对话历史预算Hooks工具生命周期扩展本篇跨会话可写记忆Harness 再多一根柱子循环、工具、会话、项目上下文、技能、权限、MCP、预算、hooks、memory。你可以从这里带走什么Memory ≠ AGENTS ≠ 对话历史——偏好持久化规范归文档聊天归 messages。指引始终在正文可空——缺文件也告诉模型写哪儿、怎么 remember避免乱开笔记路径。走 system不走 messages——/clear清不掉和项目上下文同一通道。要有预算——正文 32KB 硬顶防止一块记忆撑爆上下文。刷新靠 mtime——会话中改文件下一轮自动生效。写入不旁路——仍过 Write/Edit 门卫启动 ensure 目录只是为了好写。不替代 compact——Memory 管偏好autocompact 管长对话。仓库与相关文档GitHubhttps://github.com/jimchou-h/react-agent-mini上一篇Hooks · 项目上下文源码src/services/memory术语表CONTEXT.md拼装systemPrompt.ts欢迎 Star、Issue 和 PR。本文基于 react-agent-mini 变更v6-memoryMEMORY.md 始终注入路径/remember 指引 ensure 目录 mtime 刷新 /memory撰写。
郑州网站建设
网页设计
企业官网