前言¶
在 DeepSeek Harness(DSH)里写提示词时,往往只是把想法丢进输入框,缺少结构化的引导。如果直接发给模型,效果容易不稳定。现有做法要么手动改写,要么借助外部工具,都无法在 DSH 的工作流中顺滑地完成「从草稿到结构化提示词」的转换。本插件在 DSH 的 composer 工具行左侧增加一个四角星按钮,通过一次辅助 LLM 调用把当前草稿改写成结构化提示词,并提供加载态、失败提示与一键回退。
插件定位¶
- 名称:dsh-prompt-enhancer
- 维护者:YiKangMo
- 解决的问题:在 DSH 里快速把口语化草稿转换为结构化提示词,减少手动改写成本
- 分类:模型推理
核心功能¶
- 增强提示词:在 composer 工具行左侧(权限/计划 chip 之后、模型选择器之前)出现四角星按钮。点击后通过一次辅助 LLM 调用把当前草稿改写成结构化提示词,结果写回编辑器。
- 回退能力:增强完成后按钮变为逆时针箭头 ↶,点击可回退到增强前的原文。若增强后继续手动编辑,回退能力自动放弃,避免覆盖新输入。
- 加载与错误状态:
- 请求中:按钮显示旋转圆弧,禁用交互。
- 请求失败:按钮变红,支持重试,悬停可见错误原因。
- 语言一致性:提示词优先匹配输入语言,可处理全中文、全英文和中英混合场景。
安装与启用¶
前置要求:Node.js ≥ 22、npm i -g @deepseek-ai/dsh(dsh --version 可用)。
从 GitHub 安装(推荐):
dsh plugin --profile web add github:YiKangMo/dsh-prompt-enhancer
# 钉住版本(建议)
dsh plugin --profile web add github:YiKangMo/dsh-prompt-enhancer#v1.0.0
装完后确认插件已进入 profile 的 bundles 列表:
(Get-Content "$HOME\.dsh\profiles\web\package.json" -Raw | ConvertFrom-Json).dsh.profile.bundles
列表中出现 dsh-prompt-enhancer 后重启 dsh web 生效。
从本地目录安装:
git clone https://github.com/YiKangMo/dsh-prompt-enhancer
cd dsh-prompt-enhancer
pwsh -File install.ps1 # 默认装进 web,可加 -Profile tui
# 没装 PowerShell 7 的机器用自带 Windows PowerShell:
# powershell -NoProfile -ExecutionPolicy Bypass -File install.ps1
或手动安装:
dsh plugin --profile web add "<插件目录绝对路径>"
生效自检(Harness 需正在运行):
Invoke-WebRequest http://127.0.0.1:3080/prompt-enhancer/health -UseBasicParsing
# {"ok":true,"plugin":"dsh-prompt-enhancer"}
卸载:
dsh plugin --profile web remove dsh-prompt-enhancer
工作方式¶
插件采用「dual-face 包」:浏览器半边负责 UI 与草稿读写,宿主半边负责真实模型调用。
- 浏览器半边(client/client.js):手写 bundle,免构建,注册到
conversation.input.left槽,通过 Cordis 注入slots与locale。 - 宿主半边(lib/index.js):注册两条 exact 路由:
GET /prompt-enhancer/healthPOST /prompt-enhancer/enhance- 模型路由解析优先级:请求显式指定 >
ctx.agentDefaultModel.currentSelection()。 - 使用
ctx.llm.stream()聚合 text-delta,识别stop/max-tokens/tool-calls/aborted/error作为结束原因,转成可读错误。 - 结果 trim 后剥掉首尾成对引号(含中英文弯引号)。
- 只接受回环 Host;非回环返回 403,防 DNS rebinding。
- 120 秒超时,使用
AbortController中止。
提示词来源¶
提示词模板逐字取自 CodeBuddy CN 4.12.2 的 DEFAULT_ENHANCE_PROMPT_SYSTEM_TEMPLATE 与 DEFAULT_ENHANCE_PROMPT_USER_TEMPLATE,仅将输出长度上限从约 800 字符放宽到约 1200 字符(适配 DSH 会话常含路径与代码标识符)。模板内联在 lib/index.js 顶部,可按需编辑。
验证与测试¶
- 三层离线契约测试 + 一层真机端到端,共 52 项断言。
- 运行测试:
npm test # host 7 + client 28 + manifest 17
node test/host.spec.mjs # 宿主半边:路由、拒绝路径、终止原因
node test/client.spec.mjs # 浏览器半边:注册、渲染、增强、回退、失败
node test/manifest.spec.mjs # 清单契约:dsh 声明、bundle 落盘、require 基线
node test/e2e.spec.mjs # 真机端到端,需要 dsh web 正在运行
CI 在 ubuntu / windows × node 22 / 24 上跑前三个。
适用场景与注意¶
适合需要快速把草稿转化为结构化提示词的 DSH 用户,尤其在与代码、路径、多语言混合场景频繁切换时。插件以当前 DSH 进程权限运行,建议安装前检查源码与许可证。
短结尾¶
通过一次辅助 LLM 调用把草稿改写成结构化提示词,并提供一键回退,减少手动改写成本。目录页:https://www.skillhub.cn/plugins/YiKangMo/dsh-prompt-enhancer;GitHub:https://github.com/YiKangMo/dsh-prompt-enhancer