前言¶
在 DSH(DeepSeek Harness)里,输入框草稿往往是一句随手写的需求:直接发送容易含糊,自己重写到结构清晰又费时,还容易改走原意。常见做法是复制到别处让模型改一版再贴回来,但 @引用、代码块、路径和命令参数很容易丢,而且会多占一轮会话上下文。
dsh-prompt-polish 是面向 DSH Web GUI 输入卡的「二次优化」插件:在草稿仍留在输入框的前提下,按轻 / 中 / 重三档改写,结果先进入预览面板,确认后才回填;未确认前草稿一字不改。优化过程不写入 Session、不产生对话轮次。维护者为 zhaosiw,许可证 MIT,归类上常出现在模型推理 / Web UI 相关目录。
这是什么¶
一句话:把输入框里的一段话交给当前默认模型做三档润色,预览满意再写回输入框,并尽量保留 @引用、代码与原有意图。
- 名称:
dsh-prompt-polish - 版本(package.json):
0.1.0 - 平台:DSH Web GUI(
dshhub标注 surfaces 为 host、web) - 目录页:https://www.skillhub.cn/plugins/zhaosiw/dsh-prompt-polish
- 源码:https://github.com/zhaosiw/dsh-prompt-polish
核心功能¶
入口与交互¶
- 输入卡片上方
Aa 优化按钮 - 快捷键
Ctrl/Cmd + Alt + P - 浏览器会记住上次选用的档位(默认「中度」);提交或裁决进行中时,相关按钮自动置灰
三档改写¶
| 档位 | 标识 | 做什么 | 效果 |
|---|---|---|---|
| 轻度 | smooth |
修语法、错别字、标点、赘词、指代与衔接 | 结构与信息量不变,长度约在原文 ±15% 内 |
| 中度 | structure |
把隐含结构写清楚:分点、范围、输出格式、禁止项等 | 信息点与原文一一对应,每句能在原文找到出处 |
| 重度 | instruction |
重组成可执行指令:目标 / 范围 / 要求 / 禁止项 / 验收标准 | 模糊表述收敛;缺的参数进入「待确认」 |
先预览后回填¶
改写结果只进入预览面板;确认之前输入框草稿不动。预览框内可继续编辑后再决定是否采用。
选区模式¶
在草稿中选中一段时,只优化选区;确认后只替换该选区(一次可撤销的编辑)。
保真与边界行为¶
客户端会校验并尽量逐字保留:@引用、/命令、代码块与行内代码、URL、路径、环境变量、命令参数、标识符、数字。若有丢失,会在面板顶部列出。
其他约定:
- 优化使用设置里的
agent-default-model;无可用模型时提示先在设置里选择模型 - 调用优先关闭 reasoning,被拒时自动退回默认档
- 输出协议为
{"text","notes","assumptions"};超时 60 秒 - 重度档文本更长时会按原文长度放大 token 预算;若被截断会尽量从
"text"字段抢救正文,避免把裸 JSON 写回输入框
不写会话¶
按 DSH 对「模型可见输入应能从会话日志重建」的约定,本插件故意不落 Session。需要留痕时请手动复制预览内容。
安装与启用¶
前提:DSH Web GUI 已能正常使用,profile 目录可写,pnpm 在 PATH。
下面三步把插件加入当前正在使用的 profile(将 <profile> 换成 desktop 或 web):
# 1) 加进正在运行的那个 profile
pnpm --dir "$env:USERPROFILE\.dsh\profiles\<profile>" add "github:zhaosiw/dsh-prompt-polish"
# 2) 让 profile 组合它:编辑 <profile>/package.json 的 dsh.profile.bundles,追加 "dsh-prompt-polish"
# 3) 触发一次 profile 重组(宿主 dsh-hmr 监听 patch/manifest,约 2~3 秒)
Add-Content "$env:USERPROFILE\.dsh\profiles\<profile>\cordis.patch.yml" "`n# touch $(Get-Date -Format o)"
宿主支持热重组:一般无需重启宿主,也无需刷新页面(新 bundle 经 /plugins/events SSE 推到已打开页面)。
仓库提供幂等安装脚本(自动探测在跑的 profile、改前备份、失败回滚):
pwsh -File .\scripts\install.ps1
pwsh -File .\scripts\uninstall.ps1 # 回滚
node .\scripts\verify.mjs dsh-prompt-polish 61372 # 只读验证:模块图有该行 + bundle 200
说明:verify.mjs 中的端口号 61372 来自 README 示例,实际验证时需与本机 GUI 端口一致。
兼容性(package.json / README):DSH >=0.2.0-rc.2,Node >=20;README 写明在 DSH 0.2.1-rc.2(Web GUI / desktop profile)上实测,客户端 slot 与 Remote 形态可能随版本变化。
典型用法¶
- 在输入框写好草稿(可含
@引用、代码块、路径等)。 - 点击
Aa 优化或按Ctrl/Cmd + Alt + P,在面板中选择轻度 / 中度 / 重度。 - 等待流式结果进入预览;必要时在预览框内再改几个字。
- 确认后全文或选区回填;不满意则关闭面板,草稿保持原样。
- 仅需润色一段时:先选中该段,再触发优化,确认后只替换选区。
仓库 test/cdp-verify.mjs 在 headless Chromium 下会跑完整链路(点按钮、切重度、确认插入、快捷键、Esc 关闭等),可作为行为参考;该脚本需本机会话 cookie,使用 ~/.dsh/.credentials.yaml 签名密钥在本机签发,不读取模型密钥。
工作原理(简述)¶
插件拆成宿主半区与浏览器半区:lib/index.js 提供 promptPolish 服务并把草稿交给 LLM 流式改写;lib/client.js 为手写成品 bundle,挂载输入 dock、预览面板与快捷键;浏览器通过 ctx.remote.promptPolish.polish({ text, level, locale }) 调用。草稿读写走宿主 inputActions(captureInsertion、insertText、setDraft 等)。更细的 slot、RPC 与提示词规则见仓库 docs/(spec.md、composer-api.md、host-llm.md、deploy.md)。
适用场景与注意¶
适合谁
- 经常在 DSH 输入框里写长需求、希望结构更清晰但不想多占会话轮次的使用者。
- 需要在改写法的同时尽量保留技术细节(引用、代码、路径、参数)的场景。
使用前建议
- 插件在当前 DSH 进程权限下运行,安装前请阅读源码与 MIT 许可证,确认符合你的环境策略。
- 社区目录(如 SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系;安装命令以 README 为准,勿凭插件名自行拼接未文档化的命令。
- Lexical 渲染下,输入框内换行在
innerText中可能呈现为多行空行,段落结构仍以编辑器为准(README 已知边界)。 - 无可用默认模型时无法优化;重度档输出更长,仍可能受模型长度限制。
结尾¶
dsh-prompt-polish 把「润色输入草稿」收进 DSH 输入卡:三档可控、预览可编辑、确认才回填,并尽量保真技术片段。需要安装细节与实现证据时,可直接查阅 GitHub README 与 docs/。
- 目录页:https://www.skillhub.cn/plugins/zhaosiw/dsh-prompt-polish
- GitHub:https://github.com/zhaosiw/dsh-prompt-polish