前言¶
在 DSH(DeepSeek Harness)裏同時跑 Claude Code、Codex、本機 DSH 任務或 Open Design 例行任務時,狀態往往分散在各自會話目錄、內部 HTTP 和本機日誌裏。想回答「現在誰在跑、剛失敗的是哪條、產物在哪」,通常要在多個窗口之間切換。
dsh-aiagent-taskboard 是維護者 linglanxin 發佈的客戶端類 DSH 插件(當前 GitHub 星標爲 0)。它不另起常駐進程,而是在 DSH 側欄提供「任務臺」入口,用列表和時間線(泳道)兩種視圖展示任務開始/結束、耗時與產物,並每 5 秒刷新;Open Design 與最近改動的會話目錄也會一併出現在面板上。下面介紹它的定位、數據來源、安裝與配置,以及使用前需要接受的限制。
這是什麼¶
插件倉庫:linglanxin/dsh-aiagent-taskboard。目錄頁:SkillHub 插件頁。
一句話定位:極簡實時任務臺——一屏看清 Claude Code / Codex / DSH / Open Design 當前在做什麼(列表 + 泳道時間線)。宿主半通過 GET /api/aiagent-taskboard/state 聚合只讀狀態(約 4 秒緩存);客戶端半在 DSH Web 界面渲染側欄與主視圖。
界面與核心功能¶
佈局¶
- 側欄一個入口(任務臺),主視圖是同一塊面板。
- 頂部:每個 agent 一個 chip(運行中藍、今日成功綠、失敗紅、空閒灰),以及 Open Design daemon 的端口/版本。
- 中部:列表視圖與時間線視圖,數據同一份。
- 底部:最近的會話目錄。整頁約每 5 秒刷新一次。
列表視圖¶
一行一個任務:狀態點、名稱、agent、耗時、多久之前。點擊一行可展開目錄、退出碼、結果、產物。
時間線(泳道)視圖¶
一條泳道對應一個 agent,一根橫條對應一個任務,橫軸爲時間。
- 時間範圍可切換 6 小時 / 24 小時 / 7 天,右端爲「現在」(虛線)。
- 同泳道內時間重疊的任務會自動分到第二、第三行(貪心打包:找第一條「上一根已結束」的行),避免互相遮擋。
- 正在運行的任務橫條延伸到「現在」。
- 顏色與列表一致:藍=運行中、綠=成功、紅=失敗;過短任務按 0.7% 最小寬度繪製以保持可見。
- 點擊橫條同樣可展開目錄、退出碼、結果、產物。
時間線佈局由純函數 buildTimeline(tasks, { now, windowMs }) 計算(倉庫中 export,供測試使用):返回窗口、ticks 與各泳道的 rows。沒有開始時間或完全落在窗口外的任務會被丟棄。
數據來源(無獨立 daemon)¶
| 來源 | 位置 | 說明 |
|---|---|---|
| 事件日誌 | <stateDir>\events.jsonl |
由本機 agent 包裝器調用寫入腳本追加 start/end/artifact 行(README 稱 Windows 上常用 aiagent-log.ps1,未隨本倉庫發佈) |
| Open Design | daemon HTTP(端口隨機) | 輪詢時用 data\diagnostics\daemon-health.json 的 pid 與 netstat 找端口,再讀 /api/routines 與最近一次 run;找不到則顯示「未運行」 |
| 會話目錄 | <sessionRoots>\* |
最近改動的工作目錄 |
路徑均可配置(見下一節)。默認從家目錄推導,例如 Windows 上 %USERPROFILE%\aiagent\.state\events.jsonl。
宿主註冊 API 時必須聲明 requestBody: 'buffered'。若缺失,DSH /api 橋接可能爲 GET 請求帶上 body,觸發 TypeError,webserver 表現爲裸 HTTP 400(面板上紅字)。README 建議在 <AIAGENT_STATE_DIR>\host-loads.log 中確認是否有 taskboard-host v2 GET+buffered 行,以覈對運行中的宿主半版本。
安裝與啓用¶
推薦通過 DSH 插件管理器從 GitHub 安裝(由管理器接管依賴與更新):
dsh plugin --profile desktop add dsh-aiagent-taskboard@git+https://github.com/linglanxin/dsh-aiagent-taskboard.git
# 具體子命令以 `dsh plugin add --help` 爲準;也可以 clone 到 <profile>\node_modules\ 下再用倉庫內腳本
Windows 上也可使用倉庫自帶 PowerShell 腳本(目標 profile 默認 desktop):
powershell -ExecutionPolicy Bypass -File tools\install.ps1
powershell -ExecutionPolicy Bypass -File tools\uninstall.ps1
安裝會做兩件事:在 <profile>\node_modules\ 建立目錄 junction;向 <profile>\cordis.patch.yml 追加 - insert: 行(原文件會備份到 ~\.dsh\.dsh-rollback-*)。
重載注意:修改宿主半 index.js 後須重載 DSH(未開 HMR 時 plugin-manager.reload() 會跳過);僅改客戶端 client.js 時刷新頁面即可。
環境要求(來自 package.json):Node ^22.19.0 || >=24.0.0;DSH >=0.2.0-rc.2 <0.3.0。許可證 MIT,當前包版本 0.1.0。
配置¶
優先級:環境變量 > 插件目錄下 local.config.json(已 gitignore)> 家目錄默認值。
| 設置 | 環境變量 | local.config.json |
默認(Windows) |
|---|---|---|---|
| agent 根目錄 | AIAGENT_HOME |
agentHome |
%USERPROFILE%\aiagent |
| 事件日誌目錄 | AIAGENT_STATE_DIR |
stateDir |
<agentHome>\.state |
| 會話根目錄 | AIAGENT_SESSION_ROOTS(; 分隔) |
sessionRoots(數組) |
<agentHome>\{codex,claudecode,dsh} |
| Open Design 數據目錄 | OD_DATA_DIR |
odDataDir |
%APPDATA%\Open Design\namespaces\release-stable-win\data |
複製 local.config.example.json 爲 local.config.json 後修改;文件缺失或格式錯誤時靜默回落默認值。
典型用法與自測¶
面板本身不負責啓動 agent;要在任務臺看到 Codex / Claude Code 等條目,需要本機另有包裝器向 events.jsonl 寫入事件。未配置這些腳本時,任務列表可能爲空,面板仍可能顯示「會話目錄」與 Open Design 相關塊。
清空歷史:刪除 <stateDir>\events.jsonl(追加寫,不會自動清理)。
倉庫內自測命令:
node test\host.test.mjs # 事件摺疊/狀態/耗時/產物/agent 彙總 + 路由 requestBody 迴歸
node test\client.test.mjs # bundle 註冊、面板渲染、buildTimeline 佈局
適用場景與注意¶
適合:已在 DSH desktop 等 profile 中使用多個 AI agent 或 Open Design,希望在一個 Web 面板裏對照「誰在跑、剛完成/失敗、目錄與產物」,並願意維護事件日誌寫入鏈路的開發者。
限制(README 原文要點):
- Codex / Claude 的逐條消息進度不在此面板;只有任務開始/結束與產物,細節需看各自會話文件。
- Open Design HTTP 爲內部接口,升級後可能變化;端口發現失敗不影響其他數據展示。
- 本倉庫僅含面板;
aiagent-log.ps1及codex.cmd/claude.cmd等包裝器爲另一套本機腳本,未隨包發佈。
安全與權限:插件以當前 DSH 進程權限讀取本機路徑、執行端口發現邏輯。安裝前請閱讀源碼與 MIT 許可證,確認路徑與數據目錄符合你的環境策略。DSH 社區目錄(如 SkillHub)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-aiagent-taskboard 把多源任務狀態收進 DSH 側欄:chip 概覽、列表詳情、泳道時間線與會話目錄,適合需要「此刻全局視圖」而不是深挖單會話 transcript 的場景。更多信息見 GitHub README 與 SkillHub 目錄頁。