压缩长会话时逐字保留数值、路径与命令,并按会话语言输出摘要
32.6/100
综合分
1
GitHub 星标
26
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @helibeiqi/dsh-compaction-pronpm 源 · @helibeiqi/dsh-compaction-pro 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 64 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@helibeiqi/dsh-compaction-pro @ 0.1.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 11:42:54
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-compaction@deepseek-ai/dsh-compaction-basic@deepseek-ai/dsh-llm@deepseek-ai/dsh-agent给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 逐字保留数值路径命令
- 按会话语言输出摘要
- 递归压缩长会话
高保真、忠实、双语、递归压缩后端,专为 DeepSeek Harness 打造。
README
由 DeepSeek 最新模型翻译生成dsh-compaction-pro
DeepSeek Harness 的高保真上下文压缩后端 —— dsh-compaction-basic 的无损升级替换。
保留官方全部压力/保留/token 计量策略,只把“摘要质量”这一环换掉。
topic:dsh-plugin
它解决什么问题
长会话里 dsh 会触发上下文压缩(compaction),把早期对话压成一个 checkpoint。官方后端 dsh-compaction-basic 的摘要提示词是英文通用模板,有两个痛点:
1. 丢精确值:数字、文件路径、命令串、错误串、标识符常被“整理”或改写 —— 对量化/编程 Agent 是致命的(一个版本号、一个股票代码、一条命令被改掉,下游就错了)。
2. 只出英文:中文用户的会话被压成英文摘要,回读割裂。
dsh-compaction-pro 只改 summarize() 这一环(官方文档明确标注的唯一子类钩子),其余策略全部继承官方实现。
展开完整文档(README 剩余 1 节)
dsh-compaction-pro
DeepSeek Harness 的高保真上下文压缩后端 —— dsh-compaction-basic 的无损升级替换。
保留官方全部压力/保留/token 计量策略,只把“摘要质量”这一环换掉。
topic:dsh-plugin
它解决什么问题
长会话里 dsh 会触发上下文压缩(compaction),把早期对话压成一个 checkpoint。官方后端 dsh-compaction-basic 的摘要提示词是英文通用模板,有两个痛点:
1. 丢精确值:数字、文件路径、命令串、错误串、标识符常被“整理”或改写 —— 对量化/编程 Agent 是致命的(一个版本号、一个股票代码、一条命令被改掉,下游就错了)。
2. 只出英文:中文用户的会话被压成英文摘要,回读割裂。
dsh-compaction-pro 只改 summarize() 这一环(官方文档明确标注的唯一子类钩子),其余策略全部继承官方实现。
与官方 dsh-compaction-basic 对比
| 维度 | dsh-compaction-basic(官方唯一实现) | dsh-compaction-pro |
| 摘要提示词 | 英文通用模板 | 高保真模板:强制保留精确数值/路径/命令/标识符 |
| 语言 | 强制英文输出 | 跟随会话语言(中文会话→中文摘要,代码/标识符逐字保留) |
| 决策还原 | 仅“关键决策” | 决策 + 理由 + 被否决的替代方案(贴合真实推理方式) |
| 大区段处理 | 单次摘要,易在 maxTokens 处被截断 | 可选递归分块:先压每块、再合并,长会话不丢信息 |
| 工具结果 | 笼统保留 | 单列「关键工具输出」段(返回结构/重要返回值/文件片段) |
| 自定义 | 无 | customInstruction 可整段替换提示词 |
| 策略/保留/计量 | 官方实现 | 完全一致(继承自 BasicCompactionEngine) |
一句话:官方做“压得动”,pro 做“压不歪”。
快速开始
方式 A:本地开发(无需构建、无需发布)
dsh 的 loader 直接加载 .ts 源文件(内部 transpile;官方 dev 用 node --import tsx)。
把下面这段加进你的 ~/.dsh/cordis.patch.yml(升级安全,重启自动重挂):
若你的 dsh 构建只认已编译 JS,先 npm run build 再把 name 指向 lib/index.js 即可,其余不变。
- id: compaction-pro
name: 'C:/Users//dsh-plugins/dsh-compaction-pro/src/index.ts'
config:
faithful: true
recursive: true
summaryLanguage: auto
thresholdRatio: 0.8
retainRatio: 0.16
maxTokens: 8192
⚠️ 必做(否则 dsh 启动即崩):本插件与内置 dsh-compaction-basic 都注册同一个 ctx.compaction 服务,二者不能同时启用。cordis 会在启动时抛 "ctx.compaction already provided" 类错误。请在同一个 cordis.patch.yml 里显式禁用 basic(下面两步放一起即可):
1) 禁用内置后端
- id: compaction-basic
disabled: true
2) 注册 pro 后端
- id: compaction-pro
name: 'C:/Users//dsh-plugins/dsh-compaction-pro/src/index.ts'
config:
faithful: true
recursive: true
summaryLanguage: auto
thresholdRatio: 0.8
retainRatio: 0.16
maxTokens: 8192
方式 B:从 npm 安装(推荐)
dsh plugin --profile web add dsh-compaction-pro
安装后,仍需在 ~/.dsh/profiles/web/cordis.patch.yml 里禁用内置 dsh-compaction-basic(见上方「⚠️ 必做」说明),否则两个 ctx.compaction 后端冲突、dsh 启动即崩。本插件已在 apply() 里打印启动自检横幅提示该冲突。
配置项
| 配置 | 类型 | 默认 | 含义 |
| faithful | boolean | true | 强制保留精确数值/路径/命令/标识符,绝不改写 |
| summaryLanguage | 'en' \| 'zh' \| 'auto' | 'auto' | 摘要语言;auto 跟随会话语言 |
| recursive | boolean | true | 大区段先分块压、再合并,避免截断丢信息 |
| chunkMessages | number | 40 | recursive 开启时每个分块的消息数 |
| customInstruction | string | — | 整段替换内置摘要提示词 |
| thresholdRatio | number | 0.8 | 上下文窗口的压缩触发比例(继承自官方) |
| retainRatio | number | 0.16 | 保留近期尾部的比例(继承自官方) |
| maxTokens | number | 8192 | 摘要生成上限(继承自官方) |
| summarizationProvider / summarizationModel | string | '' | 留空则复用会话路由模型,否则钉死摘要模型 |
工作原理
BasicCompactionEngine (官方:压力/保留/token 计量 + 事务)
▲ extends
ProCompactionEngine (本插件:只重写 summarize() 钩子)
▲ 重写
proSummarize()
├─ 复用会话自身 system/tools/消息前缀 → ctx.llm.stream({ purpose: 'compaction' }) │ (前缀缓存复用,不失效 provider 热缓存) ├─ 追加高保真提示词(faithful + 双语 + 决策/理由 + 工具输出) └─ recursive:区段过大时先分块压、再合并
- 注册为 ctx.compaction,取代内置后端;所有调用方(compactIfNeeded / compactNow / /compact 命令)无感切换。
- 摘要走 ctx.llm.stream() 直连,可在 llm/stream 处统一拦截;abort/资源释放会中止进行中的摘要。
开发 & 构建
npm install # 安装 typescript / tsx(peer 由 dsh 运行时提供)
npm run typecheck # 类型检查(无产物)
npm run build # 产出 lib/(发布用)
本地联调:编辑 src/.ts 后重启 dsh 即可(loader 直跑 .ts)。
⚠️ 开发陷阱(已踩,省你时间)
这些坑在官方文档里不会写,是实际对着已发布包类型定义踩出来的:
1. dsh-compaction-basic/src/summarizer 子路径在已发布包里是死链接。
官方 README 暗示可以从 …/src/summarizer 拿 SummarizationInput / SummaryResult,但已发布的 npm 包只含 lib/ + lib/types/,没有 src/;而且根入口 @deepseek-ai/dsh-compaction-basic 不 re-export 这两个类型。
所以消费者无论类型检查还是运行时都拿不到它们。本插件的解法:在 src/types.ts 里逐字镜像这两个类型(只依赖 dsh-llm 里确实导出的 ContentBlock/Message/ToolSchema/TokenUsage),完全绕开死子路径。
2. schemastery v3 没有静态 literal / union 工厂。
z.literal('x')、z.union([...]) 会报 Property 'literal' does not exist。
字符串枚举改用 z.string() 并在注释里写明取值集合;object/number/string/ boolean/array 才是可用的静态工厂。
3. 类型检查要对着真实 dsh 运行时类型做。
@deepseek-ai/ 装在 dsh 自己的 node_modules 里。最稳的做法是把 dsh 运行时的 @deepseek-ai 作用域整坨拷进本插件的 node_modules/@deepseek-ai(约 28MB),再普通 tsc 解析即可,不必折腾 paths / baseUrl 的 Windows 绝对路径坑。
4. 相对导入用 .ts 扩展名 + allowImportingTsExtensions。
import { x } from './foo.ts',配合 tsconfig 的 allowImportingTsExtensions: true
与 noEmit: true(发布构建时再切到 .js 扩展名)。
当前验证状态
- ✅ 类型检查通过:对着真实 dsh 运行时类型(@deepseek-ai/dsh-compaction-basic 的 BasicCompactionEngine、protected summarize() 钩子签名、z.object 配置形态)零报错。
这证明了继承关系、override 签名、配置 schema 形状都正确。
- ✅ 运行时验证通过(2026-08-17):在真实 dsh web 实例(profile web,端口 8787)干净启动、零错误日志;dsh --profile web --dump-config 确认 compaction-pro 作为唯一 ctx.compaction 提供方生效、compaction-basic 已被禁用;浏览器实测 /compact 命令可发现并触发。
- ⚠️ 尚未端到端验证:摘要 LLM 的实际输出质量(faithful / 双语 / 递归分块)需要在配好 API Key 的真实会话里跑一次 /compact 才能确认。插件本身已确认正确加载与接管,这一步不影响"它作为后端生效"的结论。
测试
本插件带一套 vitest 单元测试,覆盖纯逻辑层(指令构建、配置解析、摘要编排),并通过 mock 拦截 @deepseek-ai/dsh-llm,无需真实 cordis 运行时或 API Key 即可离线运行:
npm install # 含 .npmrc:legacy-peer-deps,跳过重型 cordis 依赖
npm test # vitest run —— 覆盖 buildInstruction / partialInstruction /
mergeInstruction / resolveProConfig / proSummarize 全部分支
测试重点验证了修复过的真实缺陷:当 summarizationProvider / summarizationModel 未配置(文档默认"复用会话路由模型")时,必须回落到路由模型而非崩溃。
CI 在每次 push / PR 到 main 时自动运行 npm test(见 .github/workflows/ci.yml)。
兼容性
- 测试版本:dsh v0.1.0-rc.6(DeepSeek Harness 开发者预览期)。
- API 稳定性警告:dsh 处于早期、官方明确会有 兼容性破坏性变更。本插件通过继承 BasicCompactionEngine 并复用其内部实现细节(src/types.ts 镜像了官方未导出的 SummarizationInput / SummaryResult,构造函数需剥离 pro-only 配置键)。上游一旦改动这两个内部契约,本插件可能静默失效或崩溃——届时请升级到对应的 dsh-compaction-pro 版本。README 的「开发陷阱」一节列出了全部已知耦合点,升级 dsh 后请优先核对。
许可证
MIT © dsh-compaction-pro contributors
标签:deepseek-harness · dsh-plugin · compaction · context · summarization预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
helibeiqi/dsh-compaction-pro
压缩长会话时逐字保留数值、路径与命令,并按会话语言输出摘要
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 14,822已汉化DeepSeek 客户端
73
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 718已汉化DSH
71.2
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,261已汉化DSH
70.7
破甲评测WoYun520/dsh-purge
在本机分离宿主拦截与模型拒绝,做受控红队评测
★ 199已汉化DSH
69.7