You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
① bili 的转发是黑名单制,不是白名单(src/server.ts:2009-2016)
除 hop-by-hop(connection/keep-alive/proxy-auth 等,RFC 7230 §6.1)和 bili 内部标记外,客户端发的所有 header 原样转发;body 里我们只重写 messages/tools/system,prompt_cache_key 透传或盖戳,其余字段(metadata、client_metadata、自定义字段)一律不动。→ dsh 或任何客户端今天若在发私有粘性字段,它已经到达中转站了,不是被 bili 吃掉。
② 开源中转网关生态的亲和载体清点(查了 sub2api、codex2api、caveman 这几个主流 OpenAI 兼容网关的实现):
Activity
ranxianglei commentedon Oct 13, 2026
[bot] 🏷 日志包收到了。我把你 DSH agent 的两份报告逐条对过原始数据,又对着 bili 源码把每条归因的代码路径审了一遍。结论先说:bili 没有弄坏你的缓存——命中率下降里约 81% 是指标假象(压缩把分母缩小了 2.4 倍),19% 是中转站自身的上游失效(装插件前就存在),插件自身只贡献约 0.74pp 的真实 miss。
我验证了什么(不是只信你 DSH 的总结):
Σinput = Σcached + nc + cr + tr残差为 0(kernel/src/cache-report.tsdecomposeSample,精确闭合无估算)——你 DSH 复算的数字和 UI 完全一致,可信;src/cache-ledger.tsdetectSeam)——字节都对上了,丢就不可能是 bili 的锅;kernel/src/render-refs.ts);nudge 只作为临时 user message 追加在尾部,不碰历史中段(src/server/prepare-openai.ts:266-314);x-session-id 粘性路由 header 有转发、dsh 自己的 prompt_cache_key 原样透传(上游侧失效导致缓存命中只有80%用的api反代 workbuddy glm5.3 #2218/研究https://github.com/Wei-Shaw/sub2api 和bili配合的时候各种可能的缓存命中,兼容性等问题 #1931);八问:
computeFoldEconomics公式)。/acp-cache页和__bili/cache-reportAPI 都有按站点拆分——哪个站点单日「上游侧失效」占比突增(>10%),直接换站。compress.nudgeGrowthTokens(默认 50000,上下文增长多少触发一次折叠建议)→ 试 100000;compress.minCompressRange(默认 5000 字符,最小可折叠范围)→ 相应调大。效果:折叠次数减半、单次更深、回补占比下降;代价是折叠前上下文略高(你现在均值才 88K,余量充足)。调完观察/acp-cache的 paidBack 计数和「压缩回补」总量一天再定。compress.nudgeGrowthTokens(默认 50000)、compress.minCompressRange(默认 5000 字符),都在~/.config/billion-context/billion-context.json的 compress 段。你说还要多跑跑再给 AI 总结——下次数据请带上按站点的每日 tr/input 和请求间隔分布,重点验证哪几个站的失效在爆发、以及换站后命中率是否稳住。
判定:未发现需要修复的 bili 缺陷(seam 1.8% 属正常折叠成本);本 issue 主线动作 = 中转站选择/粘性路由确认 + 折叠节奏调参,等你后续测试数据。
jycs0o0o0 commentedon Oct 13, 2026
ranxianglei commentedon Oct 13, 2026
[bot] 🏷 收到,这个反馈很关键——长任务不降智、1000+ 步不断档,这正是 bili 存在的意义(把上下文一直压在低位,避免你以前 500-800K 时那种上游按输入量变慢的区间)。省不省钱是次要的,干活顺畅才是主收益。
调「跳大数值」时提醒两点:
compress.nudgeGrowthTokens建议先 100000(默认 50000 的 2 倍)跑一天,看/acp-cache页的 paidBack 计数和「压缩回补」总量再决定要不要继续加。调得越高,折叠越少、回补越省,但上下文会顶得更高——如果哪天你又感觉长任务后期变慢,就是调过头了,往回收一点。你持续用、多跑两天后把数据丢过来(有 AI 总结更好),我帮你核对调参方向对不对。
fix: body-stability classifier gains a tail class for post-array dive…
ranxianglei commentedon Oct 13, 2026
#1997 看看和这个是否有关
ranxianglei commentedon Oct 13, 2026
[bot] 🏷 查了 #1997(含 floor 8/10 你的裁决和 PR #2035)——部分相关:同一个机制域(折叠节奏 ↔ 缓存指标),但 #2980 的主因不在 #1997 的射程内。三点:
分母效应互相印证。缓存变低,上游还总丢缓存 #2980 用户数据独立复现了你在 Supports dynamic compress.nudgeGrowthTokens | 支持动态compress.nudgeGrowthTokens #1997 floor 8 的判断:压缩把单请求上下文从 218K 缩到 88K,同样几千 tok 的失效占比放大 2.5 倍;反事实检验(post-miss 量放回 pre-context)= 96.45% ≈ 装前实测 97.68%,即降幅 81% 是分母假象。这是第二个独立数据点(不同用户、dsh 宿主、中转站链路),支持你「基于缓存角度的动态调节不予考虑」的裁决——命中率 % 确实不该当调节信号。
我给用户的建议与 feat(#1997): throughput-adaptive nudge cadence (compress.nudgeAdaptive) #2035 同线递进。缓存变低,上游还总丢缓存 #2980 里我建议他手动把
nudgeGrowthTokens从 50000 调到 100000 减少折叠(他的 157 次折叠:25 次没回本、92/142 节奏不达标,cr 回补占 miss 9.3%)。feat(#1997): throughput-adaptive nudge cadence (compress.nudgeAdaptive) #2035 合并发布后,他这种「长任务+批量工具输出」的负载直接开nudgeAdaptive: true比手挑静态值更贴切(突发自动放宽、安静期收窄)。等它 ship 我会在 缓存变低,上游还总丢缓存 #2980 更新建议指向 nudgeAdaptive。Supports dynamic compress.nudgeGrowthTokens | 支持动态compress.nudgeGrowthTokens #1997 解不了 缓存变低,上游还总丢缓存 #2980 的大头。该用户 miss 的 54% 是中转站上游失效(TTL/节点轮换/密钥池轮换,站点性爆发,装插件前就存在),pp 降幅的 81% 是分母效应(压缩固有代价,Supports dynamic compress.nudgeGrowthTokens | 支持动态compress.nudgeGrowthTokens #1997 已裁决接受)。feat(#1997): throughput-adaptive nudge cadence (compress.nudgeAdaptive) #2035 只优化插件自身那 ~0.74pp(cr 回补部分)。所以即使 feat(#1997): throughput-adaptive nudge cadence (compress.nudgeAdaptive) #2035 合并,他的命中率也不会回到 95%+,主杠杆仍是换站 + 确认中转站粘性路由(x-session-id/prompt_cache_key)。
现状核对:PR #2035 仍 open 未合并(master 还在 0.1.195,
src/config.ts无 nudgeAdaptive 字段),用户跑的也是 v0.1.195——眼下只能手动调参,等合并发布后切自适应。ranxianglei commentedon Oct 13, 2026
所以还是中转的miss问题 miss的话我们是加了prompt_cache_key的 不知道用户上游是啥中转 是否需要适配
ranxianglei commentedon Oct 13, 2026
[bot] 🏷 结论先说:不需要通用适配——数据已经把变量隔离到「站」本身了。证据和现状如下。
1. 变量是站,不是链路(最硬的两组对照)
用户机器上 DSH 自己的 siteledger(记录的是上游返回的真实 usage,比 bili 侧估计更客观)给出:
→ 站的缓存行为差异早于且独立于 bili。30 天总均值其实是 96.67%,他感觉的 85-90% 是被重用了坏站的几天拉下来的。
2. bili 现在已经发了什么(代码核对过)
x-session-id:dsh 插件车道无条件转发(会话 id 稳定值,src/server.ts:2068-2071,上游侧失效导致缓存命中只有80%用的api反代 workbuddy glm5.3 #2218/研究https://github.com/Wei-Shaw/sub2api 和bili配合的时候各种可能的缓存命中,兼容性等问题 #1931);prompt_cache_key:dsh 车道在目的地为 admin 路由改写或 loopback 时由 bili 盖戳为 session.id(src/server/prepare-openai.ts:355-357,上游侧失效导致缓存命中只有80%用的api反代 workbuddy glm5.3 #2218);客户端自带 pck 则原样透传(客户端优先);prompt_cache_retention主动剥离(第三方可能 400,[Bug] bili omp 扩展 stampPromptCacheKey 无条件注入顶层 prompt_cache_key —— 严格 schema 上游(opencode zen anthropic 端点)全量 400 #1403);3. 为什么再发别的 header 大概率没用
providerSide 归因的前提是出站体字节稳定证明——能发的稳定信号都发了。若站在用其中任何一个(x-session-id / pck),连续轮次就该命中;实际是爆发式丢 → 要么这站根本不按这些信号路由(纯池子轮询),要么它的后端轮换/TTL 本身就在杀缓存条目。对不按信号路由的站,换发什么字段都不改变结果;这类只能靠换站或商家提供粘性能力。
4. 唯一值得留的适配口子(需要你拍板,不预建)
如果确认某个具体站有私有粘性机制(自家 header/body 字段,商家文档可查),那么「按 provider 配置额外粘性 header」就是对的适配——这是配置面变更,按规矩先立项等你签,我不擅自建。前置条件是先知道用户主力站是谁、支持什么。我会在帖子里问用户:主力站名 + 是否问过商家的路由机制。
5. 顺手补了一个诊断项
往 #2982(缓存诊断面)加了个 checklist:出站时把实际生效的亲和信号(x-session-id 有无、pck 盖戳/透传)记进 cache-report,以后这类「站丢缓存」工单可以直接核对发了什么,少一个排查变量。
ranxianglei commentedon Oct 13, 2026
如果确认某个具体站有私有粘性机制(自家 header/body 字段,商家文档可查),那么「按 provider 配置额外粘性 header」就是对的适配
我怀疑可能还有私有适配的的header或者共有的我们没有发
ranxianglei commentedon Oct 13, 2026
[bot] 🏷 两个方向都查了:①bili 有没有把客户端发的亲和字段丢掉——没有;②生态里「共有的」载体我们漏没漏——没漏。证据如下。
① bili 的转发是黑名单制,不是白名单(
src/server.ts:2009-2016)除 hop-by-hop(connection/keep-alive/proxy-auth 等,RFC 7230 §6.1)和 bili 内部标记外,客户端发的所有 header 原样转发;body 里我们只重写 messages/tools/system,prompt_cache_key 透传或盖戳,其余字段(metadata、client_metadata、自定义字段)一律不动。→ dsh 或任何客户端今天若在发私有粘性字段,它已经到达中转站了,不是被 bili 吃掉。
② 开源中转网关生态的亲和载体清点(查了 sub2api、codex2api、caveman 这几个主流 OpenAI 兼容网关的实现):
x-session-idprompt_cache_keyX-Grok-Conv-Idclient_metadata.session_id/ body metadataIdempotency-Key/previous_response_id结论:可验证范围内没有漏发的「共有」载体——真正起作用的两个(x-session-id + pck)恰好就是 bili 在 dsh 车道主动保证发出的。DeepSeek 官方 API 本身没有亲和键文档,deepseek-走-中转的场景里一切取决于中转层自己的实现。
③ 私有机制没法从我们这边枚举,商业站的文档不公开。可靠路子只有两条:
建议下一步:我在帖子里问用户主力站是谁 + 让他问下商家;如果确认某站有私有字段,再立「按 provider 配置额外粘性 header」的配置面提案(等你签,不预建)。#2982 里的出站信号可见性诊断项保留——以后这类工单先核对「发了什么」,少一个变量。
fix: body-stability classifier gains a tail class for post-array dive…
jycs0o0o0 commentedon Oct 15, 2026