十亿级上下文

ranxianglei/billion-context 访问 GitHub ↗
🔤 TypeScript ★ 1719 ⑂ 0 weekly #10 (+888) 抓取 2026-10-18

一句话简介

一个面向超长上下文处理的 TypeScript 工具库,支持十亿级 token 场景下的文本检索、分析与会话管理。

标签

  • 超长上下文
  • TypeScript
  • 文本处理
  • AI 基础设施
  • 检索增强

适用应用场景

  • 百万级文档的相似度检索
  • 超长法律文档的问答与分析
  • 多文档融合的智能体对话管理
  • 代码仓库级别的语义搜索

README 中文摘要

项目简介

billion-context 是一个上下文压缩代理插件。它位于任意编码 Agent 与模型 API 之间,使用 acp-kernel 对 Anthropic 或 OpenAI 协议的流式请求进行重写。模型自行决定何时、对哪些内容生成高保真摘要,而不是依赖硬性截断。

解决的问题

长时编码会话会让上下文急剧膨胀:每 token 都在计费,一旦超出窗口会话就会降级或中断。billion-context 将已消费的对话压缩为分层摘要,使单个会话可以持续运行数天、通过单一上下文窗口处理数十亿 token。与宿主自带的摘要器相比,这里的压缩是增量、可逆且对前缀缓存友好的:摘要按小段写入、可按需解压、前缀缓存保持完整。

技术架构

代理位于客户端与模型 API 之间:

Agent (Claude Code / Codex / Cursor / Aider ...)
        │  将客户端的 base URL 指向代理
        ▼
┌─────────────────┐
│  billion-context│   1. 解析请求(Anthropic 或 OpenAI 形态)
│     proxy       │   2. 对会话执行 acp-kernel 压缩
│                 │   3. 注入 compress 工具与压缩策略
│                 │   4. 转发到真实模型 API
│                 │   5. 重写流式响应
└─────────────────┘
        │
        ▼
   真实模型 API(Anthropic / OpenAI / 兼容协议)

上下文管理工具

代理向会话注入四个工具,模型在上下文增长时自行调用,compress 由代理在服务端执行,已折叠的区间在历史中保持摘要状态直至恢复:

  • compress:将一段消息折叠为详细摘要。
  • decompress:需要原始细节时还原已压缩区间。
  • search_context:在压缩摘要与可见消息上做关键词检索。
  • acp_status:查看上下文占用与可压缩区间。

安装

Linux / macOS 推荐使用用户级前缀(避免 sudo 与权限问题):

npm install -g billion-context --prefix=~/.local

bili 命令会安装到 ~/.local/bin(多数发行版已位于 PATH)。若不存在,可将 export PATH="$HOME/.local/bin:$PATH" 加入 ~/.bashrc 或 ~/.zshrc。在 nvm 或 Homebrew 安装的 Node 环境下,默认前缀已属于当前用户,直接 npm install -g billion-context 即可。Windows 的默认前缀(%APPDATA%\npm)同样可写。

bili-proxy 保留为别名。若旧版根用户拥有的前缀触发 EACCES,重装时仍需传入 --prefix=~/.local,这是永久修复方式。

三种使用方式

方式一:原生插件(bili plugin install <client>)

代理内置于客户端:安装一次后正常启动客户端即可,无需启动器、环境变量、固定端口或修改 URL。目前支持 pi、omp、opencode(1.x / 2.x)、dsh、kimi、hermes、zcode、claude、codex:

bili plugin install pi          # 在 pi 的 settings 中注册 billion-context 条目
bili plugin install omp         # 在 ~/.omp/agent/config.yml 写入扩展条目
bili plugin install opencode    # 注册插件并禁用原生自动压缩
bili plugin install dsh         # 对每个 profile 执行 dsh plugin --profile <name> add billion-context
bili plugin install kimi        # 写入 $KIMI_CODE_HOME/plugins/managed/billion-context/kimi.plugin.json
bili plugin install hermes      # 复制 Python 插件至 ~/.hermes/plugins/billion-context/
bili plugin install zcode       # 写入 hooks.enabled 与 mcp.servers.bili 配置
bili plugin remove <client>     # 撤销(dsh 走相同通道;配置快照保存为 .bili-bak)

bili plugin install codex 仅写入 [mcp_servers.bili] 块,因此 codex 用户需要先启动 bili(bili start 或其他客户端的 lane 代理)。

原生模式与独立扩展(billion-context-pi、opencode-acp)互斥——安装器会替换旧条目并将原配置快照到 .bili-bak。

方式二:启动器(bili <client>)

一条命令同时拉起代理与客户端:代理在独立端口运行(始终新开实例、永不复用端口),客户端通过证书 MITM 或 /bili/ 配置重写指向代理,真实配置文件始终不被修改。宿主配置仅用于读取其所用的 HTTPS 上游主机,并将这些主机加入 MITM 白名单。

示例:

bili pi                               # 代理 + 启动 pi(无文件改动)
bili codex                            # 代理 + 启动 codex
bili claude                           # 代理 + 启动 claude
bili opencode                         # 完整指南见 CLIENTS.md
bili kimi                             # Kimi Code CLI
bili gemini                           # Gemini CLI
bili iflow                            # iFlow CLI
bili qwen                             # Qwen Code
bili antigravity                      # Antigravity CLI(agy,Google)
bili aider                            # Aider
bili copilot                          # Copilot CLI
bili amp                              # Amp CLI
bili goose                            # Goose(Block,Rust/reqwest)
bili pi --mitm-domain api.foo.com     # 向 MITM 白名单追加域名

方式三:URL 修改(/bili/ 前缀)

先启动代理:

bili

然后在客户端的 baseURL 前加上 http://localhost:8787/bili/,完整的上游 URL 编码在路径中:

客户端 baseURL 修改前:  https://api.openai.com/v1
客户端 baseURL 修改后:  http://localhost:8787/bili/https://api.openai.com/v1

端口分配

bili start(手动模式)占用 8787。各 lane 自动分配的实例从 18787 起独立管理,端口冲突时 +1 漂移且每条 lane 记录漂移量;升级重启时会等待旧构建释放端口(最长 5 秒)以避免漂移。

验证

代理运行后执行健康检查与实时统计:

curl -s http://localhost:8787/__bili/health
# → {"ok":true,"upstream":"https://api.anthropic.com"}

curl -s http://localhost:8787/__bili/stats    # 实际请求后的会话统计

随后从客户端发送一条消息,观察日志(~/.local/state/billion-context/)中的压缩活动。

摘要更新于 2026-10-18 00:36:48 · 原文 56694 字符 · md5 d6292672b5d2…