前言¶
用 DeepSeek Harness(dsh)跑 Agent 時,想確認它此刻在思考、在調工具,還是已經完成或出了錯,通常得盯着 Web 頁面裏的會話流。dsh-pet 換了一種呈現方式:把 Agent 的即時事件映射成一隻桌面寵物的動畫,事件來了切狀態,掃一眼頁面角落就知道當前進展。
下面介紹這個插件的功能、安裝方式與典型用法。
這是什麼¶
dsh-pet 是 levi52 維護的 DSH 插件,一句話定位:Codex 風格的 DeepSeek Harness 桌面寵物——內嵌 DSH Web 界面,跟着 Agent 即時狀態播放動畫,精靈圖與動畫節奏都可以在設置頁裏可視化配置。項目採用 MIT 許可證。
實現上它不改動 dsh 本體:通過官方 webServer.tapIndex 把桌寵浮層注入 dsh 的 3080 Web 頁面,與 dsh 同源同頁、一起出現一起消失。
核心功能¶
- 事件驅動動畫:訂閱根 context 的
session/event,按turn/start、tool/call、turn/end等事件,在待機、思考、執行、等待、完成、失敗六種動畫之間切換。 - 精靈圖即配置:精靈圖的網格佈局與「狀態 → 行」映射由配置聲明(
config.sprite或同名.json側車文件),換圖不需要改源碼。 - 設置頁管理:dsh 設置頁有「桌寵」分區,可視化配置上傳/選擇精靈圖(webp/png/gif/jpg/svg)、網格、狀態映射、縮放、動畫速度、待機延遲、顯隱。
- 配置熱推送:改動經 SSE
config事件熱推給渲染器,縮放、動畫速度、待機延遲調整即時生效,不需要刷新或重啓。 - 自動持久化:設置保存到
pet/user-config.json,刷新後自動恢復,優先級高於cordis.patch.yml。 - 多形態呈現:除內嵌浮層外,還提供獨立彈窗頁、Chrome app 無邊框窗、pywebview 透明窗(可打包 .exe)、Electron。
安裝與啓用¶
環境要求兩條:
- DeepSeek Harness(
dshCLI)已安裝並運行過 Web profile - Node.js ≥ 18
安裝分兩步。第一步,把本地插件目錄註冊到 web profile:
dsh plugin --profile web add <本目錄路徑>
第二步,啓動 dsh,會一併啓動 Web GUI:
dsh --profile web
經過上面的步驟,打開終端打印的 Web 地址(通常是 http://127.0.0.1:3080/),頁面右下角會出現桌寵;管理入口在 設置 → 桌寵。
卸載執行:
dsh plugin --profile web remove dsh-pet
注意:卸載後用戶數據(pet/user-config.json 與 pet/uploads/)會保留,如需徹底清除要手動刪除。
配置¶
默認配置開箱即用。需要覆蓋默認值時,在 profile 的 cordis.patch.yml(頂層 YAML 數組)中加入:
- insert:
- id: dsh-pet
name: dsh-pet
config:
idleMs: 3000
scale: 1
fpsScale: 1
injectOverlay: true
overlayRoute: /dsh-pet
支持的配置項:
idleMs(默認3000)scale(默認1)fpsScale(默認1)injectOverlay(默認true)overlayRoute(默認/dsh-pet)enabled(默認true)spriteFile(默認doraemonsprite.webp)sprite(網格與狀態映射)
其中 sprite 聲明精靈圖的網格佈局與狀態到行的映射,spriteFile 指定精靈圖文件。設置頁保存的配置會寫入 pet/user-config.json,優先級高於 cordis.patch.yml。
獨立窗口模式¶
除了內嵌浮層,桌寵渲染器也提供獨立頁面,地址:
http://127.0.0.1:3080/dsh-pet/
想做成無邊框的桌面窗口,可以用 Chrome 應用模式:
chrome --app="http://127.0.0.1:3080/dsh-pet/" --window-size=256x320
也可以用 pywebview 起一個透明窗體:
cd dsh-pet/pet
pip install pywebview
python launch.py
需要分發時,用 pyinstaller 打包成單文件 .exe:
pyinstaller --onefile --windowed --add-data "doraemonsprite.webp;." --add-data "pet.html;." launch.py
特性列表中還列出了 Electron 形態,但 README 正文沒有給出具體操作步驟。另外,未連接 dsh 時,獨立頁會自動循環播放各狀態動畫(演示模式),按 D 鍵可手動切換,適合單獨預覽動畫效果。
適用場景與注意事項¶
適合的人羣:
- 日常通過 dsh Web 頁面操作 Agent,希望狀態一眼可見的人
- 想給工作區加狀態可視化、又不想改動 dsh 本體的人
使用前與使用中需要注意:
- 插件以當前 dsh 進程的權限運行,安裝前請自行檢查插件源碼與許可證(本項目爲 MIT)。
- 所有數據僅存儲在本機(
pet/目錄與 dsh profile),不上傳任何內容,也不採集密鑰或憑據,資源僅本地可訪問;精靈圖上傳接口只接受圖片格式,文件名做了白名單校驗防路徑穿越。 waiting狀態目前僅由演示模式手動觸發。- 改動生效方式:純客戶端改動(精靈圖、縮放、動畫速度等)只需強制刷新瀏覽器;宿主側改動(
index.js)需要重啓 dsh。 - 如果要基於此插件做二次開發,注意設置頁的 client 條目依賴
package.json的dsh.client.inject與exports["./package.json"],缺少任一項,設置頁就不會出現「桌寵」區塊。
小結¶
dsh-pet 解決的問題很具體:讓 Agent 的運行狀態從日誌變成一眼可見的動畫,同時把換圖、調節奏做成純配置操作。DSH 的理念是「一切皆插件」,這種不侵入宿主的擴展正是這套機制適合做的事。
- 插件目錄頁(社區站點,與 DeepSeek 無官方從屬關係):https://www.skillhub.cn/plugins/levi52/dsh-pet
- GitHub 倉庫:https://github.com/levi52/dsh-pet