Back to home@AFANman

dsh-work-board

No description

Stars
0
Language
TypeScript
Created
Aug 21, 2026
Updated
Aug 21, 2026
GitHub repo

Introduction

dsh-work-board

CI License: MIT Node

面向 DeepSeek Harness(dsh)的跨会话工作板插件:持久看板 + 无人值守任务指派 + 自动结算。

简体中文 | English

快速开始

三步把工作板安装到 dsh 的 web profile。

1. 一行命令安装(需要 git、Node ^22.19 || >=24、pnpm 10+,dsh 在 PATH 上):

npx github:AFANman/dsh-work-board

该命令把仓库克隆到 $DSH_HOME/dsh-work-board、构建插件、把 profile bundle(宿主服务、模型工具、Web UI 三行为一层)装入 profile。使用 skill 内置于插件并随其运行时注册,无需单独安装。默认装入 web profile,DSH_WORK_BOARD_PROFILE 环境变量可指定其他 profile。

从源码安装的等价方式:git clone 后在仓库内执行 ./install.sh(或 ./install.sh --profile <name>)。

2. 重启 web UI

dsh --profile web

卸载:dsh plugin --profile web remove @deepseek-ai/dsh-work-board-app(skill 随插件卸载一并消失)。

步骤 1 的手动等价:pnpm install && pnpm build && pnpm build:client,然后 dsh plugin --profile web add <repo>/packages/work-board-app

打开服务地址,侧栏底部(设置项旁)出现 工作板 入口。命令行验证:

curl -s -X POST http://localhost:3080/api/board/list \
  -H 'content-type: application/json' \
  -d '{"type":"client-request","rpcId":"c1","method":"board/list","payload":{"args":{"request":{}}}}'

插件需要提供 storage domain 与 agent 服务的组合——标准 web profile 已具备。不要与已包含 board 行的组合同时启用(入口 id 重复会导致启动失败)。

功能

  • 四列看板——待办 / 进行中 / 完成 / 异常——拖拽流转、工作区过滤、卡片折叠、详情弹窗
  • 指派下发——在任务所属工作区创建全新会话,按默认 agent preset 组装(带全套标准工具);该会话的每次 approval/request 自动以 allowed-once 放行,不做其他预授权
  • 自动结算——回合结束即结算:completed → 完成(末段 assistant 文本作为结果)、error/max-tokens → 失败、aborted/interrupted → 中断;失败弹 web toast,并可(配置门控)发系统通知
  • 模型工具——board_list / board_status,按调用方工作区授权
  • HTTP RPC——所有操作都是对运行中 web 服务的 POST(/api/board/list|create|update|delete|assign),可用 curl 全脚本化,线格式见使用说明 skill

组合方式

插件只组合进已发布 ui-sidebar / ui-layout 就声明的席位,因此无需框架补丁即可在标准 dsh web 构建上运行:

  • 看板入口注册进 sidebar.footer.action(设置项旁;宽侧栏为整行,折叠栏为图标块)
  • 看板页以 shell.overlay 全屏层呈现(position: fixed,位于弹窗与 toast 之下),关闭时渲染为空
  • 开板期间控制器每 5 s 轮询一次看板列表;api-remotes 白名单已转发 board/change 的宿主构建额外获得推送更新,轮询兜住未转发的构建

包结构

平面职责
@deepseek-ai/dsh-board宿主ctx.board 服务:持久工作项(storage-domain sidecar)、指派、结算、系统通知;即 board RPC 命名空间
@deepseek-ai/dsh-tool-board宿主面向模型的 board_list / board_status 工具
@deepseek-ai/dsh-client-ui-boardWeb侧栏入口、全屏看板层、创建/编辑/详情弹窗、失败 toast
@deepseek-ai/dsh-work-board-appBundledsh plugin add 的 profile 层,一次性挂载上述三行

开发

pnpm install
pnpm test        # vitest(109 个测试)
pnpm typecheck   # tsc -b
pnpm build       # 宿主产物;再打 Web 客户端:
pnpm build:client

@deepseek-ai scope 走公网 npm(.npmrc),框架依赖为已发布的 @deepseek-ai/dsh-* 家族。

开发者说明

  • 独立版客户端自挂载 board remote(packages/client-ui-board/src/client/index.ts);deepseek-harness 组合里由 api-remotes 集中挂载——同一组合中二者不可同时启用
  • apply.client.spec REAL-boot 用例仅在上游 monorepo 运行(其按值导入发布版 dsh-client-runtime/client / dsh-client-locale/client 浏览器 bundle,Node 下不可导入);vitest.config.ts 内注明原因并排除。其余全部用例——109 个测试——在本仓库运行
  • packages/board/lib/typert.* 产物为 vendor 副本。修改 packages/board/src/index.ts 的 RPC 方法后,请在 deepseek-harness 工作区内重新生成;独立根目录下 @deepseek-ai/dsh-typert-generator 的 workspace 分析尚不能发现 Remote 方法

许可

MIT