ningl32/agent-workbench:給 DSH 的本地 AI 編碼代理加一塊可觀測工作臺

前言

用 DSH 跑本地編碼代理(Claude Code、Codex、OpenCode、ZCode 等)時,常見的問題是「看不見」和「認不清」:任務分給了哪個代理、代理實際做了什麼、提交是誰產生的、哪一步該驗收,事後很難回溯。宥於本地環境,多數方案要麼往雲端導數據,要麼需要自己寫腳本拼日誌。

下面介紹的插件 ningl32/agent-workbench 走的是另一條路:它以 DSH 客戶端插件的形式,把本地多個代理的會話、提交和任務放進同一個只讀觀察面板裏,數據只留在你機器上。README 裏把核心循環概括爲 See → Understand → Attribute → Accept,本文按這個思路展開。

這是什麼

一句話定位:一個 local-first 的 DSH 工作臺插件,把你的本地 AI 編碼代理變成一個「可觀測、可追責的代理團隊」。

  • 維護者:ningl32(GitHub 倉庫 ningL32/agent-workbench)
  • 插件名:fde-console,README 中顯示爲 fde-console — Super Workbench,package.json 版本 2.9.68
  • 許可證:MIT
  • 分類:客戶端(社區目錄 SkillHub 歸類)
  • 星標:0(截至 2026-11-07)

設計上有幾條明確約束,是它的核心價值,也是後面安裝時要注意的前提:

  1. 零雲依賴、零第三方運行時依賴,只用 Node 內置模塊(node:sqlite)。
  2. 所有數據落在自有目錄(默認 ~/.dsh/fde-console/),數據結構爲 data/ + 配置。
  3. 對代理是隻讀觀察,工作臺不會寫進你的代理進程。
  4. 憑據不落盤:git 憑據通過運行時讀取 git config 獲得,所有輸出做 redaction,所有出站請求走 SSRF 白名單。

核心功能

README 列出的能力較多,下面只挑與日常使用直接相關的幾項。

任務面板。 看板式任務管理,帶 timeline、驗收人籤核(acceptor sign-off)、深鏈接、優先級、截止日期,每個任務還有每日 diary。

代理觀測。 通過六個會話來源適配本地代理,提供會話列表、逐條 transcript 閱讀器、running-now 檢測、按項目分頁;面板裏能看到每個會話背後的 dispatch prompt(啓動時的原始人類指令)。

