DeepSeek Harness 增强提示词插件

前言

在 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/health
  • POST /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

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

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

小夜