(ai: zhipuai-lb/glm-5.3) 总跟踪:#3938(前缀缓存统一修复)。本 issue 按 Kernel Boundary 落 kernel 侧改动的正式批准与验收口径,范围 = **PR-B 折叠边界事务化 + PR-C wire 字节保真**。owner 已在 2026-10-20 分诊中批准方向并给出前置条件(打桩先行、语义不变);请在本 issue 回复确认后开工。 ## 为什么宿主侧解决不了 四个现行肇事写者里三个物理住在 kernel 里(`hide-consumed.ts` / `refs.ts` / `truncate-tools.ts`),加上 wire 编解码归一化(`kernel/src/wire/*`)。宿主只能在出口「看见」字节变了,管不了它们的触发时机——像能在收银台发现丢了货,管不住仓库里谁动了货。 ## 改动面 1. **hide-consumed 折叠门控**:轮换删除/rewriteCompressText 剥改/摘要打桩的字节变化,排队到下一折叠/refold/用户动作边界才生效(吸收 #3784 的门控模式,覆盖其范围)。 2. **ref 迁移渲染推迟**:BLOCKED 解除时只铸号不渲染,旧载体文本前标签出现推迟到折叠边界(治 #3805)。 3. **截断 latch**:水位触发 clip 后保持 clip,直到折叠事件重置(治 #3691 振荡)。 4. **多 range 全有或全无**:提交前预检所有 range 可折叠性,任一致命则整批拒绝(吸收 #3670,治 #3003)。 5. **opt-in 面同规**:absorb 提示/crush/ccr/filter keepLastOnly 开启时同样受折叠门(结构性,非逐个特判)。 6. **wire 保真**:anthropic 未知顶层 block(document/PDF 等)default 透传 + 丢弃告警对齐 openai 线(吸收 #3547,治 #3410);openai leading-opaque 重排、google 排序归一:同一形状每请求必须同一字节(首见冻结或明示 canonical)。 预计 `kernel/src/` 内 6-8 个文件 + `kernel/package.json` 版本 bump;commit 带 `kernel:` 前缀,PR body 带 `kernel-change: 折叠边界事务化+wire保真(#3938)` 声明。 ## 打桩计划(前置,先行单独合入,纯测试零行为变更) 1. hide-consumed 现状 pin:KEEP_LAST_ORPHANED=2 窗口滑动(第 3 个失败挤最老)、剥改、SUMMARY_STUB_CHARS=200 打桩——各一组 characterization 测试钉死当前字节输出; 2. ref 迁移现状 pin:BLOCKED 解除→铸新号→下一轮旧载体前出现标签(当前行为,含触发器=protectedLatestTools 滑窗); 3. 截断现状 pin:0.95 触发、贪心到 0.9、marker 跳过、每请求独立重算; 4. 多 range 现状 pin:后段抛错前段已落地(#3003 形状); 5. wire 四线 unknown-part 处理现状 pin:anthropic 整丢 / openai sidecar / google 兜底 / responses preamble。 之后 PR-B/C 的每个语义变化都能对上「哪条 pin 被有意移动,其余全绿」。 ## 语义不变承诺 - 只动「何时」,不动「改什么」:隐藏内容集合、截断内容、ref 分配规则、摘要文本全部不变; - 金 pin(`tests/golden/wire-contract/kernel.json`:defaultConfig、四个 prompt 规则、tool-name 表、wire markers)不动; - kernel 自有 suite(`npm --prefix kernel test`)+ bili 全量两层绿才算完。 ## 可见行为变化(交底) - 失败 compress 记录消失时机:第 3 个失败出现时 → 下一折叠轮(历史多留几条失败记录,token 略增); - 紧急截断还原:水位回落即还原全文 → clip 保持到折叠(安全侧:宁多截不多变); - 旧 durable 载体标签出现:保护解除当轮 → 折叠轮; - anthropic 请求里未知 block 从静默消失 → 原样透传(上游可能开始收到它以前没见过的块——这是恢复保真,非破坏)。 ## 回滚 每个子改动独立 commit,任一行为退化可单独 revert;打桩测试保留作为回滚判据。
Activity
[-][kernel 专项] 折叠边界事务化 + wire 字节保真(前缀缓存统一修复 #3938 内核侧)[/-][+][Kernel Initiative] Transactional folding boundaries + wire byte fidelity (unified prefix cache fix #3938, kernel side) | [kernel 专项] 折叠边界事务化 + wire 字节保真(前缀缓存统一修复 #3938 内核侧)[/+]ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
查重:不重复。 本 issue 是 #3938(总跟踪)的内核侧专项,与总伞是父子关系而非平行立项。在途 PR 与本专项的关系:
标签:
bug+scope/kernel+p1—— 前缀缓存接缝属成本爆炸级缓存类缺陷(owner 2026-10-19 修订:缓存类一律 p1);kernel 专项无特定客户端,不打客户端标。确认开工。 按 Kernel Boundary 与 owner 2026-10-20 前置条件(打桩先行、语义不变)执行,顺序:
纪律:
kernel:commit 前缀 + PR bodykernel-change: 折叠边界事务化+wire保真(#3938)声明 + kernel/package.json bump;两层测试(kernel suite + bili suite)绿才算完;子改动独立 commit 可单独 revert;可见行为变化按本 issue「交底」节逐条对账。先交打桩 PR,CI 绿后再开 B/C。ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
接单后现状核对(重要,更新上一条开工回复的范围): 我确认开工时,#3939 的 ①–⑤ 已有在途实现——打桩 PR #3941(今日 09:06Z 开,12 条 characterization pins,纯测试零 src 改动,已审可合、等人工合并)与 PR-B #3956(今日 10:51Z 开,五类中途重写全部收敛到折叠边界事务,吸收 #3784+#3670,kernel 0.0.137→0.0.141,lock-sync CI 红已转 ci-worker 处理)。两者均按本 issue 批准的计划执行、方向与打桩先行纪律一致。我不重做 ①–⑤,避免双 worker 撞车;我的车道收窄为 ⑥ PR-C:wire 字节保真(检索 open+closed 确认无 PR-C 在途)。
PR-C 计划(本 issue 第 6 项 + 吸收 #3547 kernel 侧):
kernel/src/wire/anthropic.tsblock switch 补default——未知类型(document/PDF 等)骑既有rawAnthropicBlocksidecar 逐字透传(round-trip 字节精确,与 image/redacted_thinking 同构);kernel/src/protected.ts把未知 block 判为 media+unrecoverable(载荷只在 sidecar、不可归档,折叠即永久丢失,故永不折叠)。治 anthropic wire silently drops unknown top-level blocks (incl. PDF document) when rebuilding history #3410 静默丢数据。[opaque,text,opaque]形状下 leading-opaque PREPEND 与 loop 累积的交互,用首见冻结(original part order 记录在侧车、重建按原序发出)或明示 canonical 序钉死,characterization 证据先行。纪律不变:
kernel:commit 前缀 + PR bodykernel-change: wire保真(#3938/#3939⑥)声明 +kernel/package.jsonbump;金 pin 不动;两层测试绿才算完;子改动独立 commit 可单独 revert。基线策略:先基于当前 master 开发,待 #3941/#3956 合入后 rebase(版本行机械冲突按 #3670 先例解),保证「先 #3941 再 #3956 再 PR-C」的合并顺序成立。可见行为变化交底(PR-C 部分):anthropic 请求里未知 block 从静默整块丢弃变为原样透传上游(上游开始收到它以前没见过的块——恢复保真,非破坏;#3547 已审过的行为变更口径沿用);openai/google 已知形状零字节变化(稳定性证明对象是「跨请求恒等」,不是改输出)。
ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
PR-C 已开:#3961(分支
2026-10-20_3939-prc-wire-fidelity,2 个独立 commit,kernel 0.0.137→0.0.139,body 带kernel-change:声明)。本 issue 第 ⑥ 项完成交付,①–⑤ 由 #3956 承接。八问结论:rawAnthropicBlocksidecar 原样透传(复用 image/redacted_thinking 通道,coreToAnthropic 本就逐字重发),protected.ts 将其计为 media+unrecoverable(吸收 [PR] fix: preserve unknown anthropic top-level blocks verbatim in the anthropic wire codec #3547 kernel hunk,适配 master 现行deriveCanonicalMessageId);②coreToOpenai/coreToGoogle JSDoc 写明字节稳定性合同 + 20 条 golden/跨请求前缀字节一致性钉;commit 2 零运行时变更。tests/issue3398-opaque-media-reserve.test.ts:87-106的断言需更新(该文件早于 [PR] fix: preserve unknown anthropic top-level blocks verbatim in the anthropic wire codec #3547 基线,目前无人属主)。语义不变承诺对账:隐藏内容集合/截断/ref 分配/摘要文本全部未动(那是 ①–⑤);金 pin 未动;可见行为变化仅 PR body 披露表两行。建议合并顺序 #3941 → #3956 → #3961;#3547 收窄为 host-only 后 rebase。#3961 CI 绿后,#3410 随
Closes自动关闭,其余验收项等 #3956/#3941 各自收口。kernel: pass unknown anthropic top-level blocks through verbatim (#3410)
kernel: pin wire byte-stability contract for openai/google normalizat…
kernel: CCR rides the view-latch config digest — disarm releases latc…
Merge pull request #3941 from ranxianglei/2026-10-20_3939-behavior-pins
kernel: pass unknown anthropic top-level blocks through verbatim (#3410)
kernel: pin wire byte-stability contract for openai/google normalizat…
kernel: keep the fold-gate files inside the verifiable subset; re-bas…
4 remaining items
ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
来源: #3956 (#3956) 分析 #3787 回归时发现。查重: 无(检索 rebuild prepare/tokenCount/truncate latch/水位误触发 无命中;#3691 修的是截断无 latch 来回翻,#3787 修的是 numberless 救场窗口,均不覆盖本项)。
补记第 ⑥ 号子缺陷(与 ①–⑤ 同一失败域:写者不认折叠边界契约),先入账,修复时机待排:
⑥ preflight 折叠后的 rebuild prepare 给紧急截断水位喂了折叠前的幻影体量
机制(代码路径 + 实测值,均已在 PR-B 分支实证):
src/server.ts:3462—result.compressedRanges > 0时 preflight 调runPrepare()组装折叠后的转发体;effectiveTokenCount(src/server.ts ~2303):此刻 post-rebuild usage estimate inflates ~3.4x after a big fold, firing an EMERGENCY T1 nudge into an over-budget context #1820 anchor 尚未写入(setPostRebuildAnchor在src/server.ts:3504,晚于 runPrepare 返回)、首请求又无 usage 基线 → 落末支min(localInputEstimate, estimateCoreMessagesUpper(raw msgs)),两项都是入站未折叠历史的体量;emergencyTruncateNode用ctx.tokenCount(= 第 2 步幻影值)对 modelContextLimit 算水位;state.emergencyTruncateLatch。影响:
修法建议(二选一,推荐 A):
src/server.ts:3462前用 preflight 最后一轮测量(折后实际体量)预置临时 anchor,让 rebuild prepare 命中 anchor 分支;:3504既有调用随后以精确值覆盖。修在产错值的决策点,零 kernel 变更;effects.originalMessages)证明发生过裁剪时,emergencyTruncateNode按当前 io.messages 重算判定体量——判定与执行共用同一数组类。更彻底(覆盖一切喂跨类计数的路径),需 kernel bump + pin。test: kernel behavior pins for ranxianglei#3939 (fold boundary + wire…
kernel: all-or-nothing batch when a range dies during application (ra…
kernel: latch emergency truncation bytes until the next fold (ranxian…
kernel: defer BLOCKED→numeric migration carrier tags to the fold boun…
kernel: fold-gate the opt-in view rewriters via a structural view lat…
kernel: pass unknown anthropic top-level blocks through verbatim (#3410)
kernel: pin wire byte-stability contract for openai/google normalizat…
ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
#3939 第 ⑥ 项(PR-C wire 字节保真)交付完毕:PR #3961,CI 全绿,待人工审核合并(kernel 变更按 Kernel Boundary 属 human-only review)。
结构化八问
kernel/src/wire/anthropic.ts的 per-block switch 只有 6 个已知类型、没有 default 分支——未知 block 在解析阶段就消失,coreToAnthropic重建时自然发不出来;openai/google 两条线的重建顺序是纯函数但从未被显式声明和钉死,属于 Unified Prefix Cache Fix: Transactional Folding Boundaries + Single Exit Arbiter (Global Tracking) | 前缀缓存统一修复:折叠边界事务化 + 出口单一判官(总跟踪) #3938 根因表里「convention-stable」未证明的那两行。default分支——未知 block 走既有rawAnthropicBlocksidecar(image/redacted_thinking 同机制),coreToAnthropic原样重发(含块内 cache_control),解析∘重建成为不动点;protected.ts谓词吸收自 [PR] fix: preserve unknown anthropic top-level blocks verbatim in the anthropic wire codec #3547:未知 sidecar block 计为 media + unrecoverable(折叠即永久丢失,必须保护)。②openai/google 把「同一形状同一字节」写成显式契约(JSDoc)+ 20 条测试钉死:逐线 golden 重建形状、跨请求前缀字节恒等、id 确定性。只动 wire 层,不动任何压缩决策。deriveCanonicalMessageId身份方案)。过程要点
cfc3b96全 lane 通过(45 check-runs:31 success / 14 skipped / 0 failure)。tests/golden/wire-contract/kernel.json未动。判定:PR-C 收工,等人工审核;#3939 内核侧六项中 ①–⑤ 由 #3956 承载、⑥ 由 #3961 承载,两者合入即满足 #3938 验收的内核侧条件。
ranxianglei commentedon Oct 20, 2026
(ai: zhipuai-lb/glm-5.3)
#3939 全部六项已落地,可关闭:
verif: google rebuild-stability harness + break-flag loop-exit fix
test(verif): return before t.skip so solver-less CI skips instead of …
test(verif): return before t.skip so solver-less CI skips instead of …
test(verif): return before t.skip so solver-less CI skips instead of …