面向 DeepSeek Harness 0.2.1-rc.5 的 Cordis 插件包,组合三类能力:
31.9/100
综合分
3
GitHub 星标
1,176
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-token-optimizernpm 源 · dsh-token-optimizer 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-compaction@deepseek-ai/dsh-compaction-basic@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-llm@deepseek-ai/dsh-session给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 工具结果压缩
- 缓存感知压缩
- 确定性可恢复压缩
为 DeepSeek Harness 提供确定性、可恢复的工具结果压缩与缓存感知压缩。
README
由 DeepSeek 最新模型翻译生成dsh-token-optimizer
面向 DeepSeek Harness 0.2.1-rc.5 的 Cordis 插件包,组合三类能力:
- tools/post-execute 上的确定性纯文本结果压缩,以及不改变 PTC 程序值的 tools/ptc-dispatch-log 持久日志压缩。
- 基于官方 BasicCompactionEngine 的低阈值、缓存复用 compaction adapter,直接继承新版本的强类型 Session 与图片压力计量。
- 可持久检索的 spill archive 与适配拆分后 Client UI contract 的会话 token/caching dashboard。
源码位于 src/,构建产物位于 lib/。包包含三个组合文件:
| 文件 | 用途 |
| cordis.yml | host 拥有 ctx.compaction 时使用的独立 root composition 示例。 |
| cordis.patch.yml | Web profile bundle patch:root 结果策略、62.5% 跨 preset 自动 compaction、retrieve、projection 与 Client dashboard。
展开完整文档(README 剩余 1 节)
dsh-token-optimizer
面向 DeepSeek Harness 0.2.1-rc.5 的 Cordis 插件包,组合三类能力:
- tools/post-execute 上的确定性纯文本结果压缩,以及不改变 PTC 程序值的 tools/ptc-dispatch-log 持久日志压缩。
- 基于官方 BasicCompactionEngine 的低阈值、缓存复用 compaction adapter,直接继承新版本的强类型 Session 与图片压力计量。
- 可持久检索的 spill archive 与适配拆分后 Client UI contract 的会话 token/caching dashboard。
源码位于 src/,构建产物位于 lib/。包包含三个组合文件:
| 文件 | 用途 |
| cordis.yml | host 拥有 ctx.compaction 时使用的独立 root composition 示例。 |
| cordis.patch.yml | Web profile bundle patch:root 结果策略、62.5% 跨 preset 自动 compaction、retrieve、projection 与 Client dashboard。 |
| preset-cordis.yml | 可选的用户 preset 片段,用于替换某个 isolate compaction provider。 |
安全网
1. 持久 Spill Archive
每个发生有损压缩的中等或大结果,在 replacement 发布之前,完整原文都会被保存两次:
1. 调用 ctx.spillStore.saveText(),与现有 DSH spill backend 保持兼容。
2. 保存到本插件的持久 archive,默认根目录为:
<DSH_HOME>/token-optimizer-spill/
archive 采用内容寻址和会话授权:
sessions/<sha256(sessionId)>/artifacts/<sha256>.txt
sessions/<sha256(sessionId)>/lineage.json
- 每个 session-local artifact 文件保存完整 UTF-8 原文,同时就是该 session 的授权记录;没有共享 artifact/reference 两文件提交。
- lineage.json 保存受信任的父 session 关系,fork session 可以读取其祖先 session 已有的 SPILL_ID,但模型不能自行指定父 session。
- 所有路径只由 SHA-256 派生,绝不使用模型提供的路径。
- retrieve 时会验证 session lineage、artifact 路径和文件内容哈希。
- archive 默认位于当前 OS 用户的 DSH home;生产部署应保持该目录的用户私有 ACL,并把 archiveRoot 指向同等受保护的本地存储。
archive 写入失败时,插件保留原始 inline 工具结果,绝不会发布一个无法恢复的裁剪文本。ctx.spillStore 镜像失败不会造成信息丢失,因为 archive 已是成功 replacement 的前提;该失败会记录 warning。
2. 可追溯 SPILL_ID 与精确检索
每个 replacement 尾部都有稳定、唯一、可追溯的标记:
[SPILL_ID: sha256:<64 hex>; mode=large; original=20000; saved=18900] Content was trimmed, not lost. Retrieve the complete original with retrieve_spill(spillId="sha256:<64 hex>").
SPILL_ID 是完整原文的 SHA-256,故相同输入始终产生相同 marker。模型可调用:
retrieve_spill(spillId="sha256:<64 hex>", offset=0, limit=8192)
工具返回完整原文的一个精确 Unicode code-point 窗口,同时给出 totalChars 与 hasMore。继续增加 offset 即可无损取回整个 artifact。跨 session 使用同一 ID 会被拒绝。
archive 是磁盘持久的:新建 SpillArchive 实例、插件 fiber reload 或 DSH 进程重启后,仍可从同一 <DSH_HOME>/token-optimizer-spill 按相同 session、其受信任 fork lineage 和 ID 读取内容。不要删除该目录,除非明确放弃这些 spill artifacts。
3. 模型感知
replacement 明确写出:
Content was trimmed, not lost.
Retrieve the complete original with retrieve_spill(...).
模型不会把裁剪内容误解为丢失内容。marker 也记录原文长度和替换后的实际节省字符数。
工具结果策略
面向模型的策略仅处理成功根工具调用的纯 text block。失败结果、图片、tool-call 等混合内容、PTC nested dispatch 的程序值、retrieve_spill 本身,以及下游 hook 已经显式 replacement 的 content/value 都原样通过。PTC nested dispatch 只在新的 tools/ptc-dispatch-log waterfall 中压缩会话日志副本;run_code 程序收到的结构化值保持完整。
小结果
文本严格小于 smallResultChars(默认 1200 个 Unicode code point)时:
- 直接返回下游 next() 的决策。
- 不保存、不变换、不重建任何 content。
- 保持字节级输入一致性与前缀缓存命中。
中等结果
中等结果按固定顺序处理:
1. 去 ANSI 控制序列。
2. 统一换行、折叠连续空白行。
3. 将至少三行的连续重复行折叠为 [line repeated xN]。
4. 在规范化结果中显式保留头部 mediumHeadChars(默认 4096)与尾部 mediumTailChars(默认 1024)上下文。
完整原文仍写入 archive 和 ctx.spillStore。若包含 marker 的最终 replacement 不能严格短于原文本,则不做替换。
大结果
长度达到 largeResultChars(默认 12000)时,保留 previewChars(默认 1000)预算的首尾预览,加 SPILL_ID、清晰 retrieve 指引和准确节省量。完整原文按安全网机制保存。
所有压缩函数都是确定性的:相同输入、相同配置会得到相同的正文、SPILL_ID 和 marker。
Cache-aware compaction
TokenOptimizerCompactionEngine 继承 @deepseek-ai/dsh-compaction-basic 的完整实现,默认 thresholdRatio: 0.625。它没有重写高风险的 compaction transaction;官方 backend 继续负责:
- ctx.tokenMeter 的完整 envelope/surface 压力测量。
- tool-call/result 成对边界、retained tail 与 overflow recovery。
- durable compaction/start / summary / end bracket。
- checkpoint replacement 与失败收尾。
- 通过 ctx.llm.stream() 回放原始 system、tools、shadowed messages,只在末尾追加 compaction instruction。
最后一点使摘要请求成为已预热会话前缀的扩展,而非重建 system prompt/tools schema,从而尽可能复用 provider KV cache。
dsh-token-optimizer/engine 在同一个 Cordis realm 中必须是唯一的 ctx.compaction provider。安装 bundle 后,root engine 会跨 agent 监听 pressure/overflow 生命周期;Standard、PTC、创造模式中的隔离 stock engine 只作为 80% 的兜底,root engine 已在 62.5% 先完成压缩,因此不会重复压缩。若在同一个 preset realm 内手工替换 provider,仍不能与 stock dsh-compaction-basic 或提供同一服务的 dsh-headroom backend 并列加载。
开关:是否启用 62.5% 提前压缩
root engine 是插件自带的提前压缩能力,由 compaction 这一个布尔值控制,默认开启:
关闭插件自带的 62.5% 提前压缩
- id: dsh-token-optimizer
config:
compaction: false
关闭后 root 不再挂载 ctx.compaction,也不再注册任何 pressure/overflow listener;工具结果压缩、retrieve_spill、session projection 与 Dashboard 全部保留。三点需要注意:
1. 它关掉的是本插件的提前压缩,不是 DSH 的全部压缩。 Standard、PTC、创造模式随附的隔离 stock engine 仍以 80% 兜底,因此关闭后回到的是"未安装本插件时的 DSH 默认";极简模式没有 compaction group,关闭后才是真正没有压缩。
2. 配置是整体替换而非深合并。 在 patch 里写出 config 会丢掉未写出的字段(thresholdRatio、retainRatio、auto、四个字符预算、archiveRoot)。当前这些字段的内部兜底值与 bundle 完全一致,所以只写 compaction 一项是安全的,并有回归测试锁定该等价性;若要同时指定其它项,请一并写全。
3. 关闭后非 Web profile 不再需要兼容性文档 4.1 节的 overlay。 root engine 不再占用 ctx.compaction,headless 这类 profile 可直接启动;反之只要开关打开,overlay 仍然必需,缺失时会以 service "compaction" has been registered at <BasicCompactionEngine> 明确失败,而不是静默降级。
阈值本身也可以调整,默认 0.625:
- id: dsh-token-optimizer
config:
thresholdRatio: 0.5
retainRatio: 0.16
retainRatio 必须小于 thresholdRatio,否则原生引擎拒绝加载(报错来自 BasicCompactionConfig)。若你只想让引擎保留、但禁止本插件自动触发(手动 /compact 仍可用),可以设置 auto: false——它是原生字段,日常开关请仍用 compaction。
Dashboard
Host 注册 tokenOptimizer session projection,统计:
- 结果压缩数、spill 数、实际节省字符和固定密度估算 token。
- compaction 次数和 shadowed token 数。
- 官方 tokenUsage 中的会话累计 cache read / write / uncached input 数据。
- 官方 contextPressure.projectedTokens 中的预计下一次请求上下文占用。
Client 在 conversation.composer.dock 分开显示两个不同口径:
current context = contextPressure.projectedTokens
cache hit rate = cacheReadTokens /
(uncachedInputTokens + cacheReadTokens + cacheWriteTokens)
上下文会随 surface 变化,并在 compaction 提交后立即按 shadowed token 差值重算;缓存命中(累计)是整个会话历史请求的供应商用量比例,不会因 compaction 回滚。投影尚未到达页面时,面板显示“等待会话投影”,不会用局部聊天窗口伪装全会话统计。重启或新建会话后的短暂等待正常;一旦已有新的会话事件仍持续显示该后缀,则说明 Host projection 未正常注册。该统计用于可观测性,不用于计费或访问控制。
长任务基准(2026-08-30)
以下结果来自本机可复现的 headless A/B 测试,而不是 dashboard 的字符密度估算。每个 run 都是新 session,最终响应必须严格等于 BENCHMARK_DONE: HYDRA-17|ORBIT-42|CHECKPOINTS-OK;所有记录均通过该质量断言。实际 provider usage 从持久 session log 解析,Prompt Token 的计算口径为:
uncachedInputTokens + cacheReadTokens + cacheWriteTokens
环境与控制变量
- DSH 0.1.1-rc.2,dsh-token-optimizer@0.1.8。
- Provider / model / effort:openai / gpt-5.6-terra / xhigh,由每个 session 的 request/header 验证。
- 每个 workload 强制模型按顺序读取固定 fixture 与两个 checkpoint,再输出固定 sentinel;模型不允许写文件或调用 shell。
- 为承载超长单行 fixture,headless benchmark overlay 将 tool-fs 的 readMaxBytes 与 readMaxLineLength 临时升至 3,000,000。这不是生产默认值。
- 除特别说明外,结果策略测试中的内置 tool-result-pruner 被禁用,以避免不可恢复 pruner 与可恢复 archive 双重接管同一结果。
- 每组当前只有一次采样。模型生成、Provider KV cache 和网关计量会波动;表中的 Token 差值是已测事实,不是费用承诺或统计显著性结论。
结果策略:2.7MB 单结果
workload 先读取一个 2,700,000 字符的 evidence 文件,再读取两个小 checkpoint。这个 fixture 在默认 1.05M context 下不跨 80% compaction 阈值,因此能单独观察 post-execute 结果策略是否在下一次模型请求前降低 surface。
| 组别 | 结果策略 / engine | Prompt Token | Uncached input | Cache read | Summary / prune | Spill | 质量 |
| Stock(内置 pruner 开启) | 原版 pruner + Basic 80% | 1,181,449 | 404,233 | 777,216 | 0 / 0 | 0 | 通过 |
| Result-only | 可恢复结果压缩 + Basic 80% | 51,164 | 15,836 | 35,328 | 0 / 0 | 1 | 通过 |
| Full Optimizer | 可恢复结果压缩 + engine 62.5% | 33,529 | 10,489 | 23,040 | 0 / 0 | 1 | 通过 |
- Result-only 相对默认 Stock 少 1,130,285 Prompt Token,即 95.7%。
- Full 相对默认 Stock 少 1,147,920 Prompt Token,即 97.2%;但两者都没有触发 summary,所以 Full 比 Result-only 更低的单次数字不能归因于 62.5% engine,应视为一次采样中的模型/缓存波动。
- Stock 的内置 pruner 在这个 workload 中 prunes=0,因为 session 没有到达它的 compaction 时机;这证明可恢复 post-execute 策略能在普通长工具结果之后立即削减后续请求,而不是等待后期 compact。
提前 compaction:256K 隔离对照
为降低 xhigh 模型测试成本,下面的 headless process 通过独立 settings-256k.yaml 将仅 DSH token meter 看到的 model context capacity设为 256,000;当前 Web profile 和生产 1.05M 设置没有改变。fixture 由四个各 170,000 字符的连续结果构成,总计约 170K heuristic Token:高于 256K × 62.5% = 160K,低于 256K × 80% = 204.8K。两组均关闭内置 pruner 和本插件结果压缩,唯一变量是 compaction engine。
| 组别 | engine | contextWindow | Prompt Token | Uncached input | Cache read | Summary | Shadowed Token | 质量 |
| Stock | Basic 80% | 256,000 | 485,707 | 108,875 | 376,832 | 0 | 0 | 通过 |
| Engine-only | Token Optimizer 62.5% | 256,000 | 272,391 | 111,623 | 160,768 | 1 | 129,706 | 通过 |
Engine-only 少 213,316 Prompt Token,即 43.9%。其 uncached input 略增 2,748,这是摘要调用的成本;但后续大前缀 cache read 减少 216,064,总 Prompt Token 仍明显下降。这个结果证明 engine 会在原 80% engine 尚未触发时提前 summary,并在后续多步任务中回收摘要成本。
已验证的边界
在同一 1.05M capacity 下,把全部约 675K heuristic Token 放入一条最新工具结果中,62.5% engine 虽然触发了两次 summary,却只 shadow 了 2,475 Token,Prompt Token 为 1,180,924,与未 compact 的 1,180,189 基本相同。原因是官方 retainRatio: 0.16 必须保留最近 tail,不能把最新超大结果中间截断。这不是有效节省案例;对这类结果,post-execute preview/Spill 策略才是正确路径。
重跑方法
基准辅助脚本在 benchmarks/,不参与发布包运行时:
在仓库根目录执行
node benchmarks/create-long-task-fixture.mjs
node benchmarks/create-segmented-256k-fixture.mjs
使用对应 --patch 启动新的 headless session;完成后从 <DSH_HOME>/sessions 找到它的 session.jsonl.zstd。
node benchmarks/summarize-session.mjs <session.jsonl.zstd> "BENCHMARK_DONE: HYDRA-17|ORBIT-42|CHECKPOINTS-OK"
重跑时应交错各组顺序并至少取三次中位数;若 Provider 给出不同 cache read / write 定价,应以其账单单价分别加权,而不是把 Prompt Token 直接等同于货币成本。
版本兼容
| dsh-token-optimizer | DeepSeek Harness | 状态 |
| 0.1.9 | 0.1.1-rc.2 | 已被取代 |
| 0.2.0 | 0.1.2-rc.1 | 已被取代 |
| 0.2.1 | 0.1.5-rc.1 | 已被取代 |
| 0.2.2 | 0.1.5-rc.1 … 0.1.7-rc.2 | 已被取代 |
| 0.2.3 | 0.1.5-rc.1 … 0.2.x | 已被取代 |
| 0.2.4 | 0.1.5-rc.1 … 0.2.x | 已被取代 |
| 0.2.5 | 0.1.5-rc.1 … 0.2.x | 当前正式插件版本 |
0.2.0 不再依赖已退出新 Web 栈的 @deepseek-ai/dsh-client-runtime,Client dashboard 改用拆分后的 Conversation、Renderer 和 Session contract;projection 通过 seq、eventAt()、snapshotEvents() 驱动,不读取已移除的 Session.events;PTC nested dispatch 的完整程序值保持不变,只压缩 tools/ptc-dispatch-log 的持久副本。完整变更依据和验证矩阵见 docs/dsh-0.1.2-rc.1-compatibility.md。
0.2.1 适配 dsh-spill 引入的 SpillSource 判别联合——工具类产出方必须声明 kind: 'tool'——并把所有声明的 DSH 版本范围提升到 0.1.5-rc.1;除此以外两个版本之间的插件接口面没有变化。完整审计见 docs/dsh-0.1.5-rc.1-compatibility.md。DSH 0.1.5-rc.1 自带 dsh-spill-local 与 dsh-spill-policy(当时的键是 maxInlineBytes),插件保留自己的持久归档作为取回权威,并在后端存在时把每次替换镜像进去,两者不会对同一结果重复压缩。
0.2.2 适配 0.1.7-rc.2:跟随 tool-result 包装块被移除、采纳 agent/created 的异步串行契约、把上游新增的 headroomTokens 补齐到自有 schema 并用两条编译期断言锁死漂移,同时按新版本约定声明 Plugin Manager 的本地化标题与图标;compaction 开关也随本版发布。它仍支持 0.1.5-rc.3,因为宿主的 peer 校验接受 ^0.1.5-rc.1 覆盖整条 0.1.x 线。完整审计见 docs/dsh-0.1.7-rc.2-compatibility.md。
0.2.3 适配 0.2.0-rc.2。没有任何插件接口面的声明以本插件可观测的方式发生变化:审计的 16 个包里有 14 个的 .d.ts 逐字节相同,另外两个(dsh-session 的 repair 内部结构、dsh-client-ui-conversation 的提交埋点)都在本插件触及范围之外,因此 0.2.2 的源码不改一行即可通过编译,24 个测试全部照旧通过。本版之所以必须发布,是因为宿主把 peer 门禁从「静默禁用」改成了硬拒绝:声明的范围改为 >=0.1.5-rc.1 <0.3.0,既让 bundle 在 0.2.x 上继续加载,也仍然覆盖 0.1.x。完整审计见 docs/dsh-0.2.0-rc.2-compatibility.md。
0.2.4 适配 0.2.1-rc.2。没有任何插件接口面的声明以本插件可观测的方式发生变化,源码一行未改:审计的 16 个包里有 13 个的 .d.ts 有差异,但差异全部是新增、内部 companion 模块或注释重写;本插件最依赖的三个契约包(dsh-compaction-basic、dsh-session-projection、dsh-spill)逐字节相同,cordis 4.0.5 与 schemastery 3.18.5 的声明也与旧版完全一致。0.2.1-rc.2 新增的 engines.dsh 门禁优先级高于 peer 范围,本插件刻意继续只用 peer 形式,保持单一权威要求面。本版用于重新钉住通过验证的依赖闭包,并在真实 0.2.1-rc.2 headless 会话上复核 压缩 → 归档 → 取回 全链路。完整审计见 docs/dsh-0.2.1-rc.2-compatibility.md。
0.2.5 适配 0.2.1-rc.5。16 个包里有 15 个的 .d.ts 逐字节相同,唯一变化的 dsh-client-ui-conversation 全部是追加(View tab 与 pin、header 的 More 菜单、草稿处理、MessageSubmissionState.newSession/agentPreset),因此源码一行未改,真实 0.2.1-rc.5 依赖闭包上 24/24 测试全绿。宿主门禁实现与 0.2.1-rc.2 逐字节相同,现有 >=0.1.5-rc.1 <0.3.0 peer 窗口在 0.2.1-rc.5 上继续加载、仍拒绝 0.3.0;并在真实 0.2.1-rc.5 headless 会话上完成 压缩 → 归档 → 取回 全链路验收:34,532 字符工具结果压缩为 mode=large spill,归档文件 SHA-256 与 spill id 完全一致,后续回合用 retrieve_spill 成功取回,tokenOptimizer projection 正确折叠节省量。完整审计见 docs/dsh-0.2.1-rc.5-compatibility.md。
上文基准仍是 0.1.1-rc.2 + dsh-token-optimizer@0.1.8 的历史实测数据;在 0.2.2 上重跑前,不把它表述为新版本结果。
构建
pnpm-workspace.yaml 将本工作区开发图锁定到 0.2.1-rc.5,并将 Cordis 锁定到 4.0.5,使类型检查针对当前 DSH RC 运行时协议。
在仓库根目录执行
pnpm install
pnpm run check
pnpm run check 已包含 build;不需要接着再运行一次 build。
build 顺序不可颠倒:
1. tsc 输出 Host ESM、声明文件和普通 Client ESM。
2. scripts/build-client.mjs 把 Client 入口生成 DSH 0.1.2 Client Modules 所需的 lazy-CJS window.__ModuleLoader__.load(...) bundle。
验证:
Get-Content .\lib\client.js -TotalCount 2
首行必须是 window.__ModuleLoader__.load({。
公开安装
使用 DSH 0.2.1-rc.5 的用户可把 0.2.5 root bundle 安装到 Web profile:
dsh plugin --profile web add dsh-token-optimizer@0.2.5
dsh plugin 会在目标 profile 目录中转发给 pnpm,并识别包内的 dsh.bundle.patch,将 bundle 加入该 profile 的有序层列表。安装后需重启已有的 dsh web 进程。
这一步启用可恢复工具结果压缩、retrieve_spill、projection、Web dashboard,以及跨四个 shipped agent mode 生效的 62.5% 自动 compaction engine。无需复制或新建 preset,也不要修改 DSH 随附的 preset。
从公开 Git 仓库也可安装,例如:
dsh plugin --profile web add github:Snow-ea/dsh-token-optimizer
仓库会提交 lib/ 构建产物,因此该 Git 来源不依赖安装期 TypeScript 构建。面向普通用户仍优先推荐 npm 包,因为它有明确的 SemVer 版本和稳定 tarball 内容。若未来增加 prepare 脚本,pnpm 可能要求在 profile 的 pnpm-workspace.yaml 中明确允许该构建。
本地构建与加载
1. 构建并打包
Windows 仓库路径包含空格时,本地目录安装可能被 CLI 转发拆分。使用 tarball:
在仓库根目录执行
pnpm run check
npm pack --pack-destination $env:TEMP
每次发布应递增 package.json 版本或更换 tarball 文件名,避免 pnpm 对同一路径、同版本的缓存歧义。
2. 安装 root bundle
dsh plugin --profile web add --force "$env:TEMP\dsh-token-optimizer-<version>.tgz"
dsh --profile web --dump-config
Web root bundle 现在同时启用 root-level 62.5% engine:
compaction: true
thresholdRatio: 0.625
retainRatio: 0.16
auto: true
archiveRoot: !!js dshHomePath('token-optimizer-spill')
需要关闭这项提前压缩、或改用其它阈值,见下文《开关:是否启用 62.5% 提前压缩》。
root engine 的 pressure/overflow listener 会接收四个内置模式的 agent 事件。Standard、PTC、创造模式仍保留各自 isolated stock engine,但 root engine 先在 62.5% 完成压缩,stock engine 只会在 root engine 没有完成时作为 80% 兜底;极简模式没有 compaction group,直接使用 root engine。因此下载后不需要创建任何新 preset。
如需在一个用户自定义 preset 内彻底替换 isolated ctx.compaction provider,仍可使用 preset-cordis.yml;这不是内置模式的必需步骤。为保持所有替换内容可恢复,使用该片段时仍要禁用 tool-result-pruner:新版 DSH 的内置 pruner 会永久替换 session surface,但不会写入本插件的外部 archive。不要编辑 DSH 随附的 preset。
3. 重启现有 Web 进程
已占用 127.0.0.1:3080 的 Web 进程不会读取新 tarball。不要启动第二个服务;在原始 dsh web 终端按 Ctrl+C,确认端口释放后,在同一终端执行:
dsh web
刷新 http://127.0.0.1:3080,新建一个选择任意内置模式的 session,即可直接体验全量 token 优化能力。插件不会自动修改已有用户 preset;从旧 DSH 版本复制的 Token Optimizer preset 切换到 0.2.1-rc.5 后应先按兼容性文档重新验证。Client HMR 只有 DSH checkout 中的 pnpm run dev:web 同时重建 browser bundle 时可用,普通本地包变更仍需要 build、pack、安装和重启。
测试
pnpm run check
当前 20 项测试覆盖:
- 小结果 Unicode 边界、ANSI/空白/重复行确定性压缩。
- medium 4096/1024 头尾保留。
- SPILL_ID marker 和准确节省量 fixed point。
- 新 archive 实例(模拟重启)后的完整恢复、fork lineage 恢复与无关系 session 拒绝。
- 并发同一 SPILL_ID 的原子提交,以及损坏 artifact 的哈希拒绝。
- engine 的默认 62.5% 阈值与 provider 冲突时的原子失败。
- DSH 0.2.1-rc.5 的 SessionProjectionRegistry、snapshotEvents() 与 state/wire projection fold。
- 真实 ToolRuntime.execute() 的正常 accepted result、retrieve_spill、持久 archive 读取、downstream value replacement,以及失败结果绝不 spill。
- scope-routed root pressure listener 与 tools/ptc-dispatch-log 的可恢复日志压缩。
建议手工验证:
1. 小于 1200 字符的工具结果和未安装时逐字节一致。
2. 中等结果保留头尾,显示 [line repeated xN] 与 SPILL_ID。
3. 大结果显示首尾 preview、明确的“trimmed, not lost”提示和 retrieve_spill 指引。
4. 对同一 ID 重复调用 retrieve_spill 直到 hasMore: false,确认原文完全恢复。
5. 用任一内置模式新建 session;pressure 超过 62.5% 时检查 compaction 计数,并执行 /compact。
6. 观察后续请求是否继续复用原 system/tools schema 前缀和 dashboard cache hit rate。
与其他插件共存
dsh-compaction-tool-result-pruner
root engine 不依赖该 pruner,四个内置模式无需修改 preset 即可使用本插件。若你仍使用 preset-cordis.yml 在某个用户 preset 内彻底替换 isolated engine,则不要启用它:它确实是 toolResultPruner companion service,而非 ctx.compaction provider,但新版 DSH 会把 pruned surface replacement 持久化,而它没有调用本插件的外部 archive。为保持完整可取回保证,用户 preset 中应将该行设置为 disabled: true。
dsh-spill-policy
可以共存。此包先保证 archive 完整保存,再用 ctx.spillStore 镜像。已有 dsh-spill-policy 会在自身 inline cap 仍被超过时继续接管。不要把随机 SpillRef.locator 拼回本插件的 model-facing 文本,否则会破坏确定性。
dsh-trim
不要在同一工具结果上无差别叠加。两次有损 tools/post-execute 处理会降低可读性、重复写入存储,并让节省归因不可读。推荐只启用一个通用策略,或按工具名/阈值做互斥分工。
dsh-headroom
若 dsh-headroom 提供 ctx.compaction,不能与 dsh-token-optimizer/engine 在同一 preset realm 并列加载。二选一。若它只提供 metrics/prompt section,则可共存,但需确认不重复接管 agent/pre-step 或 agent/request-error。
许可证
本项目采用 MIT License。
参考
- dsh-trim
- dsh-headroom
- Compaction capability seam
- Plugin development tutorial预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Snow-ea/dsh-token-optimizer
面向 DeepSeek Harness 0.2.1-rc.5 的 Cordis 插件包,组合三类能力:
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,467已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,315已汉化DSH
71.4
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。