dsh-bard:DeepSeek Harness 的吟遊角色扮演插件

前言

DeepSeek Harness (DSH) 依賴模塊化設計。開發者有時需要將 SillyTavern 的角色扮演素材(JSON/PNG 卡片)整合進 DSH 的 agent 生態。dsh-bard 插件實現了這一點:它讀取 SillyTavern 的角色卡和世界書,將它們與 Harness 技能組合,並保存爲原生 agent preset。它不建立獨立的對話循環;它將內容翻譯成 Harness 的內部格式(agent preset、system prompt 上下文、技能列表),因此歷史記錄、工具、權限、上下文壓縮全部沿用 Harness 既有行爲。

核心功能

角色卡導入
支持 SillyTavern V1/V2/V3 格式。可讀取 JSON 文件,或讀取 PNG 卡片中的 tEXt 塊(優先級 ccv3 優於 chara)。導入後可預覽立繪、簡介及開場白。

世界書導入
支持導入獨立 JSON 世界書,或提取角色卡內嵌的 character_book。

內容選擇與預算裁剪
世界書條目通過關鍵詞匹配(常駐/次級門控),停用條目會自動跳過。系統按條數和字符雙預算裁剪,且排名最高的條目即使超預算也會強制注入。

技能與工具綁定
一個預設可綁定若干 Harness 技能。創建/編輯預設時可關閉工具調用(適配純文本模型),或使用工具白名單限制允許進入請求的工具。Section 白名單可從完整 system prompt 中挑選指定 section(與 complete: true 互斥)。

用戶與性別
每個預設可指定 {{user}} 的替換值,角色卡內的 SillyTavern 宏在渲染時自動替換。可指定玩家性別(未指定/男/女/自定義文本),避免模型因中性名字猜錯代詞。

數據落庫與立繪
保存後的預設前綴爲 bard-,出現在 Harness 的預設選擇器裏。導入 PNG 卡時,立繪原圖會保留。

數據存儲
所有數據存放於 $DSH_HOME/bard/(默認 ~/.dsh/bard/),純文件、可讀、可手改。寫入採用原子操作(臨時文件 + rename),崩潰不會留下半截記錄。

安裝與啓用

插件目錄需要能作爲 bundle 被解析到。推薦在 profile 的 package.json 中配置:

{
  "dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-bard"] } }
}

包本身聲明瞭 dsh.bundle.patch: ./cordis.patch.yml,該 patch 會插入一行 { id: bard, name: dsh-bard }。解析順序是「安裝錨點優先,然後 profile 目錄」,因此只要 dsh-bard 出現在 profile 的 node_modules 下即可被找到。

啓用後,插件會在 $DSH_HOME/bard/ 下創建 cards / worldbooks / portraits / presets 四個目錄,並在「設置 → 吟遊」中提供四個標籤頁。

使用

界面操作

  1. 設置 → 吟遊:分爲角色卡、世界書、技能、預設四個標籤頁。
  2. 導入:在角色卡或世界書標籤頁導入素材。
  3. 綁定:在技能標籤頁勾選 Harness 技能。
  4. 保存:在預設標籤頁組合上述素材,命名並保存。

命令

/bard                    列出所有吟遊預設
/bard card               查看當前會話正在使用的角色
/bard greet [序號]       輸出開場白(第 n 條備選,缺省用當前會話的角色)

開演流程

  1. 在設置 → 吟遊裏完成素材導入、技能綁定並保存預設。
  2. 在會話的預設選擇器裏選擇「吟遊 · <預設名>」。
  3. 角色卡的 persona、命中的世界書條目、綁定的技能會自動進入該會話的 system prompt。

技術細節

Scope 限制
Host 側的所有服務必須從 agent.ctx 獲取,不能從插件的全局 ctx 獲取。這是因爲 DSH 的服務按 scope 分層,插件 ctx 沒有 scope 標籤,寫進去會落到全局層導致靜默失敗。

工具注入
工具清單通過變量注入到 persona 前綴,而不是獨立的 section。這樣可以確保清單出現在 persona 下方,且免疫 complete: true 的裁剪(該標誌會丟棄除 persona 外的所有 section)。

白名單實現
工具白名單隻過濾繼承的工具(全局層與祖先層),不過濾子 agent 自身註冊的工具(如 Agent Teams 的工具)。Section 白名單通過 system-prompt/assemble 的 waterfall 實現,監聽器原地修改 assembly.sections。

數據來源
世界書注入文本取自該會話最近 24 條消息,截尾 8000 字符。HTTP 端點僅允許 loopback host + 同源 origin 訪問。

總結

dsh-bard 是一個將 SillyTavern 角色扮演素材轉化爲 DeepSeek Harness 原生能力的工具。它不構建獨立的對話循環,而是通過翻譯素材和利用 Harness 的原生機制來實現角色扮演功能。

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

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

小夜