dsh-prompt-enhancer:Composer 里的 Prompt 增强魔杖

前言

在 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 调用并原地替换结果,支持一键撤销;永远不会替你发送消息。

入口与行为

  1. 入口:Composer 工具栏(conversation.input.left 槽、list 位)上的 ✨ 控件。
  2. 流程:读取当前草稿 → 宿主侧 ctx.llm.stream() 旁路调用(purpose: 'prompt-enhancer',无工具、单轮)→ 通过 inputActions.setDraft(text) 原地替换草稿。
  3. 空草稿:仅提示「先写点草稿再点 ✨」,不发送、不改动内容。
  4. 撤销:插件保留改写前快照,提供「撤销」按钮;若在改写后又编辑了草稿,撤销会失效并提示,避免覆盖新输入(非编辑器原生 Ctrl+Z 栈)。
  5. 思考内容:协议层只累加 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。

典型用法

  1. 在 Composer 里写好初稿(任务描述、约束、输出格式等)。
  2. 点工具栏 ✨,等待旁路改写完成,草稿被替换为增强版。
  3. 不满意则点「撤销」还原;满意则自行检查后发送(插件不会代发)。
  4. 在插件卡片调整 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 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye