dsh-pet:跟着 Agent 狀態切換動畫的 DeepSeek Harness 桌寵插件

前言

用 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/starttool/callturn/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(dsh CLI)已安裝並運行過 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.jsonpet/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 本體的人

使用前與使用中需要注意:

  1. 插件以當前 dsh 進程的權限運行,安裝前請自行檢查插件源碼與許可證(本項目爲 MIT)。
  2. 所有數據僅存儲在本機(pet/ 目錄與 dsh profile),不上傳任何內容,也不採集密鑰或憑據,資源僅本地可訪問;精靈圖上傳接口只接受圖片格式,文件名做了白名單校驗防路徑穿越。
  3. waiting 狀態目前僅由演示模式手動觸發。
  4. 改動生效方式:純客戶端改動(精靈圖、縮放、動畫速度等)只需強制刷新瀏覽器;宿主側改動(index.js)需要重啓 dsh。
  5. 如果要基於此插件做二次開發,注意設置頁的 client 條目依賴 package.jsondsh.client.injectexports["./package.json"],缺少任一項,設置頁就不會出現「桌寵」區塊。

小結

dsh-pet 解決的問題很具體:讓 Agent 的運行狀態從日誌變成一眼可見的動畫,同時把換圖、調節奏做成純配置操作。DSH 的理念是「一切皆插件」,這種不侵入宿主的擴展正是這套機制適合做的事。

  • 插件目錄頁(社區站點,與 DeepSeek 無官方從屬關係):https://www.skillhub.cn/plugins/levi52/dsh-pet
  • GitHub 倉庫:https://github.com/levi52/dsh-pet
羽毛球分组比赛记分
小程序二维码

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

小夜