DeepSeek Harness 插件:dsh-task-board

前言

DeepSeek Harness (DSH) 採用插件化架構,允許開發者擴展對話窗口外的功能。在開發智能體或進行多輪協作時,會話內的臨時筆記(如 DSH 自帶的 todo_write)往往無法持久化,且無法被後續新建的會話複用。dsh-task-board 旨在解決這一痛點:它爲每個工作區提供一個獨立的任務看板,工作區內的所有會話共享同一份數據,既支持在 UI 中管理,也通過模型工具允許 AI 讀取和修改。

核心功能

該插件爲每個工作區提供一塊任務看板,核心能力包括:
* 會話集成:在會話頂部增加「任務」標籤頁,提供看板與列表雙視圖。
* 工作區級共享:數據存儲在 .dsh/tasks.json,同一工作區的會話讀寫同一文件,自然形成共享。
* AI 可讀可管:提供 task_list、task_get、task_create、task_update、task_delete 五個模型工具。
* 多會話安全:採用原子寫與版本樂觀鎖機制,當另一會話修改看板時,面板會提示或自動刷新,過期修改會被拒絕並告知,不會悄悄覆蓋。
* Issue 同步:支持將任務同步到 GitHub 或 GitLab 的 Issue,雙向綁定。
* 交互能力:包含右側抽屜編輯、篩選(標題、描述、標籤、優先級)、快捷鍵(N 新建、/ 搜索、↑↓ 移動、1-4 狀態切換)。

安裝與啓用

通過 npm 安裝插件包,並配置插件入口。

  1. 進入 DSH 插件目錄:
    cd ~/.dsh/profiles
  1. 安裝插件包(建議所有插件在一條命令中安裝,避免清除其他依賴):
    npm install dsh-task-board
  1. 在 ~/.dsh/profiles/<你的 profile>/package.json 的 dsh.profile.bundles 中加入 dsh-task-board,或在該 profile 的 cordis.patch.yml 中配置:
    - insert:
        - id: task-board
          name: dsh-task-board
  1. 重啓 DSH 使配置生效。

配置

插件默認不開啓任何同步功能,需在配置文件中開啓。

- insert:
    - id: task-board
      name: dsh-task-board
      config:
        storePath: .dsh/tasks.json     # 相對工作區根目錄;寫絕對路徑可讓多個工作區共用一塊板
        sync:
          enabled: true
          provider: github             # github | gitlab
          repo: owner/repo             # GitLab 用 group/project 或數字 id
          baseUrl: https://gitlab.example.com   # 僅私有部署需要
          tokenEnv: GITHUB_TOKEN       # 默認 GITHUB_TOKEN / GITLAB_TOKEN
          labelPrefix: 'dsh:'
字段 默認值 說明
storePath .dsh/tasks.json 看板文件位置。相對路徑按工作區根解析
sync.enabled false 關閉時完全不聯網,不發起任何網絡請求
sync.provider github github 或 gitlab
sync.repo 未設 沒填等同於關閉同步
sync.baseUrl 官方實例 私有部署的 API 源
sync.tokenEnv 按 provider 讀 token 的環境變量名
sync.labelPrefix dsh: 插件在遠端管理的狀態標籤前綴

憑據安全:Token 僅在調用時從 DSH 進程的環境變量讀取,既不寫進配置也不寫進看板文件,不落盤。

數據模型與面板使用

看板數據存儲在 .dsh/tasks.json,支持 JSON 格式直接編輯。如果文件格式損壞,面板會切換爲只讀模式並顯示原因;如果單行數據有問題,會降級爲默認值或丟棄該行。

面板提供以下操作與視圖:
* 看板視圖:4 列(待辦 / 進行中 / 阻塞 / 已完成),支持拖拽跨列改狀態及列內改順序。
* 列表視圖:緊湊單行,適合快速掃視。
* 右側抽屜:用於編輯任務詳情(標題、狀態、優先級、負責人、標籤、Markdown 描述),支持編輯/預覽切換,非彈窗設計。
* 篩選:支持按標題、描述、標籤全文搜索,以及按優先級和標籤篩選。
* 快捷鍵:N 新建 · / 聚焦搜索 · ↑↓ 移動選中 · 1-4 直接改選中卡片狀態 · Esc 關閉。

模型工具

插件向模型提供以下工具,用於讀寫任務:

工具 說明
task_list 按 status / tag / assignee / query 過濾,返回精簡行,默認 50 條
task_get 獲取單個任務的全文
task_create 創建任務,createdBy 記爲 ai,並記錄當前會話
task_update 改任意字段,status 變更爲 done 時自動記錄完成時間
task_delete 刪除任務

注意:Issue 同步功能不給模型工具。推送到遠端 issue 的動作由人在 UI 中逐個綁定執行,避免模型自動製造噪音。

Issue 同步機制

開啓同步後,支持手動綁定任務與 Issue。

  • 字段映射:任務 title 對應 Issue title;notes 對應 body(末尾追加錨點用於反查綁定);status: done 對應 Issue closed;其餘狀態對應 Issue open 及特定 Label;assignee 對應 Issue Assignees。
  • 衝突處理:按整條記錄的最後修改時間決勝,不做字段級合併。
  • 反向導入:支持從 Issue 反向導入,將未綁定的開放 Issue 建成任務。
  • 未同步字段:order、sessionId、createdBy、id 僅用於本地展示,不同步至遠端。

開發與已知邊界

  • 構建命令:
    npm install --legacy-peer-deps
    npm run build       # node 半邊 tsc → lib/,client 半邊 esbuild → lib/client.js
    npm run typecheck   # 兩個 tsconfig 都查
    npm test            # 基於構建產物運行測試
  • 已知限制:
    • GitLab 私有部署(自定義 baseUrl)本機無憑據,未經真實驗證。
    • 沒有系統提示詞注入:模型靠工具描述發現看板,不會每輪被塞任務摘要(省 token)。
    • 跨 DSH 進程的併發寫靠版本比對捕獲;同進程內的寫由存儲層串行化。

結語

dsh-task-board 提供了一個持久化、工作區級別的任務管理方案,填補了 DSH 原生 todo_write 無法跨會話共享的空白。無論是人工管理還是 AI 輔助,它都提供了一個標準化的數據模型。項目源碼位於 GitHub,遵循 MIT 許可證。

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

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

小夜