dsh-command-monitor:把 AI 執行的命令從聊天流裏撈出來

前言

DSH 的會話視圖裏,工具調用一直存在,但命令執行過程被摺疊在對話流裏。想看一條命令的 stdout、退出碼、耗時,往往要在聊天記錄裏來回滾動找卡片;中途去別處看一眼,命令就跟着消息流沉下去了。

dsh-command-monitor 就是解決這件事的:它在 DeepSeek Harness Web GUI 右下角掛一顆可拖動的懸浮按鈕,點開是「執行過程」面板,命令、輸出、退出碼、耗時一覽無餘,可翻、可選中複製、可導出。插件由 j4ckzh0u 維護,MIT 許可,純瀏覽器插件:不新增宿主服務、不抓 DOM、不重啓 dsh web,只讀取當前頁面已加載的會話數據。分類屬於客戶端插件(社區目錄裏星標爲 1)。

下面介紹它的功能、安裝方式、用法和限制。

這是什麼

一句話:在 dsh Web GUI 裏把工具/命令執行記錄抽成一個始終在視野裏的懸浮窗。

與現有做法的對比:

  • 聊天記錄裏的命令卡片隨消息流動,需要滾動定位;懸浮窗不打斷對話,也不佔版面,收起後只剩一顆按鈕。
  • 不重複解析網絡數據,只訂閱當前主會話已經裝配好的 tool/call / tool/result 節點,因此和聊天裏的命令卡片基本同步。

核心功能

插件提供兩塊區域:收起態是右下角一顆圓形懸浮按鈕,展開後是「執行過程」面板。功能如下:

能力 說明
懸浮按鈕 / 面板 按鈕和麪板都可拖動,位置與大小會被記住
兩種視圖 命令:只看 bash / pwsh / terminal_*;全部:顯示所有工具調用(讀文件、搜索、編輯、MCP、子代理等)
智能跟隨 新記錄自動滾到底部;往上翻自動暫停跟隨,點「跟隨」或「回到最新」恢復
完整條目 工具名、描述、開始時間、耗時、狀態、cwd、命令、stdout+stderr、退出碼;後臺、超時、沙箱拒絕、輸出截斷都有標記
選擇與複製 正文可自由選中;單條「複製」(命令 + 完整輸出);頂部「複製」複製當前篩選下全部記錄
下載 Markdown、純文本、JSON 三種格式,文件名格式爲 dsh-commands-<會話>-<時間>.<ext>
會話跟隨 自動跟隨當前主會話,切換會話自動切換;離開對話視圖時保留最後數據並標記「暫停更新」
主題自適應 使用 dsh 的 --dsw-* 設計 token,淺色 / 深色主題都正常

兼容性

