Skip to content

手动指向 bili 代理时双重压缩:bcp 只认 BILLION_CONTEXT_PROXY 环境变量,不识别 baseUrl 的 /bili/ 模式 #296

Description

@ranxianglei

背景

pi 用 ACP 有两条路:客户端扩展(billion-context-pi)和 wire 代理(billion-context)。两者同时激活会对同一份会话双重压缩——浪费 token、产生嵌套冗余摘要、ref 体系混乱。

现状:launcher 路径已闭环(已验证)

  • bili pi 等所有 launcher 路径都向客户端注入 BILLION_CONTEXT_PROXY=origin(billion-context src/launcher.ts:333/337/466/2088/2124/2146)
  • bcp 工厂首行检查该变量并整体让位(src/index.ts:49-52:log [bcp] disabled 后 return,不注册工具/transform)
  • 即使 settings.json 里装着 bcp(overlay 保留 packages 条目、扩展会加载),加载即让位 ✅

缺口:手动配置路径

用户不起 launcher,而是:

  1. 单独跑代理(bili start / bili-proxy)
  2. 手动把 pi 的 models.json baseUrl 指到 http://127.0.0.1:PORT/bili/https://upstream...(或自己设 HTTPS_PROXY 但不导出 BILLION_CONTEXT_PROXY)

此时 BILLION_CONTEXT_PROXY 未设置 → bcp 全功能激活 + 代理照常压缩 → 双重压缩

README 明确宣传 "Any agent that can set a base URL works out of the box",pi 属于此类,该组合是合理用法而非误用。

证据

  • bcp 唯一的代理检测是 process.env.BILLION_CONTEXT_PROXY(src/index.ts:49),不检查 ctx.model.baseUrl
  • 薄壳插件已有现成的 URL 模式检测可复用:billion-context src/agent/shared.ts:23 proxyBaseFromUrl —— http(s) URL、首段路径为 bili、余下部分匹配 /^\/https?:\/\//(避免普通 /foo/bili/ 路径误判)

建议修复

bcp 在首个带 model 上下文的事件(session_start / 首次 context transform)上惰性检测 ctx.model?.baseUrl:命中 /bili/<scheme>:// 模式则按与 env 相同的方式让位(log + return)。env 检查保留为主信号——MITM 透明模式(HTTPS_PROXY,URL 无 /bili/ 前缀)只能靠 env 识别(见 shared.ts:38 注释),文档应提示手动用 HTTPS_PROXY 的用户同时导出 BILLION_CONTEXT_PROXY

影响面

中等:需要用户刻意手动接线(非文档主推的 bili pi 流程),但一旦发生每轮请求都被两侧各压一遍,长会话下 token 浪费和摘要嵌套会持续累积。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions