跨 harness 对比:记忆与上下文管理

这一维度把三件本来独立的事塞进了同一个话题下,理解它们的边界是读懂全部 61 个 harness 的前提:

  1. 上下文压缩(context compaction)——单次会话内,历史撑满模型窗口时怎么办。这是最普及、也最卷的一层,几乎每个成熟 harness 都有自己的答案。
  2. 长期/跨会话记忆(long-term memory)——会话结束后,什么东西被记住、下次怎么取回。这一层分化最剧烈:从”根本没有”到”pgvector 向量库 + 自编辑记忆块”跨度极大。
  3. 会话持久化(session persistence)——轨迹落在哪、怎么 resume/fork。这是最工程化、争议最小的一层,选型基本就是 JSONL vs SQLite vs Postgres vs git。

设计谱系

压缩这条轴上有一条清晰的能力阶梯:

  • 不压缩:要么靠原生长窗口硬扛(AutoClaw 上 GLM-5.2 的 1M 窗口),要么纯尾部滑窗截断(OpenManusmessages[-100:]),要么干脆每轮全量累加(Trae,已核实无任何 token 预算检查)。
  • 确定性截断/滑窗(不调 LLM)SWE-agentLastNObservationsLangGraphtrim_messagesAutoGen 的四种 ChatCompletionContext(含”从中间 pop”的 middle-out 截断)、Semantic KernelTruncationReducerCAMELwindow_sizeUI-TARS 的图像滑窗。
  • LLM 摘要式压缩:绝大多数主流编码 harness 的落点。差异在于摘要的结构化程度(见下)与触发时机
  • 结构化交接摘要:不是让模型随便总结,而是强制填一份固定字段的”交接笔记”。这是 2025 下半年以来的主流做法,Gemini CLI<state_snapshot> XML、Kimi Code 的”第一人称写给未来自己的 handoff”、Zed 的 Goal/State/Context/Next/Pitfalls 五段、Amazon Q 的第三人称结构化要点、MiMo Code 的 11 字段 checkpoint 是这条路的代表。

记忆这条轴上分四个流派:

对比表

