
字节笔记本
2026年10月11日 · 约 4 分钟读完
别等窗口到顶再砍上下文
别等窗口到顶再砍上下文
编码智能体开长会话,窗口还没到顶,前缀就被硬截断切掉。旧工具输出找不回,前缀缓存也碎。公开插件 billion-context 把这条默认路径改成代理:模型自己决定何时把一段折成高保真摘要,必要时再按段解压。仓库约 742 星,周榜可见,语言是 TypeScript。作者写明,十万级窗口就该撑得住按月计的会话,而不是先砍。
它不是再做一次本地摘要命令。代理夹在智能体和模型接口之间,读两家常见请求格式,走内核,注入压缩、解压、检索和状态四件工具,再把流式响应写回去。压缩由模型点名,不是固定切条。子会话可以读父会话的折叠段,不必整段拷贝,并带深度和环路限制。三种接法是插件、启动器和地址前缀。状态页还在早期,仓库用五百多个模拟测试托底。

硬砍和折叠,账单差在缓存
硬截断到顶就砍,前缀一变,缓存命中掉一截,旧话也难找。折叠把区间收成摘要,需要时再解压,前缀尽量不动。仓库给出的健康会话是前缀命中 95% 到 97%,压缩本身花费不超过 2%,整体大约少走五倍 token。研究口径写了 4.5 个月、3 台主机、174327 次调用、187.6 亿输入 token,三台合计约 247 亿。在 204800 token 的模型上没有窗口违例。马拉松会话大约 8584 到 12049 次调用。
这些数字是作者自报的研究记录,不是第三方复现。读法应先看成对条件:同一会话里,硬砍会不会把前缀缓存打穿,折叠能不能把旧工具输出找回来。命中掉下去,常见原因是缓存过期、换模型或换密钥,以及实现缺陷。第一次软折可能要等到大约 20 万 token,除非把启动上下文收短。远程绑定没有鉴权,管理面应留在本机回环。部分客户端没有插件缝,只能走中间人或地址前缀。两套扩展叠在一起会折两次。
许可以 MIT 为底,另有一条可见署名要求:靠它做出来的面向用户的产品或服务,应写出项目名并链到仓库。文档站可以算进服务端场景。论文目录里的文稿也按 MIT 放,允许改。客户端表覆盖命令行编码助手、编辑器插件和一批国产命令行。没有缝的二进制就走通用前缀。

先接代理,再谈能不能少砍
安装走用户前缀,避免用管理员权限写全局目录。命令名是 bili。有插件缝的客户端先装插件再照常启动。没有缝的用启动器,或先起代理,再把模型地址指到本机回环的代理前缀。手动守护默认 8787 端口,派生命名从更高端口起。会话标识沿用客户端自己的对话值,不另造一套。状态和日志写在用户状态目录,不要把路径抄进分享稿。
npm install -g billion-context --prefix=./user-prefix
bili plugin install 客户端名上面第二条里的客户端名换成实际助手。只要地址前缀时,先启动代理,再把原上游接在本机回环的 bili 路径后面。调试可开旁路,确认请求确实经过内核。作者提醒:旧扩展和新插件一起开,会重复压缩。桌面版编码页可能绕过代理,却把原生压缩关掉。某些助手不能走证书中间人。会话垃圾回收是选择加入,压过的会话默认不删。
痛点很具体。长会话不是先把窗口加到一百万,而是先问旧观察还在不在、前缀缓存还在不在。复现应先看健康命中和压缩花费并排,再决定要不要让模型自己折。只报窗口长度,等于把砍掉的那一截写成了模型记性好。