提交歸屬。 AI 產生的提交可以按三種約定自動掛到任務上:分支名 task/<id>、提交信息裏帶 [#<id>]、或把任務綁定到項目目錄。倉庫側有跨倉庫誤匹配的防護。約定細節在 docs/ATTRIBUTION.md,附一段可直接粘貼進 AGENTS.md 的片段和 commit-msg hook。

證據與驗收。 每個任務上掛 timeline 和會話證據,證據按任務打分並支持一鍵或批量確認;另有自動生成的日報 / 週報,可導出爲 Markdown。再用 Ctrl+K 在任務標題、會話標題、提交信息、diary 之間做全局搜索。

面板視圖。 共七個視圖:Overview、Task Radar(會議轉寫 → AI 拆解任務 → inbox 閘門)、Task Board、Agents、Members、Team Activity(多來源 commit/PR 流 + 任務歸屬)、Settings。

擴展接口。 MCP server 通過 stdio 暴露只讀工具(列任務 / 搜工作 / 查代理狀態),供任何 MCP 客戶端使用;另有 webhook 出站、飛書 / 釘釘機器人通知、Gitea/GitHub/Gitee 動態流。想接 Cursor、Trae、Aider 等未覆蓋的來源,可按 docs/ADAPTERS.md 自己寫適配器。

熱力圖與積分卡(28 天活動網格、SVG 積分卡 endpoint)也屬於觀測層,適合做團隊週會展示。

安裝與啓用

環境要求

README 明確列出:

  • Node.js ≥ 22.13(使用內置 node:sqlite)
  • DSH 0.2.1-rc.2(@deepseek-ai/dsh)
  • pnpm 在 PATH 上(插件安裝會轉發給它)

安裝步驟

第一個坑:新 profile 默認只有 @deepseek-ai/dsh-base,Web 界面 bundle 是分開的。少了這一步插件會加載但不會激活,日誌裏是 fde-console: pending (waiting for service: webServer),端口不監聽。README 給的命令如下,注意版本號要和你本地 dsh --version 對齊:

# 1. install / update the plugin into a profile (the profile is created on first use)
dsh plugin --profile fde-dev add <this repo path>

# 2. 安裝與 dsh 版本對齊的 web surface bundle
dsh plugin --profile fde-dev add @deepseek-ai/dsh-web-app@0.2.1-rc.2   # ← use `dsh --version`

# 3. start(不要寫 dsh --profile fde-dev web,web 是保留的 alias profile)
dsh --profile fde-dev --port 38082

第二個坑同樣在 README 裏:add @deepseek-ai/dsh-web-app@0.2.1-rc.2 如果不固定版本,會解析到一個不兼容的舊構建,所以版本號必須釘住。

啓動後打開打印出的 URL(含 auth token),側邊欄會出現 Super Workbench。本地代理會自動被發現,第一個會話零配置就能看到。

數據目錄與存儲遷移

數據位於 <DSH_HOME|~/.dsh>/fde-console/。新數據目錄先用 JSON 存儲;要把自有單元遷到 SQLite + WAL,在所有實例停止的情況下運行遷移腳本:

node scripts/migrate-storage.js   # 所有實例先停掉再跑

JSON 仍是導出和互操作格式。README 另提供 docs/VERIFY.md,按 測試門檻 → 插件加載 → API 往返 → UI 的順序做驗收。

用合成數據試玩

在正式接代理之前想先看一個填滿數據的面板,可以灌一份完全合成的種子數據(佔位名字、零網絡請求):

node scripts/seed-demo.js                            # 默認數據目錄 ~/.dsh/fde-console/data
node scripts/seed-demo.js --data-dir <dir> --force   # 自定義目錄 / 覆蓋

種子腳本走 JSON 存儲通道,因此只接受未遷移的空目錄;如果目標是遷移後的 SQLite 目錄,腳本會拒絕並提示改用新目錄。想重置就刪掉種子寫入的 JSON 文件。

典型用法

1. 在 AGENTS.md 裏落地歸屬約定。 把 docs/ATTRIBUTION.md 裏的片段貼進項目,讓代理按 task/<id> 分支名或 [#<id>] 提交信息產出,提交就會自動掛到對應任務,Team Activity 裏可以直接驗收。

2. 用 MCP server 讓代理查詢看板。 在 MCP 客戶端配置里加:

{ "mcpServers": { "fde": { "command": "node", "args": ["<repo>/scripts/mcp-server.mjs"] } } }

這樣代理可以自己查任務列表、搜工作項、看代理狀態,形成「任務板 ↔ 代理」的雙向查詢。

3. 跑測試保持基線。 README 給的命令是 npm test,即 node --test test/*.test.js,400+ 用例、零網絡。

適用場景與注意

適合誰:本地同時跑多個編碼代理、需要按任務看板管理進度和驗收、且不想把會話數據傳上雲的 DSH 用戶;也適合想把代理活動做成日報 / 週報的團隊。

務必注意的幾點:

  1. 插件以當前 dsh 進程權限運行。安裝前下載並檢查源碼與許可證(MIT),確認 cordis.patch.yml、plugin/、scripts/ 的內容符合你的安全要求。
  2. 端口以 --port 顯式指定(示例 38082),URL 帶 auth token,注意別把它暴露到公網;出站請求走 SSRF 白名單,涉及 webhook 和 IM 通知時要預先配好白名單。
  3. Node 版本和 DSH 版本都卡得比較死(≥ 22.13、0.2.1-rc.2 系),升級前先看 docs/ 下的說明;@deepseek-ai/dsh-web-app 必須釘版本。
  4. 星標爲 0、維護者爲單人,屬於早期個人項目,採用前建議在測試 profile 上先跑一遍 npm test 和 docs/VERIFY.md。

結尾

ningl32/agent-workbench 的價值不在新概念,而是把本地代理的觀測、提交歸屬、驗收和報告收斂到同一個只讀、本地優先的面板裏,且不引入第三方運行時依賴。如果你已經在用 DSH 跑多個本地代理,值得放進一個專屬 profile 試一輪。

目錄頁:https://www.skillhub.cn/plugins/ningL32/agent-workbench
GitHub:https://github.com/ningL32/agent-workbench

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

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

小夜