dsh-kanban:DSH Web GUI 裏的持久化任務看板與自動任務插件

前言

用 DeepSeek Harness Web GUI 幹活的團隊,通常會遇到兩類具體問題。一是任務缺少落點:只能在對話裏口述待辦,窗口一關、上下文一衝,任務就丟了;需要自己的任務面板就得再起一個服務,跟 GUI 割裂。二是智能體執行任務缺少交接面:誰來領任務、執行到什麼程度、結果如何回寫,全靠對話約定,進度和結果不可追溯。下面介紹 hfanshu 維護的 dsh-kanban 插件,它把這兩件事收進了 Web GUI:一個多列看板做任務管理,一套原生工具加定時投遞讓 AI 自己領活、回寫狀態。

這是什麼

dsh-kanban 是 DeepSeek Harness Web GUI 的熱插拔任務看板插件,資料將它歸入工作流分類。它提供任務管理、拖拽排序、狀態跟蹤和持久化存儲,並在此之上拼接了自動任務執行與飛書等遠端表格同步。許可證是 MIT,倉庫版本 1.1.0,要求的 Node 版本爲 ^22.13.0 || >=24.0.0。

核心功能

1、多列看板:默認五列,planned(待規劃)、todo(待辦)、in-progress(進行中)、review(評審中)、done(已完成);列定義在 cordis.patch.yml 中可改。
2、拖拽排序:卡片可在列間拖動,修改 status 與 order。
3、任務屬性:低/中/高/緊急四級優先級,截止日期、描述、標籤。
4、SQLite 持久化:路徑 $DSH_HOME/dsh-kanban.db,DSH_HOME 缺省爲 ~/.dsh;日誌模式 WAL + synchronous=NORMAL。插件卸載時會 checkpoint 並關閉連接。
5、自動任務:定時器從「待辦」列取任務投遞給 AI,AI 通過六個原生 kanban_* 工具(kanban_list / claim / progress / comment / complete / fail)回寫狀態。
6、遠端同步:飛書多維表格與企業微信文檔(智能表格)雙後端,支持手動導入導出、定時自動拉取、完成時自動推回。

安裝與啓用

安裝命令來自倉庫 README:

# 從 GitHub 源碼安裝(推薦)
dsh plugin --profile web add github:hfanshu/dsh-kanban

# 或從本地目錄安裝(開發模式)
dsh plugin --profile web add link:/path/to/dsh-kanban

官方註明需要 DeepSeek Harness ≥ 0.2.1-rc.3,因爲插件使用 sessionController 投遞、session/event 事件鉤子與原生工具註冊。安裝後啓動 Web GUI,在側邊欄或頂部導航找到「任務看板」入口即可。

插件的配置寫入 cordis.patch.yml。倉庫實際文件裏的 name 是 dsh-kanban-plugin,默認五列:

- insert:
    - id: kanban
      name: 'dsh-kanban-plugin'
      config:
        enabled: true
        maxTasks: 1000
        columns:
          - id: planned
            title: '待規劃'
            color: '#9ca3af'
          - id: todo
            title: '待辦'
            color: '#60a5fa'
          - id: in-progress
            title: '進行中'
            color: '#a78bfa'
          - id: review
            title: '評審中'
            color: '#fbbf24'
          - id: done
            title: '已完成'
            color: '#34d399'

README 中的示例配置塊只寫三列且 name 爲 dsh-kanban,與倉庫當前文件不一致;以倉庫文件爲準即可。

自動任務是怎麼跑的

自動任務的機制寫在 README.zh.md 中,順序如下。

1、插件啓動時註冊六個原生模型工具與一段系統提示詞工作流指引。
2、定時器觸發時,調度器從「待辦」列取第一個任務,按配置的執行方式投遞給 AI:默認是「每個任務新建獨立會話」,經 sessionController.create() 爲任務開一條新對話並掛到任務所屬項目下;另一種是「投遞到現有會話」,通過 agent.followup() 把任務追加到當前空閒會話,都不空閒則選最新會話排隊。
3、AI 在會話中執行任務,用 kanban_* 工具彙報進度、記錄結果。
4、事件驅動兌現:輪次乾淨結束 → 任務自動移入「評審中」並附 AI 結果摘要,人工評審後拖入「已完成」;AI 明確標記失敗 → 保持進行中等待重試;基礎設施錯誤 → 自動回到「待辦」下個週期重試。
5、帶執行會話的任務,在看板點擊卡片可直接跳轉到對應對話。

注意一個邊界:沒有任何活躍會話且模式爲「投遞到現有會話」時,任務保留在「待辦」,下一個週期重試;「新建獨立會話」模式不依賴已打開的會話。

用 HTTP API 操作任務

插件按 /api/dsh-kanban 前綴暴露接口,返回體統一爲 { "success": true, "data": ... } 或 { "success": false, "error": "..." }。

# 獲取全部任務(按狀態分組返回)
curl http://localhost:3080/api/dsh-kanban/tasks

# 創建任務
curl -X POST http://localhost:3080/api/dsh-kanban/tasks \
  -H "Content-Type: application/json" \
  -d '{"title": "新任務", "priority": "high"}'

