摘要:
dsh-compact-button是一款纯客户端的 DSH Web 插件,在上下文计量面板中提供「压缩上下文」与「新建会话」两个按钮,将手动敲/compact命令简化为一次点击。插件与/compact完全同通道、零侵入,支持状态实时反馈、中英文切换与防连点锁定。本文介绍其核心功能、npm/源码两种安装方式、使用步骤、常见问题排查及已知限制,适配 DSH 0.1.1-rc.2,MIT 协议开源。
长对话把上下文窗口撑爆?每次都要手动输入
/compact命令?本文带你上手 DSH 生态中的dsh-compact-button插件——在上下文计量面板里放两个按钮,一键压缩历史、一键新建会话,纯客户端零侵入。
一、背景:长会话的上下文焦虑
用过 DeepSeek Harness(DSH)做长任务的同学大概率都遇到过这个场景:
- 对话越跑越长,token 占用一路飙升;
- 上下文窗口快满了,得停下来手动敲
/compact把早期历史压成摘要; - 敲完命令还得等结果,手忙脚乱;
- 想新开一个会话继续,又得去侧边栏点半天。
dsh-compact-button就是为了解决这个痛点而生的——它在 DSH Web 的上下文计量面板里直接放了两个按钮:
| 按钮 | 作用 |
|---|---|
| 🔘 压缩上下文 | 点击即向当前会话提交/compact,把较早对话历史压缩成摘要 |
| 🆕 新建会话 | 点击即在同一 workspace 中开启新会话并跳转过去 |
适配 DSH 版本:0.1.1-rc.2,MIT 协议开源。
二、核心功能一览
1. 一键压缩,与/compact完全同通道
按钮点击后调用的是session.command('/compact'),和你手敲命令走的是完全相同的通道。压缩结果照常以命令行形式出现在对话流里,没有任何特殊行为,也不会引入额外的副作用。
2. 状态实时反馈
按钮文案会随提交状态自动流转,4 秒后自动回到待命状态,面板保持清爽:
| 状态 | 中文 | English | 含义 |
|---|---|---|---|
| 待命 | 压缩上下文 | Compact context | 可点击 |
| 提交中 | 压缩中… | Compacting… | 正在向会话提交命令 |
| 已提交 | 已提交压缩 | Compaction submitted | 命令已被接纳,结果见对话流 |
| 未匹配 | 命令未匹配 | Command not matched | 当前 composer 没有可提交命令的会话 |
| 失败 | 提交失败 | Submission failed | 提交命令时出错 |
3. 中英文实时切换
i18n 字典注册在compactButton命名空间下,跟随 DSH 全局语言设置实时切换,无需重启。
4. 一键新建会话
在压缩按钮右侧并排一个「新建会话」按钮,点击调用workspaces.startSession(),在当前会话所在的 workspace 中开启新会话并跳转。点击后约 1.5 秒内锁定,防止误连点。
5. 零侵入,纯客户端
- Host 半边为空
apply,无任何宿主行为; - 槽位不存在时按钮安静地不渲染,不影响平台其余部分;
- 插件自带
cordis.patch.yml,安装后自动追加挂载条目,无需手动编辑 profile。
三、安装教程
前置条件
- 已装好 DSH,
dsh web能正常运行; - Node.js ≥ 20;
- pnpm ≥ 10。
方式一:从 npm 安装(推荐)
dsh plugin--profilewebadddsh-compact-button@latest方式二:从源码安装(调试本地改动时使用)
# 1. 克隆并构建gitclone https://github.com/shyuan-hub/dsh-compact-button.gitcddsh-compact-buttonpnpminstall&&pnpmbuildpnpmpack# 生成 dsh-compact-button-0.2.0.tgz# 2. 通过 file: 通道安装dsh plugin--profilewebadd"file:<你的本地目录>/dsh-compact-button-0.2.0.tgz"调试时也可以用link:通道,改完代码pnpm build+ 重启dsh web即可生效:
dsh plugin--profilewebadd"link:<克隆目录绝对路径>"安装后必做
装完重启dsh web,再硬刷新浏览器(Cmd/Ctrl + Shift + R)即可生效。仅硬刷新浏览器不够,必须重启服务。
无需手动编辑 profile 的
package.json:本包声明了dsh.bundle.patch,dsh plugin add会自动把它追加进dsh.profile.bundles。
四、按钮怎么用
输入框(composer)旁的上下文圆环,点击展开就是「上下文计量面板」,两个按钮并排放在里面:
- 左侧「压缩上下文」:点击即提交
/compact,文案随状态流转,4 秒后自动复位; - 右侧「新建会话」:点击即在当前 workspace 开新会话并跳转,1.5 秒防连点锁定。
压缩结果会以命令行形式正常出现在对话流中,和手敲命令的体验完全一致。
五、常见问题排查
| 现象 | 原因与解决 |
|---|---|
| 面板里看不到按钮 | 上下文计量面板必须声明conversation.context.actions子槽位。确认平台补丁已应用后硬刷新浏览器 |
| 点击后显示「命令未匹配」 | 当前 composer 没有可提交命令的会话,切换到有活跃会话的页面再试 |
| 安装 / 改动后没生效 | 必须重启dsh web(仅硬刷新不够),重启后再硬刷新页面 |
六、已知限制
- 依赖平台为上下文计量面板声明
conversation.context.actions子槽位(需随附补丁),槽位缺失时按钮不渲染; - 压缩按钮只负责提交
/compact,压缩的接纳与执行语义由 Host 侧command-compact插件拥有; - 状态提示 4 秒后自动复位,不提供压缩进度展示;
- 新建会话按钮沿用部署默认的 agent 预设与权限设置;若当前会话用的是非默认预设,新会话不
会自动沿用(client 侧session.create不暴露预设/权限选择)。
七、总结
dsh-compact-button是一个小而美的 DSH Web 客户端插件,核心价值就一句话:把/compact命令从"手动敲"变成"点一下"。
- 纯客户端、零侵入、Host 半边为空;
- 与
/compact完全同通道,无副作用; - 状态反馈 + i18n + 防连点,细节到位;
如果你经常在 DSH Web 上跑长任务,上下文窗口总是提心吊胆,这个插件值得装一下。npm 一行命令搞定,重启即生效。
项目地址:github.com/shyuan-hub/dsh-compact-button
npm 包:dsh-compact-button
License:MIT · Built for the DeepSeek Harness ecosystem