前言¶
用 DSH(DeepSeek Harness)写提示词时,一个常见痛点是:草稿写完了,但不知道要不要改、怎么改,只能整段发出去让模型自己理解。手动重写、复制粘贴对比、让模型返回优化后的文本再贴回来,都打断在 composer 里的工作流。
下面介绍的插件 az-666316/dsh-prompt-optimizer-button 就是一个针对这个场景的小工具:在 composer 输入框上加一个「优化提示词」按钮,点一下,用当前选中的模型把草稿改写好,直接替换回输入框,不发送、不新增对话轮次。
这是什么¶
dsh-prompt-optimizer-button 是 DSH 的一个插件(dsh-plugin),由 AZ-666316 维护。它解决的问题很单一:在 composer 里对当前草稿做一次模型驱动的提示词改写,并提供改动理由的诊断面板。
它属于社区目录中的模型推理类插件,采用 MIT 许可证,当前版本 0.4.2,engines 要求 dsh >= 0.2.2-rc.1 < 0.3.0-0。来源:GitHub 仓库 AZ-666316/dsh-prompt-optimizer-button 的 README 与 package.json。
核心功能¶
插件在 composer 上做三件事:
- 在模型选择框与发送按钮之间(麦克风/发送按钮左侧)插入一个 sparkle 小图标按钮和一个场景徽标。
- 点击图标后,插件把当前草稿发给宿主侧的一段服务,用输入框里当前选的 provider/model(含 reasoning effort)跑一次普通模型调用,把改写后的提示词直接替换回输入框。
- 一次调用同时返回改写结果、场景判断和结构化诊断。诊断不进输入框,只显示在弹出面板里。
行为细节(均来自 README):
- 不发送、不新增对话轮次。改写结果先写回输入框,用户看完、改完,再按 Enter。
- 不另配密钥,沿用输入框当前选的 provider/model。
- 草稿为空时按钮置灰;请求进行中图标呼吸闪烁、按钮不可再点;失败时图标变红并自动打开面板说明原因。
- 场景徽标显示模型判断出的场景:自动 / 论文 / 派活 / 日常 / 英文。点徽标可打开面板,并在面板里手动钉住下一次要用的场景。
诊断面板的内容依次是:功能提示、场景选择 chips(自动/论文/派活/日常/英文,点一下即钉住)、诊断(任务类型、要支撑的决策)与三条自检(✓ 通过 / ! 未通过,各带一句理由)、失败原因(仅失败时)。面板用 position: fixed 挂在按钮上方(空间不足自动翻到下方),水平居中并夹在视口内;外部点击、Escape、关闭按钮都能收起;带 role="dialog"。视觉为深色半透明 + 背景模糊 + 圆角 14 + 投影,徽标是圆点 + 文字的胶囊。
工作原理¶
插件由宿主侧和浏览器侧两部分组成(依据 README 的「结构」一节):
- 浏览器侧(
client.js)注册conversation.input.right单元格,用ReactDOM.createPortal把徽标与按钮插到 composer trailing 行的standardControls(模型选择器块)之后;诊断面板再 portal 到document.body,用按钮矩形计算固定定位坐标。 - 宿主侧(
index.js)注册一条同源路由:
POST /prompt-optimizer/rewrite
请求 : { text, provider, model, reasoningEffort?, scenario? }
响应 : { ok: true, text, scenario, diagnosis }
其中 text 是改写后的提示词(唯一写回输入框的内容),scenario / diagnosis 只给面板用。桌面版页面 origin 是 dsh-app://app,主进程会把非本地资源的 fetch 转发到宿主 Web 服务器(带认证 cookie),所以相对路径的 fetch 在桌面与网页版都能用。
模型答案用行标记解析(SCENARIO: / DIAGNOSIS: / PROMPT:),长提示词正文不塞进 JSON 字符串,避免换行与引号导致解析失败;解析失败时回退为「整段当提示词」。
工程上有两点值得注意:
- 宿主侧不
import任何@deepseek-ai/*包(profile 里并没有 dsh-llm),只通过ctx.get('llm')/ctx.inject(['webServer'])拿运行时服务,避免插件拖慢或拖垮启动握手。 - 不再依赖
prompt-optimizer技能:优化规则写在index.js的 system prompt 里。仓库里仍保留了skills/prompt-optimizer/目录作为对话用的技能(Codex 场景按$prompt-optimizer调用,DSH 场景按/prompt-optimizer调用),两者不冲突。
安装与启用¶
推荐的方式是本地通过 plugin_manager 的 install_bundle 以 link: 方式装到 profile(如 desktop)。手动安装等价于三步,按 README 原文:
1、在 profile 的 package.json(如 %USERPROFILE%\.dsh\profiles\desktop\package.json)的 dependencies 加:
"dsh-prompt-optimizer-button": "link:<本目录绝对路径>"
2、把 dsh-prompt-optimizer-button 加进 dsh.profile.bundles。
3、让 profile 重新组装(plugin_manager 的 set/install,或重启 DSH),页面刷新后生效。
插件自带的依赖项(package.json 的 dsh.client.inject)要求注入 @deepseek-ai/dsh-client-locale 与 @deepseek-ai/dsh-client-ui-conversation,这两个包由 DSH 自身提供,无需额外安装。运行中的 DSH(0.2.2 级别)自带 llm、webServer 服务即可,无需额外包。
卸载有两种方式:
# 方式一:在 plugin_manager 里禁用/移除 prompt-optimizer-button 行
# 方式二:命令行移除
dsh plugin --profile desktop remove dsh-prompt-optimizer-button
典型用法¶
1、正常打开一个会话,在 composer 输入框输入草稿,例如一句比较含糊的任务描述。
2、确认输入框里选的 provider/model 和 reasoning effort 是否符合预期——插件会原样用这套配置发起这次改写,不另配密钥。
3、点击 sparkle 图标。此时按钮进入「请求进行中」状态(图标呼吸闪烁、不可再点);模型返回后,改写后的提示词直接替换输入框草稿,场景徽标更新为模型判断出的场景(自动 / 论文 / 派活 / 日常 / 英文之一)。
4、点一下场景徽标(或失败时自动弹出的面板),查看诊断面板:场景选择 chips 可以手动钉住下一次要用的场景,正文里的任务类型、决策目标和三条自检给出改写理由。不需要诊断的话,直接关掉面板。
5、查看写回的提示词,不满意就手动改,满意再按 Enter 发送。插件默认不自动发送。
适用场景与注意¶
适合的用户:
- 经常在 composer 里调整提示词、希望「改一版看看」而不是发一轮对话的用户。
- 需要知道模型为什么这样改写的开发者:诊断面板把任务类型、决策目标和自检结果摆出来,比单纯看改写结果更容易判断质量。
注意事项:
- 插件以当前 dsh 进程的权限运行,并通过同源路由调用宿主侧服务。安装前应检查源码(
index.js、client.js、cordis.patch.yml)与 MIT 许可证,确认路由行为是否符合自己的预期。 - 宿主路由不做额外鉴权,依赖 Web 服务器本身只在 loopback 暴露;若要对外暴露需自行加策略。
- 单次请求上限:输入 20k 字符、输出 4000 tokens、超时 90 秒;输出被 max tokens 截断时直接报错(提示缩短草稿),不会把半截提示词写回草稿。
- DSH 0.2.2 的 composer 内部 DOM 不是公开 API;升级后若
[data-composer-card]/standardControls结构变化,按钮定位会失效(插件有「发送按钮前」的兜底定位)。 - 按钮只在会话输入框出现,欢迎 hero 态没有该单元格。
- 目前不自动发送。要「点完直接发送」,需改
client.js的onClick,在setDraft后调用inputActions.submit()。
生态背景:DSH 的理念是「一切皆插件」,本插件来自社区目录与个人仓库,与 DeepSeek / 幻方无官方从属关系,不属于官方应用商店收录。
结尾¶
这个插件的价值在于把「改写提示词」这一步留在 composer 内部完成:一次普通模型调用、一个按钮、一个诊断面板,不改变现有会话流。如果你主要在 DSH 里写提示词,且刚好在 0.2.2 版本的支持范围内,值得装一个试试。
- 目录页:https://www.skillhub.cn/plugins/AZ-666316/dsh-prompt-optimizer-button
- GitHub:https://github.com/AZ-666316/dsh-prompt-optimizer-button