dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Chat-box prompt auto-enhancement plugin for DeepSeek Harness (dsh): rewrites rough input into a clear, self-contained prompt before it reaches the model.
English | 简体中文
给 DeepSeek Harness(dsh)做的对话框提示词增强插件:你在对话框里随手打一句粗糙的需求,插件在消息真正发给模型之前,先调用一次轻量改写,把它变成一段清晰、具体、自包含的提示词——体验对标 WorkBuddy / ChatGPT 的「提示词增强」。
你输入 → 点发送 → 发送按钮三点旋转 → [dsh-prompt-enhancer 改写] → 自动发出增强后的提示词三档强度(Low / High / Max)和「发送时自动增强」开关,都挂在输入框左侧 ✨ 按钮上:鼠标停约 1.1 秒,向上弹出一个小面板。自动增强默认关闭,装好后先手动点 ✨ 试效果,觉得合适再打开。
档位 · 做什么 · 长度变化 · 适用场景 Low · 只修歧义、指代、冗余、断句,不动结构 · ≤1.4 倍 · 随手写的一句话,只想让它通顺明确 High · 补全目标、约束、输出形式,保留原意 · 1.3~2.2 倍 · 默认档,日常使用 Max · 第一性原理拆解,补隐含假设并逐条标注 (assumption: ...),把缺失信息写成条件要求 · 2~3.5 倍 · 复杂任务,宁可啰嗦也要一次说清
三档各自有独立的改写规则、token 上限和长度上限。Max 档如果失控(超过该档上限 1.6 倍)直接判失败回退原文,不会把一句话膨胀成小作文塞给你。
不想增强时不用切档位,把「发送时自动增强」开关关掉即可,发送不会被拦截;想手动改一次还是点 ✨。
你的原始输入 · 增强后(High 档) 帮我写个爬虫 · 编写一个 Python 爬虫脚本:抓取指定网址列表中每个页面的标题和正文,按天保存为 CSV(列:url、title、content、date)。要求:请求间隔 ≥1 秒、失败自动重试 3 次、超时 10 秒,代码含中文注释并附使用说明。 这个 bug 修一下 · 定位并修复当前仓库中的构建失败:先运行 pnpm run build 复现报错,给出根因分析(引用具体文件与行号),完成最小修复后重新运行构建验证通过,并总结改动点。 做个网站 · 用单个 HTML 文件制作一个「个人书签导航页」:顶部搜索过滤,卡片式分组展示书签(名称、URL、备注),支持增删改(localStorage 持久化),浅色主题、移动端适配,无外部依赖。
同一句「做个网站」在 Low 档只会补成「用单个 HTML 文件做一个个人书签导航页,支持搜索过滤和增删改」,在 Max 档会拆成目标 / 数据 / 交互 / 验收四段并标注「(assumption: 纯前端,无后端)」。
更多对比见 examples/before-after.md。
dsh plugin --profile web add /path/to/dsh-prompt-enhancer
dsh --profile web --dump-config # 确认插件树里出现 prompt-enhancer
dsh --profile webdsh plugin --profile web add https://github.com/saul-dsh/dsh-prompt-enhancer--patch 临时挂载试用# scratch.cordis.yml
# - insert:
# - id: prompt-enhancer
# name: /absolute/path/to/dsh-prompt-enhancer/index.js
dsh --profile web --patch ./scratch.cordis.yml启动日志出现 [dsh-prompt-enhancer] loaded (mode=auto, ...) 即安装成功。
在 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: "" # 追加自定义风格要求,例如"偏工程口吻,给出验收标准"字段 · 默认 · 说明 enabled · true · 总开关 mode · auto · auto 自动增强;manual 仅暴露工具 level · high · 默认强度;前端滑块切换后以页面选择为准。off 只用于配置层彻底关闭 preStepAuto · false · 服务端兜底增强。默认关,因为前端拦截已经负责增强;打开后即使前端没拦到也会改消息,但用户看不到旋转提示 provider / model · 跟随会话 · 增强调用用的模型路由,建议快模型 timeoutMs · 20000 · 超时即放弃增强(fail-open) minPromptLength · 4 · 短于该长度不增强 maxInputChars · 4000 · 长于该长度不增强 language · auto · 输出语言 styleHint · 空 · 自定义风格要求
输入框左侧一个 ✨ 按钮,强度面板挂在它上面。
setDraft 回输入框,再调用 inputActions.submit()。发送按钮期间显示三点旋转。agent/pre-step 瀑布流(dsh 的权威消息准入接缝),前端没拦到时把批次内的纯文本用户消息重写后放行。前端刚增强过的文本按指纹去重,同一句话不会被改两遍。/plan 等)不改写;含文件/图片附件的消息不改写;过短、过长输入不改写;非聊天框来源的内部 user 消息(goal 轮次、会话引用、notice 等)不改写。conversation.input.left 注册 Sparkle 图标,强度面板挂在同一个按钮的悬浮上。CLI / TUI 等没有 web 客户端的宿主不加载这部分,只保留 pre-step 兜底。enhance_prompt 工具:模型自己也能调用(例如在重跑一个模糊需求前先改写它)。项目 · 要求 dsh · ≥ 0.2.0(developer preview,已按 0.2.x 的事件与类型核对) Node · ≥ 18 客户端 · web(桌面端与浏览器)。CLI / TUI 只保留 pre-step 部分,没有按钮 运行时依赖 · 无。只使用 dsh 自带的 @deepseek-ai/* peer 依赖
dsh 处于 developer preview,插件 API 会变。升级 dsh 后如果失效,先查两处:agent/pre-step 的签名,[data-composer-dock] 的结构。
每条消息发送前会多一次模型调用,消耗少量 token。对延迟敏感时给 model 配一个快模型,或用 Low 档(输出更短,回得更快)。增强后的提示词会进入会话日志,原始输入可以在控制台的 enhanced[level] X -> Y chars 记录里找到。
✨ 按钮不出现
dsh plugin --profile desktop list点发送没转圈,直接就发出去了
转圈了但提示词没变
[dsh-prompt-enhancer] enhance failedprovider / model,或先在会话里发一条消息建立路由消息被改了两次
preStepAuto 是否为 true。默认 false,前端已经负责增强面板位置不对或跑到屏幕外
改完代码不生效
client.js 或 index.js 后必须重启 dsh欢迎提 issue 和 PR。动手前先读 CONTRIBUTING.md,改动记录见 CHANGELOG.md。
package.json 里 repository.url 改成你的地址。dsh-plugin(官方发现机制会按该 topic 收录)。npm publish,files 白名单已含 index.js 与 cordis.patch.yml。