前言¶
在 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 仓库。