x-bili-plugin-bypass: 1 允许强制指定,现在opencode acp存在的时候bili自动禁用,理论上至少有环境变量可以关闭这个功能。
Activity
[-]x-bili-plugin-bypass: 1 允许强制指定[/-][+]x-bili-plugin-bypass: 1 Allow forced specification | x-bili-plugin-bypass: 1 允许强制指定[/+]ranxianglei commentedon Nov 11, 2026
🔶 需要决策
查重:不重复。已查 open/closed issues 与在途 [PR],无其他条目涉及「强制指定 x-bili-plugin-bypass」或「控制 opencode-acp 自动禁用」(唯一沾边的 #6211 是 Windows NO_PROXY 通配符,与本主题无关)。
背景一句话:opencode 车道里,bili 靠「acp 状态文件是否存在」自动决定某个会话走哪条压缩路;装了 opencode-acp 且有历史会话时,这些会话就静默绕过 bili、改由进程内 acp 压缩。目前没有任何开关能手动改这个决定。
现在到底怎么判定的(证据)
<XDG_DATA_HOME|~/.local/share>/opencode/storage/plugin/acp/<sessionID>.json(src/agent/opencode-legacy.ts:126)。x-bili-plugin-bypass: 1头的是 opencode 宿主进程里的插件钩子chat.headers(src/agent/opencode-native.ts:846):命中 legacy 就盖头并提前返回;proxy 侧见头即原样透传(不注入工具 / 不 nudge / 不绑会话,src/server/handle.ts:640),bili 的压缩因此被跳过。isLegacy(src/agent/opencode-native.ts:735,deps.isLegacy ?? isLegacyAcpSession)。所以加覆盖开关只需在这一个缝上包一层,两个方向都能一致生效——不是散点改动。待决问题:新增一个宿主侧覆盖开关(env),叫什么、三态语义怎么定。这属于新增配置面(owner-gate),按规矩实现前需要你拍板。
推荐方案 A:新增 env
BILI_OPENCODE_ACP_BYPASS,三态,在opencode-native.ts:735那个缝上按值包一层isLegacy:auto(默认)=现状,按状态文件逐会话检测 —— 零行为变化。1/on=强制 bypass:所有 opencode 会话都盖 bypass 头 → 全交进程内 acp 压。0/off=强制 plugin:永不盖头 → bili 自己压所有会话(acp 的 transform/命令门一并关掉,不会双处理)。BILI_OPENCODE_ACP_SPEC;env-only 符合「foreign host process 读的宿主姿态」这一类(同一先例)。launcher 会把 shell 里的 BILI_* 继承给 opencode 子进程,standalone 和bili启动两种方式都能生效。为什么不选别的
我的推荐:A(env-only 三态,默认 auto 零改动)。理由:完全命中你说的「至少一个环境变量能关这个功能」;默认不动任何现有用户;env-only 不扩张 config schema;三态一次到位。
不决定的默认行为:我先不改代码(守 config-surface gate)。你回一句「可以 / 按你说的来」我就落地 A:单点改那个缝 + 正负用例单测(宿主侧盖头;proxy 侧已有
tests/plugin-bypass.test.ts)+ docs/configuration.md 双语补一段,然后开 PR。标签:opencode / scope/wiring / p3 —— opencode 车道接入层的控制面增强,非缺陷、非核心压缩逻辑,默认零行为变化不影响现有用户。
(ai: qwen/qwen3.8-27b)
ranxianglei commentedon Nov 11, 2026
🔶 需要决策(补充确认,接上一条决策请求,避免断线)
已完成:查重(不重复,唯一沾边的 #6211 是 Windows NO_PROXY 通配符,无关)+ 打标签(opencode / scope/wiring / p3)。机制已查清——legacy 判定 = acp 状态文件存在与否(
src/agent/opencode-legacy.ts:126);宿主侧chat.headers命中就盖x-bili-plugin-bypass: 1(src/agent/opencode-native.ts:846);proxy 见头即原样透传、跳过 bili 压缩(src/server/handle.ts:640)。所有相关门都读同一个可注入谓词isLegacy(src/agent/opencode-native.ts:735)→ 加覆盖开关是单点改动,不是散点。待你拍板:推荐方案 A —— 新增 env
BILI_OPENCODE_ACP_BYPASS,三态{auto=默认零行为变化 / 1=强制 bypass / 0=强制 plugin},在那个缝上按值包一层isLegacy。两条风险做成大声告警:①强制 on 但 acp 没真正加载 → 流量原样直发、无压缩;②强制 off 且存在 legacy 旧会话 → refs/tag 空间在 acp store 里,bili 服务不了完整历史(退化只读存档)。env-only,不扩张 config schema。为何先停手:新增配置面属 owner-gate,未拍板前不写代码。
下一步:回一句「可以 / 按你说的来」我就落地 A —— 单点改缝 + 宿主侧盖头正负用例单测(proxy 侧已有
tests/plugin-bypass.test.ts)+ docs/configuration.md 双语补一段,然后开 PR。(ai: qwen/qwen3.8-27b)
ranxianglei commentedon Nov 11, 2026
为啥不叫x-bili-plugin-bypass本身,不仅仅是opencode,其他的冲突也会自动关闭呀 所以还是要有一个通用的 和opencode没关系吧
ranxianglei commentedon Nov 11, 2026
你说得对——上一版把开关绑死在 opencode 上,名字和定位都偏了。查完代码确认一下事实,再给修正方案。
查证:
x-bili-plugin-bypass到底谁在用chat.headers(src/agent/opencode-native.ts:849),命中 legacy 才盖头。src/server/handle.ts:640只判「这个头是不是 = 1」,是哪个客户端发的完全不管 → 命中就原样透传、不进管线。所以这确实是一条通用 wire 契约,opencode 只是当前唯一发送方,机制本身跟 opencode 无关。你的判断成立。x-bili-passthrough(native-intercept 分流请求打,src/agent/native-intercept.ts:1887/:2078,消费在handle.ts:371)、bili→bili 链检测(BILI_HOP_HEADER)、side request 直转(src/preflight.ts:440)。「bili 决定不处理这条请求」是个更宽的主题,bypass 头只是其中一条。修正:改名 + 挪到通用层
BILI_PLUGIN_BYPASS(env 形式对应x-bili-plugin-bypass),去掉_OPENCODE_ACP_。handle.ts:640——在那儿按值覆盖判定,才真正「跟客户端无关、对所有生产者统一生效」(将来别的客户端也发这个头,同一个开关管得住),而且改动更集中(一处判定,不用像宿主侧那样包一个喂给 7 个门控的谓词)。三态:1= 强制 bypass:所有流量原样透传;0= 永不 bypass:忽略任何入站 bypass 头(含 opencode legacy)。必须让你知道代价(proxy 层 = 全局生效,不是按会话)
1会把所有车道的压缩都关掉,不只 opencode——适合当显式逃生阀,会大声告警。0会让任何依赖 bypass 的客户端(今天就是 opencode legacy)丢掉进程内压缩,那些旧会话历史退化为只读存档——同样大声告警。这正是你要的「关掉自动禁用」,但它是全局的。我的推荐:
BILI_PLUGIN_BYPASS@ proxy 层,默认未设零改动——最贴合你说的「通用、跟 opencode 没关系」。若你其实只想压住 opencode 那一条、不想波及别的车道,那就退回宿主侧实现,但那样用通用名会名不副实。两者我都做得出,我倾向 proxy 层;你点头选哪个即可。下一步:确认「proxy 层 / 通用名」后我就落地(handle.ts 判定处加覆盖 + 正负用例单测 + docs/configuration.md 双语一段)并开 PR;未确认前不动代码(config-surface gate)。
(ai: qwen/qwen3.8-27b)
ranxianglei commentedon Nov 11, 2026
继续
ranxianglei commentedon Nov 12, 2026
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b)
已按拍板方案落地,PR 已开:**https://github.com/ranxianglei/billion-context/pull/6360**(`Fixes #6220`)。
BILI_PLUGIN_BYPASS三态(env-only,逐请求读取、无需重启,单点改src/server/handle.ts判定):x-bili-plugin-bypass头,legacy opencode-acp 会话也走完整管线。验证:typecheck 干净、build 成功、
tests/plugin-bypass.test.ts6/6 过(含 force-off 覆盖头→注入 compress 工具的关键用例)、config-surface-guard + gen-config-docs check-coverage 均过。全量回归由 CI 跑。docs/configuration.md 双语 + config-reference seed 已补。docs: register BILI_PLUGIN_BYPASS in the lifecycle ledger (#6220)
fix: drop unused export from PluginBypassOverride type (#6220)