項目 要求
dsh 0.2.1-rc.2 或更新(README 標註實測 0.2.1-rc.5;範圍見 package.json#engines.dsh)
運行環境 dsh Web GUI(dsh web / Web profile)
瀏覽器 現代 Chromium / WebKit(需要 backdrop-filter、color-mix()、Pointer Events)
Node(安裝環境) ^22.19.0 || >=24.0.0
宿主平臺 macOS / Linux / Windows(插件本身不區分平臺)

插件包版本爲 0.1.1,許可證 MIT。

安裝與啓用

插件安裝進 dsh profile:包放進 profile 的 node_modules,再把包名加入 dsh.profile.bundles。README 給出兩種方式。

方式 A:安裝腳本(推薦):

git clone https://github.com/j4ckzh0u/dsh-command-monitor.git
cd dsh-command-monitor

# 默認安裝到 web profile;也可以傳其它 profile 名
./scripts/install.sh            # 等價於 ./scripts/install.sh web

腳本會做三件事:把運行文件複製到 $DSH_HOME/profiles/<profile>/node_modules/dsh-command-monitor/;備份並更新 profile 的 package.json(dependencies + dsh.profile.bundles);打印驗證步驟。

方式 B:手動安裝。先把目錄拷進 profile:

cp -R . "$HOME/.dsh/profiles/web/node_modules/dsh-command-monitor"

再編輯 ~/.dsh/profiles/web/package.json,加入 dependencies 與 bundles:

{
  "dsh": {
    "profile": {
      "bundles": ["…", "dsh-command-monitor"]
    }
  },
  "dependencies": {
    "dsh-command-monitor": "file:/absolute/path/to/dsh-command-monitor"
  }
}

README 說明:$DSH_HOME 默認是 ~/.dsh,Windows 下路徑與命令需按 PowerShell 語法調整。

安裝後 dsh 的 HMR 會自動重組插件圖,通常無需重啓 dsh web;如果頁面沒出現懸浮按鈕,刷新一次頁面即可。升級、卸載、回滾、多 profile 與故障排查見倉庫內 docs/DEPLOYMENT.zh.md。

安裝後的驗證步驟:

  1. 打開 / 刷新 dsh Web GUI;
  2. 右下角出現帶終端圖標的懸浮按鈕(有運行中命令時帶角標);
  3. 點擊按鈕,展開「執行過程」面板;
  4. 在任一對話裏讓 AI 執行一條命令(例如 echo hello),面板裏應出現對應條目。

典型用法

點開懸浮窗後的日常操作:

  • 拖動:按住懸浮按鈕或面板標題欄拖動;面板左上角的小三角可調整大小。
  • 翻看:鼠標滾輪在面板內上下滾動;往上翻會自動暫停「跟隨」。
  • 切換範圍:面板頂部「命令 / 全部」切換視圖。
  • 複製:單條右側「複製」,或頂部「複製」複製當前篩選的全部記錄。
  • 下載:頂部「下載」→ Markdown / 純文本 / JSON。
  • 收起:面板標題欄最右側「—」;再次點擊懸浮按鈕即可展開。

典型工作流可以是這樣:讓 AI 跑一條命令,面板出現「運行中」條目;命令結束,stdout / stderr、退出碼、耗時補齊;如果輸出需要存檔,直接下載 Markdown 或 JSON,不用去聊天記錄裏複製粘貼。條目字段細節、跟隨邏輯、下載格式與存儲鍵見倉庫內 docs/USAGE.zh.md。

實現要點

  • UI 席位:使用 shell.overlay(root scope,整框浮層、可點擊穿透),只佔一個入口,不替換任何現有 UI。
  • 數據來源:當前主會話的 Conversation chat target,即聊天裏已經裝配好的 tool/call / tool/result 節點;不抓 DOM,也不重複解析網絡數據。
  • 收集器:掛在 conversation.session.header.utilities 的 headless 組件,用 useChat 讀取當前會話,去抖後發佈到模塊級 store;切換會話自動重綁。
  • 渲染:React 18(dsh 平臺內置模塊),無打包器;client.js 直接遵循 dsh 的 window.__ModuleLoader__.load CJS 協議,只依賴 react。
  • 樣式:全部使用 --dsw-* token 與 --dsh-* 字體變量,跟隨主題與字號設置。

架構圖與細節見 docs/DEVELOPMENT.zh.md。

適用場景與注意

適合誰:

  • 主要在 dsh Web GUI 裏工作、希望命令執行過程始終可見的開發者;
  • 需要把執行記錄導出留檔(Markdown / 文本 / JSON)的團隊;
  • 不想打斷與 AI 的對話流、也不想重啓 dsh web 的人。

需要留意的限制(均來自 README 的「已知限制」):

  • 只跟隨當前主會話,不彙總其它會話或子代理側欄裏的調用;
  • 會話事件窗口按需加載:極老的命令需要先在聊天裏向上滾動加載,懸浮窗纔會看到;
  • 命令輸出在命令結束時一次性補齊(與聊天裏的命令卡片一致),不是逐行流式;後臺任務請用右側任務面板看實時輸出;
  • 一次最多渲染最近 300 條(複製 / 下載仍包含當前篩選下的全部條目);
  • 懸浮窗依賴 Conversation 會話視圖:切到「插件 / 上下文」等其它主面板時會保留最後數據並顯示「暫停更新」,回到對話後恢復。

隱私與安全:插件只在瀏覽器本地運行,不發送任何網絡請求,不讀取憑據、不修改會話內容;複製 / 下載通過瀏覽器 Clipboard 與 Blob API 完成,數據留在本機;宿主半側 index.js 是空實現,不註冊工具、不讀寫文件。

安裝前應通讀源碼(倉庫較小,核心是 client.js 與 index.js)並確認 MIT 許可證符合團隊要求。

結尾

dsh-command-monitor 的價值在於把命令執行從聊天流裏抽出來:懸浮窗不佔地方,展開即可看全命令、輸出、退出碼與耗時,複製和導出也都順手。它不改變 dsh 的權限模型,只是一個瀏覽器端插件,代價低、裝上就能用。

  • 社區目錄頁:https://www.skillhub.cn/plugins/j4ckzh0u/dsh-command-monitor
  • GitHub 倉庫:https://github.com/j4ckzh0u/dsh-command-monitor
羽毛球分组比赛记分
小程序二维码

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

小夜