DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

HanYu-me /

HanYu-me/dsh-project-kanban

Verified

Project kanban for the DeepSeek Harness (dsh) web GUI: a sidebar board grouped by project with four fixed columns (待办 / 进行中 / 待反馈 / 已完成).

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@004ac014

dsh-project-kanban · 项目看板

DeepSeek Harness (DSH) 插件:左侧边栏出现「项目看板」入口,点开后在主区域按项目分区管理任务。每个项目固定四列:待办 → 进行中 → 待反馈 → 已完成。点项目名还能进入这个项目的「数据与结果」页:把关键数据和得到的结果记成两棵树,再连线说明哪些结果来自哪些数据。

截图

先看项目主页(每个项目一个区块、四列任务),再点进一个项目看它的「数据与结果」页。

项目主页:每个项目一个区块、四列任务,标题栏有「数据与结果」入口

深色主题 任务菜单 编辑任务
深色看板 任务菜单 编辑任务
项目菜单 空状态 窄屏
项目菜单 空状态 窄屏

点项目名进入这个项目的「数据与结果」页:

数据与结果:左边数据树,右边结果树,悬停一个结果,它的来源数据和连线亮起

只看星标:同一棵树的筛选视图,星标节点之间的线是浅红色

结果之间的连线:每个结果最右边的菱形「关系点」,类别颜色,星标

拖出结果间的连线:能接的关系点亮起,线吸附在目标的关系点上 悬停在结果间的线上:有向 / 无向、反向、类别、删除
拖线中 线上的工具条
颜色与类别 窄窗口(约 380 px 宽)
颜色面板 窄窗口

点名字展开卡片:完整路径、描述、类别、关联的结果、相关的结果

选中多项,合并为分组 深色主题
多选合并 深色主题

以上图片均为演示数据。

功能

  • 侧边栏入口:图标 + 「项目看板」,位于「插件市场」与「定时任务」之间。
  • 按项目分区:每个项目一个区块,显示各列计数和完成进度条;可折叠、重命名(项目「⋯」菜单)、换颜色、上移/下移、删除(需确认)。点项目名,或点标题栏里的「数据与结果」,进入这个项目的数据与结果页。
  • 添加:新建项目(名称 + 颜色);在任意列点「添加任务」或列头「+」,输入标题(可加备注),回车保存并可连续录入。
  • 完成即流转:点任务左侧圆圈 = 完成当前阶段,任务移到右侧下一列的最上方,并有短暂高亮。已完成列的圆圈是静态的绿色勾,不会误触。
  • 手动调整:拖拽卡片到同一项目的任意列/位置;或用卡片「⋯」菜单「移动到」(含「重新打开(待办)」)。
  • 编辑/删除:卡片悬停出现编辑按钮(或双击卡片);删除后底部提示可「撤销」。
  • 空状态:无项目时显示引导与流转说明;空列显示提示文案。
  • 外观:颜色/圆角/阴影全部取自 DSH 主题变量,自动跟随 DSH 的浅色/深色主题;按主区域宽度自适应(宽屏 4 列,中等 2×2,窄屏单列)。「数据与结果」页在窄窗口(约 640 px 以下)隐藏行内的计数标签,约 460 px 以下名字最多折成两行、「添加」按钮只留 +,两棵树始终并排。

数据与结果

