Skip to content

Early condensation: checkRatio 0.8 → 0.45 in ds-bot's steward, judged by 24 h p50 prompt 110–135 k #1236

Closed as duplicate

Description

@Birfy

读数(#796 评论 6408530441,当前主机 24 h)

13,136 次调用 / 1.96 B prompt(98.4% 缓存)/ 7.9 M output;单次均值 149 k,p50 151,929、p90 216,400。分段:历史占 73%,固定部分只占 27%——所以能省最多的是「让历史别常驻那么长」。

真正的旋钮不是 compaction-basic.thresholdRatio

#796 里那条「把 thresholdRatio 0.8 改 0.45」的落点是错的,两处证明:

  • core/src/host/parts.js:216 附近的注释与实现:Bot Session 的自动压缩被 ds-bot 接管("Only DS Bot condenses a Bot Session"),compaction-basic 的检查线对 Bot Session 不生效;改它只会给非 Bot Session 带去副作用。
  • 真正的线在 ds-bot/src/host/steward.js:DEFAULT_CHECK_RATIO = 0.8(:13),linesFor()(:20-27)算 usable = max(window − reserve, window/2)、hard = 0.95 × usable、check = min(ratio × usable, hard);ratio 来自 config.checkRatio,由 ds-bot/src/host/parts.js:175 传入;文档在 ds-bot/README.md:69。
  • 实测对得上:98 次 pre-compaction prompt 的 min 204,703 / p50 235,190 / max 252,470,正好是 check≈203 k、hard≈241 k(window 262,144 减回复余量)。

预期行为

Bot Session 的检查线从可用窗口的 80% 降到 45%(262,144 窗口、余量 8k 时 check ≈ 114 k),于是历史常驻从 100–250 k 降到 ~110 k 量级。

按当天 13,131 个真实 prompt 做 min(P, cap) 模拟的预测(cap 由 checkRatio 决定):

cap 均值 日总量 相对今天
118 k 108 k 1.42 B −27.4%
132 k 117 k 1.54 B −21.3%
103 k 97 k 1.28 B −34.7%

checkRatio: 0.45 → check≈114 k,实际 cap 预计 114–130 k,所以判据是 24 h 的 p50 落在 110–135 k(今天 151,929)、日总量 1.40–1.55 B、calls/天不增加。

改动范围(repo 侧)

  • ds-bot/src/host/steward.js:13:DEFAULT_CHECK_RATIO 0.8 → 0.45(一行)。
  • core/src/host/steward.js 由 patches/ds-bot/* 决定,按 ds-bot-patches 的规矩改,别只手改一边。
  • ds-bot/README.md:69(表格里的 checkRatio: 0.8)同步;README 的 :87 那段「检查线是 checkRatio 的那一份」照旧,只改数值。
  • 测试:core/test/steward.test.js 与 ds-bot/test/steward.test.js 有依赖默认值的用例(checkRatio: undefined 对 window 100,000 断言 check === 80_000),改默认后应变 45_000;显式传 0.8 的用例不动(那是函数语义,不是默认值)。
  • 宿主侧:这台机器的 /data/dsh/profiles/web/cordis.patch.yml 已加 bot: { checkRatio: 0.45 }(部署项,不在 repo)。PR 正文要写清:repo 的默认值改了,宿主覆写是否还需要、热重载是否已生效。

验收(每条都能红)

  • linesFor({ window: 262144, reserve: 8000 })(不传 checkRatio)→ check ≈ 114,365;把默认改回 0.8 → 该断言红。
  • 非法值回落到新默认(checkRatio: 0 / 1 / 'x' / undefined 对 window 100,000 → 45_000);漏改这条 → 红。
  • 改后 24 h 重跑同一扫描:p50 110–135 k、日总量 1.40–1.55 B、calls/天不升(把两个扫描命令贴进 PR 正文)。
  • 代价写明:压缩次数 202 → ~400/天(+20 M prompt,约为省下的 4%),且更早丢失细节——这条要写进 PR 正文的风险段,不藏。
  • node scripts/ds-bot-patches.mjs check 三行贴原文。

不做

  • 不动 compaction-basic.thresholdRatio(对 Bot Session 无效)。
  • 不动 retainRatio(0.16 保持),不与「少一轮往返」混在一张 PR 里。
  • 不改任何发送内容(notice / roster / 工具描述)——那是别的杠杆。

Refs #796

Activity

  1. added
    enhancementNew feature or request
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    area:automationScheduled tasks and automation
    on Oct 26, 2026
  2. Birfy commented on Oct 26, 2026

    @Birfy
    CollaboratorAuthor

    Triage(2026-10-26):查重完成,agent-ready,Owner: Dev2(Chief 已把 ① 号杠杆派给他,他手上有那份拟合)。

    • 不重复:#796 留作总账(epic,保持 open),子单 #799(测量工具链)已 closed;本单是它名列的第一条杠杆,没有别处在跟。
    • 纠正一处旧说法:#796 里写「thresholdRatio 0.8 → 0.45」是错的落点——Bot Session 的压缩由 ds-bot 接管(core/src/host/parts.js:216 注释),真旋钮是 ds-bot/src/host/steward.js 的 checkRatio(DEFAULT_CHECK_RATIO = 0.8,:13;parts.js:175 传入)。正文已把实测(98 次 pre-compaction:min 204,703 / p50 235,190 / max 252,470)与判据写死。
    • 判据:改后 24 h p50 110–135 k(今天 151,929)、日总量 1.40–1.55 B、calls/天不升;改不出来就说明拟合错了,回来重算。
    • 与 #1237(群房间工具)、#1238(少往返写规范)分开做、分开 PR,别合成一张。

    risk:T* 只由控制器写(不手写、不转录)。ds-bot/** 与 core/** 属 T2:tip 上 PASS + CI 全绿 + 撤改动变红;认领评论里带分支名。

  3. removed
    enhancementNew feature or request
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    area:automationScheduled tasks and automation
    on Oct 26, 2026
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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions