前言¶
给编码智能体下任务时,草稿提示词经常写得太口语:目标含糊,输入输出没写清,约束也漏了。直接发出去,模型要么追问,要么按自己的理解动手。反过来,每次都在输入框里把「读一下 a.csv,按 b 排序」扩成一份自包含指令,又会打断当前思路。
DeepSeek Harness(命令名 dsh)是 DeepSeek AI 开源的智能体运行时,官方仓库把原则写成一句话:Everything is a Plugin(一切皆插件)。模型、工具、会话、沙箱和界面都可以按 profile 增删,不必改 harness 源码。官方入门路径是装好 Node.js 后执行 npx @deepseek-ai/dsh web。目前仍是面向开发者的预览版,接口还会变。
社区插件目录 deepseek-harness-plugin.com 是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。下面介绍的 dsh-prompt-polish 由该目录收录,作用很具体:在 Web 输入框的工具行加一个润色按钮,用已经接入的大模型改写当前草稿,改完仍留在输入框里,发送前可以先看一眼。
本文按社区目录详情页、仓库 README / README.zh.md、package.json、lib/index.js、lib/client.js,以及 DeepSeek Harness 官方仓库 核对后整理。
这是什么¶
dsh-prompt-polish 是一款界面增强类 DSH 插件,维护者是 JoukoPuro,仓库地址为 JoukoPuro/dsh-prompt-polish,许可证为 MIT,主要语言是 JavaScript。package.json 里的版本号是 0.1.0。社区目录把它归在「界面增强」;截至 2026-08-18,目录页与 GitHub 均显示 3 颗星。仓库创建于 2026-08-14,目录收录日期为 2026-08-15。
它解决的不是「帮你写一段全新的提示词」,而是:输入框里已经有一段草稿,你希望把它改得更专业、更自包含、更容易被编码智能体执行,同时尽量保留原意和原文语言。改写走的是当前会话已经接好的模型,插件自己不另开一套密钥流程。
package.json 把插件声明成双面 bundle:Host 侧挂到 web 服务器,浏览器侧注入输入框工具行。dsh.client.platform 为 web,因此它面向的是 dsh web 界面,不是终端 TUI。
核心功能¶
工具行上的纯图标按钮¶
浏览器半边 lib/client.js 向槽位 conversation.input.right 注册一个名为 prompt-polish 的按钮。按钮只有图标、没有文字:空闲时是 sparkle(✨),改写进行中换成加载动画。悬停提示和 aria-label 在中文环境下是「调用大模型优化提示词」。
点击后弹出风格菜单,选中一项就把当前草稿 POST 到同源路由 /prompt-polish。成功则调用 inputActions.setDraft,用返回文本替换输入框内容。失败会弹出 Toast,文案模板是「提示词打磨失败:{message}」。草稿为空或拿不到 setDraft 时,按钮不可用,不会发出请求。
目录页和中文 README 都写明:改写结果直接替换回输入框,发送前可以先审阅。插件不会替你点发送。
四种改写风格¶
菜单和配置共用四个 style 值。中文界面文案如下:
| 取值 | 中文菜单 | 内置系统提示在做什么 |
|---|---|---|
balanced |
平衡打磨 | 默认项。要求写得更专业、更精确,并显式写出目标、输入、期望输出格式和约束 |
concise |
简洁精炼 | 去掉套话和重复,保留全部要求,偏向短祈使句和紧凑列表 |
detailed |
详细展开 | 补充背景、拆成编号步骤,写清输入输出、边界情况和验收标准;完整优先于简短 |
code |
代码向 | 面向编程任务:代码、命令、路径、语言名保持原文,并写清目标、涉及文件、预期改动、约束和如何验收 |
这四套指令有共同前缀:把模型定位成编码智能体的提示词工程师,要求保持用户原意和原文语言,并且只返回改写后的纯文本,不要解释、不要前言、不要Markdown围栏。
请求体是 { text, style? }。优先级是:本次请求里的 style → 配置项 style → balanced。未知取值会回退到平衡风格。若配置了 system,则整段内置提示会被这份自定义指令替换,四种风格差异不再生效。
复用已接入的模型¶
Host 半边 lib/index.js 注入 webServer、llm、agentDefaultModel 三个服务,用 ctx.llm.stream 做一次流式改写,再把文本增量拼起来返回。模型路由的解析顺序是:
- 配置里同时写了
provider和model,就走这条显式路由。 - 否则调用
agentDefaultModel.currentSelection(),与当前会话的默认模型一致,并带上选择里的reasoningEffort(若有)。
凭证来自 Web 设置页已经写好的模型配置,插件不单独收集 API Key。中文 README 的环境要求也写了这一点:需要已运行的 @deepseek-ai/dsh web profile,并且已经配置模型适配器(例如在设置中为 DeepSeek 服务商填写 API Key)。
输出长度由 maxTokens 控制,未配置时默认 2048。请求体上限是 16 KiB;空草稿返回 HTTP 400,error 为 empty draft。模型返回空文本会按错误处理。
多语言菜单¶
DSH 自带的 locale 只提供中英两套 id,其它浏览器语言会落到中文。这个插件因此自己读 navigator.languages,按语言主标签在内置词表里选型。README 列出的覆盖范围是:中文、English、日本語、한국어、Français、Deutsch、Español、Português、Русский、Italiano、Türkçe、Tiếng Việt;匹配不到则回退英文。页面仍向 DSH 注册中英词表作为后备。浏览器触发 languagechange 时会重新检测。
安装与启用¶
社区目录详情页给出的安装命令如下,以页面原文为准(owner 段是小写 joukopuro):
dsh plugin add github:joukopuro/dsh-prompt-polish
dsh CLI 会从 GitHub 解析插件并安装到当前配置。目录页同时提醒:如需可复现安装,可固定 commit 哈希:
dsh plugin add github:joukopuro/dsh-prompt-polish#<commit>
截至 2026-08-18,仓库 main 分支最新提交是 53cf8afe5f1cefa9841f358899fce322ce4f9dfd。固定哈希前仍应自己核对仓库内容。
如果已经 clone 了源码,中文 README 还提供本地路径装法,并指定 web profile:
dsh plugin --profile web add ./dsh-prompt-polish
然后重启 dsh web,让 profile 加载新的 bundle:
dsh web
打开 Web UI,在输入框写一段草稿,点工具行里的润色按钮即可。目录页还建议安装后用 dsh plugins list 确认插件已加载。
目录页的安全提示需要原样理解:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。
配置¶
可选配置写在 profile 的 cordis.patch.yml 用户层(在 bundle 层之后应用)。README 给出的示例如下,其中的 provider / model 取值是仓库文档里的示例,实际应以你当前环境里已配置的服务商和模型名为准,并且二者必须成对出现:
- id: prompt-polish
config:
provider: deepseek-official # 显式指定路由(可选)
model: deepseek-v4-flash # 必须与 provider 成对出现
style: balanced # 默认改写风格:balanced | concise | detailed | code
maxTokens: 2048 # 改写调用的输出上限
# system: '...' # 自定义改写指令(替换内置的各风格提示词)
不配 provider / model 时,插件使用 agentDefaultModel.currentSelection()。bundle 自带的 cordis.patch.yml 只插入一行 loader:id: prompt-polish、name: dsh-prompt-polish,具体改写参数留给用户层覆盖。
典型用法¶
日常路径是界面操作,不需要记 HTTP:
- 确认
dsh web已启动,设置里已经能选到可用模型。 - 在输入框写下草稿,例如「read a.csv and sort by b」。
- 点击工具行 ✨ 按钮,在菜单里选一种风格。中文界面四项分别是「平衡打磨」「简洁精炼」「详细展开」「代码向」。
- 等待图标变为加载状态;完成后输入框内容被替换为改写结果。
- 检查目标、路径、约束有没有被改偏,确认后再发送。
README 的开发说明里,还给出了在临时端口直接打 Host 路由的办法,用来确认服务半边是否挂上,并不经过按钮:
dsh web --port 3099
curl -s http://127.0.0.1:3099/plugins/dsh-prompt-polish/client.js | head
curl -s -X POST http://127.0.0.1:3099/prompt-polish \
-H 'content-type: application/json' \
-d '{"text":"read a.csv and sort by b","style":"code"}'
第二条 curl 的请求体与源码一致:text 是草稿,style 为 code。正常响应形状是 { ok: true, text, style };失败则为 { ok: false, error }。这是仓库文档中的验证示例,不是对改写质量的承诺。
适用场景与注意事项¶
比较对口的用法包括:
- 草稿已经表达了意图,但缺少目标、输入、输出格式或约束,希望先打磨再发给智能体。
- 提示词太长、套话多,想压成几行仍保留全部要求。
- 任务需要拆步骤、写验收标准,适合选「详细展开」。
- 草稿里已经有命令、文件路径或代码片段,希望改写时不要改这些原文,适合选「代码向」。
使用前需要知道边界:
- 只覆盖 Web 输入框。没有 web profile、或当前界面不是
dsh web,这个按钮不会出现。 - 必须先配置模型适配器。插件没有内置免费模型,改写会消耗你已接入账号的额度。
- 改写是另一次 LLM 调用,结果取决于当前模型和内置/自定义系统提示,插件不保证一次改对。发送前应通读替换后的文本,尤其是路径、命令和硬约束。
- 草稿超过约 16 KiB 会被 Host 拒绝。空输入不会发请求。
system一旦写上,就不再走四套内置风格。provider与model必须成对配置,只写其中一个不会走显式路由。- DeepSeek Harness 仍在开发者预览阶段,插件的 peer 依赖写的是
@deepseek-ai/cordis、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-agent的预览版本区间,后续接口可能不兼容。 - 插件以当前 dsh 进程权限运行。安装前应阅读 JoukoPuro/dsh-prompt-polish 的源码和 MIT 许可证,确认后再执行
dsh plugin add。
小结¶
dsh-prompt-polish 把「让已接入的大模型改写当前草稿」收进 Web 输入框工具行:一个纯图标按钮、四种风格、就地替换、发送前可审阅。它不引入新的模型供应商,也不改 harness 源码,只是在 conversation.input.right 和 POST /prompt-polish 两侧接好现有的 ctx.llm。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-prompt-polish/
GitHub:https://github.com/JoukoPuro/dsh-prompt-polish