点项目名(或标题栏里的「数据与结果」)进入这个项目的页面,把关键数据和得到的结果记下来;左上角「项目看板」回到看板。

  • 两棵树。 左边是数据树,右边是结果树。每个节点有三项:简单名字(树里只显示它)、完整路径、描述(结果树里「完整路径」叫「文件 / 位置」)。点名字展开卡片,看到这一条的全部信息,路径可一键复制,也可以在卡片里编辑;再点一次收起。
  • 合并成章节。 任何节点都可以有子节点,只写了名字的节点就是章节。把一个节点拖到另一个节点的中间,它就并入那个节点;拖到一行的上 / 下边缘,排在它前 / 后;拖到树底部的空白处,回到最上层。点节点左侧的图标(或 ⌘ / Ctrl / Shift + 点名字)可以选中多项,然后「合并为分组」一次把它们收进一个新分组(马上可以改名),也可以直接拖动其中一项,整组一起走。不方便拖的时候,用节点的「⋯」菜单:上移、下移、移入上一项、移出上一级、解散(子节点上移)、删除。
  • 连线。 数据树靠右、结果树靠左的边缘上,每一行有一个圆点:从一个圆点拖到另一侧的节点上(反过来也行),就连上一条线,表示这个结果来自这份数据。一份数据可以连多个结果,一个结果也可以有多个来源;一对节点只连一条。悬停或点选一个节点,它的线和另一侧相关的节点会亮起,其余变淡;悬停在线上出现「×」可以删除;点一下线(选中它),按 Delete(Mac 的 delete 键)也行,⌘Z 可以撤回。分组折叠后,里面的线汇到分组那一行(虚线)。不想拖的话,也可以在卡片里用「+ 关联结果…」「+ 添加来源数据…」下拉选择。
  • 星标与「只看星标」。 节点名字右边的 ☆ 点一下就是星标(菜单里还有「整组加星标」,选中多项后也能批量加)。连到星标节点的线用浅红色(星标色可以改),页头的数字是星标总数。页头的「只看星标」只显示加了星标的节点,它们所在的分组灰色显示,线也只画星标和星标之间的。这只是同一份数据的筛选视图,不是副本:在里面添加、拖动、连线、删除,改的都是完整的树,点「显示全部」一切都在;在这个视图里新建的节点会自动加星标,免得一建好就从视图里消失。
  • 撤销 / 重做。 在这个页面里 ⌘Z 撤销,⇧⌘Z 重做(Windows / Linux 用 Ctrl;Ctrl+Y 也是重做),页头也有对应的按钮,悬停会写出要撤销的是哪一步。添加、编辑、拖动、合并、解散、删除、连线、星标、类别和颜色,每个动作都是一步;折叠 / 展开不算。撤销只撤回你做的那一步,别的对话在这期间写进来的内容不会被冲掉;在输入框里打字时 ⌘Z 仍是文字自己的撤销。历史按项目保存在页面里,离开再回来还在,刷新页面后清空。
  • 结果之间也能连线。 每个结果的最右边有一个菱形的关系点,和连数据用的圆点是两个不同的点(圆点在左边,只连数据;菱形在右边,只连结果),右边那一列的顶上标着「关系」。从菱形拖到另一个结果上,就连出一条结果之间的线,画在结果树右边的空白里,表示它们有关系(比如一个结果依赖另一个);拖的时候,能接的关系点亮起、圆点退到后面,线会吸附在目标的关系点上;已经连过的结果不会亮(一对结果只连一条)。默认无向;松开时按住 Option / Alt 就是有向(带箭头,从拖出的结果指向目标);之后悬停在线上,浮出的小工具条(在线的旁边,不压在线上)可以切换有向 / 无向、反向、选连线类别、删除;点选这条线再按 Delete 同样能删;结果的卡片里也能增删、切换。
  • 颜色。 页头的「颜色」:默认颜色(节点、连线、星标各一个,可以恢复默认)和类别——先「新增节点类别 / 连线类别:名字 + 颜色」(比如「原始数据」蓝、「最终结果」橙),再给节点指定类别(卡片里点类别,或选中多项后在批量栏里选),给连线指定类别(悬停在线上,工具条上的小圆点)。节点的图标和圆点用类别色;线用类别色,没指定类别时连到星标节点的线用星标色,其余用默认连线色。颜色是 #RRGGBB,有 10 个一键色板,也可以直接输入。删除类别后,用了它的回到默认。
  • 撤销提示。 删除节点(含子节点)、解散分组、删除连线、删除类别后,底部提示条上也有「撤销」;删除带子节点的分组会先确认。
  • 自动保存。 和看板一样,改动立即显示、后台保存;分组的折叠状态也会记住。

让别的对话来整理

