← 返回列表
⚠ 装前注意
一键把长对话压成几句摘要,新建会话接着聊
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/5 · 已提供中文文档
综合分
33.8
GitHub 分
33.8
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add qwert702/dsh-context-compressor未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-context-compressor(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 07:09:37
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-context-compressor 小模型上下文压缩插件,面向 DeepSeek Harness Web GUI。 上下文一长、小上下文模型就装不下——点一下会话标题栏的「压缩」按钮:插件把整段对话总结成几句话,新建一个同工作区的会话,把摘要作为第一条消息注入,然后自动切过去继续聊。原对话原样保留在侧边栏,一个字都不丢。 一键安装: dsh plugin --profile web add 例如本地路径:dsh plugin --profile web add D:\CBN-HT\Desktop\AI编程\dsh插件\dsh-context-compressor 装完重启 harness(dsh web)、刷新页面,会话标题栏右侧会出现「压缩」按钮。 功能 - 一键压缩:标题栏「压缩」→ 内联确认「压缩后新建会话继续?」→ 自动完成并切换。 - 几句话的摘要:摘要请求让模型把对话压成紧凑中文要点(3~10 条、每条一句话),关键信息(路径、命令、函数名、错误信息、数字、决定、用户偏好)原样保留——新会话上下文极小,小模型轻松装下。 - 新建会话继续:新会话与原文同工作区、继承 agentPreset、parentSession 指向原会话(侧边栏里嵌套显示来源),标题自动带上「· 续」;原会话作为完整历史保留,可随时回去翻。 - 摘要当背景、不当指令:注入消息带 标记和"已建立背景"前言,模型把它当作既有上下文直接续接,不会当成新任务去执行。 - 复用会话自身模型:摘要请求走 harness 的 ctx.llm,跟随会话路由的 provider/model;回放保留会话自身的 system + tools + 消息前缀,命中提供方 KV 缓存(同一会话连续压缩基本不重复烧输入钱)。 - 不碰 API key、不改写原会话:key 只存在于服务器,由 harness 凭据服务解析;原会话事件日志只读。 与内置压缩的关系 harness 自带 compaction-basic(自动按上下文阈值压缩 + /compact 命令),那是原地压缩:保留最近尾部,把更早的对话替换成一条结构化 checkpoint 消息。 本插件是另一条路径:整段对话压成几句话 → 开新会话注入。适合上下文窗口很小、连结构化 checkpoint 都嫌长的模型(比如自定义的小模型)。两者不冲突,可以同时装: - 想要"原地瘦身、接着聊" → 用内置的 /compact 或自动压缩; - 想要"干净的新会话 + 几句摘要" → 用本插件的「压缩」按钮。 工作原理 1. 点击「压缩」→ 浏览器调 POST /api/dsh-context-compressor/compress,带上当前 sessionId。 2. host 端从会话事件日志取 surface,最新优先回放到字符上限(maxInputChars,超出丢最旧),接上压缩指令,用会话自身的 system + tools + 前缀调 ctx.llm.stream()。 3. 模型输出中文要点摘要。host 端新建同 cwd 会话(parentSession 指向原会话),把「前言 + 摘要」作为第一条 user 消息 append 进去并 flush 落盘。 4. 浏览器刷新会话列表 → open() 切到新会话 → 标题加「· 续」。原会话不动。 新会话第一条消息会由用户手动发送;发消息时 harness 自动为该会话创建 agent(懒恢复),摘要随历史一起进入上下文。 设置(可选) 在 ~/.dsh/settings.yaml 添加命名空间 dsh-context-compressor: dsh-context-compressor: enabled: true # 总开关 maxInputChars: 20000 # 回放字符上限(超出时丢弃最旧消息) maxTokens: 2048 # 摘要输出 token 预算 summarizationProvider: '' # 留空 = 跟随会话路由的 provider/model summarizationModel: '' 不配置即用以上默认值。summarizationProvider / summarizationModel 需成对填写(例如 asdf / qwen38),用于覆盖"跟随会话模型"的默认行为。 仓库布局 - lib/index.js — 插件 host 半区:设置命名空间 + POST /api/dsh-context-compressor/compress 路由(回放 → 摘要 → 新建会话 → 注入 → flush)。 - lib/client.js — 浏览器半区:conversation.session.header.actions 链式条目(「压缩」按钮 + 内联确认 + 切换新会话 + 标题续接)。 - test/smoke.cjs — node test/smoke.cjs:host 路由全路径(禁用/坏请求/会话不存在/忙/空/成功/摘要失败)+ client 注册与 SSR 渲染断言 + compressRequest 请求断言。 已知限制 - 手动触发:只提供按钮,不自动触发。需要按上下文阈值自动压缩的话,harness 内置 compaction-basic 已经做了,直接配置即可。 - 忙时拒绝:模型正在回复(open turn)或该会话已有压缩进行中时,路由返回 busy,按钮显示失败并可重试。 - 摘要跟随会话路由模型:如果会话从没发过消息(没有 request header),且未配置 summarizationProvider/Model,压缩会失败——本会话能点按钮说明肯定有历史,正常不会触发。 - 跨会话不迁移临时状态:新会话只有摘要里的内容,未落进摘要的临时变量/中间结论不会自动带过去;摘要质量决定续接质量。 - 浏览器半区手动维护:lib/client.js 为手写 bundle(与 dsh-auto-translate 同一技术路线),不经过构建步骤;改动后直接生效,冒烟测试兜底。 License MIT
同作者(qwert702)的其他插件
扫码进群