Harness上下文压缩长期/跨会话记忆会话持久化
Claude CodeautoCompact(窗口−13k buffer)+ microcompact + CONTEXT_COLLAPSE + reactive 多层叠加,熔断器防连续失败分叉子 agent extractMemories 写 memory/(受限权限,碰不到用户代码)JSONL transcript,compact_boundary 显式边界
Codex本地/远程/远程v2/token-budget 四变体两阶段管线(抽取→全局 consolidation 子 agent),git baseline 目录,默认关rollout SQLite 索引 + 全文搜索,thread resume/fork
OpenHandsLLMSummarizingCondenser(替换较早一半,SOFT/HARD 触发)仓库根 AGENTS.md(非向量库)EventLog 每事件一 JSON,append-only 可重放
SWE-agenthistory_processors 链(LastN/CacheControl/ClosedWindow…静态选定)每步写 .traj JSON(仅事后重放)
AiderChatSummary 递归二分摘要无向量记忆;.aider.chat.history.md 可回放append-only markdown history
Clinebasic/agentic/自定义三策略,prepareTurn 每次调用前无(仅 .clinerules 静态)每任务两文件 JSON(api + ui)
Roo CodesummarizeConversation(SYSTEM OPERATION,非破坏性标记)无(folded file context 仅压缩期用)api_conversation_history.json + ui_messages.json
Goose0.8 阈值 + 工具对后台批量摘要,agent_invisible/agent_only 可见性魔术crates/goose 未内置;memory MCP 待考本地 SQLite(WAL),含 parent_session 谱系
OpenCode轮次切分 + 滚动摘要更新(非重来),Context Epoch 缓存友好SQLite event-sourced,session 可 forkSQLite via Drizzle
Gemini CLI0.5 触发,<state_snapshot> 结构化 XML,含 prompt-injection 防御GEMINI.md 三级层级 + Auto Memory(挖掘归档转录)~/.gemini/tmp/.../chats/,—resume;git 影子仓库 checkpoint
Qwen CodetryCompress,三档阈值明确对标 Claude CodeAuto-Memory 四动词 extract/dream/recall/forget,对标 CC 预取模式JSONL 树状(uuid/parentUuid)分支
CursorpreCompact hook(observe-only,不能改写)语义索引 + Instant Grep 双索引(分离新鲜度策略)sessionStart/End hooks 注入
Trae无(纯累加,仅单次工具输出 16k 截断)无(CKG 是代码结构记忆,非对话记忆)无(进程退出即丢)
Qoder/compact + 自动,桌面端 40% 时给用户显式选项静态 + 自动记忆(QODER_MEMORY=1);云端 Memory Stores 三层UUID session,resume/continue/fork
Kimi Codefull.ts 0.85 触发,第一人称 handoff 摘要,micro 已死代码无长期库(逐 session wire.jsonl + AGENTS.md 静态)~/.kimi-code/sessions/,事件溯源 records
AutoClaw无(靠 GLM-5.2 1M 原生窗口替代压缩工程)四文件 SKILL/AGENTS/MEMORY/TOOLS.md,多分身隔离每 Agent 独立 Session
Amazon Qcreate_summary_request,第三人称结构化,overflow 触发semantic-search crate(BM25 + all-MiniLM 向量,本地 ONNX),默认关本地 SQLite(rusqlite)
Devin未披露上下文内压缩算法(靠多 agent 清上下文)Knowledge:trigger description + content,RAG 式召回,主动建议hypervisor 级 VM 快照(memory/进程树/文件系统)
FactoryPreCompact hook(manual/auto)AutoWiki:多 agent 生成、增量再生、提交进代码库的文档产物.jsonl transcript
Copilot AgentinfiniteSessions 80% 后台/95% 硬阻塞citation 式即时校验记忆(放弃离线整理),28 天过期,跨 agent 共享~/.copilot/session-state/ checkpoints
Junie显式生命周期事件(SessionStart source=compact)fasterModel 承担”记忆抽取”(存储未披露);guidelines 静态存最近 10 个 session
Kiro80% 阈值自动摘要Steering 文件(四种加载模式);autonomous agent 有真跨会话记忆~/.kiro/sessions/cli/ json + jsonl
Replit未见对话压缩(靠子 agent 隔离)无(执行环境本身作记忆载体)git commit + Postgres 快照联合 checkpoint
Amp90% 自动压缩,取代已移除的手动 Handoffread_thread 跨线程检索(已重写为 subagent)服务端 Postgres(GCP),线程稳定 ID
v0滚动摘要(recent + summaries of older)Memories & Skills(团队级,仅访问控制文档化)Versions 不可变检查点 + 沙箱文件系统
Warp会话摘要 + 工具结果摘要;MoveMessagesToNewTask rewindAgent Memory(跨 harness、Oz 自写、逐消息取用),未 GA本地↔云 handoff,第三方 transcript 落地 resume
Zedauto_compact,五段式 COMPACTION_PROMPT,≥80k 才压无 RAG(9 种规则文件注入)本地 SQLite(sqlez)
AutoGen四种可插拔 ChatCompletionContext(含 middle-out)Memory 协议 + chromadb/mem0/redis/canvas 后端save_state/load_state pydantic
Semantic KernelReducer opt-in(Truncation/Summarization 滚动摘要)13 个向量库后端(旧 SemanticTextMemory 已 deprecated)ChatHistoryAgentThread(后端调用方自备)
AugmentToolOutputTruncator + 未截断影子副本可恢复conversation-retrieval(历史会话语义检索,独立于代码库 RAG).augment/sessions/*.json,三级详略度
LangGraphtrim_messages + RemoveMessage(摘要靠 langmem 外挂)BaseStore 分层命名空间 KV + 可选语义索引Checkpointer(Sqlite/Postgres/Redis…)
CrewAI分块并行摘要,结构化 prompt统一 Memory 类,LanceDB,LLM-in-loop 编码/召回,复合打分Flow @persist 按 UUID,可 fork
DeepAgentsSummarizationMiddleware,摘要卸载到 markdown 文件MemoryMiddleware 自更新(AGENTS.md 风格,指导何时写回)LangGraph checkpointer + O(N) DeltaChannel
MetaGPT无摘要(memory_k 硬截断)RoleZero 溢出灌 Chroma RAG(默认关)Team.serialize/deserialize team.json
smolagentssummary_mode 标志位(仅重规划时)无(推荐 step_callbacks 自己写 hook)save/push_to_hub 存 agent 定义(非会话)
AutoGPTClassic:LLM 逐 episode 压缩Platform:Graphiti 时序知识图谱(FalkorDB),带类型/过期/矛盾检测AgentManager save_state
browser-usemaybe_compact 双闸门 → <compacted_memory>;只带当前截图无跨 run;FileSystem(todo.md/results.md)让模型自管AgentState 可序列化,add_new_task 追加
Open InterpreterCodex 底座压缩(run_auto_compact 等)Codex memories 管线(子 agent consolidation),默认关rollout SQLite + ~/.openinterpreter
Claude Flowmemory-distill 蒸馏(非窗口 compaction)sql.js + agentdb HNSW,BM25+dense 混合,rerank,EWC 持续学习,量化.hive-mind/sessions/,跨会话存活
OpenManus尾部滑窗 messages[-100:](唯一机制)无(纯进程内存)
Agno只压缩 role==tool 的结果(不做全历史摘要),BETAMemoryManager LLM 抽取事实,enable_agentic_memory 给增删改工具session/ + db/(20+ 后端)
UI-TARS只有图像滑窗(maxImagesCount),无文本压缩多后端 storage provider(SQLite/File/Mongo/Memory)
Continue约 80% 触发,conversationSummary 标记,pruneLastMessage 兜底CLI 层无(IDE 侧有 codebase indexing)~/.continue/sessions/*.json,undo/redo 栈
GPT Pilot粗糙写死(>150k 才 trim_logs)无向量库;结构化 ProjectState + knowledge_base,显式挑文件DB 版本化状态链(SQLite/Postgres),可重建工作区
GPT-Researcherembedding 相似度过滤(非 LLM 摘要)+ word-budget 裁剪无跨会话核心库无 checkpoint(MemorySaver 被注释)
AgentScopecompress_context 0.8 触发,5 字段 SummarySchema,on_compress_context 钩子AgenticMemory/mem0/reme 三后端可选AgentState pydantic 序列化 + Redis 服务层
OpenAI Agents SDKOpenAIResponsesCompactionSession(调 responses.compact)Sessions 协议(SQLite/Redis/Mongo… 8+ 实现)Session get/add/pop/clear
Kilo Code隐藏 compaction agent + prompt/compaction.txt,filterCompacted两套:kilo_local_recall(历史 session)+ kilo-memory(学习型 markdown)SQLite(drizzle),message v2 part 化
LettaSummarizer partial_evict/trim 双模式三层 MemGPT:core(in-context Block 自编辑)/ recall(hybrid)/ archival(pgvector)多 conversation 并行 + 隔离 block;MemFS git-backed
Google ADKCompactionRequestProcessor,token 阈值 + 滑窗 + rolling summaryBaseMemoryService(Vertex Memory Bank / RAG),preload_memory 自动注入Session(in-memory/sqlite/db/vertex),state 作用域前缀
Pydantic AIProcessHistory capability(before_model_request hook)+ provider-native CompactionPart核心未实现(独立 harness 包)ModelMessages 可序列化(存储自备)
Agent Zero分层 Topic/Bulk 后台线程压缩(0.8 目标比) + 手动整会话压实FAISS 向量库(MAIN/FRAGMENTS/SOLUTIONS),后台自动抽取 durable 事实persist_chat JSON,支持分支 + time-travel
CAMEL渐进式 summarization(summarize_threshold + window_ratio 增量)VectorDBMemory / LongtermAgentMemory 向量检索save/load_memory + MemoryToolkit 工具化
Plandex滚动摘要(后台 goroutine summarizeConvo,最新摘要换最老消息)codebase map 常驻(无向量库,模型基于符号名检索)Postgres + 每 plan 一 git 仓库
DeerFlowDeerFlowSummarizationMiddleware(LangChain 继承),排序刻意靠前agents/memory 学习型(detect_correction/reinforcement,4-worker 巩固/汰旧),按 user_id 分域checkpointer + persistence(SQLite/DB)
HermesContextCompressor 有损摘要,50%/85% 阈值,protect_last_nMEMORY.md + USER.md 两文件有界(冻结快照,会话开始渲染一次)SQLite + FTS5 全文检索;可选 Honcho
MiMo CodeCycle/checkpoint/rebuild,11 字段,writer 子 agent 单写者四层(session/project/global/history),FTS5 BM25,可导入 CC 记忆SQLite 全会话 trace
QwenPawScroll strategy:EvictionIndex 记 seq 区间可逐字节召回(非摘要)ReMe:auto memory→dream→proactive,BM25+向量 RRF 混合写穿 history.db(SQLite),驱逐前先持久化
Comate单对话自动压缩(算法未公开)项目级 Memory 自动演化;PGVector 代码库索引历史对话面板
CodeGeeX未找到证据(客户端不可见)@repo/@workspace RAG(服务端授权)globalStorage/agent/history.json 本地
Anthropic 多 agentcompaction(保留架构决策/未解 bug/最近 5 文件)结构化笔记 + memory tool(文件式);子 agent 隔离即上下文管理Memory 存 plan(>200k 会被截断)

分组讨论

一、“抽取与主循环解耦”——独立子 agent 写记忆

这是 2025 下半年最有影响力的记忆设计范式,核心洞见是:让主 agent 一边干活一边整理记忆,会污染它的注意力和 token 预算,所以把抽取整体搬出主循环

Codex 是最完整的工程化实现:两阶段管线,Phase 1 后台从每个 rollout 抽取结构化记忆并脱敏入库,Phase 2 用一个无审批、无网络、仅限本地写、且关闭再委派的内部 consolidation 子 agent 去改写更高层 MEMORY.md,并用 ~/.codex/memories/.git 做 git baseline 算 diff。Open Interpreter 直接复用了这套 Codex 底座(同样的 memories/ 双 crate + consolidation 子 agent)。Claude Code 走同一思路但更轻:每次 query loop 结束时分叉一个 extractMemories 子进程,用受限 canUseTool(只允许在自动记忆目录内 Edit/Write)保证写记忆的子 agent 碰不到用户真实代码,还用游标 + 互斥保护避免重复写。Qwen Code 把它形式化成四个动词 extract/dream/recall/forget,并在设计文档里明确写明其 recall 预取模式对标 Claude Code 上游的 startRelevantMemoryPrefetch/settledAt——这是全部 dossier 里最直白的”抄谁”自述。

MiMo Code 把这个范式推到极致:它的 checkpoint-writer 是一个专职 subagent,博客原文”the main agent does not maintain its own memory”,并强加单写者不变式(single-writer invariant)——主 agent 对 11 个结构化字段只有只读权限,唯一写入通道是自由格式 notes.md,由 writer 每次 checkpoint 时读取归类后清空。它的 cycle/rebuild 概念也很独特:不删 DB 历史,只从 rebuild boundary 起重新切片,且刻意在上下文利用率 20%/45%/70%(而非 95%)时做增量抽取,理由是”lost in the middle 效应下高利用率时抽取最不可靠”。

二、结构化交接摘要——从”随便总结”到”填表”

早期压缩(Aider 的递归二分、OpenHands 的替换较早一半)只是让模型自由总结。新一代普遍改成强制填固定字段的交接笔记,因为自由摘要容易丢关键状态。

Gemini CLI 是这条路最结构化的:产出 <state_snapshot> XML,固定含 overall_goal/active_constraints/key_knowledge/artifact_trail/file_system_state/recent_actions/task_state 各段,还内嵌 prompt-injection 防御条款。AgentScopeSummarySchema(task_overview/current_state/important_discoveries/next_steps/context_to_preserve)与 CrewAI 的五段几乎逐字相同,说明这套字段已成事实标准。Zed 的 Goal/State/Context/Next/Pitfalls、Amazon Q 的第三人称结构化要点都是变体。Kimi Code 走了一个有格调的分支——把摘要 prompt 刻意设计成”写给未来的自己的第一人称交接笔记”而非第三方报告,还要求用对话原语言而非强制英文。

值得注意 Qwen Code 在压缩阈值设计上也明确对标 Claude Code 的 autoCompact.ts 绝对 token 阶梯并解释了为何改用三档方案,是 gemini-cli fork 血统之外又一次显式借鉴 CC。

三、共享底座:opencode 家族与 gemini 家族的压缩同源

有几组 harness 的压缩代码明显同源。OpenCodeKilo CodeMiMo Code 都有一个隐藏的 compaction primary agent + prompt/compaction.txt + filterCompactedEffect 的相同骨架,OpenCode 的”轮次切分 + 滚动摘要更新(而非从头重来)+ Context Epoch 缓存友好”是这套设计的源头,Kilo 和 MiMo 是在其上的 fork/演化。Gemini CLIQwen Code 是另一条 fork 线(Qwen Code fork 自 Gemini CLI),压缩与会话格式高度一致。ClineRoo CodeKilo Code 是第三条血脉,但记忆设计上 Kilo 已大幅超出 Cline/Roo(后两者都无长期记忆)。

LangChain 生态也是共享底座:DeepAgentsDeerFlow 都基于 LangChain 的 SummarizationMiddlewareLangGraph 本身只提供 trim_messages/RemoveMessage 机制、把摘要器留给外挂的 langmem 包。

四、静态文件式”记忆”——AGENTS.md 家族

严格说这不是记忆(不自动积累),但功能上塑造了”跨会话被记住的东西”,几乎每个编码 harness 都有。AGENTS.md/CLAUDE.md 已成开放标准:Zed 一次性识别 9 种规则文件名(.rules/.cursorrules/.clinerules/.windsurfrules/copilot-instructions/AGENT(S).md/CLAUDE.md/GEMINI.md),Amp 兼容旧 AGENT.md/CLAUDE.md 并支持 YAML globs: 条件加载,Comate 明确读取 Cursor 的 .cursor/rules。分层发现(cwd 向上找到 .git + 全局覆盖)是通用模式,FactoryJunieKiro(Steering 文件四种加载模式最精细)、Qoder 都是这一套。

在此之上,一批 harness 让模型自己写这些文件,把静态记忆变成半自动记忆:Hermes 的 MEMORY.md + USER.md 两文件有界(800/500 token 上限),并有一个独特的”冻结快照”取舍——记忆只在会话开始渲染进 system prompt 一次,中途写入落盘但要下个会话才生效,为的是保住 prefix cache 稳定。AutoClaw 的四文件 SKILL/AGENTS/MEMORY/TOOLS.md 按内容类型分工。DeepAgents 的 MemoryMiddleware 明确指导模型”何时该 edit_file 写回、何时不该(临时信息除外)“。

五、向量/图数据库 RAG 记忆——重型玩家

需要真正跨会话语义检索的 harness 走向了向量库。Letta 是这一维度的教科书:三层 MemGPT 结构逐一对应代码——core memory 是嵌在系统提示里的一等 Block(模型可自编辑、有 size limit 和 read_only)、recall memory 是消息历史的 hybrid 检索、archival memory 是 pgvector 向量库(带 tags/时间过滤/top_k)。它还有 MemFS:记忆块投影成带 YAML frontmatter 的 markdown、git 版本化、system/ 目录每轮必进系统提示。这是所有 61 个里对记忆抽象得最系统、最”记忆即一等公民”的设计。

其余重型玩家各有侧重:AutoGPT 的 Platform 侧用 Graphiti 时序知识图谱(FalkorDB),带 SourceKind/MemoryKind/MemoryStatus 类型系统和 active/superseded/contradicted 矛盾检测——在记忆有效性建模上最超前。Claude Flow 堆料最狠:sql.js + agentdb HNSW + BM25 + cross-encoder rerank + rabitq 量化 + EWC 持续学习CrewAI 的统一 Memory 是罕见的 LLM-in-the-loop 系统,编码/召回都调自己的 LLM 做子查询拆解和置信度路由,复合打分 = 时效衰减 + 语义 + 重要性。CAMEL(VectorDBMemory/LongtermAgentMemory)、Agent Zero(FAISS 三 Area + 后台自动抽取 durable 事实)、Google ADK(Vertex Memory Bank + preload_memory 自动注入 <PAST_CONVERSATIONS>)、Agno(20+ DB 后端)、Semantic Kernel(13 后端但旧接口 deprecated)、MetaGPT(RoleZero 溢出灌 Chroma)是其余代表。

六、“读时校验”派——对记忆陈旧/幻觉的务实答案

向量记忆的通病是陈旧和幻觉:存进去的事实可能已过时。Copilot 给了最有意思的答案:每条记忆是 {subject, fact, citations:[file:line], reason},agent 用前重新核对引用的代码位置,若引用失效就存一条修正版(自愈);GitHub 明确说考虑过离线整理服务但放弃了(成本高且仍需读时核对),并做了对抗性压力测试(故意植入指向不存在代码的恶意记忆,验证 agent 会发现矛盾并更新)。Devin 的 Knowledge 用 trigger description(自然语言短语匹配当前任务)做 RAG 召回,还有 Session Insights 回溯评估每条 knowledge 帮了还是误导了该 session——记忆质量的反馈闭环。Amp 的 read_thread 从被引用线程抽取信息,其 subagent 化重写后的 prompt 带显式纠错指令”不要止步于第一个匹配,检查后续是否有修订/覆盖它的消息”(一个线程实测被压缩 68 次、未压缩约 2100 万 token,逼出了这个设计)。

七、“永不丢失”派——精确可召回而非有损摘要

大多数压缩是有损的(摘要掉的东西回不来)。少数 harness 刻意做无损可召回QwenPaw 的 Scroll strategy 是代表:被驱逐的中段折叠进一个 EvictionIndex,它记录的是精确的 seq 区间而非摘要,原始 turn 可逐字节恢复,通过 recall_history_python 工具(持久历史之上的沙箱 REPL)召回——这是 README “Never forgets” 的代码级兑现(仅 Scroll 策略;默认压缩模式仍有损)。QwenPaw 以 AgentScope 为底座,Scroll 正是挂在 AgentScope compress_contexton_compress_context 中间件钩子上定制的。Roo Code 走了个折衷:非破坏性压缩——旧消息只被 condenseId 标记为取代,磁盘上完整原始历史仍在,只在发 API 时过滤。AugmentUntruncatedContentManager 保留截断前影子副本,可通过 search-untruncated/view-range-untruncated 取回。

八、GUI/computer-use agent 的特殊记忆形态

面向屏幕操作的 agent 的上下文瓶颈不是文本而是截图UI-TARS 的核心结论直白:只有图像滑动窗口(maxImagesCount 保留最新 N 张、旧图换文本占位符),无任何文本压缩/长期记忆/向量检索;一代还用 previousResponseId 走 stateful Responses API 让服务端保留上下文。browser-use 更进一步——核心设计不是无限追加消息列表,而是每步重建单条 state message,历史以文本 <agent_history> 描述形式塞进去;模型靠持久 FileSystemtodo.md/results.md)自己决定什么留在 context,默认只带当前截图。这类”模型自管上下文”的思路与 Anthropic 博客的”结构化笔记”、Claude Plays Pokémon 是同一血统。

九、会话持久化的选型光谱

这一层争议最小,选型基本是工程口味:

  • JSONL trajectoryClaude CodeFactoryKiroSWE-agent.traj。人类可读、append-only 是共同优点。
  • SQLite:目前最主流。Goose(WAL + parent_session 谱系)、OpenCode/Kilo Code(Drizzle)、Kimi Code(事件溯源 records)、Zed(sqlez)、Hermes(+FTS5)、Amazon Q(rusqlite)。
  • Postgres:走服务端/团队协作的选它。Amp(GCP)、Plandex(+每 plan 一 git 仓库)、LangGraph PostgresSaver。
  • git-backed:把版本历史当一等公民。Replit 的 git commit + Postgres 快照联合 checkpoint、Gemini CLI 的影子仓库、Letta 的 MemFS、Codex 的 memories git baseline。
  • 序列化对象(存储自备):AutoGenPydantic AIOpenAI Agents SDKsmolagents(存 agent 定义而非会话)——框架派的典型做法。
  • hypervisor 快照:只有 Devin——在 hypervisor 层快照完整 VM(内存/进程树/文件系统),让 agent 能跨越 PR review/CI 等待的异步间隙存活。官方自述这是千级并发下最难做可靠的一块基础设施,是”云端 agent”形态独有的记忆需求。

fork/handoff 能力也值得单列:Warp 的 Agent Memory 和会话 handoff 都跨 harness——能上传 Claude Code 的完整 transcript envelope 到服务端,恢复时在磁盘重新落地到 ~/.claude/projects/ 让原生 claude --resume 透明接手;Goose 能导入 Claude Code/Codex/Pi 的轨迹格式。这是 harness 互操作性的前沿。

最值得借鉴

1. Letta 的三层自编辑记忆(core / recall / archival)。 它是唯一把”记忆是模型可读写的一等公民”贯彻到底的设计:常驻上下文的 core Block 让模型能主动维护自己的工作记忆,recall 做会话历史检索,archival 做无限向量归档,三层各司其职、边界清晰,还用 MemFS 让每一层都 git 版本化、人类可读可编辑。对任何需要”agent 越用越懂你”的产品,这是最完整、最可复制的记忆骨架——它把 MemGPT 论文真正工程化了。

2. “抽取与主循环解耦”的子 agent 写记忆范式(Codex / Claude Code / MiMo Code)。 它解决的是一个被低估的问题:让主 agent 兼职整理记忆,会同时偷走它的 token 预算和注意力,而恰恰在上下文最满、模型最”笨”的时刻要它做最精细的抽取,是一笔坏交易。把抽取搬到独立子 agent(受限权限、不碰用户代码、不共享主 agent 注意力),既保护了主循环的性能,又用权限沙箱兜住了记忆写入的安全风险。MiMo 的单写者不变式和”20%/45%/70% 而非 95% 触发抽取”更是把这个洞见推到了极致。这两条思路——一个解决”记忆结构”,一个解决”记忆何时/由谁生成”——正交互补,合起来几乎覆盖了长期记忆设计的全部关键决策。