dsh-harness-chat-control
ChatGPT-style stop, revise, quote, and side-question controls for DeepSeek Harness Desktop UI.
- Stars
- 0
- Language
- JavaScript
- Created
- Sep 4, 2026
- Updated
- Sep 7, 2026
Introduction
dsh-harness-chat-control
让 DSH Desktop 的对话交互接近 ChatGPT。
项目目标:复刻 ChatGPT 的两种引用对话形式。
- 主对话引用:在当前会话引用回答,输入问题后继续在原会话中回答。
- 侧边栏引用对话:把引用带到 Better Sidebar,在独立侧边会话中追问,主会话保持不变。
界面示例
主对话引用
选择回答中的文字,或点击回答操作栏的“引用”。引用会保留为输入框中的注释胶囊;用户编辑完问题后再发送。
侧边栏对话引用
点击“侧栏问”或选中文字工具条中的“在侧边聊天中提问”。侧边栏沿用 Better Sidebar 的原生对话栏,可切换模型;引用胶囊之外的文字全部由用户输入,点击发送后才会开始回答。
功能
- 主对话引用:引用整条回答或选中的片段;不会把 Markdown 标记(如
>、---)污染到正文。 - 原生注释胶囊:引用在输入框中显示为
1 条注释胶囊,用户可先编辑问题、移除引用,再决定是否发送。 - 内置侧边栏:直接内置并锁定
dsh-better-sidebar@0.17.1的SideChatView、转录映射和样式;未安装 Better Sidebar 时也能使用,已安装其他版本时仍由本项目的侧边实现生效。 - 侧边栏引用:沿用 Better Sidebar 原生对话布局和 DSH 原生会话/模型能力;主会话与侧边会话相互独立。
- 侧边原生对话栏:权限、模型菜单、停止和发送状态都由原生对话栏负责,避免重复事件导致整页卡死。
- 模型选择:侧边会话直接使用原生模型选择器,模型设置只作用于当前侧边会话。
- 编辑并重发:用户消息点击铅笔后回到原生输入框;发送后在原会话位置覆盖显示新的分支,不创建一串重复新会话。
- 停止回答:复用 DSH 原生停止/发送状态,引用和侧边栏不会拦截或重复提交原生事件。
插件只增加引用胶囊、入口和会话路由;侧边栏的布局、转录和会话生命周期来自锁定的 Better Sidebar 0.17.1 源码,避免外部插件版本冲突。
适配版本
| 组件 | 版本 |
|---|---|
| DSH Desktop(Windows) | 0.7.2 |
DeepSeek Harness / @deepseek-ai/dsh | 0.1.2-alpha.1 |
dsh-better-sidebar | 0.17.1 |
| Node.js | >=20 |
| pnpm | 10.x 或 11.x |
dsh-better-sidebar@0.18.x 面向 Harness 0.1.2-rc.1+,会读取 alpha.1 没有的 connection.state.getSnapshot()。使用 DSH Desktop 0.7.2 时请固定为 0.17.1,否则点击新对话可能出现 Cannot read properties of undefined (reading 'getSnapshot')。
安装
在 Windows PowerShell 中执行当前稳定版本的一键安装命令:
$script = (irm 'https://raw.githubusercontent.com/1985899182/dsh-harness-chat-control/v0.2.64/scripts/install.ps1').TrimStart([char]0xFEFF)
& ([scriptblock]::Create($script)) -Ref 'v0.2.64'
安装器会把插件放入 DSH Desktop 的 web profile。首次代际安装或当前插件未运行时会直接暂存并提示完全退出、重新打开 DSH Desktop;只有已运行插件升级才同步 Web Client 并通过 HMR 更新,随后刷新页面(Ctrl+R)即可。
安装源使用显式 HTTPS,不会让 pnpm 将 GitHub 简写解析成 SSH。脚本会优先使用已有的 HTTP_PROXY/HTTPS_PROXY 或 WinINET 代理,并把代理传给 pnpm、git、node;也可以显式指定:
& ([scriptblock]::Create($script)) -Ref 'v0.2.64' -Proxy 'http://127.0.0.1:7897'
网络较慢时可指定 npm registry 和重试次数:
& ([scriptblock]::Create($script)) -Ref 'v0.2.64' -Registry 'https://registry.npmjs.org/' -FetchRetries 5
命令通过内存中的 scriptblock 执行,不要求修改 PowerShell 执行策略;若保存为 .ps1 后直接运行,请使用 powershell -ExecutionPolicy Bypass -File。
如果 profile 中已经是 Sidebar 0.18.x,先执行兼容修复:
$desktopNode = 'D:\DSH\DSH Desktop\resources\app\node_modules\node\bin\node.exe'
$desktopDsh = 'D:\DSH\DSH Desktop\resources\app\node_modules\@deepseek-ai\dsh\lib\bin.js'
$env:DSH_HOME = "$env:APPDATA\dsh-desktop\harness"
& $desktopNode $desktopDsh plugin --profile web add --save-exact dsh-better-sidebar@0.17.1
然后重新执行上面的一键安装命令并刷新页面。
如果 dshmarket 热挂载返回 502 或其他错误,安装器会保留脱敏后的 HTTP 状态和响应体,并明确提示需要冷启动;不会把代理超时误报成安装成功。
使用方式
- 主对话:在回答操作栏点击“引用”,或选中文字后选择“添加到对话”;在输入框中补充问题,再发送。
- 侧边栏对话:点击“侧栏问”,或在选中文字工具条选择“在侧边聊天中提问”;侧边栏打开后选择模型、输入问题,再发送。
- 编辑重发:点击用户消息旁的铅笔按钮,在原生输入框修改文字并发送;当前会话会在原位置显示新回答。
开发校验
npm test
校验清单、加载器声明、PowerShell 安装脚本和 JavaScript 语法。
版本
当前里程碑:v0.2.64,适配上表中的 DSH Desktop 0.7.2 / Harness 0.1.2-alpha.1,并内置 dsh-better-sidebar@0.17.1 的侧边对话实现;本版本让侧边栏模型选择和图片发送都走 DSH 主对话的原生 InputBar/附件准入链路,并修复隔离加载路径下消息 ID 缺失造成的 undefined is already pending 请求失败。升级 DSH 或 Harness 主版本后,请重新验证原生 Slots、侧边对话 API 和状态接口。
许可证
MIT