dsh-fatfish:DSH 輸入框右上角隨會話狀態換表情的大肥魚桌寵

前言

在 DSH 里長時間跑會話時,界面往往只有輸入框、消息流和運行指示,缺少一種「當前在幹什麼」的直觀反饋。有人會在側邊欄看日誌,有人盯着 running 狀態猜 agent 是否在幹活;這些做法能工作,但和輸入區是分離的。

下面介紹社區插件 dsh-fatfish(大肥魚桌寵):把動畫形象貼在會話輸入卡片上沿外側,根據待命、輸入、生成、待批准、待回答、出錯、完成、閒置、上下文喫撐等九種狀態切換表情。表情以 WebP 動畫內嵌在客戶端 bundle 裏,不依賴外部 CDN,屬於 DSH 生態裏「趣味換裝」類的小改動——不改 Host 邏輯,也不增加配置項。

這是什麼

dsh-fatfish 由維護者 kabarryo 發佈,倉庫 kabarryo/dsh-fatfish,社區目錄頁見 skillhub.cn/plugins/kabarryo/dsh-fatfish。當前 package 版本爲 0.1.0,代碼許可證 MIT;表情素材來自 diwer/ai-biaoqingbao(CC BY-NC-SA 4.0,非商業等限制見倉庫 NOTICE)。

插件只做一件事:在 DSH 會話輸入區註冊 overlay 與 dock 兩個 client slot,顯示約 96px 見方的大肥魚,並在狀態變化時從對應表情組裏隨機選一張動畫。README 說明本插件由 DSH + DeepSeek V4.1 Flash 開發與維護,Host 側 index.js 爲空實現,邏輯全在 client.js。

核心功能

九種狀態與判定

狀態優先級(高到低):出錯 > 待批准/待回答 > 生成中 > 完成(6s)> 喫撐了 > 輸入中 > 閒置 > 待命。每次進入狀態從組內隨機取表情;同一狀態停留超過約 45 秒(±25% 抖動) 會再隨機換同組另一張(組內只剩一張時不輪換)。

狀態 判定要點 表情組(README 編號)
待命 不在跑、失焦、靜默 < 180s 081 期待 · 019 在嗎
輸入中 輸入框獲得焦點 009 收到 · 020 來了 · 022 馬上到
生成中 SessionSnapshot.running 074 乾飯人 · 075 先喫一口 · 065 趕工中 · 076 咖啡續命
等你批准 pendingInteraction.kind === 'approval' 034 啊這 · 028 拜託了 · 021 等一下
等你回答 pendingInteraction.kind === 'question' 033 真的假的 · 049 尊嘟假嘟 · 093 確認眼神
出錯 promptError / lastAgentError / openError(8s) 037 麻了 · 036 我裂開了 · 069 我太難了
完成 回合結束後 6s 094 恭喜 · 003 點贊 · 091 滿血復活 · 047 拿捏了
閒置 失焦、靜默 ≥ 180s 腳本:064/044 隨機開場 → 120s 後 007×3 圈 → 018×2 圈 → 073 鎖定
喫撐了 上下文佔用 ≥ 85% 且失焦 088 撐了 · 072 讓我緩緩

閒置不是簡單表情池:進入後按 README 描述的腳本順序播動畫,播完停在最後一幀,直到離開閒置狀態。

擺放與輸入區佈局

寵物貼在輸入卡片上沿外側、距右邊 40px,縮放後約 96px 見方,明暗主題下都不擋輸入框與發送按鈕。合成階段按底部基線對齊,避免寬構圖「浮」在卡片上方。

同時註冊透明佔位帶 conversation.input.dock(高 102px),正文滾動區域整體上移,靜止時最後一行停在寵物上方。插件只使用 conversation.input.overlay 與 conversation.input.dock 兩個 slot;若上游改名需同步改插件。

素材與體積

