前言¶
在 DeepSeek Harness(dsh)的网页对话里写提示词,草稿经常是先倒出来再说:口语、重复、中英夹杂、结构散。直接发送也能跑,但模型要先猜你的重点;自己再改一版又会打断思路。
DeepSeek 官方把 Harness 的核心理念写成「一切皆插件」:模型、工具、会话、UI 都可以在配置层增删,不必改核心源码。社区因此出现了一批只做一件小事的界面插件。dsh-composer-polish 做的就是输入框这一侧——草稿写完,点工具行里的 ✨ 按钮,几秒后润色结果填回输入框,你预览、再改、再决定发不发。
本文按社区插件目录页、GitHub 仓库 README / package.json / 源码交叉核对后整理。该目录是独立站点,与 DeepSeek、幻方无官方从属关系,不能当成官方应用商店。Harness 目前仍是开发者预览,插件可能随核心升级出现不兼容变更。
这是什么¶
dsh-composer-polish 是一款面向 DeepSeek Harness Web UI 的界面增强插件,由 GitHub 用户 tianji-qingtian 维护,仓库许可证为 MIT。当前版本号在 package.json 和 git tag 上均为 v0.1.3。截至 2026-08-17,GitHub API 显示该仓库 6 星;社区目录页同期展示为 12 星,以下以 GitHub 一手数据为准。
它解决的问题很窄:把当前输入框里的文字草稿改写得更清楚、更好组织,然后写回输入框。仓库 README 的定位是「不搞评测、不打分:草稿进,更好的草稿出」。它不会替你发出这条消息,也不会动图片附件。
package.json 里 dsh.client.platform 声明为 web。终端 TUI、无界面 headless 配置装上它,也看不到这个按钮。
核心功能¶
仓库 README、需求文档 REQUIREMENTS.md 和 src/ 源码对行为的描述一致,可以按下面几条理解。
工具行里的 ✨ 按钮¶
客户端把按钮挂在官方槽位 conversation.input.right,紧挨发送按钮。文案跟随 Harness 的 locale 服务:中文是「润色」,英文是「Polish」。草稿为空或只有空白时按钮禁用;润色进行中会转圈,并挡住重复点击。
仓库提供了一张按钮位置截图:

