前言¶
用 DeepSeek Harness(DSH)做智能體或插件開發時,狀態往往分散在終端裏:top、本機 kubectl、各倉庫的 git status,以及 DSH 自身的會話與任務。來回切換窗口會打斷上下文。社區插件 dsh-monitor(npm 包名 @daedalforge/dsh-monitor)在 DSH 客戶端增加 Système 側欄入口,把機器健康、DSH 運行時、工作區 Git 倉庫和 Kubernetes 集羣讀數收進同一面板,無需離開應用。
下面介紹它是什麼、能看什麼、如何安裝與配置,以及使用時需要留意的權限與前提。
這是什麼¶
dsh-monitor 由 daedalforge 維護,在 SkillHub 目錄中歸類爲 admin-security。官方簡介爲:面向 DeepSeek Harness 的系統面板,覆蓋 machine、runtime、working repositories 與 Kubernetes cluster health。
插件通過 cordis.patch.yml 向 DSH 注入 id 爲 systeme 的條目;面板界面爲法語(Machine、Kubernetes、Dépôts 三個子視圖)。當前資料中的版本爲 0.5.1,許可證 MIT,要求 Node >=20,DSH 版本 >=0.2.1-rc.5 <0.3.0-0(見 package.json 的 engines)。
核心功能¶
側欄 Système 頂部標籤切換三個子視圖,空區塊會自動隱藏:projectsRoot 不存在時不顯示倉庫相關區塊;本機沒有 kubectl 時不顯示集羣區塊。
Machine(機器 + DSH 運行時)¶
Machine 在一屏內回答「這臺機器是否健康」:
- CPU、內存、磁盤、負載、電池、swap、約 24 分鐘的 CPU sparkline、佔用最高的進程。
- 內存採用類似 Activity Monitor 的定義(app + wired + compressed),避免用
total - free在 Linux 上長期顯示接近 99% 的誤導。 - Linux 直接讀
/proc/meminfo、/proc/stat、/proc/swaps與/sys/class/power_supply;CPU 在 Linux 上基於/proc/stat採樣差值,在 macOS 上基於top -l 2 -s 1的第二次採樣。 - 若存在 Colima,會通過
colima ssh -- df -kP單獨報告 VM 磁盤,與宿主機磁盤區分。
DSH 區塊展示:活躍會話、運行中的 job、24 小時內啓動錯誤、緩存大小、近期會話;當 costLedger 指向有效 JSON 賬本時,顯示當日費用(賬本格式與 dsh-cost-meter 寫入的 ledger 一致)。
Dépôts(Git 工作區)¶
Dépôts 把 projectsRoot 下的 Git 工作區當作「任務看板」只讀展示:彙總橫幅、六項 headline 指標、按原因分組的 À traiter、可篩選的倉庫表、worktree 與 mission PR 等。打開某個倉庫會進入抽屜(分支、上游、checkout、PR、最近 commit、變更文件等);面板不會執行任何 git 寫操作,需要執行的命令以可複製文本提供,而非一鍵按鈕。
PR 列在已安裝且已認證的 gh 存在時通過 gh pr list 讀取;否則該列顯示 —,其餘視圖仍正常渲染。
另提供 API:/systeme/api/depot?name=<repository>,返回某倉庫最近四次 commit、git status --porcelain=v2 --branch 原始輸出與 stash;name 必須是 projectsRoot 的直接子目錄名。
Kubernetes¶
Kubernetes 視圖分 contexte(上下文選擇、Ressources 窗口列出 deployment/pod/job 等工作負載及 remediation 手勢)與 écran(集羣作爲「工作場所」的讀模型:降級原因卡片、拓撲、Namespaces 表、節點容量、組件健康檢查等)。頁頭 context 選擇器列出本機 kubectl 聲明的 context,並可將選擇寫入配置項 k8sContext;空字符串表示跟隨當前 context。
數值均來自 Kubernetes API;無數據源時會標明,而不是填零。
刷新與 API¶
面板在打開、窗口獲焦、以及可見期間按 refreshSeconds(默認 60 秒,範圍 15–900)刷新,不做後臺輪詢;上次快照緩存在 localStorage,下次打開先繪製緩存。
服務端 /systeme/api/etat 採用 stale-while-revalidate:先返回最新快照並在後臺重建;全量快照最多每 15 秒重建一次,各區塊另有獨立緩存(例如倉庫 3 分鐘、PR 60 秒、runtime 90 秒、cluster 20 秒、機器與 Colima 磁盤 15 秒)。Remediation 後可請求 ?refresh=1 強制重建。
閾值可在面板中編輯,持久化到 ~/.dsh/storages/dsh-monitor/config.json(磁盤、內存、負載、電池、髒倉庫天數、Pod 重啓等)。操作日誌:journal.jsonl;最近 K8s 狀態:k8s-last.json。
Remediation(需確認 confirm: true 纔會執行)包括:進程 SIGTERM/SIGKILL(保護 PID 1、系統進程、DSH 宿主與容器運行時)、停止當前會話 job、清理 DSH 緩存、受控磁盤清理、以及 Kubernetes 上的 rollout restart / 刪 Pod / 清理已完成 job 等。不會刪除 Docker volume、不會讀 secret、不會自動 remediation、不會對 git 跟蹤文件做寫操作。
安裝與啓用¶
官方 README 給出的安裝方式爲(profile 以 desktop 爲例):
dsh plugin --profile desktop add @daedalforge/dsh-monitor
新增服務端路由後需要完全退出並重啓 DSH 應用(文檔說明客戶端熱重載不足以加載新路由)。
從本地 tarball 或 git 檢出目錄安裝:
dsh plugin --profile desktop add file:/path/to/daedalforge-dsh-monitor-<version>.tgz
卸載:
dsh plugin --profile desktop remove @daedalforge/dsh-monitor
~/.dsh/storages/dsh-monitor/ 下的文件卸載後仍保留,需手動刪除才能清空。
配置¶
除安裝命令外,配置寫入 profile 中的 cordis.patch.yml 片段;也可在 DSH 內打開插件提供的 Plugins → Système 頁面保存,值會寫回 profile patch。
示例(與 README 一致):
- insert:
- id: systeme
name: '@daedalforge/dsh-monitor'
config:
refreshSeconds: 60
projectsRoot: '~/projects'
showRepos: true
k8sContext: ''
showK8s: true
| 配置項 | 默認值 | 含義 |
|---|---|---|
projectsRoot |
~/projects |
要監控的 Git 倉庫根目錄 |
showRepos |
true |
是否顯示 Dépôts 標籤 |
k8sContext |
'' |
監視的 kubectl context;空則跟隨當前 context |
showK8s |
true |
是否顯示 Kubernetes 區塊 |
costLedger |
~/.dsh/storages/cost-meter/ledger.json |
費用賬本路徑;空則隱藏費用行(頁面不可編輯,需在 YAML 覆蓋) |
refreshSeconds |
60 |
面板刷新間隔(秒),限制在 15–900 |
refreshSeconds 與兩個「顯示/隱藏標籤」開關爲 volatile 值,每次構建狀態時讀取,無需重啓即可生效。空字段會清除鍵並回退到 schema 默認。
典型用法¶
- 安裝並重啓 DSH 後,在側欄打開 Système,默認先看 Machine,確認 CPU/內存/磁盤是否觸及面板閾值(Attention / Alert)。
- 將
projectsRoot設爲實際 clone 目錄(若與默認~/projects不同,在 Plugins → Système 或 profile YAML 中修改),切換到 Dépôts 查看未提交、落後遠程、mission worktree 等待辦卡片;需要時在抽屜裏複製建議的git命令到終端執行。 - 本機已配置
kubectl時,在 Kubernetes 頁頭選擇 context(寫入k8sContext),查看 À traiter 中的降級原因;在 Ressources 中按 namespace 篩選工作負載,按需使用需確認的 remediation,再帶?refresh=1刷新狀態 API。 - 若同時使用
dsh-cost-meter,保持默認costLedger路徑即可在 Machine 視圖看到當日費用;賬本在其他路徑時僅在 YAML 中覆蓋costLedger。
服務端路由僅接受本地同源請求,其他來源返回 403(見 README Architecture 說明)。
適用場景與注意¶
適合:在 DSH 內長時間開發、同時維護多倉庫與開發用 K8s 集羣的開發者;希望在一處只讀總覽機器與 DSH 運行時,並偶爾做受控清理或 K8s rollout 的場景。
前提與限制(摘自 README):
- 支持 macOS 或 Linux;Windows 未支持(採集邏輯按
process.platform分支並依賴 procfs)。 - 可選工具缺失時對應區塊隱藏或顯示
—,不會因此報錯:gh(PR 列)、kubectl與容器運行時/kind(Kubernetes 標籤)、git與projectsRoot下 checkout(Dépôts 標籤)。 - 無站外告警、無長期指標歷史、無自動 remediation;停止 job 僅針對當前會話。
安全:插件以當前 DSH 進程的用戶權限運行,會讀取本機 procfs、磁盤、Git 工作區、執行 kubectl/gh(若存在),並在確認後執行 remediation。安裝前應在 GitHub 閱讀源碼與 MIT LICENSE,確認與自身環境策略一致。SkillHub(目錄頁)是社區插件索引,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」思路,具體能力以倉庫 README 爲準。
結尾¶
dsh-monitor 把機器、DSH 運行時、Git 工作區與 Kubernetes 健康狀態收斂到 DSH 側欄 Système,配合 stale-while-revalidate 的狀態 API 與可配置的只讀/確認式 remediation,減少在終端與應用之間來回切換。進一步瞭解與 issue 反饋見 GitHub 倉庫;在 SkillHub 可檢索同插件條目。
- 目錄頁:https://www.skillhub.cn/plugins/daedalforge/dsh-monitor
- GitHub:https://github.com/daedalforge/dsh-monitor