Repository navigation
Releases
v0.1.10
- 宿主兼容判定改用
engines.dsh,0.2.1 起不再依赖 12 条 peer 的维护;peer 保留给更早的宿主 - 插件列表补上双语标题、说明与图标(蓝底白 Z)
history_read与导出不再把job/registered、job/settled、working-directory/change渲染成空标题- 修
install.mjs的复制过滤:顶层的node_modules与graphify-out不再进 profile,装完从 4.5MB+ 降到 2.2MB
安装:pnpm add -E dsh-context-zip@0.1.10,装完重启 DSH。
v0.1.8
面向接管用户的本次改动:压缩触发阈值补丁,加一项重装路径的修复。分段目录、四个检索工具、导出与设置面板的行为与 0.1.7 相同。
1. 压缩触发阈值改回只由配置里的比例决定
宿主从 0.1.7-alpha.1 起给压缩触发阈值加了第二项上限:
Math.floor(Math.min(contextWindow * policy.thresholdRatio, pressureBudgetTokens))
pressureBudgetTokens 是窗口减去请求头预留的输出与默认 headroom。本机窗口 400000、预留输出 128000、headroom 65536,第二项算出 206464,约窗口的 51.6%,配置里的 thresholdRatio: 0.8(本应 320000)被架空,压缩触发远早于配置值。
插件接管压缩行时,把复制出来的 base.js 里那一处表达式定点改回只有比例的形式:
Math.floor(contextWindow * policy.thresholdRatio)
改的是一处锚定字符串替换,不重新实现阈值计算,所以落地文件除那一行外与宿主原文件逐字节相同(49408 字节变 49376 字节)。命令行 install.mjs 与面板按钮背后的 wireCompactionRow 走同一份判定,避免只改一条路径。
为什么整项去掉第二项:128000 + 65536 = 193536,高于比例留给 0.8 的 80000,保留第二项就到不了 320000,没有中间解。
护栏:后端既不是两项取小、也不是只有比例一项,或两种形态都出现多次时,拒绝接线,而且拒绝发生在删任何东西之前,已接好的重定向保持原样可用;命令行加 --stock-backend 才按原样接线(不补),面板按钮遇到这种后端只会拒绝。选择拦住,是因为宿主以后改了表达式的写法,替换就会落空,而落空后照旧安装的表现是「装上了、也报成功,阈值还是 51.6%」,这种失败不报错。写完 base.js 立刻读回自检,字节与判定不符就把重定向目录删掉再报错。戳 base.json 增加 patch 键,取 ratio-only、not-needed、none。
--check 增加一行 redirect patch ...,并按补丁漂移报落后(退出码 1);/wire 状态增加 patch、patchObserved、patchDrift 三个字段,界面未改,面板暂不显示。
2. 重定向装过一次之后就再也装不了
重定向装上后会顶替 profile 里 @deepseek-ai/dsh-compaction-basic 这个说明符,宿主真身在包管理器 store 里,不在 Node 从 profile 出发的查找路径上,于是刷新重定向的命令自己读不到要拷贝的源,抛 cannot locate a shipped @deepseek-ai/dsh-compaction-basic。这个缺陷第一次真机重装才暴露。
现在安装路径与面板按钮路径都加了一层兜底:解析失败就读戳里记的 source,两条都不通则拒绝安装,并提示把一份真包放到 profile 上一级的 node_modules/@deepseek-ai/dsh-compaction-basic。
怎么验证的
- 反向对照两次:只把改写去掉、留着写后自检,自检当场拦住并报错;把改写与写后自检一起去掉,本次新增的判据变红,说明这几条判据确实能失败。
- 隐藏桌面隔离实例(宿主
0.1.7-rc.1,从交付树安装):--check报ratio-only (base.js carries ratio-only)、退出码 0;/wire的patch与patchObserved都是ratio-only、patchDrift为false。把base.js换回未补字节重启做对照,--check报落后、退出码 1,patchObserved翻成stock、patchDrift变true。 - 本机真实 profile 装好并重启宿主后,
/wire回报patch与patchObserved都是ratio-only、patchDrift为false,落地base.js49376 字节,两项取小形态 0 处、只有比例形态 1 处。 - 没验到的:运行时阈值数字本身没有直接观测(要发一次真实模型请求);
not-needed与「认不出后端时拒绝接线」两态在实机上没走,由套件覆盖;实机只覆盖宿主0.1.7-rc.1一个版本、一个 profile。
升级
在 profile 目录里跑:
pnpm add dsh-context-zip@0.1.8
然后重启 DSH。宿主机如果启用了 pnpm 的新发布包冷却策略,先把 0.1.8 加进 profile 的 pnpm-workspace.yaml 里那份 minimumReleaseAgeExclude 白名单,否则安装只会 prune、不换版本,命令照样打印成功。
这一版要再接管一次:补丁是在接线时写进 profile 里那份 base.js 的,升级插件本身不会重写它。面板的接管按钮或 install.mjs 再跑一次即可,在那之前 --check 会把未补的旧重定向报成落后。
兼容性与校验
- 宿主:peer 范围
>=0.1.5-rc.2 <0.2.0-0 || >=0.1.6-0 <0.2.0-0 || >=0.1.7-alpha.1 <0.2.0-0;cordis^4.0.2,schemastery^3.18.1。 - Node.js:
^22.19.0 || >=24.0.0。 - 已知边界(节流效果未确立、按会话覆盖表在面板上只读等)见
docs/局限性与已知问题.md。 - 逐条改动与依据见 RELEASE-NOTES.md。
v0.1.7
面向使用者的两处改动,加一项发布物修正。压缩接管、分段目录、四个检索工具、导出与设置面板的行为与 0.1.6 完全相同。
1. /live 的设置来源不再误报 default
宿主的 settings.describe() 会整行丢弃「没有 volatile 字段」的设置行,而 Schema.volatile() 是 schemastery 3.18.3 才有的 API。在停在 3.18.1 / 3.18.2 的 profile 上,本插件那一行因此读不到:/live 把设置来源报成 default,同时把「这一行是否由用户配置过」记成恒 false(后者只在重定向槽位不起作用时才决定要不要提示「需要迁移设置」)。
现在这一行改从配置编辑器读同一层(configEditor.configuration() 的 override,正是宿主投影 user 层用的来源),两个记录都恢复正确。实际生效的设置值、引擎选路与压缩行为都不受影响,那条链本来走 scope.get();revision 仍取不到,保持 undefined,并在注释里写明原因。
真机验证:升级重启后 /live 的 source 由 default 变为 settings,接管状态 wired: true、stale: false、foreign: false、attention: null。
2. 会话格式多一条防守判据
冻结的 V4 会话 fixture 先经宿主自己的 Session.create 重建,再比对插件分段管线派生的段号、被替换事件号与摘要事件号。宿主改信封、header 或 surface 机制会让重建直接抛错,改 compaction/summary 这类不做 schema 校验的载荷字段会让派生数字对不上,两种情况都会让套件变红。
3. 文档里的条数口径换回实测值
套件 1358 → 1360(新增上述两条判据)。README、功能文档、局限性与已知问题、验收台账里那些不可复现的数字一并更正。
升级
dsh plugin --profile web add dsh-context-zip@0.1.7
也可以不带版本号,让宿主自己解析。装完重启 DSH。不需要重新接管:pnpm 不会清掉重定向,接管做一次就够(0.1.5 起实测,0.1.7 重启后再次确认)。
兼容性与校验
- 宿主:peer 范围
>=0.1.5-rc.2 <0.2.0-0 || >=0.1.6-0 <0.2.0-0 || >=0.1.7-alpha.1 <0.2.0-0;cordis^4.0.2,schemastery^3.18.1。 - Node.js:
^22.19.0 || >=24.0.0。 - 套件 1360 条全过;
tsc --noEmit零错误。 - npm 上的
dsh-context-zip@0.1.7,shasum02e4834734949f8053fe19730019d5ae1b995fc0;本页附的dsh-context-zip-0.1.7.tgz与它同一份文件(sha1 逐位相同),sha2563d7da09daa7da967e19316d26b1e35b8e84ecae3271a95fe8665e4544a86a9ce。 - 已知边界(节流效果未确立、按会话覆盖表在面板上只读等)见
docs/局限性与已知问题.md。 - 逐条改动与依据见 RELEASE-NOTES.md。
v0.1.6: 升 0.1.6:版本声明与发布说明
面向使用者的三处改动,加两项发布物修正。压缩接管、分段目录、四个检索工具、导出与设置面板的行为与 0.1.5 完全相同。
1. 面板问号里的修复提示词,不再让 AI 去跑安装脚本
面板标题行那颗问号给出的提示词,原来让 AI 执行 npm i dsh-context-zip@latest 再跑 node install.mjs --profile-dir …。install.mjs 会把插件本体拷进 profile,破坏 pnpm 对它的管理,而且它只有 --check,没有「只刷新重定向」的口子。现在改成调插件自己的接管路由(与面板按钮同一条):只重写 profile 里那份行重定向,不碰插件本体。
2. 提示词里 stale 的判据纠正
原文写「接管后可能仍是 true,要等重启后重读才翻」。实际 stale 每次读取现算(拿盘上后端版本与戳比),接管写完戳就该是 false。旧写法会让 AI 把一次正常的接管说成不确定状态。
3. schemastery 的 peer 下限退到 ^3.18.1
实测 Schema.volatile() 只在 3.18.3 存在(3.18.1 无、3.18.2 无)。原声明 ^3.18.2 既向 3.18.2 承诺了它没有的能力,又把实际能跑的 3.18.1 判成不受支持。现在下限退到 ^3.18.1:在 3.18.1 / 3.18.2 上插件照常压缩、照常读写行配置,只是设置页不生成自动表单、设置服务没有写入通道。
4. 落地页与文档
- README 接上六张截图(面板四态 + 检索工具回显 + 五段式摘要)。四态取自隐藏虚拟桌面里的临时 DSH 实例;后两张的会话由本地桩模型驱动,只展示界面形态,不作为能力或效果证据。来源与逐张脱敏记录见
docs/截图清单.md。 - npm 页面用的那份 README 换成落地页,原开发向 README 移到
docs/开发说明.md。 - 套件文档里不可复现的历史数字换成实测值,并补上构建时序提醒(改了
client/index.ts或test/run.mjs之后必须重跑node build.mjs,否则会出现「期望是新的、包还是旧的」假红)。
升级
dsh plugin --profile web add dsh-context-zip@0.1.6
然后重启 DSH。不需要重新接管:pnpm 不会清掉重定向,接管做一次就够(0.1.5 起实测)。
兼容性与校验
- 宿主:peer 范围
>=0.1.5-rc.2 <0.2.0-0 || >=0.1.6-0 <0.2.0-0 || >=0.1.7-alpha.1 <0.2.0-0;实测通过0.1.5-rc.2、0.1.6-alpha.2、0.1.7-alpha.1。 - Node.js:
^22.19.0 || >=24.0.0。 - 套件 1358 条全过;
tsc --noEmit零错误。 - npm 上的
dsh-context-zip@0.1.6,shasumba0c7ff82f0d9af3c8ad7103e5d2a1fa4cc240ab。 - 已知边界(节流效果未确立、按会话覆盖表在面板上只读等)见
docs/局限性与已知问题.md。 - 逐条改动与依据见 RELEASE-NOTES.md。
v0.1.0
发布说明
版本:0.1.0
日期:2026.09.20(北京时间)
对应内部快照:内部开发快照
许可:MIT
这一版是什么
dsh-context-zip 的第一个发布版。它是一个给 DeepSeek Harness 用的上下文压缩插件,接管会话压缩那一步:产出带结构的五段式交接摘要,把被压掉的原文做成可回查的分段目录,并提供检索工具、可选的模型工作笔记、机械摘要兜底、散文摘要的排版重排,以及一个设置面板。
插件不修改 DSH 自身代码,不往会话日志里写任何事件。
包含哪些目录
| 目录或文件 | 内容 |
|---|---|
dsh-context-zip/ |
插件本体,含宿主半边、浏览器半边、压缩引擎包、行重定向包、构建脚本、安装器与测试套件 |
docs/ |
功能文档、结构与文件职责、安装与卸载、局限性与已知问题、同类插件对比 |
evidence/ |
套件说明、对照测试方案、对照测试最终报告、token 消耗与性价比分析、独立验收报告汇编、验收台账 |
README.md / README.en.md |
中文与英文的使用说明 |
RELEASE-NOTES.md |
本文件 |
LICENSE |
MIT 许可全文 |
对应哪次内部快照
对应内部快照 内部开发快照。
发布副本与那份内部快照不是逐字节相同:发布前做过一次脱敏,把开发机绝对路径、真实会话号、凭据一类换成了尖括号占位符,因此产品副本里的部分注释、安装示例与测试夹具与内部快照有差异。差异只限这类占位符,代码逻辑与判据不变,套件条数也不变。内部开发资料(过程台账、内部快照目录)不随本包发布,正文里凡引用它们的地方都写明了「未随本包发布」。
套件
当前 1009 条检查通过。跑法与覆盖范围见 evidence/套件说明.md。条数是「同时给出 --installed 与 --deliverable 两个参数」时的数;不接 --deliverable 时是 1006 条,差额是交付树那三条声明文件指针检查。
已验证到什么程度
压缩主流程、检索工具与节流、机械兜底与排版重排、设置与路由、面板文本与结构、面板重写、会话标题、整页保存这八大类都有套件判据覆盖;面板只读列表的渲染形态、显示更多 的封顶与步长、问号气泡的定位与翻转这三样没有写进套件,靠一次性渲染 fixture 与真机验收覆盖。逐条边界与已知问题见 docs/局限性与已知问题.md。
许可
MIT。全文见 LICENSE。