
§N§标签系统与ctx_reduceMagic Context如何实现缓存安全的上下文瘦身【免费下载链接】magic-contextUnbounded context. Memory that manages itself. One session, for life. The hippocampus for coding agents, part of CortexKit.项目地址: https://gitcode.com/gh_mirrors/mag/magic-contextMagic Context 是一款专为编程智能体Coding Agent设计的上下文管理插件它通过独创的§N§ 标签系统和ctx_reduce 工具在长期会话中自动完成上下文瘦身同时保护模型服务商的提示词缓存不被破坏让一个会话可以连续运行数周甚至数月而无需手动压缩。为什么上下文瘦身必须缓存安全长会话有一个绕不开的成本问题提示词缓存。模型服务商对重复的提示词前缀提供缓存命中价格远低于全价。一个跑了很久的会话缓存前缀占了总成本的大头——任何一次不必要的前缀改动缓存失效bust都会让整段前缀重新计价。传统的压缩方案会让智能体停下来重读一切既打断工作流又直接砸掉缓存。Magic Context 的做法不同它把瘦身操作设计成搭便车——只在缓存本来就要失效的那一刻顺路把积压的清理工作一起完成绝不单独制造一次失效。 核心原则任何删除操作永远不能以自己的名义触发一次缓存失效。这条规则在架构文档 ARCHITECTURE.md 中有完整阐述标签与回收机制的细节则写在 docs/architecture/reclaim.md。§N§标签系统给每段内容发一个永久门牌号瘦身的第一步不是删而是编号。Magic Context 的打标签器会为每一条消息、每一段文件内容、每一个工具调用的输出分配一个持久的标签会话内的编号在对话中表现为§N§。比如智能体执行了一次搜索结果前就会带上§42§这样的标记。这套编号有几个关键特性持久标签存在 SQLite 数据库context.db的tags表中跨轮次、跨重启不变唯一工具标签以会话 调用ID 归属消息为复合键即使宿主复用调用ID也不会撞号有档案被删内容的原文完整保存在source_contents里随时可取回状态明确每个标签有active活跃、dropped已删、compacted压缩前三种状态。打标签逻辑位于 packages/plugin/src/hooks/magic-context/tag-messages.ts。有了门牌号删除第几段内容就不再是模糊描述而是精确的§42§。ctx_reduce智能体盖章系统统一执行有了标签智能体需要清理桌面时调用ctx_reduce工具并传入标签范围即可例如3-5或1,2,9。这里有个精妙的设计ctx_reduce 只盖章不删除。调用后标签只是被记入待处理队列pending_ops表内容依然完整可见真正的删除发生在下一次本来就要重写前缀的变换轮次上由系统一次性扫完队列已删除的内容留下一个唯一的占位符[dropped §N§]它是标签号的纯函数——不同轮次渲染出的字节完全一致绝不会因为占位符变化而炸掉缓存。工具本身实现在 packages/plugin/src/tools/ctx-reduce/tools.ts。它的描述甚至用了一个形象的比喻这不是扔垃圾而是把桌上不再需要的文件盖上『已处理』的章——判断标准不是我读完了吗而是接下来的工作还需要它留在桌上吗缓存安全的核心单一失效许可整篇文章最核心的一点所有清理通道共享同一份失效许可。每一轮变换开始时系统会判定这一轮是否本来就要重写前缀例如历史学家发布了新的压缩摘要、模型或系统提示词发生了变化、使用率进入强制区间。判定为是的轮次才会放行以下所有清理动作清理通道触发条件说明智能体盖章删除ctx_reduce 队列有积压搭在既有失效上执行年龄回收老的工具输出超过阈值智能体不盖章也能自动瘦身智能去重可选默认关闭重复的只读结果只保留最新一份紧急回收使用率进入约 85% 强制区间按工具重要度分层丢弃任何一条通道都不能单独制造失效——标记只是入队落地永远搭便车。这一条被写进了架构文档的承重不变量章节ARCHITECTURE.md 中 Load-bearing invariants 一节并且历史上真实事故一次年龄回收绕过了历史学家否决一次阈值穿越变成两次计价的失效直接推动了该机制的统一。保护窗口最新的工作集永远安全自动回收永远不会碰对话的最新部分。protection-window.ts会计算出一个保护窗口默认约为可用软限的 5%有上下限约束落在窗口内的标签被ctx_reduce标记时会被接受但报告为held搁置——等更新的工作把它们挤出窗口后才生效对智能体来说这很友好误标了刚生成的输出也没有任何伤害。此外最近 20 次工具调用有骨架窗口输入较小的调用保留真实参数、只删输出输入较大的则整体移除保证模型不会对着残缺的参数产生幻觉。ctx_expand删错了随时取回瘦身的最后一道保险是可逆性。被删除的内容都进档案馆source_contents。智能体只要调用ctx_expand(tagN)就能把§N§对应的原文完整取回——包括完整的工具输入和输出也可以用start/end按消息序号展开一段历史。工具说明见 packages/plugin/src/tools/ctx-expand/constants.ts。也就是说ctx_reduce 删掉的只是桌面上的复印件原件永远在档案柜里。这让智能体可以大胆瘦身不必担心误删。用户视角它如何影响你的日常使用默认开启智能体驱动的瘦身标签 ctx_reduce在主要会话中默认启用可整体关闭关掉后过时的工具输出会纯粹按年龄自动丢弃智能体完全不参与上下文管理可观察/ctx-status命令会展示当前标签、待删除队列、缓存 TTL 和瘦身进度/ctx-flush可强制立即应用所有排队操作效果长会话中缓存命中率保持在高位按缓存计费的供应商下成本显著降低且没有压缩暂停打断工作流。小结Magic Context 的上下文瘦身哲学可以浓缩为三句话先编号再动手——§N§ 标签让每次删除都精确、可追溯、可回放只盖章不抢跑——ctx_reduce 只入队落地永远搭在既有的缓存失效上删了都能回来——原文永久归档ctx_expand 一键取回。这套机制让无限长的会话不再是口号上下文自己管理自己而缓存始终活着。【免费下载链接】magic-contextUnbounded context. Memory that manages itself. One session, for life. The hippocampus for coding agents, part of CortexKit.项目地址: https://gitcode.com/gh_mirrors/mag/magic-context创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考