前言¶
在 DSH 里写 Composer 草稿时,常会遇到表述不够清晰、约束不完整的情况。RooCode 在输入框右上角提供了 Enhance Prompt(✨ 魔杖):读当前草稿,单独走一次 LLM 改写,再原地替换,且不替你发送。DSH 社区插件 dsh-prompt-enhancer(维护者 misaka15527,版本 0.1.3,MIT)在 Composer 工具栏提供同类能力,默认走 zai / glm-5.3-flash,模型与模板可在插件设置卡片里改。
下面介绍它的定位、行为、配置与安装方式。事实以 GitHub 仓库 README 为准;社区目录见 SkillHub 插件页(与 DeepSeek / 幻方无官方从属关系)。
这是什么¶
dsh-prompt-enhancer 是 RooCode Enhance Prompt 在 DSH 中的等价实现:在模型选择器与发送按钮之间的 Composer 工具栏增加 ✨ 控件,对当前草稿做一次旁路 LLM 调用并原地替换结果,支持一键撤销;永远不会替你发送消息。
入口与行为¶
- 入口:Composer 工具栏(
conversation.input.left槽、list位)上的 ✨ 控件。 - 流程:读取当前草稿 → 宿主侧
ctx.llm.stream()旁路调用(purpose: 'prompt-enhancer',无工具、单轮)→ 通过inputActions.setDraft(text)原地替换草稿。 - 空草稿:仅提示「先写点草稿再点 ✨」,不发送、不改动内容。
- 撤销:插件保留改写前快照,提供「撤销」按钮;若在改写后又编辑了草稿,撤销会失效并提示,避免覆盖新输入(非编辑器原生 Ctrl+Z 栈)。
- 思考内容:协议层只累加
text-delta,reasoning-delta一律丢弃,避免思考块漏进最终 Prompt(对应 RooCode 侧已知 issue 类问题)。
模型与模板¶
默认改写使用 provider zai、model glm-5.3-flash。像 glm-5.3-flash 这类「始终思考」的模型需配置 reasoningEffort(low / high / max),默认 low;留空表示请求中完全不携带该选项。请求会按 {source, effort} 逐级降级重试,换用不支持某档位的模型时也不应因此报错。
默认增强模板与 RooCode 一致,可在设置里修改;模板中若无 ${userInput},草稿会追加到最后一行,不会丢失输入:
Generate an enhanced version of this prompt (reply with only the enhanced prompt - no conversation, explanations, lead-in, bullet points, placeholders, or surrounding quotes):${userInput}
设置项为 .volatile():保存后下一次点 ✨ 即生效,无需重启应用(与安装后需重启宿主/客户端装配不同,见下文安装节)。
配置项(插件设置卡片)¶
侧栏 插件 → dsh-prompt-enhancer 可改下列字段:
| 字段 | 默认 | 说明 |
|---|---|---|
enabled |
true |
关闭后点 ✨ 直接返回「已关闭」,不发请求 |
provider |
zai |
改写用的 provider |
model |
glm-5.3-flash |
改写用的模型 |
reasoningEffort |
low |
思考档位;留空 = 不发该选项 |
template |
见上 | 增强模板(${userInput} 占位) |
maxTokens |
2048 |
单次改写输出上限(字符串,便于表单) |
timeoutMs |
45000 |
超时按取消处理,界面复位 |
长模板在卡片里编辑不便时,也可直接改 profile 的 patch/json。
安装与启用¶
插件须同时出现在 profile 的 dsh.profile.bundles 与 dependencies 中,缺 bundles 则不会挂载。README 给出的 Windows 示例流程如下(使用前建议备份 profiles\desktop\cordis.patch.yml):
# 1) 克隆到 DSH 主目录下的 local-plugins,便于统一管理
git clone https://github.com/<you>/dsh-prompt-enhancer.git $env:USERPROFILE\.dsh\local-plugins\dsh-prompt-enhancer
# 2) 用官方 CLI 装进 profile(转发给 pnpm)
& 'F:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd' plugin --profile desktop add `
"$env:USERPROFILE\.dsh\local-plugins\dsh-prompt-enhancer"
手工方式:在 profiles\desktop\package.json 的 dependencies 增加 "dsh-prompt-enhancer": "file:../../local-plugins/dsh-prompt-enhancer",并在 dsh.profile.bundles 末尾加 "dsh-prompt-enhancer",然后在 profile 目录执行 pnpm install。
完成依赖装配后 重启桌面应用(宿主与客户端均在启动时装配)。打开任意会话,输入框工具栏应出现 ✨;在插件卡片中按需改 provider / model / reasoningEffort。
典型用法¶
- 在 Composer 里写好初稿(任务描述、约束、输出格式等)。
- 点工具栏 ✨,等待旁路改写完成,草稿被替换为增强版。
- 不满意则点「撤销」还原;满意则自行检查后发送(插件不会代发)。
- 在插件卡片调整
template或模型;保存后再次点 ✨ 即按新配置试写(测试区即直接点 ✨)。
安全、边界与尚未支持的能力¶
- 端点
POST /dsh-prompt-enhancer/enhance会消耗 token,带浏览器信任栅栏:非回环Host、Sec-Fetch-Site: cross-site、与Host不同源的Origin返回 403;若宿主提供connection.requestRejection则委托,异常按拒绝处理(fail closed)。 - 仅接受
POST;请求体 ≤256 KB、草稿 ≤20000 字符,否则 400。 - 尚未支持:带会话历史的上下文增强(RooCode 的 “Include task history”);也不写入会话审计事件(README 提到可参考官方
dsh-session-title-llm的session/title-llm-request做法)。
适用场景与注意¶
适合需要在发送前快速润色、结构化 Prompt,且希望改写与主对话隔离、可换专用模型的 DSH 用户。插件在当前 DSH 进程权限下运行,安装前请自行查看 源码与 LICENSE,确认端点与 token 消耗可接受。
卸载:从 dsh.profile.bundles 与 dependencies 移除 dsh-prompt-enhancer 后重启即可;插件不写独立状态文件。
结尾¶
dsh-prompt-enhancer 把 RooCode 式「单轮旁路增强 + 原地替换 + 可撤销」落到 DSH Composer 工具栏,默认 zai / glm-5.3-flash,配置集中在插件卡片。进一步了解与安装细节见 GitHub 与 SkillHub 目录页。