dsh-prompt-injector:可回退的系統提示詞注入

前言

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 。

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

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

小夜