前言¶
DeepSeek Harness(DSH)的普通會話裏,系統提示通常靠手寫 AGENTS.md 或整段粘貼來維持文風與敘事規則。若你已經在 SillyTavern(ST)裏攢了 chat-completion 預設 JSON、PNG 角色卡,換到 DSH 後往往只能「全量複製、整段刪改」,按場景切換、按塊臨時關閉某一條規則也沒有現成入口。
下面介紹社區插件 dsh-preset-bridge(維護者 911319534,分類:客戶端)。它把 ST 的預設塊與角色卡接到 DSH 的普通會話,用浮動面板做總開關、逐塊開關與編輯,並按會話分別保存配置。
說明:README 寫明本插件由 DeepSeek V4.1(deepseek-flash)生成,僅在單臺 Windows 上的 DSH Desktop 實例做過測試,應視爲實驗品。DeepSeek Harness 生態以「一切皆插件」爲思路;插件目錄站 skillhub.cn 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-preset-bridge(包名 @local/preset-bridge,當前版本 0.2.0,MIT)做三件事:預設按塊存儲與開關、角色卡與「我的設定」注入、一個總開關整體啓停整套注入。ST 裏那套「前端 + 正則美化」在 DSH 中不存在,本插件用宿主側的 systemPrompt.section 拼裝文本,並用獨立 HTTP 路由 + 注入到 index.html 的浮動面板管理狀態。
核心功能¶
預設¶
- 導入:讀取 ST 的 chat-completion 預設 JSON(
prompts+prompt_order)。 - 逐塊開關:每塊一個勾選框,默認與預設裏
prompt_order一致。 - 逐塊編輯:可改單塊內容;改過的塊名稱後帶
*。 - 恢復默認:單塊恢復,或刪除整個預設後重新導入。
- 順序:按
prompt_order拼接;多組時按 ST 規則選100001→100000→ 首個非空組。
角色卡¶
- 支持 PNG(
tEXt/iTXt中的chara)以及chara_card_v2/v3JSON。 - 選中一張卡時,卡面描述注入在最前面;不選則不注入。
- 組裝後的卡面文本可編輯,「恢復默認」回到原始字段;刪除會移除文件與覆蓋層。
我的設定與基礎角色¶
我的設定表示「你是誰」:一個稱呼 + 一段人設,注入在角色卡之後、預設塊之前。
基礎角色(default-role.md)在沒有角色卡時作爲兜底身份聲明,默認內容爲「你是一個大語言模型,不是某個角色」,用於避免模型順着預設把自己演成具體人物。可編輯、可一鍵恢復默認。
總開關與可選聯動¶
一個按鈕可關閉整套(預設 + 卡 + 人設 + 基礎角色)。關閉時拼裝函數返回空字符串,對應 section 不再注入。
可選:打開總開關時自動停用 dsh-fish-memory,關閉時僅恢復「由本插件那次自動關掉的」狀態,你手動關的不動。
注入順序與宏¶
拼裝優先級(衝突時以前者爲準):用戶當前明確指令 > 我的設定 > 角色卡 > 預設各塊。
大致結構:
[## 場景預設:xxx(僅在啓用時)]
### 角色設定(卡名 / 基礎角色)
### 用戶設定(稱呼)
### 預設的各個塊…
宏處理(節選):
| 宏 | 處理 |
|---|---|
{{user}} |
替換爲「我的設定」裏的稱呼 |
{{char}} |
替換爲「角色」 |
{{persona}} |
替換爲人設文本 |
{{lastMessage}} |
刪除 |
其他 {{...}} |
原樣保留 |
純宏塊與 ST 內置佔位塊(如 charDesc、scenario)在 DSH 無對應字段時會整塊丟棄。
宿主註冊 section 時必須設置 interpolate: false,否則 ST 預設裏的 {{user}} 等會觸發 DSH 嚴格插值並報錯,導致整輪對話失敗(README 中記爲已修復項)。
按會話獨立¶
配置按 context.agent.session(形如 session-<uuid>)分別存儲,寫入隻影響當前會話覆蓋,不動其他會話與默認模板。面板通過旁觀 fetch / XHR / WebSocket 請求體識別 session- 前綴的 id;換會話時面板收起並恢復該會話上次的開關。若無法識別當前對話,界面會以黃字提示「設置會寫入默認」,避免誤以爲是按會話而實際全局共享。
數據目錄(默認):
~/.dsh/preset-bridge/
config.json # { defaults, sessions }
overrides.json
presets/
cards/
default-role.md
probe.log
安裝與啓用¶
插件以 link 安裝 指向本地源碼目錄,profile 裏是 junction;不要刪除源碼目錄,否則插件失效。安裝前請自行審閱 GitHub 倉庫 源碼與 MIT 許可證;插件在 DSH 進程權限下運行。
先把倉庫放到本機,再在終端執行(路徑替換爲你的絕對路徑):
dsh plugin --profile desktop add <本倉庫絕對路徑>
亦可用 DSH 插件管理器指向同一本地目錄。宿主側 index.js 在 DSH 啓動時加載,改完後需重啓 DSH;面板腳本 ui.js 按請求讀取,改完刷新頁面即可生效。
卸載(數據目錄保留,重裝後設置仍在):
dsh plugin --profile desktop remove @local/preset-bridge
典型用法¶
- 完成安裝並重啓 DSH,打開普通會話頁面;瀏覽器加載
GET /preset-bridge/ui.js後出現浮動面板。 - 通過
POST /preset-bridge/import或面板操作導入 ST 預設 JSON;按需勾選塊、編輯內容。 - 在角色卡區域導入 PNG 或 JSON,選中要用的卡;在「我的設定」填寫稱呼與人設。
- 打開總開關後發送消息;可用
GET /preset-bridge/preview查看當前實際會注入的全文。 - 切換側邊欄其他對話時,確認面板頂部作用域欄顯示「會話:… · 隻影響這個對話」;若出現「未能識別當前對話」,需注意此時寫入的是默認模板。
面板主要 HTTP 路由包括:GET/POST /preset-bridge/state、POST /preset-bridge/block、POST /preset-bridge/import、GET/POST /preset-bridge/card、GET/POST /preset-bridge/role 等,均支持通過 ?sid= 或 sessionId 指定會話。
適用場景與注意¶
適合:已在 ST 導出預設與角色卡、希望在 DSH 普通會話裏按塊開關文風規則、按對話保存不同組合的用戶。
與 ST 相比做不到或行爲不同(README 原文):
- 無世界書(lorebook)、無正則美化/標籤渲染、無 assistant 預填、採樣參數仍由 DSH 模型配置決定、無角色卡
first_mes自動開場。 - ST 的
{{// 註釋 }}不會特殊處理;預設裏依賴 ST persona 的「用戶設定」佔位塊會被丟棄。
已知風險:README 記錄過全局 DOM MutationObserver 導致頁面啓動卡死,現默認關閉 Unicode 解碼;若手動 localStorage.setItem('pb-decode', '1') 後刷新,可能再次變卡。UI 未走 DSH client 模塊系統(測試機上加載失敗),而是 webServer.tapIndex 注入腳本。
結尾¶
dsh-preset-bridge 把 ST 預設的「分塊存儲、分塊開關、分塊編輯」搬到 DSH 普通會話,並補上角色卡、人設與按會話配置,減少在 AGENTS.md 裏反覆整段粘貼的成本。使用前請接受其單機測試與 AI 生成代碼的定位,出問題可先查倉庫 README 的「已知問題與血淚史」。
- 插件目錄頁:https://www.skillhub.cn/plugins/911319534/dsh-preset-bridge
- GitHub:https://github.com/911319534/dsh-preset-bridge