DeepSeek Harness (DSH) 的插件生態允許在對話流程中加入視覺反饋。dsh-character-emote-plugin 插件在對話右側提供一個固定浮層,用於實時顯示當前角色的表情立繪。它通過模型調用工具或流式文本判定來觸發立繪切換,解決智能體對話缺乏視覺表現的問題。
安裝與啓用¶
安裝插件需要指定 DSH 的執行方式。安裝完成後應重啓 DSH 進程以使配置生效。
# 安裝
<dsh> plugin --profile <profile> add <本插件目錄>
# 卸載
<dsh> plugin --profile <profile> remove dsh-character-emote-plugin
注意:插件代碼採用 MIT 許可證,文檔採用 CC BY 4.0 許可證。
目錄結構與素材準備¶
插件通過目錄結構識別角色和情緒。立繪素材需自行準備,倉庫不包含圖片文件。
目錄結構¶
支持多角色管理,每個角色對應一個目錄,目錄名即角色名。
dsh-character-emote/
characters/
高奈利亞/ ← 角色名(目錄名 = 角色 id)
joy.png ← 基礎檔(intensity 0)
anger.png ← 基礎檔
anger-1.png anger-2.png anger-3.png ← 強度遞進檔(intensity 1/2/3)
角色B/
...
命名規範¶
情緒命名與角色無關,每個角色目錄內部遵循同一規範:
* joy.png:基礎情緒圖(intensity 0)。
* anger-1.png / anger-2.png / anger-3.png:情緒強度遞進檔(intensity 1/2/3)。
* 支持格式:png、jpg、jpeg、webp、gif。
放置好素材後,在設置頁點擊“刷新角色”按鈕即可識別,無需重啓。
核心功能¶
情緒模式¶
插件提供三種情緒模式,可在設置頁切換:
- 自動(默認):模型調用
set_expression工具或流式判定直接觸發切圖。 - 手動:模型只記錄“待定情緒”,設置頁顯示待定卡片,需手動選擇情緒並點擊“應用”才切圖。
- 暫停:完全凍結,任何情緒變化不生效。
視覺交互¶
- 動畫:立繪切換時支持淡入淡出和縮放過渡動畫,可在設置頁控制開關。
- 操作:浮層僅圖片本體支持拖拽和滾輪縮放,浮層本身不阻擋 UI 交互。
- 樣式:立繪大小、位置、透明度可調,配置持久化到 localStorage。
- 預加載:切換角色時會預加載該角色全部立繪,避免弱網環境下的閃屏。
複合情緒與心情¶
- 複合情緒:支持主情緒與副情緒組合(如
surprise+embarrassment),標籤顯示“主 + 副”。 - 心情基線:內置 28 種情緒的 valence(正負)和 arousal(喚醒度)軸。每次情緒調用會按比例混入當前心情,隨時間指數衰減(半衰期 2 分鐘)。心情爲內存態,重啓歸零。
- 動態強度映射:情緒強度受心情影響,方向相反或差距過大時自動降檔,避免表情硬切。
觸發條件¶
除了模型調用工具,插件還支持基於文本的擴展觸發條件:
- 標點符號:
!→ 興奮,?→ 困惑,...→ 悲傷。 - 表情符號:
😊→ 開心,😠→ 生氣,😢→ 難過,😲→ 驚訝。 - 語氣詞:
哇/啊→ 驚訝,哎/唉→ 失望,嘿/嘻嘻→ 好笑。
API 與設置¶
API 路由¶
插件提供以下 HTTP 接口:
POST /character-emote/mode:切換情緒模式。Body:{mode: "auto"|"manual"|"paused"}。POST /character-emote/apply:手動應用情緒。Body:{emotion, intensity?, secondary?}。
設置項¶
- 刷新角色:重新掃描
characters/目錄並重註冊工具枚舉。 - 情緒強度可視化:在立繪下方顯示強度指示條(最大支持 3 檔)。
- 無檔位強度縮放:當情緒只有基礎圖(無變體檔)時,通過 scale 放大模擬視覺強度;有變體圖時走檔位圖(向後兼容)。
注意事項¶
- 素材自備:倉庫不包含任何立繪圖片,需按規範自行準備。
- 內存狀態:心情數據爲內存態,重啓 DSH 後歸零。
- 全局共享:多會話共用同一份當前角色和情緒狀態。
- 工具枚舉刷新:角色或情緒切換後,
set_expression工具的枚舉是刷新時的快照,需重註冊(即刷新角色)後生效。 - 姊妹倉庫:作者維護了多個同族插件,如
dsh-liya-skin(皮膚)、dsh-liya-ui(UI 潤色)等。
作者:feverZHONG