前言¶
DSH 的系统提示词决定模型的「人设、规矩、工作方式」,但 DSH 本身没有给普通用户提供修改它的入口。想加一段全局约束,只能改包、改配置或改源码,而且一旦写进去就没有后悔药。下面介绍 qbclex 维护的插件 dsh-prompt-injector:它把系统提示词注入做成一个可以随时开关、随时回退的功能。与手改配置文件的做法相比,它多一层历史记录;与其他注入手段相比,注入后可以回到之前的状态,甚至恢复到程序运行前的样子。
这是什么¶
一句话定位:给 DeepSeek Harness 用的系统提示词注入插件,把准备好的提示词注入系统提示词,对全部会话生效,并支持按历史回退。
- 维护者:qbclex
- 仓库:https://github.com/qbclex/dsh-prompt-injector
- 社区目录页:https://www.skillhub.cn/plugins/qbclex/dsh-prompt-injector(独立站点,与 DeepSeek / 幻方无官方从属关系)
- 分类:模型推理;GitHub 1 star(截至 2026-11-06)
- 许可证:MIT
- 当前版本:1.0.0(见 README 中 package.json)
核心功能¶
1、注入。支持两种模式:替换当前注入内容,或追加到当前注入内容后面。注入后下一次模型调用即生效,无需重启 DSH。
2、回退。撤销最近一次注入,恢复到它之前的内容。历史弹空后,当前注入变为「无注入」状态。
3、历史保护。每次注入发生前,把当时的当前内容自动存入历史,最多保留 20 条;可以从历史里恢复任意一条到当前,原来的当前内容会进历史,因此仍然可以再回退。
4、恢复初始。一键清空当前注入和全部历史,回到程序运行前的状态,操作需要点两次确认。
5、持久化。当前注入和历史写入 ~/.dsh/prompt-injector/state.json,重启 DSH 后注入内容仍然存在。
6、三种操作入口:设置页、聊天命令 /pinject、AI 调用 prompt_injector 工具。
设计原则写在 README 里:不做任何你没有要求的事。没有注入时,插件会把自己注册的系统提示词 section 完全注销,系统提示词与安装前一模一样;回退不是再加一段抵消文本,而是真的回到之前的状态。
安装与启用¶
前置条件:DSH ≥ 桌面版 / 任意带插件系统的版本;Node.js ≥ 22。
方式 A 适合开发者,从源码目录安装:
dsh plugin --profile <你的 profile 名> add link:<本仓库绝对路径>
例如:
dsh plugin --profile desktop add link:C:\path\to\dsh-prompt-injector
安装后重启 DSH,设置左侧会出现「提示词注入」页。
方式 B 手装,DSH 命令不可用时使用。先把仓库目录整体改名为 dsh-prompt-injector,放进:
~/.dsh/profiles/<profile>/node_modules/dsh-prompt-injector
然后在 profile 的 cordis.patch.yml 里加一行(或删掉已有的 prompt-injector 行后再加):
- insert:
- id: prompt-injector
name: dsh-prompt-injector
装完同样需要重启 DSH 才生效。
典型用法¶
设置页操作:进入「设置 → 提示词注入」,在大文本框粘入提示词,在下拉框选择「替换当前注入」或「追加到当前注入后面」,点「注入到系统提示词」即生效。需要撤销时点「回退一步」;要彻底清空点「恢复到程序运行前」,会要求点两次确认。
聊天命令操作:
/pinject <提示词正文> 直接注入(整段作为一次注入)
/pinject status 看当前注入和历史
/pinject rollback [步数] 回退(默认 1 步)
/pinject reset 清空全部
第三条路径是让 AI 代办:对 AI 说「把这段注入系统提示词:……」,它会调用 prompt_injector 工具。按当前审批策略,工具调用会先交给你确认。
实现要点¶
想改代码的人可以看这段。注入点在 ctx.systemPrompt.section(),注册的 section 的 text 是函数,每次模型调用装配时读取当前内存状态,所以注入和回退立即生效,不需要重启进程。注入内容会被包进一个高优先级附加段:
# User-injected system prompt (Prompt Injector)
...
<user-injected-prompt>
...你的提示词...
</user-injected-prompt>
状态文件 ~/.dsh/prompt-injector/state.json 的结构是 { current, history },history 的每一项是某次注入发生前当前内容的快照,回退就是从末尾弹出一条恢复为 current。宿主依赖方面,defineTool 从宿主对象树里解析,解析不到就走本地等价转换兜底,避免一个 import 失败导致整个插件不激活,细节见 lib/hostdeps.mjs 注释。排查问题先看日志:
~/.dsh/prompt-injector/injector.log
适用场景与注意¶
适合以下几类人:
- 想给全局会话加固定规矩或人设,又不想改 DSH 源码的普通用户。
- 需要在多套提示词方案之间快速试错、随时回退的开发者。
- 想用聊天命令或让 AI 直接操作注入的自动化场景。
需要明确的几点:
1、注入的内容会被模型视为用户的最高优先级指令,并且对所有会话生效。只注入你自己写的、或完整读过并理解的文本;不要把网页、邮件里复制的整段文字不经阅读就注入。
2、插件以当前 DSH 进程的权限运行。安装前应先阅读源码,确认分发来源,并留意许可证(MIT)。
3、历史只保留 20 条快照,超过后旧快照不再保留;彻底清理依赖「恢复到程序运行前」功能,它需要点两次确认。
4、「恢复初始」只清空本插件记录的注入内容与历史,等于插件运行前的状态,不等于把 DSH 恢复到任意更早的时间点。
结尾¶
dsh-prompt-injector 解决的问题很具体:DSH 没有系统提示词入口,它补上这个入口,并给注入加上历史和回退,代价是一处死板(只做被要求的事、没有注入时不留痕迹)。仓库 https://github.com/qbclex/dsh-prompt-injector ,目录页 https://www.skillhub.cn/plugins/qbclex/dsh-prompt-injector 。