别的对话可以通过本机接口(GET /project-kanban/board、POST /project-kanban/ops)直接读写项目的数据树、结果树、连线、星标和类别,例如让它分析一个项目文件夹,自己把关键数据和结果记进来并连好线。接口说明、可以直接用的示例脚本和注意事项见 docs/AGENT.md;对它说「先读这份文档,再整理项目 X」即可。

数据和任务存在同一个文件里(见下),每个项目多一个 records 字段:

"records": {
  "data":    [ { "id": "n_…", "name": "过滤后矩阵", "path": "/data/qc/filtered.h5ad", "description": "…",
                 "parentId": "n_…" /* 或 null */, "collapsed": false, "createdAt": "…", "updatedAt": "…" } ],
  "results": [ /* 同上 */ ],
  "links":   [ { "id": "l_…", "dataId": "n_…", "resultId": "n_…", "createdAt": "…" } ]
}

后加的几项都是可选的,没用过就不出现,旧文件照常读取:节点的 starred: true、category(类别 id);连线的 category;relations(结果之间的连线:{ id, fromId, toId, directed?: true, category?, createdAt });palette({ nodeCategories: [{ id, name, color }], edgeCategories: [...], defaults?: { node?, edge?, star? } })。

数组按「父节点在前、子树紧随其后」排列,同一个父节点的子节点顺序就是它们在数组里的先后;手工改过文件也没关系,载入时会自动整理(丢弃坏节点、悬空的连线,打断循环)。

需求假设(原需求中的待确认项)

