DeepSeek Harness 插件:dsh-prompt-enhancer

前言

在 DeepSeek Harness(dsh)的对话框里随手输入一句粗糙的需求,模型经常因为上下文不完整、指代不明而给出半生不熟的结果。常见的做法是人工反复打磨提示词,或者依赖外部工具(WorkBuddy、ChatGPT 的提示词增强等)。dsh-prompt-enhancer 插件在消息真正发给模型之前,先调用一次轻量改写,把粗糙输入变成清晰、具体、自包含的提示词,体验对标 WorkBuddy / ChatGPT 的「提示词增强」。

插件定位

dsh-prompt-enhancer 是一个对话框提示词自动增强插件,由维护者 saul-dsh 开发,目前有 1 个 GitHub Star。它不改变模型能力,只是在发送前对输入做一次改写,让模型更容易给出高质量回复。

核心功能

增强强度

三档强度,分别作用于不同场景:

档位 做什么 长度变化 适用场景
Low 只修歧义、指代、冗余、断句,不动结构 ≤1.4 倍 随手写的一句话,只想让它通顺明确
High 补全目标、约束、输出形式,保留原意 1.3~2.2 倍 默认档,日常使用
Max 第一性原理拆解,补隐含假设并逐条标注 (assumption: ...),把缺失信息写成条件要求 2~3.5 倍 复杂任务,宁可啰嗦也要一次说清

Max 档如果失控(超过该档上限 1.6 倍)直接判失败回退原文,不会把一句话膨胀成小作文。

效果示例

原始输入 High 档增强后
帮我写个爬虫 编写一个 Python 爬虫脚本:抓取指定网址列表中每个页面的标题和正文,按天保存为 CSV(列:url、title、content、date)。要求:请求间隔 ≥1 秒、失败自动重试 3 次、超时 10 秒,代码含中文注释并附使用说明。
这个 bug 修一下 定位并修复当前仓库中的构建失败:先运行 pnpm run build 复现报错,给出根因分析(引用具体文件与行号),完成最小修复后重新运行构建验证通过,并总结改动点。
做个网站 用单个 HTML 文件制作一个「个人书签导航页」:顶部搜索过滤,卡片式分组展示书签(名称、URL、备注),支持增删改(localStorage 持久化),浅色主题、移动端适配,无外部依赖。

同一句「做个网站」在 Low 档只会补成「用单个 HTML 文件做一个个人书签导航页,支持搜索过滤和增删改」,在 Max 档会拆成目标 / 数据 / 交互 / 验收四段并标注「(assumption: 纯前端,无后端)」。

安装与启用

方式一:从 GitHub 安装

dsh plugin --profile web add https://github.com/saul-dsh/dsh-prompt-enhancer

安装后,启动日志出现 [dsh-prompt-enhancer] loaded (mode=auto, ...) 即成功。

方式二:本地路径安装(开发/试用)

dsh plugin --profile web add /path/to/dsh-prompt-enhancer
dsh --profile web --dump-config   # 确认插件树里出现 prompt-enhancer
dsh --profile web

配置示例

在 profile 配置(或 market 安装后的插件设置)里对 prompt-enhancer 行写 config:

- override:
    id: prompt-enhancer
    config:
      enabled: true
      mode: auto            # auto=发送前自动增强;manual=只注册工具不自动改写
      level: high           # 默认强度 low/high/max;前端滑块会覆盖它。off=整条链路不增强
      preStepAuto: false    # 服务端兜底增强,默认关;开了会在你看不到的地方改消息
      # provider: deepseek-official   # 留空=跟随当前会话的模型路由
      # model: deepseek-flash         # 建议配一个快模型,降低每次发送的延迟
      timeoutMs: 20000       # 单次增强超时,超时后原样发送
      minPromptLength: 4     # 「继续」「ok」这类超短输入不增强
      maxInputChars: 4000    # 长输入视为已是完整提示词,不再增强
      language: auto         # auto=跟随输入语言;可强制 zh / en
      styleHint: ""          # 追加自定义风格要求,例如"偏工程口吻,给出验收标准"

界面与操作

输入框左侧一个 ✨ 按钮,鼠标停约 1.5 秒,向上弹出一个小面板:

  • ✨ 按钮:点一下手动增强当前草稿,改完写回输入框不发送。增强成功后按钮变成红色的撤销图标,点一下恢复原文。
  • 悬浮面板:强度滑块(Low / High / Max)和「发送时自动增强」开关。自动增强默认关闭,装好后先手动点 ✨ 试效果,觉得合适再打开。
  • 发送时自动增强:打开后点发送按钮或按 Enter,发送按钮先变成三点旋转,增强结果写回输入框停留约 0.7 秒,然后才自动 submit。失败就按原文发,不会把你卡在输入框里。
  • 不拦截的情况:空草稿(纯附件发送)、斜杠命令、Shift/Ctrl/Alt+Enter、输入法组合中的回车。

工作原理

  • 发送拦截(主路径):客户端在捕获阶段监听发送按钮的 click 和输入框的 Enter。命中后阻止事件到达 dsh 自己的事件根,先请求改写,把结果 setDraft 回输入框,再调用 inputActions.submit()。发送按钮期间显示三点旋转。
  • pre-step 兜底(副路径):挂载 agent/pre-step 瀑布流(dsh 的权威消息准入接缝),前端没拦到时把批次内的纯文本用户消息重写后放行。前端刚增强过的文本按指纹去重,同一句话不会被改两遍。
  • 跳过规则:斜杠命令(/plan 等)不改写;含文件/图片附件的消息不改写;过短、过长输入不改写;非聊天框来源的内部 user 消息(goal 轮次、会话引用、notice 等)不改写。
  • fail-open:增强失败 / 超时 / 无可用路由 / 模型输出失控时,原始消息原样放行,绝不阻塞对话。
  • 输入框增强按钮:web 端在 conversation.input.left 注册 Sparkle 图标,强度面板挂在同一个按钮的悬浮上。CLI / TUI 等没有 web 客户端的宿主不加载这部分,只保留 pre-step 兜底。
  • 同时注册 enhance_prompt 工具:模型自己也能调用(例如在重跑一个模糊需求前先改写它)。

兼容性

项目 要求
dsh ≥ 0.2.0(developer preview)
Node ≥ 18
客户端 web(桌面端与浏览器)。CLI / TUI 只保留 pre-step 部分,没有按钮
运行时依赖 无。只使用 dsh 自带的 @deepseek-ai/* peer 依赖

dsh 处于 developer preview,插件 API 会变。升级 dsh 后如果失效,先查两处:agent/pre-step 的签名,[data-composer-dock] 的结构。

适用场景与注意

适合需要提高对话框输入质量的场景:日常对话、需求拆解、复杂任务描述。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

结尾

dsh-prompt-enhancer 通过三档强度和自动/手动两种模式,在对话框里做一次轻量改写,让模型更容易给出清晰、具体的回复。它不改变模型能力,只是在发送前对输入做一次改写。更多细节见插件目录页与 GitHub 仓库。

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

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

Xiaoye