前言¶
DeepSeek Harness(dsh)是 DeepSeek AI 開源的智能體運行時,官方倉庫把架構概括成一句話:一切皆插件。模型適配器、工具、會話日誌、Agent 循環和界面都可以替換,不必改框架源碼。社區裏還有一份獨立的插件目錄站點(deepseek-harness-plugin.com),用來檢索帶 dsh-plugin 話題的倉庫。它和 DeepSeek / 幻方沒有官方從屬關係,不要把它當成官方應用商店。
在 Web 界面裏跑智能體時,常見的情況是:模型已經開始思考、正在吐字,或者正在調 grep、read 一類工具,頁面上卻只剩一條流式文本。開了多個會話以後,更難一眼看出哪一輪還在跑、卡在哪一步、輸出了多少 token。會話事件其實都在 session/event 裏,缺的是一層面向人的進度展示。
dsh-answer-pet 做的就是這件事:在 DSH Web 頁面角落放一隻寵物,用動畫對應開始處理、思考、輸出、工具調用和完成;旁邊的狀態卡彙總 token、速率、耗時,並列出最近的模型軌跡。
這是什麼¶
dsh-answer-pet 是一款 會話與消息 類插件,由 Nanki-nn 維護,許可證 MIT,主要語言 JavaScript。GitHub 倉庫是 Nanki-nn/dsh-answer-pet。本文覈對時,package.json 版本爲 0.6.0,聲明自己是 DeepSeek Harness 的 Web bundle 插件(dsh.client.platform 爲 web)。
它把兩件事拆開:
- 核心層:按會話維護進度、模型軌跡和狀態卡。
- 主題層:聲明式
PetTheme v1負責寵物 SVG、局部動畫、寬高比和階段文案。
默認主題是藍鯨(blue-whale)。倉庫 README 還內置橘貓示例主題(orange-cat),以及高相似度銀漸層貓主題(silver-shaded-cat)。社區目錄頁收錄時的簡介仍寫「藍鯨 + 橘貓」;銀漸層貓是 2026-08-16 寫入主分支的,以 GitHub README 和 package.json 爲準。
它解決的不是「再養一隻會走動的桌面寵物」,而是回答進行中的可觀測性:當前階段、輸出速度、工具有沒有失敗。社區裏另有 dsh-pet、dsh-desktop-pet 等寵物插件,定位不同,不要混用安裝說明。
核心功能¶
回答階段與寵物動畫¶
插件監聽會話事件,把原始事件歸一成主題能理解的階段。README 給出的對應關係如下:
| 階段 | 來源事件 | 主題接口 | 狀態卡進度 |
|---|---|---|---|
| 空閒 | 無運行會話 | idle |
不顯示運行會話卡與數量 |
| 開始處理 | turn/start |
turn |
2% |
| 思考 | step/start |
think |
5% → 10% |
| 輸出 | assistant/chunk |
stream |
10% → 90%,按 token 填充 |
| 工具 | tool/call |
tool |
凍結當前進度並顯示工具名 |
| 完成 | turn/end |
done |
100% |
進度不是模型接口返回的「完成百分比」。計算規則在 README 裏寫得很明確:優先用 assistant/chunk 的 usage;流式期間按文本長度估算;有 maxTokens 時按 outputTokens / maxTokens 填充,沒有則用飽和曲線,避免進度長期停在某一格。同一回合內進度單調不減。輸出速率用 EMA 平滑。真實 token usage 到達後會覆蓋流式估算值。
寵物外觀跟階段走。藍鯨保留噴水、擺尾、眨眼和完成表情;橘貓有擺尾、抬爪、說話和完成表情;銀漸層貓是去背景緊裁切原畫,再加上呼吸、眨眼、搖擺、說話、抬爪和完成跳躍。單擊寵物只觸發主題定義的一次眨眼,不會換位置。
多會話狀態卡¶
每個正在運行的會話對應一張獨立卡片,縱向排列。卡片結構固定爲四塊:
- 標題行:運行狀態圓點、會話標題、進度百分比。
- 統計行:當前階段、輸出 token、token/s、已運行時間。
- 軌跡時間線:最近的模型動作、工具調用、狀態和耗時。
- 進度條:同一回合內平滑、單調填充;模型輸出時顯示流動效果。
沒有運行會話時,不顯示狀態卡,也不顯示數量按鈕。狀態卡可以摺疊;摺疊後,只有仍有運行會話時,纔會在寵物下方出現數量按鈕,點一下重新展開。空閒時不顯示數字 0,這是預期行爲。
寵物可以拖拽,位置寫在瀏覽器 localStorage。恢復默認位置時,README 給出的做法是在當前 DSH Web 頁面執行:
localStorage.removeItem('answer-pet:pos')
location.reload()
同時恢復狀態卡展開狀態:
localStorage.removeItem('answer-pet:bar')
location.reload()
模型執行軌跡¶
每張運行會話卡會展示最近的模型動作,例如 README 中的示例:
分析任務 · 步驟 1 1s
推理與規劃 3s
調用 grep · SessionEvent 2s
組織回答 5s
時間線圓點含義:
- 藍色呼吸圓點:當前正在執行。
- 綠色圓點:動作或工具調用已完成。
- 紅色圓點:工具調用失敗。
可識別的軌跡包括:開始處理請求、進入模型步驟並分析任務、生成 reasoning 時顯示「推理與規劃」、生成正文時顯示「組織回答」、原生 tool/call / tool/result,以及 run_code 內部的 tool/code-dispatch-start / tool/code-dispatch 嵌套調用。
爲避免面板過高,宿主最多保存最近 6 條,卡片顯示最近 4 條。每個運行會話獨立維護自己的軌跡。數據來源是 Node 側監聽 session/event,再通過輪詢 /answer-pet/state 和 SSE /answer-pet/events 推到瀏覽器;階段切換即時刷新,流式數據平滑更新。
工具摘要與隱私邊界¶
工具軌跡始終顯示實際工具名,例如 read、grep、pwsh、web_search。參數區域只從白名單字段提取短摘要:
descriptionquerypatternfile_pathpathurl
插件不會在軌跡面板裏展示完整 Shell 命令、完整工具參數或原始 JSON;摘要會壓縮空白並限制長度。PetTheme 文檔也寫明:主題拿不到原始 session/event,也拿不到完整工具參數。
PetTheme v1¶
主題和核心解耦。當前版本只加載隨插件構建、通過契約校驗的可信內置主題,不會:
- 從 URL 下載主題
- 掃描並執行第三方 JavaScript
- 把未經清理的用戶 SVG 注入 DSH 頁面
- 向主題暴露原始會話事件或完整工具參數
普通主題禁止外部圖片。銀漸層貓是例外:它顯式聲明 trustedRaster: true,運行時只允許一張構建時注入的 data:image/png;base64,...,仍然拒絕外部 URL。這個能力不對配置項或第三方動態主題開放。未知主題 id 會回退到藍鯨。
開發自己的內置主題,倉庫提供 PetTheme v1 開發指南。流程是複製橘貓主題文件、改 id / SVG / CSS / 文案、登記到 BUILTIN_THEME_IDS 和構建腳本,再跑測試與 npm run build:client。主題必須覆蓋 idle、turn、think、stream、tool、done、error 七個階段;CSS 必須限定在自己的 data-ap-theme 作用域。
安裝與啓用¶
社區目錄頁給出的安裝命令是:
dsh plugin add github:Nanki-nn/dsh-answer-pet
倉庫 README 額外要求裝到 Web profile,因爲客戶端只聲明瞭 platform: web:
dsh plugin --profile web add github:Nanki-nn/dsh-answer-pet
安裝後停止並重新啓動當前的 dsh web 進程,再刷新原來的 Web 頁面。單獨再開一個 Web 服務,不會更新當前已經打開的頁面。升級時重複執行同一條安裝命令即可。
README 特別寫了:模型軌跡和主題配置都由插件的 Node half 提供;從舊版本升到 0.6.0 後必須重啓 dsh web,只刷新瀏覽器不會加載新的配置 schema。能看到寵物但沒有模型軌跡,通常也是這個原因。
目錄頁提示:如需可復現安裝,請固定 commit 哈希。本文覈對時,倉庫 main 最新提交爲 a0827d41c3f8f9177622c460a99f1aeeb8034b8d(2026-08-16),寫法如下:
dsh plugin add github:Nanki-nn/dsh-answer-pet#a0827d41c3f8f9177622c460a99f1aeeb8034b8d
插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。安裝前請檢查源代碼倉庫和許可證。
典型用法¶
切換主題與外觀¶
在 settings.yaml 的 answer-pet 段配置。倉庫給出的完整示例如下:
answer-pet:
theme: blue-whale # blue-whale / orange-cat / silver-shaded-cat
size: 96 # 寵物高度 px(48–200)
corner: br # 停靠角:br / bl / tr / tl
opacity: 1 # 透明度(0.2–1)
pollMs: 800 # /state 輪詢間隔
showBar: true # 顯示會話進度卡
showBubble: true # 顯示狀態氣泡
源碼裏的默認值與上表一致:主題 blue-whale,高度 96px,停靠右下角,透明度 1,輪詢 800ms,進度卡和氣泡都打開。pollMs 允許範圍是 200–5000。
主題更新會在下一次配置刷新時掛載。如果改完 theme 仍顯示藍鯨,先確認 id 寫對了;未知或無效 id 會回退到藍鯨。升級插件後還需要重啓 dsh web,讓新的 settings schema 生效。
只想看銀漸層貓時:
answer-pet:
theme: silver-shaded-cat
看一次完整回合¶
- 確認寵物出現在設定的停靠角(默認右下)。
- 在某個會話裏發出請求。寵物切到思考 / 輸出動畫,狀態卡從約 2% 起跳。
- 模型開始吐字後,統計行出現輸出 token 和 token/s,進度按 token 向 90% 推進。
- 發生工具調用時,進度凍結,氣泡或軌跡裏出現工具名;失敗則軌跡圓點變紅。
turn/end後進度到 100%,寵物切換完成表情。- 多個會話同時跑時,每張卡獨立更新。不需要看卡時把狀態卡收起,只留數量按鈕。
本地開發(可選)¶
倉庫提供的開發命令:
npm install
npm test
node scripts/build-client.mjs
node scripts/build-client.mjs --check
客戶端 bundle 改完刷新頁面即可;Node half 改完必須重啓 dsh web。
適用場景與注意事項¶
適合這些情況:
- 主要在 DSH Web 裏使用智能體,想看當前回合卡在思考、輸出還是工具。
- 同時開多個會話,需要按會話分開看進度和軌跡。
- 關心輸出 token、速率和耗時,但不想翻原始事件日誌。
- 想換一隻內置寵物,或者按 PetTheme v1 給項目提交新的內置主題。
需要注意:
- 只覆蓋 Web profile。
package.json把客戶端平臺寫成web,裝到 headless 不會出現這隻寵物。 - 進度是估算值。多數模型接口不提供「回答完成百分比」;有
usage時會校正,沒有時用階段和飽和曲線。 - 軌跡有長度上限,不是完整審計日誌。宿主留 6 條,界面展示 4 條;完整命令和原始參數故意不展示。
- 主題不能從網上下載。當前只接受構建進插件的可信主題,不能把任意 SVG 或遠程圖片配進
settings.yaml。 - 安裝後必須重啓
dsh web。尤其是升級到帶新 schema 的版本之後,只刷新瀏覽器不夠。 - 權限與許可證。插件以當前 dsh 進程權限運行,許可證爲 MIT。安裝前自己看源碼;社區目錄不是 DeepSeek 官方應用商店。
小結¶
dsh-answer-pet 把 DSH Web 裏本來就有的會話事件,收成一隻角落寵物和一組可摺疊狀態卡:階段動畫、token 統計、多會話進度,以及帶隱私裁剪的模型 / 工具軌跡。外觀由 PetTheme v1 聲明,默認藍鯨,另有橘貓和銀漸層貓。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-answer-pet/
GitHub:https://github.com/Nanki-nn/dsh-answer-pet