共 29 張大肥魚表情(README 與簡介一致),對應九種狀態分組;素材取自 diwer/ai-biaoqingbao 的 100 張系列中挑選結果,幀數與幀序沿用原始素材,構建時合成動畫 WebP 並內聯進 client.js(約 1 MB),無需運行時拉取外部圖片。

安裝與啓用

要求:DSH 0.2.x(Web 或桌面版 profile),Node >=20,無額外 npm 依賴。

克隆倉庫

先把插件放到本地目錄(路徑可按習慣調整,下面以 ~/dsh-fatfish 爲例):

git clone https://github.com/kabarryo/dsh-fatfish.git ~/dsh-fatfish

若目錄已存在,在倉庫內執行 git pull 更新即可。

登記到 profile

編輯目標 profile 的 package.json:

  • Web:~/.dsh/profiles/web
  • 桌面版:~/.dsh/profiles/desktop

在 dependencies 中加入本地 link,並把 bundle 名追加到 dsh.profile.bundles 末尾(<你> 換成實際用戶名或絕對路徑):

{
  "dependencies": {
    "dsh-fatfish": "link:/Users/<你>/dsh-fatfish"
  },
  "dsh": {
    "profile": {
      "bundles": ["...", "dsh-fatfish"]
    }
  }
}

重啓 DSH

改完 package.json 或 cordis.patch.yml 後必須重啓 DSH:Web 版重啓 dsh web,桌面版退出重開。README 強調 bundle 只在啓動時加載,漏重啓是最常見的手動安裝失誤。

也可把 README「推薦:讓 agent 安裝」裏的四步說明交給能執行命令的 agent,由它定位 profile、備份 package.json、登記 link 並重啓驗收。

典型用法

安裝並重啓後,打開任意會話即可驗收:

  1. 確認輸入框右上方出現大肥魚。
  2. 點擊輸入框,應進入「輸入中」組表情。
  3. 發送一條消息,生成過程中應切換到「生成中」組。
  4. 若會話出現待批准或待提問交互,表情應對應 approval / question 狀態。

插件沒有配置項,也不提供 Host 側 API;改 client.js 後刷新頁面即可(client bundle 按 mtime 增量讀取),無需爲此重啓。

維護者若改素材或分組,需在倉庫內兩步構建:

python3 scripts/build_emotes.py
python3 scripts/build_plugin.py

適用場景與注意

適合誰:希望在 DSH 輸入區獲得會話狀態可視化、又願意接受非商用表情素材許可約束的用戶;分類上屬於社區目錄的「趣味換裝」,不改變 agent 能力本身。

運行與權限:插件隨當前 DSH 進程的 client bundle 在瀏覽器或桌面殼內執行,安裝前宜通讀倉庫源碼與 LICENSE、NOTICE,確認可接受 MIT 代碼許可與表情 CC BY-NC-SA 4.0 限制(內嵌動畫幀視爲修改版,同樣不可商用)。

已知限制(來自 README):

  • 表情僅在會話頁輸入區可見,側欄與插件頁沒有。
  • 「喫撐了」依賴本插件對 contextPressure 的投影(閾值 85%),不是 DSH 內置狀態。
  • 換表情組需改 scripts/build_emotes.py 的 POOLS 後重跑構建。
  • 部分原圖頂部被裁,呆毛不完整等情況按素材原樣保留。

卸載:從 profile 的 package.json 刪除 dependencies.dsh-fatfish 與 bundles 中的 "dsh-fatfish",重啓 DSH;~/dsh-fatfish 目錄可保留或刪除。

結尾

dsh-fatfish 把大肥魚桌寵綁在 DSH 會話輸入框右上角,用九種狀態和 29 張動畫表情反映當前交互節奏,素材內嵌、零配置啓用。DeepSeek Harness 社區採用「一切皆插件」的思路,目錄站點 skillhub.cn 與 DeepSeek / 幻方無官方從屬關係;細節與截圖以 GitHub README 爲準。

羽毛球分组比赛记分
小程序二维码

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

小夜