# 快速开始 · dsh-GOkifu-compact > 给「已经装好,现在要用」的人。安装/回滚细节见 [README](README.md)。 > > **安装只有一步**:插件市场点「安装」,或 `dsh plugin --profile

add dsh-gokifu-compact`, > 然后重启 DSH。**装好重启即可,不需要去设置里选任何模式** —— 本包的 bundle patch 会按 id > 整体覆盖 DSH 内置的四个 agent preset(标准 / PTC / 极简 / 创造),把它们的压缩引擎 > `@deepseek-ai/dsh-compaction-basic` 换成 `dsh-gokifu-compact/engine`。所以四个模式**都是**棋谱压缩。 > 也不会多出一个叫 `gokifu` 的模式(1.16 起不再新增 preset)。 > **不要再单独装 `dsh-gokifu-preset`**(1.15.x 的旧版做法;两个都装会导致同名 preset 重复)。 ## 一 · 重启后先做这四步(3 分钟) ### 1. 确认插件已加载 ```bash cd "D:/主工作区/repos/dsh-GOkifu-compact" node test/verify-install.mjs ``` 期望:**18 项里只有「运行期已产出棋谱」可能在首次启动后短暂为红**(还没有会话跑过 compression), 其余全绿;跑过一个会话后应 18/18。 (S10a 起「依赖声明的 link 目标」是真检查:解析后的目录必须存在、包名必须是本包、node_modules 实际指向要一致 —— 以前只查字符串前缀,目标不存在也报 ✓) 其中「运行期已产出棋谱」那条的 mtime 应该是**刚刚**(说明 keeper 在工作)。 ### 2. 看一次真实会话的棋谱 ```bash ls -lt "D:/DeepSeek Harness/home/chess-context/sessions" | head -3 ``` 挑最新那个目录,看 `graph.json`: ```bash node -e "const g=require('D:/DeepSeek Harness/home/chess-context/sessions/<目录>/graph.json'); console.log('节点',Object.keys(g.nodes).length,'边',Object.keys(g.edges).length,'fold',g.foldCount)" ``` 期望:节点数 > 0、边数 > 0。 ### 3. 确认热上下文真的在注入 新开一个会话,随便让 agent 做点带工具调用的事,然后看它的 system 消息里有没有 ``。 或者直接看当前会话的 `graph.json` 是否在增长(每步都会更新)。 ### 4. 确认四个模式都换成了棋谱引擎 看组合出来的树里,每个内置 preset 的 compaction group 是不是我们的引擎: ```bash dsh --profile

--dump-config | grep -E "^- id: preset-|gokifu-compact/engine" ``` 期望:`preset-standard` / `preset-ptc` / `preset-minimal` / `preset-cordis` 四行都出现, 且每行下面各有一个 `name: dsh-gokifu-compact/engine`。 更省事的判据:**随便选一个模式开会话,发一条消息,看 `/chess-context/sessions//graph.json` 有没有出现** —— 官方压缩不会产生这个目录。 - 只出现部分 preset ⇒ 宿主版本变了(preset 文件形状变了),重跑 `node scripts/make-presets-override.mjs` 看哪一步报错(生成器有自检,不会产出坏文件); - 一个都没有 ⇒ 本包没进 `dsh.profile.bundles`,或 profile 里还留着旧手工行(两条通道只能二选一)。 ## 二 · 日常怎么用 **你不需要做任何事。**(选标准模式、PTC、极简、创造都一样。)插件挂在 `compaction` 槽位上,行为是: | 时机 | 它做什么 | |---|---| | 每一步 | 把 ``(根目标 + 约束 + 已探明死路清单)注入到 model 的输入里 | | 每个工具结果 | 判定 success / failure / unverified,失败原因进棋谱 | | 上下文到 45% | 自动 fold:把旧历史压成棋谱摘要,保留失败边与约束 | | 你手动 `/compact` | 走同一条棋谱路径(不是官方的 8 段模板) | **判断它有没有在工作**:看 `graph.json` 的 `foldCount` 和 `updatedAt`。 ## 三 · 配置(`cordis.patch.yml` 里) ```yaml dsh-gokifu-compact: thresholdRatio: 0.45 # 压力闸:上下文用到 45% 就 fold retainRatio: 0.1 # fold 后保留最近 10% 的对话 minFoldTokens: 8000 # 小于这个量不值得 fold growthFloorTokens: 20000 # 距上次 fold 增长不足 20K 就不再 fold(省钱) hotLedgerMaxTokens: 500 # 热上下文预算(硬上限,超了自动降级) summaryMode: hybrid # rules / llm / hybrid tier2After: 5 # 攒够 5 个 checkpoint 后合并一次 ``` **最常调的两个**: - `hotLedgerMaxTokens`:觉得热上下文太长就调小(默认 500) - `thresholdRatio`:想更早压缩就调小(0.35),想少压就调大(0.6) ## 四 · 出问题怎么办 ### 插件没加载 / 会话报 compaction 冲突 ```bash node test/verify-install.mjs # 看哪一项红 ``` 最常见:preset 里 `compaction-basic` 没被 disable(单实例规则)。 ### 想退回官方压缩 ```bash node test/rollback.mjs ``` 它恢复三样:preset 的 `cordis.patch.yml`、profile 的 `package.json`、删除 node_modules 里的 junction。 **不动** `/chess-context/` 下的图数据(重新装回来还能接着用)。 ### 棋谱数据坏了 `graph.json` 解析失败时,插件会**自动重建空图**(不崩),但会丢历史。 想保留现场就先复制一份再重启。 ### fold 一直不触发 三个原因,按顺序查: 1. 上下文没到 `thresholdRatio`(默认 45%) 2. `growthFloorTokens` 拦住了(距上次 fold 增长 < 20K) 3. `resolveModelInfo` 拿不到 contextWindow(看日志有没有 `no context capacity`) ## 五 · 想验证它「真的比官方强」 ```bash node test/real-model.mjs # 对照实验:本插件 8/8 vs 官方模板 4.67/8 node test/real-e2e.mjs # 真实 bash 失败 → 压缩 → 续跑 3/3 node test/replay-verify.mjs # 用你当前会话的真实日志回放,看修复前后差异 ``` 三个都调真实模型(走 magpie 网关),会花 token 但不多(每次 2–4K)。 ## 六 · 目录在哪 | 东西 | 路径 | |---|---| | 插件源码 | `D:\主工作区\projects\dsh-gokifu-compact` | | 棋谱数据 | `\chess-context\sessions\\graph.json` | | 人读视图 | 同目录 `graph.md`(只在 idle / fold 后更新) | | 证据 | 项目 `evidence/`(13 个文件,每个 .md + .json) | ## 七 · 一句话原理 普通压缩是「把历史缩成一段摘要」,摘要会丢细节、而且每次压缩都把上次摘要再摘要一遍(几何衰减)。 棋谱是「把历史存成一张带失败记忆的图」+「每步只给模型看一张极小的索引」: - **失败边**由规则从工具结果里判,不靠模型总结 - **约束**由规则逐字保留,不经过模型 - **摘要**只在 fold 时生成一次,且只压上一个 checkpoint 之后的内容(增量)