dsh-enhance-prompt:在 DSH 输入框里一键把草稿改写成可执行提示词

前言

在 DSH(DeepSeek Harness) 里发消息前,输入框里常见的是一句念头——「帮我写个脚本批量重命名文件」「这个报错怎么修」。模型只能据此猜系统、规则和边界,猜错就要多轮澄清。有人会在外部先写长提示词再粘贴;也有人直接发送,把补全意图的成本留给对话轮次。

下面介绍社区插件 dsh-enhance-prompt(维护者 adcx222):在发送前插一步,用当前路由上的 LLM 做单轮改写,把草稿展开成约束更清楚的指令,写回输入框后再由你决定是否发送。插件归类为客户端,以 dsh.bundle 形态接入 DSH Desktop / dsh web。

这是什么

dsh-enhance-prompt 给 DSH 输入框工具栏增加一个 ✨ 按钮(28×28 纯图标,位于发送按钮左侧)。点击后读取当前草稿(含 composer 里的 @ 文件引用),调用宿主端接口做一次单轮、无工具的文本改写,再把结果写回输入框。

它只改写,不执行:不回答问题、不调用工具、不建会话、不写对话历史。改写走 DSH 原生的 ctx.llm.stream(),模型与 provider 默认跟随当前会话,也可在配置里写死。

兼容 DSH 版本:>=0.2.0-rc.2 <0.3.0(见仓库 package.json 的 engines.dsh)。

核心功能

改写边界

  • 工具栏一键触发:通过 MutationObserver 定位 composer,在工具栏注入按钮;分栏或多会话时每个 composer 各挂一个。
  • 单轮、无工具:tools 为空,由 API 保证不跑工具链。
  • 不污染历史:增强过程不进对话记录。
  • 跟随语言:中文进中文出,英文进英文出,系统提示词要求不附加语言标签。
  • 写回路径:优先 inputActions.setDraft(Lexical);失败则编辑命令;再失败则复制到剪贴板,不直接改 contenteditable。
  • 请求期间防覆盖:若在等待结果时继续输入或加文件,增强结果只进剪贴板,不覆盖当前草稿。
  • 用量可见:右键按钮可查看累计输入/输出 token、调用次数、失败次数(本地 stats.json)。
  • 模型可配:provider / model 留空则跟会话;解析顺序为请求体 → 当前会话 → 配置;两者都解析不出时返回 code: no_model。

提示词设计(窄任务)

改写用的系统提示词明确要求:只改写、不回答;不编造技术或事实;输出语言与输入一致;中文约 200–350 字、英文约 300–450 字;只输出改写后的提示词。目的是避免模型「顺手回答」而引入未提及的栈或事实。

安装与启用

插件以 DSH 进程权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。

插件市场

在 DSH 中打开 设置 → 插件市场,搜索 dsh-enhance-prompt,安装。

命令行(GitHub 源)

市场未收录或需要跟踪 main 时:

dsh plugin --profile web add github:adcx222/dsh-enhance-prompt

手动安装(Windows 路径示例)

README 给出的步骤概要如下:

  1. 将仓库放到 %APPDATA%\dsh-desktop\harness\plugins\dsh-enhance-prompt
  2. 在 profiles/web/package.json 的 dependencies 增加 "dsh-enhance-prompt": "link:../../plugins/dsh-enhance-prompt"
  3. 在同一文件的 dsh.profile.bundles 数组增加 "dsh-enhance-prompt"
  4. 运行 harness\.desktop-bin\pnpm.cmd install
  5. 重启 DSH

卸载时从 bundles 与 dependencies 移除、执行 pnpm install、重启并删除插件目录。

配置

在 cordis.patch.yml 的 config 下可覆盖默认值(片段来自 README):

- insert:
    - id: enhance-prompt
      name: 'dsh-enhance-prompt'
      config:
        provider: ''
        model: ''
        maxTokens: 8192
        timeoutMs: 60000
        maxInputChars: 5000
字段 默认 说明
provider 空 留空则跟随当前会话的模型 provider
model 空 留空则跟随当前会话的模型名
maxTokens 8192 单次改写输出上限(推理模型的思考也占额度)
timeoutMs 60000 请求超时(毫秒)
maxInputChars 5000 草稿超长则直接拒绝,不发起调用

典型用法

README 中的示例如下。输入约 13 字:

帮我写个脚本批量重命名文件

点击 ✨ 后,输出会展开为带确认项与边界的指令(README 示例约 203 字),例如要求先确认操作系统、路径、匹配规则、重命名规则、冲突处理,并默认先预览等。你可先审阅改写结果,不满意再手改,满意后再点发送。

工作原理(概要)

浏览器端 lib/client.js 注入按钮并读取草稿,向宿主 POST /enhance-prompt 提交 { text };宿主 lib/index.js 校验长度、解析 provider/model,调用 ctx.llm.stream(),拼装文本块并记账到 stats.json,返回 { success, text, tokens }。客户端再写回草稿。路由经 ctx.effect 随插件生命周期注册;GET 同路径可读累计统计。

仓库无单独构建步骤,lib/ 即为产物;修改后重启 DSH 或等待 HMR 重组。

适用场景与注意

适合:经常在 DSH 里用短句起手、又希望发送前把意图结构化的人;希望增强走本机已配置的模型路由、且不想把「润色」混进对话历史的人。

注意:

  • DOM 注入:依赖 composer 结构(编辑器、发送按钮、file input)。上游 UI 改版可能导致按钮不出现(通常无报错)。
  • 一次一段:只处理整段草稿,不处理选中片段。
  • 统计本地:stats.json 在插件目录,不参与云端计量。
  • 社区插件:目录页在 SkillHub,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,安装第三方 bundle 前请自行评估权限与源码。

结尾

dsh-enhance-prompt 在发送前增加「单轮改写」一步:不替模型执行任务,只把输入框里的念头改成更清晰、带约束的提示词,并尽量通过官方 InputActions 安全写回。需要进一步了解特性、限制与开发布局,可看插件目录页与仓库 README。

  • 目录页:https://www.skillhub.cn/plugins/adcx222/dsh-enhance-prompt
  • GitHub:https://github.com/adcx222/dsh-enhance-prompt
羽毛球分组比赛记分
小程序二维码

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

小夜