# 移動任務
curl -X PATCH http://localhost:3080/api/dsh-kanban/tasks/{task_id}/move \
  -H "Content-Type: application/json" \
  -d '{"status": "in-progress", "order": 0}'

# 刪除任務
curl -X DELETE http://localhost:3080/api/dsh-kanban/tasks/{task_id}

面向智能體的任務協議還有四個端點,配套的 skills/manage-task/SKILL.md 給出了標準工作流:

# 認領任務:從 todo/planned 移到 in-progress,併發出 task:claimed 事件
curl -X POST http://localhost:3080/api/dsh-kanban/tasks/claim \
  -H "Content-Type: application/json" \
  -d '{"taskId": "abc123", "message": "開始處理"}'

# 彙報中間進度:不改狀態,發出 task:executing 事件
curl -X POST http://localhost:3080/api/dsh-kanban/tasks/progress \
  -H "Content-Type: application/json" \
  -d '{"taskId": "abc123", "message": "已完成數據讀取,正在寫代碼"}'

# 記錄結果:發出 task:comment 事件
curl -X POST http://localhost:3080/api/dsh-kanban/tasks/comment \
  -H "Content-Type: application/json" \
  -d '{"taskId": "abc123", "message": "改動、驗證結論、遺留風險"}'

# 完成任務:移到 done,發出 task:completed 事件
curl -X POST http://localhost:3080/api/dsh-kanban/tasks/complete \
  -H "Content-Type: application/json" \
  -d '{"taskId": "abc123", "message": "完成並驗證通過"}'

SKILL.md 明確要求「先認領再動手」:只認領 todo 或 planned 狀態的任務,同一時間只認領一個,失敗要顯式標記而不是把任務留在中間狀態。這套約定價值在於把「誰在幹活、幹到哪了、結果如何」變成結構化狀態,而不是散落在對話裏。

飛書同步的配置

飛書集成的前置條件是飛書開放平臺的企業自建應用與一張多維表格,應用需要 bitable:app 權限並已發佈版本。在 cordis.patch.yml 中填入憑證與字段映射:

feishu:
  appId: 'cli_xxxxxxxxxx'
  appSecret: 'xxxxxxxxxxxxxxxxxxxx'
  appToken: 'abc123def456'
  tableId: 'tblXXX'
  fieldMapping:
    title: '標題'
    description: '描述'
    status: '狀態'
    priority: '優先級'
    tags: '標籤'
    assignee: '負責人'
    dueDate: '截止日期'
    project: '項目'

多維表格的字段名需要與 fieldMapping 完全一致(區分大小寫)。同步接口有三個:

# 檢查飛書連接狀態
GET   /api/dsh-kanban/feishu/status

# 從飛書導入任務到看板
POST  /api/dsh-kanban/feishu/sync-from

# 從看板導出任務到飛書
POST  /api/dsh-kanban/feishu/sync-to

也有圖形界面入口:看板界面有「從飛書同步」「同步到飛書」按鈕。狀態值會自動映射,例如飛書的「待規劃、規劃中」映射到看板 planned,「評審中、評審」映射到 review,其他值(含失敗/取消)回落爲 todo。README.zh.md 還提到企業微信文檔(智能表格)後端,需要自建應用的 corpid 與 secret、可信 IP 配置,以及可訪問的智能表格文檔。該部分沒有獨立文檔,倉庫中僅 feishu.ts 對應飛書實現,企業微信細節建議以源碼爲準。

適用場景與注意

適用的人:已經在用 DSH Web GUI 管理項目、希望任務有持久化面板、並想讓 AI 按既定協議認領和回寫狀態的開發者。它也適合需要把任務表與飛書多維表格對齊的團隊。

需要留意的地方:

1、插件以當前 dsh 進程權限運行,自動任務會以該進程身份在對應項目裏建會話、執行命令。安裝前應先讀一遍源碼,確認 kanban_* 工具和投遞邏輯符合預期。
2、許可證爲 MIT,但倉庫星標數很低,更新頻率未知,選它意味着自己承擔後續維護判斷。
3、自動任務依賴 sessionController 與 session/event,需 DSH ≥ 0.2.1-rc.3;低版本裝不上或功能不完整。
4、歷史遷移方面,首次啓動會自動導入 dsh-kanban.json(及 auto-task / feishu 舊配置文件),原文件改名爲 .bak 保留。USAGE.md 中仍寫着舊版 JSON 存儲與五列中的舊命名,與 README.zh.md 的 SQLite 說明不一致,判斷時以 README 與當前 cordis.patch.yml 爲準。
5、API 返回 401 時,相關資料的排查建議是確認已安裝並啓用 dsh-auth 插件、持有有效 JWT 令牌。

小結

dsh-kanban 的價值在於把看板、AI 執行與遠端表格串成一條鏈路:人建任務、AI 認領執行、狀態自動流轉到評審、結果可同步到飛書。如果你在 DSH Web GUI 裏已經並行跑多個會話,它省去了在聊天窗口裏記待辦的心智負擔。目錄頁見 https://www.skillhub.cn/plugins/hfanshu/dsh-kanban ,源碼見 https://github.com/hfanshu/dsh-kanban 。

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

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

小夜