待确认项 采用的假设
「个性化添加」的范围 添加/编辑/删除项目(名称、颜色)和任务(标题、可选备注)。不含自定义列、自定义字段——四列保持固定。
完成后「自动移动到下一项」 移到右侧相邻列(待办→进行中→待反馈→已完成),不是直接跳到已完成。
在「已完成」列再次点击 不做任何事(显示静态勾)。如需退回,用「⋯ → 移动到 / 重新打开」。
视觉风格 / 暗色 / 响应式 跟随 DSH 设计变量与主题(含暗色),按主区域宽度响应式布局。
「简单名字(完全路径(数据描述))」 每个节点三项:名字(必填,≤ 80 字)、完整路径(≤ 1000 字)、描述(≤ 4000 字);树里只显示名字,点开卡片看全部。没有单独的「分组」类型,只写名字的节点就是分组。
「按自定义方式拖拽合并」 任何节点都能有子节点(最多 12 层):拖进去 = 并入;也可以多选后一键合并成新分组。
「结果树状图」 结构和数据树完全一样(名字 / 位置 / 描述,可分组、可拖动);数据树与结果树之间不能互相拖节点。
「让我自己把数据和结果连线」 只在「数据 → 结果」之间连线,多对多,一对节点只能连一条;同一棵树内部不连线。分组节点也可以连线(代表这一整组)。
「星标」「浅红色连线」 数据节点和结果节点都能加星标;一条线只要有一端是星标节点,就用星标色(默认浅红 #f0777d,可改);自己指定了类别的线用类别色。
「只看星标」下的编辑 它是筛选视图不是副本:改动直接作用在完整的树上,所以不需要「同步」。视图里不显示折叠;新建的节点自动加星标;删除分组时会提示有多少子节点被视图隐藏。
「⌘Z / ⌘⇧Z」 只在数据与结果页里生效,按「一个动作 = 一步」,最多 100 步,刷新页面后清空;任务看板上没有。
「结果间连线」 只在结果和结果之间,默认无向,有向时箭头指向目标;一对结果只连一条;连在每个结果最右边的菱形关系点上,画在结果树右边(不和数据连线共用左边的圆点)。数据和数据之间不连线。
「新增节点 / 边类别:颜色」 每个项目自己的一套类别(节点和连线各最多 40 个)和三个默认色;节点或连线最多属于一个类别。
点项目名 改为进入项目的数据与结果页;重命名在项目的「⋯」菜单里。
数据存放位置 宿主机本地文件 ~/.dsh/project-kanban/board.json(可用环境变量 DSH_PROJECT_KANBAN_FILE 改)。只在本机,无同步、无权限、无统计(未确认,不扩展)。

安装与运行

需要 Node ≥ 22.19。

cd ~/dsh-plugins/dsh-project-kanban
npm install
npm run build        # 生成 lib/index.js(宿主端)和 lib/client.js(浏览器端)
npm test             # 270 个测试

装入 DSH(链接方式,改代码后重新 build 即可):

  • 在 DSH 会话里让 Agent 调用 plugin_manager install_bundle,target 为 link:/Users/yhan0/dsh-plugins/dsh-project-kanban;或命令行 dsh plugin --profile desktop add link:<本目录>。
  • 插件条目 id:include:project-kanban。停用/启用:plugin_manager set_plugin include:project-kanban enabled=false/true。
  • 修改宿主端代码后需停用再启用(或重启 DSH);修改浏览器端代码后刷新 DSH 页面即可。

结构

src/
  shared/board.ts      数据模型 + 所有操作(纯函数,宿主与浏览器共用)
  shared/records.ts    数据 / 结果两棵树、连线、结果间连线、星标、类别的模型与操作(同上),含载入时的修复
  shared/records-history.ts  每个操作的「反向操作」,撤销 / 重做靠它
  shared/text.ts       id 与文本的通用规则
  shared/protocol.ts   接口路径与请求/响应类型
  store.ts             board.json 读写(临时文件 + 重命名,坏文件自动另存)
  routes.ts            GET /project-kanban/board、POST /project-kanban/ops
  index.ts             宿主端入口:把路由挂到 DSH webServer
  client/index.tsx     浏览器端入口:注册 sidebar.panellist(入口)与 main(看板)
  client/sync.ts       乐观更新 + 有序批量保存 + 断线重试
  client/KanbanView.tsx 看板界面(含「点项目进入详情页」的导航)
  client/common.tsx    看板与详情页共用:操作上下文、菜单、保存状态
  client/RecordsView.tsx 数据与结果页:状态、拖拽合并、连线层与测量
  client/RecordTree.tsx  一棵树:行、卡片、表单
  client/recordsModel.ts 纯函数:展开哪些行、落点、高亮、连线形状
  client/recordsContext.ts 详情页的上下文类型
  client/recordsHistory.ts 撤销历史(每个项目一份)
  client/PalettePanel.tsx  「颜色」面板:默认色和类别
  client/styles.ts     样式(DSH 主题变量)
  client/icons.tsx     SVG 图标
tests/                 board / records / host / sync / view / records-view 等测试

数据一致性设计

  • 每次改动都是一个「操作」(如 task.advance),浏览器先在本地应用(界面即时更新),再按顺序批量发给宿主;界面始终 =「宿主确认的看板 + 尚未确认的操作」重放,宿主回包后用宿主的看板重建,不做局部修补。
  • 所有操作可安全重试:新增带浏览器生成的 id(重复会被拒绝);task.advance 带「起始列」,任务已不在该列则拒绝,所以快速连点或网络重发不会跳列、不会重复、不会丢失。
  • 一次请求最多 200 个操作且不超过约 384KB,超出自动分批;断线时操作保留在队列中,1s/2s/4s/8s/15s 退避重试,状态显示「未连接,稍后自动重试」。

协作说明

本插件由 Claude(架构、核心逻辑、界面)与 DeepSeek V4.1 Flash(DSH Agent Team 成员,编写测试与代码审查)协作完成;DeepSeek 审查发现的「离线积压超过 200 个操作会整批丢失」问题已修复,其复现测试现已通过。

安装

dsh plugin --profile web add github:HanYu-me/dsh-project-kanban
# 桌面版:dsh plugin --profile desktop add github:HanYu-me/dsh-project-kanban

需要 dsh >= 0.2.0-rc.1 < 0.3.0。装好后重启 dsh。也可以从 Releases 下载预构建的 dsh-project-kanban.tgz。

许可

Apache-2.0 © Yu Han

—/ 5

No ratings yet

Verified DSH bundle

Commit 004ac014deb9

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout