dsh-prompt-enhancer
RooCode 的 Enhance Prompt(输入框里的 ✨ 魔杖)在 DSH 里的等价物。
入口:composer 工具栏(模型选择器与发送按钮之间)多一个 ✨ 控件。
行为:读当前草稿 → 交给一次旁路 LLM 调用改写 → 原地替换草稿 → 可一键
撤销还原。 草稿为空时点它只会提示,不会发送、不会改动任何东西;它永远不替你发送。模型:默认
zai/glm-5.3-flash,可在插件设置卡片里随手改(provider/model/reasoningEffort),设置是.volatile()的,保存后下一次点 ✨ 就生效,不用重启应用。思考档位:像
glm-5.3-flash这种「始终思考」的模型必须带reasoningEffort(low/high/max)。默认low;留空表示完全不发该选项。请求按{source, effort}逐级降级重试,所以换成不支持该档位的模型也不会报错。模板:默认逐字照抄 RooCode 的模板,可在设置卡片里改:
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}模板里没有
${userInput}时,草稿会被追加到最后一行(绝不会丢输入)。
为什么是这个形态(与 RooCode 的对应关系)
| RooCode | 本插件 |
|---|---|
| 输入框右上角魔杖 | conversation.input.left 槽里的 ✨ 控件(composer 工具栏,list 槽,可多占位) |
| 单独一次改写请求,不进任务对话 | 宿主侧 ctx.llm.stream() 旁路调用(purpose: 'prompt-enhancer'),无工具、单轮 |
| 替换输入框文本 | 公开动作面 inputActions.setDraft(text) |
| Ctrl+Z 撤销 | 插件自己留一份原稿 → 撤销 按钮(并且在草稿被再次编辑后拒绝撤销,避免覆盖你新打的内容) |
| 单独指定 API 配置 | 设置卡片里的 provider / model |
<think> 会漏进结果(issue #4099) |
协议层解决:只累加 text-delta,reasoning-delta 一律丢弃 |
| 可编辑模板 + 测试区 | 设置卡片里的 template(测试区=直接点 ✨ 试) |
| 空草稿给帮助文案 | 空草稿时提示"先写点草稿再点 ✨" |
配置项(插件设置卡片)
| 字段 | 默认 | 说明 |
|---|---|---|
enabled |
true |
关掉后端点直接返回"已关闭",不发任何请求 |
provider |
zai |
改写用的 provider |
model |
glm-5.3-flash |
改写用的模型 |
reasoningEffort |
low |
思考档位;glm-5.3-flash 必须带(low/high/max),留空 = 不发 |
template |
见上 | 增强模板(${userInput} 占位) |
maxTokens |
2048 |
单次改写输出上限(字符串,便于表单编辑) |
timeoutMs |
45000 |
超时(超时按取消处理,界面会复位) |
安全与边界
- 端点
POST /dsh-prompt-enhancer/enhance会花 token,因此带浏览器信任栅栏: 非回环Host、Sec-Fetch-Site: cross-site、与Host不同源的Origin一律 403; 宿主若有connection.requestRejection则委托它,且它抛异常按拒绝处理(fail closed)。 - 只接受
POST、请求体 ≤256 KB、草稿 ≤20000 字符,其余 400。 - 撤销是"快照式":不是编辑器原生 undo 栈。改完草稿再改别的字之后,撤销会主动失效并提示。
- 尚未支持:带会话历史的上下文增强(RooCode 的 "Include task history");也不写会话审计事件
(官方
dsh-session-title-llm会 append 一条session/title-llm-request,值得后续照抄)。 - 模板是单行文本域,长模板在卡片里编辑不如图省事——也可以直接改 profile 的 patch/json。
安装
插件必须同时出现在 profile 的 dsh.profile.bundles 与 dependencies 里(缺前者不会挂载)。
# 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"
用 CLI 之前建议先备份
profiles\desktop\cordis.patch.yml(历史上的插件安装曾把它重写掉)。
手工方式:在 profiles\desktop\package.json 的 dependencies 加
"dsh-prompt-enhancer": "file:../../local-plugins/dsh-prompt-enhancer",
并在 dsh.profile.bundles 末尾加 "dsh-prompt-enhancer",然后在该 profile 目录执行 pnpm install。
- 重启桌面应用(宿主半边与客户端半边都只在启动时装配)。
- 打开任意会话,输入框工具栏应出现 ✨;点它即用默认模型改写。
- 在 侧栏 → 插件 → dsh-prompt-enhancer 的卡片里改
provider/model/reasoningEffort。
卸载
从 dsh.profile.bundles 与 dependencies 里删掉 dsh-prompt-enhancer,重启应用即可;
插件不写任何自己的状态文件。
No comments yet. Be the first to write one.