开源|PicoContext + AnchorMemory:零依赖的 LLM 上下文压缩引擎与语义记忆系统,压缩比 3-10x

31 阅读3分钟

前段时间在做 LLM Agent 的时候发现一个很实际的问题:Agent 跑久了对话历史越来越长,每次调用都塞进 prompt 里,token 消耗涨得肉疼。而市面上要么闭源要么依赖一大堆,就想干脆自己写一个。 9 10 经过一段时间打磨,我开源了 PicoContext + AnchorMemory,一个 LLM 上下文压缩引擎 + 语义记忆系统。(AGPL v3) 11 12 --- 13 14 PicoContext —— 对话历史压缩器 15 16 把 messages 数组无损压缩成 {π索引 + payload} 格式,压缩比实测 3-10x。 17 18 javascript 19 const { PicoContext } = require('picocontext'); 20 const ctx = new PicoContext(); 21 22 // 压缩 30 轮对话(约 31KB → ~1.2KB) 23 const compressed = ctx.compress(longConversation); 24 // → { piIndex: '036866163377', payload: 'eJx...', metadata: { compressionRatio: 25.8 } } 25 26 // 解压 100% 还原 27 const restored = ctx.decompress(compressed); 28 29 // π索引验证完整性 30 ctx.verify(longConversation, compressed.piIndex); // true 31 ctx.verify(tamperedConversation, compressed.piIndex); // false 32 33 34 三个差异化点: 35 1. π索引验证 — 基于圆周率数字位置的哈希映射,只验证 π索引(12字节)就能判断对话是否被篡改,不必先解压再对比 36 2. 零外部依赖 — 核心算法只用 Node.js 内置的 cryptozlibnpm install 一秒完事 37 3. 增量追加ctx.append(compressed, newMsg1, newMsg2) 直接在已有压缩结果上追加新消息,不用从头压缩 38 39 --- 40 41 AnchorMemory —— 语义记忆系统 42 43 跟 PicoContext 搭配使用,一个管压缩、一个管索引。 44 45 javascript 46 const { AnchorMemory } = require('anchormemory'); 47 const mem = new AnchorMemory({ dimension: 256 }); 48 mem.initAnchor('我的技术笔记'); 49 50 // 存储记忆 51 mem.remember('Rust的所有权系统在编译期保证内存安全,无需GC', { tags: ['Rust'] }); 52 53 // 语义搜索 54 const results = mem.recall('内存安全', { limit: 3 }); 55 // → [{ content: 'Rust的所有权系统...', similarity: 0.87 }] 56 57 // 链式联想:从一条记忆自动跳转到最相似的下一条 58 const chain = mem.chainRecall('并发编程', { maxDepth: 4 }); 59 60 61 隐私设计是亮点:记忆内容编码为"相对于锚点的向量差"。文件泄露了也没用,不知道你的锚点种子就无法还原任何内容。 这是刻意做的"可否认的隐私"。 62 63 超维向量引擎也是零外部依赖,SHA256 → 确定性伪随机 → Float32Array(500维) 纯 JS 实现。 64 65 --- 66 67 几个硬数据: 68 - 5 轮简短问答:压缩比 ~2.5x 69 - 30 轮中等对话:压缩比 ~10-25x(文本重复度高时更优) 70 - 200 轮超长对话:压缩比 ~30x+(实测 200轮/320KB → ~10KB) 71 - 单次压缩/解压:~10-50ms(纯 JS,无原生模块) 72 - 全部代码:两个包加起来 ~1500 行 73 74 适用场景: 75 - Agent 持久记忆(把历史对话压缩后存数据库,下次解压注入) 76 - 跨会话上下文保持(AnchorMemory 记得用户偏好,PicoContext 压缩历史) 77 - 个人知识库的语义索引 78 79 GitHub:github.com/zhaohongbo8… 80 81 欢迎 Star / Issue / PR。如果使用中有任何问题或者建议,可以在这里讨论。