前言¶
DeepSeek Harness(dsh)把模型和工具、會話和界面都做成可替換插件。它適合搭智能體運行時,但默認並不處理另一類很具體的資產:已經在 SillyTavern 裏攢好的角色卡、世界書、Chat Completion 預設,以及 JSONL 聊天記錄。
很多人並不是要從零做一套角色扮演前端,只是想把現有卡片遷過來,用 DSH 裏已經配好的模型,在原生會話裏繼續聊。社區插件 dsh-agent-rp 做的就是這件事。
本文按社區目錄頁、GitHub 倉庫 README / package.json / 兼容說明,以及 DeepSeek Harness 官方倉庫覈對後整理:這個插件是什麼、現在能做什麼、怎麼裝、第一次怎麼開聊,以及當前明確不做的部分。
這是什麼¶
dsh-agent-rp 是一款面向 DeepSeek Harness 的工具與能力插件,由 hewzhew 維護,許可證爲 MIT。npm 包名是 @dsh-external/dsh-agent-rp,主要語言是 TypeScript。GitHub 倉庫的一句話描述是:SillyTavern migration and next-generation Agent RP for DSH。截至 2026-08-17,倉庫星標爲 142。
它解決的問題很具體:把 SillyTavern 的角色卡、預設和聊天記錄帶進 DSH,在原生會話裏繼續角色對話。可以從角色庫選角,設置開場和 Persona,並在會話中使用角色卡、世界書、預設、輕前端與持久記憶。目錄頁和 README 都把它標成面向下一代 Agent RP 的公開預覽版。
先說清生態位置。DeepSeek Harness 是 DeepSeek AI 開源的 agent harness,核心理念是「一切皆插件」,目前處於開發者預覽階段,官方倉庫寫明未來會出現破壞兼容性的變更。社區用來發現插件的目錄站點是獨立項目,與 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。官方推薦的發現方式仍是給倉庫加上 dsh-plugin 話題。
核心功能¶
角色就是頂層 Agent¶
README 寫得很直接:角色本身就是頂層 Agent。這裏沒有額外的旁白、協調器或 Character 子代理,角色對話直接發生在普通會話中。
從空白的標準會話選擇角色時,插件會自動進入角色會話,不必先挑某個 Agent 預設。已經有聊天內容的普通會話不會被修改。
角色卡與角色庫¶
當前可以體驗的導入與管理能力包括:
- 導入 Character Card V1 / V2 / V3,格式覆蓋 PNG、JSON 與 CHARX
- 把角色保存到可視化角色庫,收起或恢復角色,不影響已有對話
- 選擇默認或備選開場,併爲玩家選擇可複用 Persona
兼容說明還補了幾條邊界:PNG 裏同時帶 ccv3 和 chara 元數據時,以 ccv3 爲準;未知字段和 extensions 會保留,但不進入提示詞,除非有受支持字段接管該行爲。獨立 JSON 會作爲不透明附件存放,原始字節和路徑都不會發給模型。
世界書、預設與聊天記錄¶
遷移不只是一張卡:
- 導入 SillyTavern JSONL 聊天記錄,或把對應角色卡和 JSONL 放在同一條消息裏一起遷移
- 使用角色自帶的世界書;開聊表單可直接導入社區推薦的 SillyTavern Chat Completion 預設
- 獨立 World Info 也可以導入當前會話
- 世界書正則關鍵詞在受限 QuickJS 運行時中匹配,不會交給 Host JavaScript 執行
導入會創建新的角色對話,不會修改源文件或來源會話。導入後的預設可以在角色庫開聊表單或會話的「預設庫」裏改名;開始對話後,「會話設置 → 預設」可以調整提示模塊與預設正則的開關,修改只屬於當前會話。
隔離腳本、輕前端與記憶¶
公開預覽版已經把一部分酒館側腳本和前端語義遷進來,但執行環境是隔離的:
- 在隔離的 QuickJS 環境中運行世界書、角色提示和預設裏的同步 EJS 模板;單條模板或正則失敗不會中斷會話
- 在隔離腳本環境中運行兼容的 Tavern Helper 腳本、顯示正則、輕量 HTML 界面與 MVU 狀態
- 可執行卡片 HTML 在沒有同源權限的沙箱 iframe 中運行
- Tavern Helper 腳本只能加載內置或玩家明確批准來源的 HTTPS 模塊,不能直接訪問 Host 頁面、文件或進程
- 進入對話前後都可以查看卡片聲明的 HTTPS 來源,並由玩家逐項允許
會話裏還可以重寫、續寫和切換回復版本,並保留明確的長期記憶。沉浸視圖和調試視圖可以來回切換,用來檢查實際生效的提示內容。
安裝與啓用¶
目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端中運行即可:
dsh plugin add github:hewzhew/dsh-agent-rp
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:hewzhew/dsh-agent-rp#commit
把 commit 換成實際哈希。不要憑插件名自己拼接安裝地址。
倉庫 README 的推薦寫法更明確:需要已經公開發布的 DSH,以及 Node.js 和 pnpm。package.json 裏客戶端聲明的 platform 是 web。不必先克隆倉庫,直接從公開倉庫安裝:
npx -p @deepseek-ai/dsh@latest dsh plugin --profile web add github:hewzhew/dsh-agent-rp#main
npx -p @deepseek-ai/dsh@latest dsh --profile web
以後更新插件時運行:
npx -p @deepseek-ai/dsh@latest dsh plugin --profile web update @dsh-external/dsh-agent-rp
這種安裝方式不依賴某個長期留在原位的本地克隆目錄。只有貢獻者需要改源碼時,才應克隆倉庫,並在倉庫根目錄運行 pnpm install、pnpm run build 與 dsh plugin --profile web add .。
早期安裝器寫入的版本不會自動遷移。若啓動錯誤中出現 .dsh\plugins\dsh-agent-rp,先把該目錄移出 plugins 目錄作備份,確認 DSH 能啓動後,再按上面的 profile 命令安裝。不要刪除整個 .dsh,會話數據與舊插件目錄不是一回事。
如果你正在參與 DSH 內測並使用指定 RC 版本,README 要求把上面兩處 @latest 換成對應版本,也不要在 Issue 或日誌裏公開自己的 NPM Token。
Android / Termux 預覽¶
README 還提供了一條手機預覽路線:ARM64、Android 11 及以上設備可以在 Termux 本機運行,不需要讓電腦保持開機。安裝器會準備 DSH 的安卓原生依賴、圖片解碼後備模塊、Agent RP 插件與啓動命令;首次安裝需要編譯原生模塊,會比普通插件更新慢。手機安裝器默認使用已經驗證的 DSH 0.1.0-rc.6,不會在上游發佈新版本時未經驗證地自動換底座。
curl -fsSL https://raw.githubusercontent.com/hewzhew/dsh-agent-rp/main/scripts/install-termux.sh | bash
dsh-agent-rp --port 3080
隨後在同一部手機的瀏覽器打開 http://127.0.0.1:3080。角色卡和會話位於 ~/.dsh,重新運行安裝命令可以更新,安裝器不會刪除它們。若啓動或導入角色卡時遇到問題,可以運行 dsh-agent-rp-doctor,它只檢查版本、模塊和 Android 文件系統能力,不讀取令牌、角色卡或會話內容。
當前這條路線只承諾角色聊天所需能力,不把老設備上的 bash 沙箱或編碼 Agent 計入手機預覽範圍。需要把頁面長時間留在後臺時,可以先在 Termux 運行 termux-wake-lock,結束後再 termux-wake-unlock;這不會繞過 Android 的電池優化設置。重啓手機後,需要先重新運行 dsh-agent-rp --port 3080。
第一次開聊¶
倉庫 README 給出的步驟可以直接照做:
- 在 DSH 中新建空白會話。
- 點擊輸入框下方的「選擇角色」。
- 選擇已有角色,或導入 PNG、JSON、CHARX 角色卡。
- 選擇開場與 Persona,然後點擊「開始對話」。
- 進入會話後,可在標題欄打開角色信息、角色庫、預設、世界書或調試視圖。
要遷移舊聊天,可在角色會話中附加一份 SillyTavern JSONL;將對應角色卡和 JSONL 放在同一條消息中,可以一次遷移角色身份與歷史記錄。導入會創建新的角色對話,不會改源文件。
需要比較大型卡片改動時,倉庫提供了不含社區卡片內容的合成兼容基準,見 docs/compatibility-benchmark.md。更細的格式支持與降級方式見 docs/sillytavern-compatibility.md,EJS 的可執行與保留範圍見 docs/ejs-compatibility.md。
適用場景與注意事項¶
適合這類情況:
- 已經有 SillyTavern 角色卡(PNG / JSON / CHARX),希望在 DSH 原生會話裏繼續單角色對話
- 需要把 JSONL 聊天記錄、世界書和 Chat Completion 預設一併遷過來
- 可以接受公開預覽版的能力邊界,並願意在調試視圖裏覈對實際生效的提示
當前里程碑明確沒有納入的部分:
- 羣聊、多人互動
- 重前端 / 獨立前端
- 需要腳本或遠程 HTML 的應用型開場:它們不會在角色庫預覽裏後臺啓動
世界書和 EJS 也不是全量兼容。獨立 World Info 裏,正則鍵、裝飾器、概率、向量匹配、定時效果、遞歸控制和高級插入位置等會保留但不執行;導入器在不支持字段會改變激活條件時,不會執行半支持條目。EJS 只執行能從當前 Session 日誌確定性重建的模板語義,setvar / incvar / decvar、頁面對象、Date、隨機數和 Host 異步 API 都不提供。單條模板失敗時,只跳過對應模塊或世界書條目。
安裝前還有幾條必須看的安全說明。目錄頁寫明:插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前應檢查源代碼倉庫和許可證;如需可復現安裝,請固定 commit 哈希。角色卡、世界書和腳本都屬於不信任內容:EJS 與世界書正則在獨立 QuickJS / WASM 運行時中執行,不會獲得 Host 的文件、網絡、進程或模塊接口;遠程和 data-URL 資源既不抓取也不解碼。
反饋 Issue 時,請說明卡片格式、預期表現、實際表現與最小復現步驟;不要上傳無權公開的角色卡、私有社區內容、Token 或完整 Session Log。歡迎帶着自己有權使用的卡片來體驗,也歡迎一起補全不同卡片生態的兼容性。
小結¶
dsh-agent-rp 把 SillyTavern 側已經常見的角色卡、預設、世界書和聊天記錄,遷進 DeepSeek Harness 的原生會話。角色就是頂層 Agent,對話發生在普通會話裏,而不是再套一層旁白或子代理。它現在是公開預覽版,聚焦單角色 RP、遷移和輕前端;羣聊和重前端還不在範圍內。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-agent-rp/
GitHub:https://github.com/hewzhew/dsh-agent-rp