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
{{ message }}
Repository navigation
feat: structure-aware range selection (pressure compression prioritizes contiguous task segment boundaries) | feat: structure-aware range selection(压力压缩优先选连贯任务段边界) #344
changed the title [-]feat: structure-aware range selection(压力压缩优先选连贯任务段边界)[/-][+]feat: structure-aware range selection (pressure compression prioritizes contiguous task segment boundaries) | feat: structure-aware range selection(压力压缩优先选连贯任务段边界)[/+]on Oct 16, 2026
Activity
ranxianglei commentedon Sep 22, 2026
[bot] 🏷 收到。已按规范先做审核(feature 类:合理性 / 系统设计 / 耦合性),结论与方案如下,随后开始实现。
审核结论
问题成立,但现状比 issue 描述的更完整。 已对照 master@b30723f(v0.0.82)逐行验证:
buildCompressibleRanges(src/recommend.ts)已具备部分结构感知——computeIntegrityWithdrawals):被保护区切开的 turn、落单的 call/result 对不会被广告;真正缺的是两个具体缺口:
[callA, skill-call(受保护), skill-result(受保护), resultA])时会得到 R1=[callA]、R2=[resultA],任一单独折叠都会在 apply 侧被拒("Range would split N tool call/result pair(s)")。设计(纯启发式、确定性、无 side-model、触发条件完全不动):
computeIntegrityWithdrawals至收敛,被撤回的消息转为 gap 并重新切分;自洽历史 0 次迭代即收敛 → 输出与现状字节一致(满足验收标准 2);decideNudge触发逻辑一行不动;不加新配置字段——两处改动都是条件触发的精化,自洽历史不产生漂移(如日后观察到漂移再加默认开启开关);mergeRangesToThreshold合并出的任意批次都可折叠(pair 对每段封闭故对并集封闭;turn 不含 user 消息,不可能跨切分点)。耦合点:PR fix(recommend): never bridge block gaps when batching compressible ranges #343(fix(recommend): never bridge block gaps…)当前 open,改同一文件的
mergeRangesToThreshold。本改动位于其上游(消息列表层、合并之前),两者可组合;谁先合并谁为基,另一方 rebase。不会重复 fix(recommend): never bridge block gaps when batching compressible ranges #343 的内容。接下来实现 + 测试(钉死三条验收标准:进行中序列端点不落其内部 / 自洽历史回归不变 / 确定性双跑一致),跑完整 typecheck/test/build 后提 PR 引用本 issue。
ranxianglei commentedon Sep 22, 2026
[bot] 🏷 已完成,PR 已开:**https://github.com/ranxianglei/acp-kernel/pull/345**(Closes #344)
实现(src/recommend.ts +140/-11,仅候选逻辑)
S1 进行中轮次排除 — 新导出
computeOpenTurnMemberIds(messages):数组中任何没有对应 tool-result 的 tool-call(open call),其整个 turn group(reasoning run + burst + 已配对结果)标记为 gap,不进入可压缩集。覆盖两种形态:无 open call 时早退,零开销。触发该轮的 user message 保持可压缩(user 消息无 wire 层配对约束,且 recent-zone 默认已保护尾部)。
S2 逐段可折叠性精化 — 现有整集 integrity screen 假设"整个可压缩集一起折叠",但每个推荐范围是单独折叠的;段内 gap(protected tool、zone 边界)把 call/result 对或 reasoning/call 轮次劈开时,今天会广告出 apply 侧 fold gate 必然清空的范围。现在对每个连续段重跑
computeIntegrityWithdrawals至稳定(硬上限 8 轮,每轮至少删一条故实际几轮收敛),被撤成员变 gap、范围在其处断开。刻意不动的:
decideNudge触发分支原样(issue 第 3 条);配置 schema 不加旋钮(两个改动都是条件性 no-op,只在结构错位处改变输出);基础分组规则(user 边界 count≥3 切分)逐字节不变。验收标准对照
tests/recommend-structure-aware.test.ts:open tail / partial burst / 顺序调用变体(call→result→live call:只排除 live call,已完成轮次仍可压缩)applyCompression实测折叠干净验证(rebased head, node 22)
typecheck ✅ / test ✅ 879/879(含 10 项新增)/ build ✅。format:check 不在 CI 中;顺带发现 prettier 3.9.6(
^3.3.0未锁版解析结果)对 master 上 115 个文件报格式漂移——存量问题,本 PR 未动以保持 diff 干净。与 PR #343 的关系
#343 修
mergeRangesToThreshold跨 block gap 合并;本工作在合并上游(message-list 级),两者正交组合:本 PR 保证合并前每段单独可折叠,#343 保证批次不跨 block gap。若 #343 先合,我会 rebase 到其上再请审。pi 侧跟进由镜像 issue(billion-context-pi)跟踪,等本库发版后 bump 即可。
[-]feat: structure-aware range selection(压力压缩优先选连贯任务段边界)[/-][+]feat: structure-aware range selection (pressure compression prioritizes contiguous task segment boundaries) | feat: structure-aware range selection(压力压缩优先选连贯任务段边界)[/+]