dsh-prompt-inject:在 DSH 设置页按注入点与模型自定义 Prompt 注入

前言

DeepSeek Harness(DSH)在发送请求前会组装 system 与用户消息;若要在不同模型上使用不同的补充说明,常见做法是改全局配置或每次手动粘贴,难以按「注入位置 + 模型」精细控制。维护者 XuezuoYS 的 dsh-prompt-inject 是 DSH 社区插件(分类:模型推理),在 Web 设置里提供 GUI:按八个注入点配置规则,每条规则可单独开关、排序,并指定对哪些模型生效;改完自动保存,下一轮对话即生效。配置保存在本地,只影响当前环境。

下面介绍插件定位、能力与安装用法;事实以 GitHub 仓库 README 为准。

这是什么

dsh-prompt-inject 面向已在使用 DeepSeek Harness 的用户:在 设置 → dsh-prompt-inject 中,为「用户消息前后缀」和 system 内六个段位编写注入规则,并按 provider/model 作用域决定是否参与本次请求。插件当前版本 0.2.0,目标适配 engines.dsh 声明的 0.2.1-rc.2;许可证 MIT。

核心功能

八个注入点

规则分两组:用户消息(前置词、后置词)与 system 段(六项按在 system 中的出现顺序排列)。

设置页名称 键 行为概要
用户前置词 user.prefix 独立 user 消息,落在当前用户输入之前,每轮只注入一次
用户后置词 user.suffix 独立 user 消息,落在当前用户输入之后,每轮只注入一次
system 头部 system.personaHead 替换官方 persona 头(order 0)
工具说明之前 system.beforeTools 新加一段(order 950)
工具说明之后 system.afterTools 新加一段(order 3050)
结构化输出之前 system.middle 新加一段(order 9800)
system 尾部 system.personaTail 替换官方 persona 尾(order 10200)
system 最末尾 system.last 新加一段(order 10300)

未配置规则的「新加」段位解析为空串,官方渲染时会丢弃,不会覆盖官方内容;「替换」侧未配规则时保持官方默认。

规则卡片与保存

每个注入点可有多条规则,同一点内从上到下拼接,中间空一行。每条规则包含:开关、模型作用域(全部 / 指定模型 / 无应用)、多行正文,以及顺序调整、复制、删除(删除后 Toast 可撤销一次)。编辑约 500ms 后自动提交,顶部显示 保存中 / 已保存 / 保存失败,无单独保存按钮。

模板字段

规则正文支持发送时替换:

字段 替换为
{{model}} 本次请求实际模型 id,如 deepseek-flash
{{provider}} 模型所属 provider,如 deepseek-account
{{cwd}} 当前会话工作目录绝对路径

用户前后缀在注入时即渲染并写入历史;system 各项在每次组装 system 时渲染。无法识别的字段名会原样保留;若要字面量 {{model}},可写成 {{ model }} 等。

模型作用域

模型键格式为 <provider>/<model>,例如 deepseek-account/deepseek-flash。勾选「全部」表示对所有模型生效(含以后新增);仅勾选具体模型时,未勾选的模型不匹配。判定「本次用哪个模型」时,优先官方模型选择投影,其次会话最近一次请求路由,再退到 agent 建立时的选项。

安装与启用

插件以 DSH 自带命令从 GitHub 安装到指定 profile;--profile 与日常启动一致(Web UI 常用 web,桌面版为 desktop)。

dsh plugin --profile web add github:XuezuoYS/dsh-prompt-inject

需要钉死版本时,在仓库名后加 commit:

dsh plugin --profile web add github:XuezuoYS/dsh-prompt-inject#<sha>

本包为纯 JS 手写包,无 prepare / install 等构建脚本。装完后若 DSH 已在运行,按命令提示决定立即生效或重启。不启动进程也可检查配置层是否包含该插件:

dsh --profile web --dump-config   # 应能看到一行 "# == dsh-prompt-inject"

卸载(不删除规则文件,重装后配置仍在):

dsh plugin --profile web remove dsh-prompt-inject

版本匹配:package.json 中 engines.dsh 为 0.2.1-rc.2。DSH 从 0.2.1 起会校验该字段;不满足时整个 bundle 会在启动诊断的 skippedBundles 里被静默跳过,表现像「插件不见了」,需改 engines.dsh 或对齐 DSH 版本。

典型用法

在设置页配置

  1. 打开 设置 → dsh-prompt-inject。
  2. 在目标注入点点击「+ 新增规则」,填写正文;需要时用顶部字段徽章插入 {{model}} 等。
  3. 点击模型作用域胶囊,选择「全部」或具体 provider/model。
  4. 等待顶部显示「已保存」后,在新会话或下一轮发送中验证效果。

配置文件(供排查)

默认路径:~/.dsh/dsh-prompt-inject/rules.json(Windows 下一般为 C:\Users\<你>\.dsh\dsh-prompt-inject\rules.json)。结构示例:

{
  "version": 1,
  "revision": 12,
  "slots": {
    "user.prefix": {
      "rules": [
        {
          "id": "r1",
          "enabled": true,
          "text": "总是用中文回答",
          "models": { "all": true, "list": ["deepseek-account/deepseek-flash"] }
        }
      ]
    },
    "system.beforeTools": { "rules": [] }
  }
}

官方建议仅在设置页修改;文件损坏或版本不认识时会带时间戳重命名为 rules.json.<时间戳>.bad 并以空配置继续运行。

适用场景与注意

适合谁:需要在 DSH 里统一维护「按模型差异化」的系统说明、工具前后约束或用户侧固定前后缀,且愿意在 GUI 中管理规则列表的开发者。

用户前置词 / 后置词的设计代价(设置页在该两节顶部有说明):注入内容是独立 user 消息,写入会话历史后不会被压缩、清除或还原,会随轮次累积;上一轮后置词可能夹在上一轮原文与本轮输入之间,易被模型误读为补充发言。因此这两处宜写不易引起误解的固定要求;若只希望某段话只在 system 生效、不进入用户历史,应使用 system 相关注入点。

运行与信任:插件在 DSH 进程内加载,读写本地规则与参与请求组装;安装前宜自行查看 源码与 MIT 许可证。

其它已知限制(摘自 README):设置页不展示「当前模型」;无最终拼接预览;单注入点最多 200 条规则、单条正文最多 20000 字、单条规则最多 500 个模型键;直接改 DSH 配置文件或远端上下架模型时,需刷新页面以更新模型目录。

结尾

dsh-prompt-inject 把「发送前 Prompt 注入」收到设置页:八个注入点、按模型作用域、模板字段与自动保存,适合在 DSH 生态里做可复现的模型级提示词管理。社区目录页:SkillHub - dsh-prompt-inject;仓库:github.com/XuezuoYS/dsh-prompt-inject。

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

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

Xiaoye