用 dsh-prompt-polish 在 DeepSeek Harness 输入框里打磨提示词

前言

给编码智能体下任务时,草稿提示词经常写得太口语:目标含糊,输入输出没写清,约束也漏了。直接发出去,模型要么追问,要么按自己的理解动手。反过来,每次都在输入框里把「读一下 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.mdpackage.jsonlib/index.jslib/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.platformweb,因此它面向的是 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 → 配置项 stylebalanced。未知取值会回退到平衡风格。若配置了 system,则整段内置提示会被这份自定义指令替换,四种风格差异不再生效。

复用已接入的模型

Host 半边 lib/index.js 注入 webServerllmagentDefaultModel 三个服务,用 ctx.llm.stream 做一次流式改写,再把文本增量拼起来返回。模型路由的解析顺序是:

  1. 配置里同时写了 providermodel,就走这条显式路由。
  2. 否则调用 agentDefaultModel.currentSelection(),与当前会话的默认模型一致,并带上选择里的 reasoningEffort(若有)。

凭证来自 Web 设置页已经写好的模型配置,插件不单独收集 API Key。中文 README 的环境要求也写了这一点:需要已运行的 @deepseek-ai/dsh web profile,并且已经配置模型适配器(例如在设置中为 DeepSeek 服务商填写 API Key)。

输出长度由 maxTokens 控制,未配置时默认 2048。请求体上限是 16 KiB;空草稿返回 HTTP 400,errorempty 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-polishname: dsh-prompt-polish,具体改写参数留给用户层覆盖。

典型用法

日常路径是界面操作,不需要记 HTTP:

  1. 确认 dsh web 已启动,设置里已经能选到可用模型。
  2. 在输入框写下草稿,例如「read a.csv and sort by b」。
  3. 点击工具行 ✨ 按钮,在菜单里选一种风格。中文界面四项分别是「平衡打磨」「简洁精炼」「详细展开」「代码向」。
  4. 等待图标变为加载状态;完成后输入框内容被替换为改写结果。
  5. 检查目标、路径、约束有没有被改偏,确认后再发送。

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 是草稿,stylecode。正常响应形状是 { ok: true, text, style };失败则为 { ok: false, error }。这是仓库文档中的验证示例,不是对改写质量的承诺。

适用场景与注意事项

比较对口的用法包括:

  • 草稿已经表达了意图,但缺少目标、输入、输出格式或约束,希望先打磨再发给智能体。
  • 提示词太长、套话多,想压成几行仍保留全部要求。
  • 任务需要拆步骤、写验收标准,适合选「详细展开」。
  • 草稿里已经有命令、文件路径或代码片段,希望改写时不要改这些原文,适合选「代码向」。

使用前需要知道边界:

  • 只覆盖 Web 输入框。没有 web profile、或当前界面不是 dsh web,这个按钮不会出现。
  • 必须先配置模型适配器。插件没有内置免费模型,改写会消耗你已接入账号的额度。
  • 改写是另一次 LLM 调用,结果取决于当前模型和内置/自定义系统提示,插件不保证一次改对。发送前应通读替换后的文本,尤其是路径、命令和硬约束。
  • 草稿超过约 16 KiB 会被 Host 拒绝。空输入不会发请求。
  • system 一旦写上,就不再走四套内置风格。providermodel 必须成对配置,只写其中一个不会走显式路由。
  • 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.rightPOST /prompt-polish 两侧接好现有的 ctx.llm

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-prompt-polish/

GitHub:https://github.com/JoukoPuro/dsh-prompt-polish

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