前言¶
在 DSH(DeepSeek Harness)里写 prompt 的人常有两类重复动作:把一段松散的草稿改得更清楚,或只想把其中一句换个说法,其余部分保持原样。传统做法是把整段粘进模型,得到结果再手动比对回原框,中间还要担心改坏后无法回退。
下面介绍的插件 dsh-prompt-spark 针对的就是这个位置——它不在侧边栏或设置页,而是直接挂在 DSH 输入工具栏旁边。按 README 的说法,它是「无设置页、无配置文件,可选项藏在手势里」。
这是什么¶
dsh-prompt-spark 由 mihoojj 维护,托管在 GitHub,通过 npm 以 dsh-prompt-spark 包名分发。定位一句话:点一下输入框旁的 sparkle 按钮,就用当前会话已在使用的那个模型路由,把草稿改写成更清楚的版本,并支持即时撤销。
它属于模型推理类插件,复用现有会话的模型与密钥,本身不新增 provider 配置。许可证是 MIT。
核心功能¶
-
改写(Rewrite):点击 sparkle 按钮,按当前会话的建模路线把草稿改写得更清楚,改写结果直接替换输入框内容。
-
撤销(Undo):改写后按钮变为 undo。只有在草稿仍与改写结果完全一致时 undo 才可用;一旦手动编辑,按钮回到 sparkle,撤销窗口关闭。
-
风格预设(Styles):长按或右键按钮弹出四个固定预设——Clearer、Shorter、More formal、More casual。选择后会记住,下一次单击沿用该风格。
-
选区改写(Selection rewrite):先选中草稿的一部分再点按钮,只改写选中片段;周边文本作为上下文一起发送,以保持结果流畅。
-
快捷键:DSH Desktop 下为
Ctrl+Shift+O(macOS 是Cmd+Shift+O),Web 构建下为Ctrl+Alt+Shift+O。两者都在内置 Keyboard shortcuts 面板里可重映射。Web 版之所以多一层 Alt,是因为Ctrl+Shift+O被官方「在应用中打开」占用了。 -
显示控制:草稿为空或只有空白字符、输入框处于
adjudicating/submitting状态时,控件自动隐藏。改写失败时草稿保持原样,按钮 tooltip 报告原因码。
安装与启用¶
README 给出的安装方式有两种,包名都是 dsh-prompt-spark,不是 github:mihoojj/dsh-prompt-spark 这种形式。
第一种,在 DSH Desktop 里操作:打开 Plugins,选择 Add plugin,填入包名或该仓库的绝对路径,然后启用:
dsh-prompt-spark
第二种,从终端针对指定 profile 安装:
dsh plugin --profile <profile> add dsh-prompt-spark
修改 client.js(浏览器半边)只需刷新页面。改 index.js(宿主半边)需要重启应用。
典型用法¶
先输入一段粗糙的草稿,例如目标、约束、输出格式混写在一起的描述。然后点工具栏旁的 sparkle 按钮,框内文本被改写后的结果替换。若不满意,只要文本未被再次编辑,直接点 undo 回到原文。
只想调整中间一句时,选中该句再点 sparkle,被选中的片段被替换,其余部分按上下文保留。想换一头一尾的语气差异时,长按按钮在 Clearer / Shorter / More formal / More casual 之间选择,下一次单击即应用该风格。
内部结构¶
插件分宿主与浏览器两半,入口各自独立,这个划分决定了调试时要不要重启应用。
| 文件 | 角色 |
|---|---|
package.json |
npm bundle:dsh.bundle.patch 指向 cordis.patch.yml,dsh.client.platform 为 web,对应 client.js |
cordis.patch.yml |
只有一行 insert,name 为该包名 |
index.js |
宿主半边。inject 为 ['webServer','connection'],注册精确的 POST /dsh-prompt-spark/rewrite,落在 Connection trust fence 之后,带 body 大小限制,内部调用 llm.stream |
client.js |
浏览器半边。通过 window.__ModuleLoader__.load({ id, factory }) 注册,返回 { inject: ['slots','locale'], apply(ctx) } |
locale/*.json |
插件页的显示元数据 |
浏览器用 new URL('dsh-prompt-spark/rewrite', document.baseURI) 相对文档解析路由,因此挂载前缀的场景也能工作。宿主不接触 provider 密钥或端点,而是顺着组合的 llm 服务流式转发,使用会话自身的 provider/model,失败时回退到配置好的默认值。风格是固定指令后缀,没有任何配置界面。
开发与验证¶
npm test # node test/host.test.mjs && node test/client.test.mjs
npm run check # node --check index.js && node --check client.js
npm run pack:check # npm pack --dry-run
test/host.test.mjs 覆盖路由边界、方法与 body 限制、风格与选区请求的封装、LLM 流的各种结果。test/client.test.mjs 用一个小型 React 支架驱动组件,覆盖可见性规则、改写/撤销生命周期、风格菜单、长按、选区替换、失败 tooltip 与注册结构。
适用场景与注意¶
适合日常在 DSH 输入框写 prompt、希望就近改写措辞却又不想跳出窗口的人。它依赖当前会话已有的模型路由,所以行为与该会话一致,风格切换不会改变底层模型选择。
两点需要注意。其一,这个插件以当前 dsh 进程的权限运行,安装前应当自己审一遍源码与许可证(README 标注为 MIT)。其二,插件目录页属于第三方社区站点,与 DeepSeek / 幻方无官方从属关系,安装渠道以包名为准。
小结¶
dsh-prompt-spark 把改写这件事压到一个按钮、一次撤销、四个风格上,不引入配置面,也不打断当前会话的模型上下文。对希望减少手动往返的用户来说,这是个可以直接落地的小工具。
目录页:https://www.skillhub.cn/plugins/mihoojj/dsh-prompt-spark
源码与说明:https://github.com/mihoojj/dsh-prompt-spark