用 flash 模型改写,不碰主对话前缀¶
Host 端注册斜杠命令 /polish。点击按钮后,浏览器通过 Harness 内置的 commands remote 把当前草稿送过去,和内置 / 命令走同一条通道,没有另造 RPC。
改写是一次零前缀的 ctx.llm.stream 调用:提供方固定为 deepseek-official,模型固定为 deepseek-v4-flash,reasoningEffort 设为 'off',maxTokens 为 2000。主会话用的模型不会因此再跑一轮,前缀缓存也不会被这次润色占用。若目录里找不到这个模型 id,host 会用 llm.listModels 挑一个 flash 类模型重试一次。
回填输入框,不是发消息¶
润色成功后,客户端从命令结果里取出文本,调用官方写入路径 inputActions.setDraft 替换输入框内容。你可以继续改,也可以再点一次 ✨;不按发送,什么都不会进对话。草稿里如果带了图片,只替换文字,图片不动、不丢。
点击时会记下当时的 draftRev。润色还没回来、你又改了草稿,结果会被丢弃,避免覆盖你刚打的字。
失败静默,原文尽量不进会话日志¶
改写失败、返回空、或命令报错时,输入框原文不动,只在浏览器 console 打日志,不弹 toast。
/polish 注册时设了 recordInput: false,command/run 事件不写 args,草稿原文不会落到会话日志。需要知道的是:润色结果仍会记在 command/done 里。想完全不留改写痕迹,这个插件做不到。
语言、语气和代码原样策略¶
提示词写在 host 端源码 src/index.js 里,要求改写时:
- 跟随草稿语言(中英混排则跟主导语言)
- 保留意图、事实、约束,不增不减
- 代码块、文件路径、命令行、报错、标识符、技术术语原样保留
- 去掉口水话和重复,但不要改得更正式、更营销腔、更机器腔
- 已经写清楚的草稿少改
- 只返回润色后的正文,不要前言、解释或外层引号
当前版本不做「指定风格改写」。需求文档写明:v1 只做通用润色。
安装与启用¶
社区目录页给出的安装命令如下,在 DeepSeek Harness 终端运行即可:
dsh plugin add github:tianji-qingtian/dsh-composer-polish
目录页同时说明:如需可复现安装,应固定 commit 哈希,形式为 dsh plugin add github:tianji-qingtian/dsh-composer-polish#commit。
仓库 README 的步骤更完整,也是实际更稳妥的写法。它要求把插件加进 web profile,并钉在已发布的 tag v0.1.3 上。仓库已提交构建好的 lib/,安装时不跑构建脚本。
先确认 dsh 在 PATH 上。如果平时只用 npx @deepseek-ai/dsh web 启动过 Harness,本机可能没有全局 CLI,会报 command not found: dsh。README 给出的安装方式:
npm install -g @deepseek-ai/dsh
也可以用 pnpm add -g @deepseek-ai/dsh(全局 bin 目录需要在 PATH 上),或不装全局、给后续命令加 npx @deepseek-ai/dsh 前缀。
然后把插件写入 web profile 并重启:
dsh plugin --profile web add "github:tianji-qingtian/dsh-composer-polish#v0.1.3"
dsh --profile web
add 只改 profile 文件,正在跑的实例不会热加载。重启后,✨ 按钮应出现在输入框工具行、发送按钮旁边;host 半载入后 /polish 命令才会注册。可在 Settings → Plugins 里确认列表中有 dsh-composer-polish。
package.json 声明的 Node 引擎是 ^22.19.0 || >=24.0.0。环境差太远时,先核对本地 Node 版本。
典型用法¶
按 README 和需求文档里的验收路径,日常用法就是三步:
- 在 Web UI 输入框写下草稿。空草稿或纯空白时按钮是灰的,点不了。
- 点工具行里的 ✨ 润色 / Polish。按钮进入 loading,大约几秒。
- 输入框里的文字被替换成改写结果。预览一下,不满意可以再点一次,或者自己改完再发送。
带图提问时同样只处理文字。中文草稿会按中文改写,英文草稿按英文改写。含代码块、列表、路径的草稿,结构应被保留,代码本身不应被「优化」掉。
仓库没有提供可复制的前后对照样例,本文也不编造润色效果。以你自己的一两条真实草稿实测最准确。
适用场景与注意事项¶
比较适合这些情况:提示词先口述再整理、需求描述写得很散、中英夹杂、同一句话重复了两遍。不适合拿它当通用写作助手——它不提供语气档位,也不保证改写质量;上限大约 2000 token,超过 50 KB 的草稿会在客户端截断后再送(host 端同样封顶)。超长技术文档、需要指定文风的对外稿,都超出它的设计范围。
使用前还要注意这几条,均来自目录页或仓库原文,不是推断:
- 权限:插件以当前 dsh 进程的权限运行,安装时可能执行代码。装之前应自己看源码和许可证。
- 平台:只声明了 Web 客户端;不要指望它出现在 TUI 里。
- 模型:改写依赖
deepseek-official上的deepseek-v4-flash(或一次 flash 类回退)。该提供方不可用、或 flash 模型都调不通时,按钮转完圈,草稿不会变,只能去 console 看日志。 - 兼容性:README 写明 Harness 处于 developer preview,迭代很快,可能出现不兼容变更。
- 隐私边界:原文不进
command/run的args,但润色结果会进command/done。 - 防覆盖:润色期间继续编辑,回填会被跳过。这是有意设计,不是故障。
小结¶
dsh-composer-polish 把「把草稿写清楚再发给模型」收成输入框旁的一个按钮:flash 模型改写,结果回填,主对话前缀不动。能力边界也很清楚——Web UI、通用润色、失败静默、50 KB 上限。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-composer-polish/
GitHub:https://github.com/tianji-qingtian/dsh-composer-polish