dsh-taskboard-plugin

by maochiy

1 工作流与自动化github收录于 08-23

一个为 DeepSeek Harness 设计的任务看板插件:本地 JSON 存储、六列看板、拖拽排序、任务与会话联动、面向模型的看板工具。逻辑参考 Proma 的任务看板( taskboard-store.ts 与 renderer/components/taskboard/ )精简而来——本地文件存储、浮动 sortOrder 、乐观锁(…

安装

dsh plugin --profile web add github:maochiy/dsh-taskboard-plugin

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

DeepSeek Harness 任务看板插件

English · 中文

npm License: MIT GitHub


一个为 DeepSeek Harness 设计的任务看板插件:本地 JSON 存储、六列看板、拖拽排序、任务与会话联动、面向模型的看板工具。逻辑参考 Proma 的任务看板(taskboard-store.ts 与 renderer/components/taskboard/)精简而来——本地文件存储、浮动 sortOrder、乐观锁(version)、identifier 续号、中文看板列与优先级/状态色调。

功能

  • 六列看板:待处理 / 处理中 / 受阻 / 待确认 / 已完成 / 已归档(列内卡片过多时独立滚动)
  • 多项目:内置全局项目(local),可新建项目;全局视图聚合所有项目
  • 拖拽:拖到列空白(跨列移动 / 追加),拖到某张卡之前(同列排序,浮动 sortOrder)
  • 任务编辑器:标题、描述、状态、优先级、标签、指派(用户 / Agent)、起止日期;归档 / 恢复 / 删除
  • 任务 ↔ 会话联动:卡片上的「开始对话 / 查看对话」按钮,关联并打开 DSH 会话
  • 面向模型的工具:taskboard_list / taskboard_create / taskboard_update / taskboard_archive,Agent 可直接管理看板
  • 本地存储:~/.dsh/taskboard/{projects.json, tasks.json},原子写(tmp + rename),无数据库

截图

任务看板

安装

前置条件

  • 已安装 DeepSeek Harness(Electron 桌面应用)
  • 目标 profile 存在(默认 web)

方式一:npm 安装(发布后推荐)

在目标 profile 目录内安装本包(写入该 profile 的 package.json 依赖):

cd ~/.dsh/profiles/web
npm install @xiuda-ai/dsh-taskboard-plugin

然后在 ~/.dsh/profiles/web/cordis.patch.yml 追加:

- insert:
    - id: taskboard
      name: "@xiuda-ai/dsh-taskboard-plugin"

重启 harness 加载宿主半区;刷新页面加载浏览器半区。

方式二:本地路径(开发 / 尚未发布)

把源码目录链接进 profile 的扁平 node_modules:

ln -sfn /path/to/dsh-taskboard-plugin ~/.dsh/profiles/node_modules/@xiuda-ai/dsh-taskboard-plugin

再按方式一追加 cordis.patch.yml 的 insert 行即可。

从源码构建

npm install
npm run build      # 产出 lib/index.js + lib/client.js
npm run dev        # 监听 src/ 自动重打包(改完刷新页面)

运行时依赖 @deepseek-ai/cordis / @deepseek-ai/dsh-tools / @deepseek-ai/dsh-home-paths 需能从本包解析。本地开发建议在包内建软链指向 profile 的已安装副本,保持与运行中的 harness 版本一致。

使用

重启后进入任意会话,会话头部右侧会出现「任务面板」胶囊按钮(与「Session log」按钮并排)。点击打开看板:

  • 「+ 新建任务」创建任务
  • 拖拽卡片跨列 / 排序
  • 卡片上的对话按钮:无关联会话时「开始对话」,有关联时「查看对话」

说明:入口按钮是会话级的,只在进入某个会话后显示;无会话的空白页看不到入口。

卸载

  1. 删除 ~/.dsh/profiles/web/cordis.patch.yml 中的:
- insert:
    - id: taskboard
      name: "@xiuda-ai/dsh-taskboard-plugin"
  1. 删除软链:
rm ~/.dsh/profiles/node_modules/@xiuda-ai/dsh-taskboard-plugin

数据目录 ~/.dsh/taskboard/ 默认保留;如需清空数据,删除该目录即可。

目录结构

dsh-taskboard-plugin/
├── package.json           # dsh.bundle(组合层)+ dsh.client(浏览器半区)
├── cordis.patch.yml       # 把宿主行插入组合的 patch
├── tsconfig.json
├── scripts/build.mjs      # esbuild 构建 host + client
├── src/
│   ├── index.ts           # Host 插件:存储 + /taskboard API + 模型工具
│   ├── taskboard-store.ts # 存储核心(JSON 原子写 / sortOrder / 乐观锁)
│   ├── types.ts           # 共享领域类型
│   └── client/            # 浏览器半区(React 看板)
│       ├── index.ts           # 客户端插件:Slot 注册(入口按钮 + 看板弹窗)
│       ├── BoardOverlay.tsx   # 看板主体(设置面板式弹窗)
│       ├── Column.tsx         # 看板列
│       ├── TaskCard.tsx       # 任务卡片
│       ├── TaskEditor.tsx     # 任务编辑器
│       ├── SidebarButton.tsx  # 会话头部「任务面板」入口
│       ├── labels.ts          # 状态 / 优先级 / 色调
│       ├── api.ts / store.ts  # 数据访问
│       └── board.css          # 样式
└── lib/                   # 构建产物(index.js + client.js)

数据存储

~/.dsh/taskboard/
├── projects.json   # 项目列表
└── tasks.json      # 任务列表(含 sessionId 关联、sortOrder、version 乐观锁)

HTTP API(浏览器半区内部使用)

POST /taskboard/api,body { "op": string, "args": object }:

op 说明
state 返回 { projects, tasks } 全量
listProjects / createProject 项目列表 / 新建
listTasks / createTask / updateTask 任务增改查
moveTask 移动 / 排序(status + 可选 sortOrder)
archiveTask / restoreTask / deleteTask 归档 / 恢复 / 删除

业务错误返回 { ok:false, error:{ code, message } },code 可能为 VERSION_CONFLICT(乐观锁冲突)、PROJECT_NOT_FOUND、TASK_NOT_FOUND、INVALID_* 等。

与 Proma 的对应关系

Proma 本插件
~/.proma/ 多文件 JSON/JSONL ~/.dsh/taskboard/ 两个 JSON 文件
taskboard-store.ts(浮动 sortOrder、乐观锁、续号) src/taskboard-store.ts
taskboard-constants.ts(状态 / 优先级 / 色调) src/client/labels.ts
TaskboardView / TaskCard / TaskEditor(Tailwind) src/client/BoardOverlay.tsx 等(CSS 变量主题)
main/ipc.ts TASKBOARD 通道 /taskboard/api JSON 端点
Agent 任务联动 模型工具 taskboard_*

局限

  • v1 精简掉了 Proma 的评论、活动时间线、任务关系、附件、重复任务、撤销栈(⌘Z)。
  • 同列拖拽用「插入到某张卡之前」的浮动 sortOrder,未做让位动画。
  • 客户端样式复用 DSH 主题 CSS 变量,未做独立主题。
  • 待立项(backlog)/ 已取消(canceled)状态仍保留在数据层,但当前 UI 不展示这两列。

原始 README: https://github.com/maochiy/dsh-taskboard-plugin/blob/master/README.md ↗