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 许可证。

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

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

小夜