前言¶
DeepSeek Harness (DSH) 的核心在於插件化與 Agent 靈活性。在實際使用中,開發者常遇到一個需求:在會話中途只希望改變模型說話的語氣與人設,而不希望重置它已有的工具、技能或模型選擇。現有的某些切換方案在執行人設替換時,往往需要註冊 Agent Preset 或調用 recompose(),這會連帶重置整個會話的工具組合,導致工具丟失或命令表清空。
dsh-persona-switcher 插件解決了這個問題。它通過宿主原生的 persona-switcher:persona section 機制,將角色正文注入到提示詞中,實現了“只換說話的人,不碰手裏的工具”。
核心能力¶
-
角色庫管理
插件支持在rolesDir目錄下維護角色文件,每個角色對應一個ROLE.md。文件中包含id、name、description以及人設正文。角色文件支持目錄結構或扁平文件形式。 -
會話中途切換
使用/role <id>命令即可在當前會話中切換角色。插件不會調用recompose(),因此不會重置會話的工具、技能和模型配置。使用/role none可一鍵退回宿主默認人設。 -
宿主原生機制
插件利用宿主的persona-switcher:personasection 機制,將角色內容作爲獨立提示詞段注入。它不遮蔽宿主的部署身份行(如You are a coding agent...),只是在其後追加人設描述,確保模型始終知道自身運行在哪個模型上。 -
持久化與默認值
每次切換會話角色時,插件會將選擇記錄在$DSH_HOME/persona-switcher/sessions.json中。重啓 DSH 後,該會話的第一步提示詞會自動應用上次記錄的角色。同時,支持通過defaultRole配置項設置新會話的默認角色。 -
可視化管理與診斷
在設置頁中提供可視化的角色庫管理界面(含專屬導航圖標),支持新建、編輯和刪除角色。此外,提供role_probe診斷工具,用於檢查當前綁定狀態、系統節點及工具清單。
安裝與啓用¶
確保已安裝 DeepSeek Harness >= 0.2.0-rc.1。
dsh plugin add --profile desktop dsh-persona-switcher
安裝後需要完全退出並重啓 DSH 才能生效。
使用方式¶
-
查看當前狀態
在會話中輸入/role,可查看當前會話角色及角色清單。 -
切換角色
輸入/role whale-girl切換到指定角色(whale-girl爲角色 ID)。 -
撤銷切換
輸入/role none撤銷本會話的角色,恢復爲宿主默認人設。 -
設置默認角色
輸入/role default whale-girl,將指定角色設爲新會話的默認角色。 -
設置頁操作
直接在設置頁的“人設切換”板塊進行可視化管理。
邊界與安全¶
本插件在設計上嚴格限制了權限範圍,僅寫入內存中的提示詞段和特定的配置文件,不涉及網絡請求或憑據讀取。
-
權能邊界
- 不聲明任何角色級工具、技能或模型。
- 不讀取角色文件中的
tools、denyTools、skillsDir、model字段。 - 不註冊 agent preset,不調用
recompose()。 - 不遮蔽宿主的身份行。
-
文件寫入位置
插件僅寫入 4 個位置:$DSH_HOME/persona-switcher/sessions.json(會話記錄)、<rolesDir>下的角色文件(僅用戶主動新建/編輯/刪除時)、宿主 profile 的cordis.patch.yml(通過 settings 表層間接寫入)。 -
網絡與隱私
插件不聯網、不上傳角色內容、不讀取憑據文件。僅通過宿主已有的本地 webServer 提供極少數端點(如列出角色),不開啓獨立服務。
總結¶
dsh-persona-switcher 是一個專注於“人設層”切換的輕量級插件。如果你需要在不重置工具鏈的情況下頻繁切換模型語氣,它提供了比更換 Agent Preset 更精細的控制方案。安裝后角色文件保留,卸載即可徹底清除所有痕跡。
- GitHub 倉庫:https://github.com/yupaoa/dsh-persona-switcher
- 插件目錄:https://www.skillhub.cn/plugins/yupaoa/dsh-persona-switcher