DSH 任务看板插件:五列看板协作 + 10 个 taskboard_* agent 工具,支持任务挂项目、定时执行、worktree 代码隔离和结构化验收。
- 语言
- TypeScript
- License
- Apache-2.0
- 分支
- main
安装
$ dsh plugin --profile web add dsh-taskboard在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 cloader/dsh-taskboard:先查看仓库 https://github.com/cloader/dsh-taskboard.git 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
为 DeepSeek Harness (DSH) Web GUI 加一套五列任务看板:人在浏览器建卡与验收,AI agent 通过 10 个 taskboard_* 工具在终端会话里认领、执行、回填结果,整个过程双向同步并支持定时与 Git Worktree 代码隔离。
核心能力
- 五列看板 + SSE 实时刷新:待规划 / 待办 / 进行中 / 待验收 / 已完成 五列(加受阻标记与已删除/已归档次级列),任何一边的写动作通过 SSE 立刻推另一端,看板免手动刷新(src/shared/protocol.ts:31-44 / src/host/routes.ts:908-909)
- 任务挂项目(workspace)边界:每个任务绑定一个 DSH workspace,agent 只能在自己所属的项目内认领/执行别人的任务,跨项目不可抢;认领后该会话持有锁,其他人不能移动(src/host/protocol.ts:71-77 / src/host/tools.ts:208-216 / 552-578)
- 10 个 taskboard_ agent 工具*:查板 / 读卡 / 建卡 / 改卡 / 移卡 / 评论 / 列评论 / 软删 / 验收清单 / 执行报告 — 任何 agent session 都可调用,写操作全部用 ifVersion 乐观并发(src/host/tools.ts:280-866)
- 手动或定时执行:每一次执行在任务所属项目中创建全新干净的 session,可固定模型与 preset;任务可设 cron 表达式由 host 进程每分钟扫描触发,关浏览器照常跑(src/host/execution.ts:262-426 / src/host/scheduler.ts:46-98)
- Git Worktree 代码隔离:默认每次执行在
.dsh-worktrees/<任务ID>/独立 worktree +task/<标题>+<任务ID>分支上跑,结算采集 commits / 未提交修改 / diff stat;非 git 项目自动降级到原目录(执行记录注明原因),验收时一键--no-ff合并(src/host/execution.ts:480-526 / src/host/git.ts:107-298) - 验收清单 DoD 与结构化报告:建卡时定 ≤30 条验收项,agent 用
taskboard_checklist边干边勾(带证据 note),用户验收卡片「☑ n/m」与未勾红色高亮;agent 用taskboard_execution_report提交摘要/改动文件/自验/产物/剩余风险(src/shared/protocol.ts:615-656 / src/host/tools.ts:697-866 / README.md:24-26) - 任务模板 + JSON 导入导出:内置 Bug 修复 / 发布检查 / 例行巡检 三套模板,可把任意任务「存为模板」;顶栏「⬇ JSON」整册备份,「⬆ 导入」支持干跑预览(新增 / 覆盖 / 无效分类),整册替换前自动备份(src/host/templates.ts:15-56 / README.md:26-27)
技术实现
- 语言: TypeScript(ESM,双构建:host + browser),浏览器侧用 React 18 + JSX(src/client/styles.ts / src/client/board-mount.tsx)
- 关键依赖:
@deepseek-ai/cordis(^4.0.1,宿主框架)、@deepseek-ai/dsh-agent/-workspace/-tools/-system-prompt/-host-webserver(^0.1.0-rc.6,type-only 引入,不进构建产物)、react^18.3.1(src/client 浏览器侧) - 架构模式: cordis 双面插件 — Node half (
src/index.ts) 注入tools+workspaceRegistry+agents+webServer,注册 10 个 taskboard_* 工具、/dsh-taskboard/*JSON API、SSE 事件流、执行服务、定时调度器;Browser half (src/client/index.ts) 等connection服务就位后注入侧栏入口与看板视图;bundle 由cordis.patch.yml注入一行 plugin row,package.json#dsh.bundle.patch声明 patch 路径 - 入口文件:
src/index.ts(host 半,导出name = 'dsh-taskboard'、inject = ['tools','systemPrompt']) /src/client/index.ts(client 半,导出name = 'dsh-taskboard/client'、inject = ['connection']) /cordis.patch.yml(bundle 层声明)
适用场景
你希望让 agent 在 DSH 里接手一连串有结构的工作——例如「每周一例行巡检」「一批 Bug 修复」「发布前 checklist」——而不是让用户在聊天框里一次次手动开新会话。它适合:团队用 DSH 但苦于「哪个会话在跑什么、做了多少、怎么验收」没有统一视图;需要给 agent 配上项目边界与并发控制;以及希望把会话记录、commit、清单、报告合并到一张可验收的卡上。Worktree 隔离特别适合多人/多 agent 并行改同一仓库不互相打架。日常临时对话不需要它。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness (DSH) | >= 0.1.0-rc.6 | devDependencies 锁了一组 @deepseek-ai/dsh-{agent,workspace,tools,system-prompt,host-webserver} ^0.1.0-rc.6(package.json:57-61);type-only 引入,宿主升级到对应版本才能用 |
| Node | 未声明 | 源码用 node:fs/promises、node:child_process.execFile、node:os.homedir、node:path.join 等内建 API(src/host/store.ts:9, src/host/git.ts:171-179, src/host/sdk.ts:22-23) |
| 平台 | macOS / Windows / Linux | 仅跨平台调用系统命令;child_process 调用 git 时用 windowsHide: true(src/host/git.ts:176) |
| 原生模块 | 无 | 仅 Node 内建 node:fs/promises / node:child_process / node:os / node:path;无 native binding |
外部命令 git | 任意版本 | worktree 隔离需要 git;非 git 项目或 git 不在 PATH 时自动降级到原目录(src/host/git.ts:107-111, 213 / src/host/execution.ts:480-526) |
@deepseek-ai/cordis | ^4.0.1 | peer 框架,由宿主 DSH 提供 |
安装方式
dsh plugin --profile web add dsh-taskboard
提示:官方
@deepseek-ai/dsh-*包只写进 profile 的bundles列表,不要plugin add进 dependencies,否则会出现 SDK 双实例遮蔽(README.md:50)。
配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| DSH_TASKBOARD_MAX_CONCURRENT | 整数环境变量 | 同时执行的任务上限;满了之后手动触发直接报错,定时任务留到下一窗口重试 | 3 |
| DSH_HOME | 路径环境变量 | 改写台账与模板文件的根目录($DSH_HOME/dsh-taskboard.json 与 dsh-taskboard-templates.json) | ~/.dsh |
| ATB_TRACE | 字符串环境变量 | 设 1 后所有 taskboard_* 工具的入参/出参会打到 stderr,方便排查协议;不影响正常行为 | 未启用 |
| 任务标题长度 | 输入限制 | 建卡/改卡时标题 1..200 字符,超长直接拒绝 | 最多 200 字符 |
| 执行 Prompt 长度 | 输入限制 | 任务 prompt 最多 8000 字符 | 最多 8000 字符 |
| 验收清单条数 | 输入限制 | 每张卡最多 30 条验收项;每条最多 200 字符;单次 checklist add ≤10 条 | 30 / 200 / 10 |
| 执行记录保留 | 内部策略 | 每任务在台账里保留最近 20 条执行记录,超出的在每次落盘时被修剪 | 20 |
本地文件位置:台账
$DSH_HOME/dsh-taskboard.json,模板$DSH_HOME/dsh-taskboard-templates.json。整册替换导入前会自动写ledger.backup-<时间戳>.json(src/host/store.ts:112-117 / src/host/templates.ts:11)。
常见问题
Q: 任务可以拖到任何列吗?
A: 不能任意拖。看板内置状态机:待规划→待办/已取消、待办→进行中/待规划/已取消、进行中→待验收/待办/已取消、待验收→进行中/待办/已完成/已取消、已完成→已归档。正在执行(被会话持有)的任务拖动会被拦,弹窗提示哪个会话在执行(src/shared/protocol.ts:50-68 / src/client/controller.ts)。
Q: 为什么 agent 在执行中我点别的对话,看板的卡片会被自动收起来?
A: 这是侧栏入口的「让位」语义:点在侧栏的真会话行或新会话按钮,会让任务看板临时关掉;点看板入口本身或卡片则会收回让位。0.4.1 修过一处入口嵌在 newSession 容器内时 click 事件被反复 toggle 的竞态(README.md:70-71)。
Q: 「✓ 完成」按钮一键通过验收,为什么有时候要求二次确认?
A: 当任务有验收清单但没全勾时,按钮会二次确认并显示未勾项数。代码层面禁止 agent 把任务移到「已完成」——清单全勾也不等于完成,必须由用户在界面点(src/host/protocol-text.ts:28 / README.md:23-24)。
Q: 续跑(↻)和立即执行有什么区别?
A: 立即执行永远从主分支 HEAD 起一个全新 worktree;续跑保留上次用的 worktree 和分支(含上次未提交修改和提交),基线取当前 HEAD,证据只统计本轮新增。失败/取消也留证据(提交与未提交照样采集)。续跑失败原目录是否降级由当前的隔离开关决定(src/host/execution.ts:138-146, 320-335 / src/shared/api.ts:100 / README.md:96-105)。
Q: 我用 DSH Desktop 装了但看不到看板,怎么办?
A: 0.4.2 修过 DSH Desktop Web shell 移除 data-pane 属性导致的挂载点失败——已用 '[data-pane="conversation"], [class*="centerCol"]' 双选择器兜底。理论上 0.4.2+ 装完重启即可;如果你仍在用更早版本,请升级到最新版(README.md:65-66)。
Q: 怎么把数据搬到另一台机器?
A: 顶栏「⬇ JSON」导出整册(自定义格式,含 ids/版本号),新机器上「⬆ 导入」选文件先看干跑预览(新增 / 覆盖 / 无效分类),再选「合并」或「整册替换」。整册替换会先自动备份再写入,避免误操作;导出的 JSON 即备份格式可直接恢复(README.md:26 / src/host/routes.ts:774-844)。
上手难度
进阶 — 默认能直接用五列看板和手动触发,但要把 worktree 隔离、定时执行、模板、agent 工具体系都跑顺需要理解 DSH 的「项目(workspace)」概念、cron 五字段语法与 Git Worktree 基本原理;正常使用照着弹窗操作即可,深入配置照 README 走。
已知问题与限制
- Worktree 隔离是协作约定而非沙箱:执行会话拥有完整工具权限,隔离依赖分支约定,不适用于运行不可信代码的场景(README.md:38)。非 git 项目或 git 不可用时自动降级到原目录,执行记录里写明降级原因(src/host/execution.ts:480-526)
- 执行记录与 diff 封顶:每任务保留最近 20 条执行,台账不会被定时任务无限撑大;commit 证据最多 50 条、未提交修改最多 100 行;diff 128KB / 2000 行封顶,超出标注截断(src/host/protocol.ts:401-412 / src/host/git.ts:37-66)
- 预设(preset)解析失败会直接落空执行:执行会话按任务的
presetId组合创建,preset 不存在或损坏时本次执行直接失败、原因写进执行记录,任务退回待办——不会产出半组合的会话(src/host/execution.ts:350-358 / README.md:88-89) - DSH Desktop shell 兼容:早期 DSH Desktop 的 web shell 已移除
data-pane,0.4.2 起挂载选择器已兼容class*="centerCol"兜底;如果你在 0.4.2 之前装又看不到看板,请升级(README.md:65-66) - 并发上限满载时定时任务会"挤":满了之后定时任务的到期窗口被保留,下一分钟再试,不会补跑;如果你的任务重且间隔短,建议拉低频率(src/host/scheduler.ts:77-86 / README.md:135)
- 同仓库 git 操作在进程内串行:同一仓库的建/删 worktree / 合并 / 删分支串行执行,避免 git index.lock 竞争(src/host/git.ts:195-205 / README.md:97)
- agent 工具调用追踪未默认开启:要排查 agent 协议问题需要设
ATB_TRACE=1,否则 tools 调用除错误外不打日志(src/host/tools.ts:261-275)
dsh-taskboard
DeepSeek Harness 的任务看板插件:人建卡、agent 认领执行、人验收。任务挂项目(workspace)、可指定模型、支持手动与定时执行,全流程双向协作。
界面


核心功能
看板协作
- 五列看板(待规划 / 待办 / 进行中 / 待验收 / 已完成)+ 受阻标记,SSE 实时刷新
- 任务挂项目:认领校验会话归属,跨项目不可抢
- 紧急度三色(紧急/一般/不急)筛选与色条;搜索(标题/ID)与列内排序,筛选排序持久化
- 列头状态色圆点:待规划灰 / 待办蓝 / 进行中橙 / 待验收紫 / 已完成绿 / 已删除红
- 新建/编辑弹窗:项目、模型、紧急度、执行方式、cron 实时校验与下次运行预览、执行隔离开关、验收清单编辑
- 详情面板:状态流转(done 仅限人工;清单未全勾时完成需二次确认并显示未勾数)、agent/用户评论流、执行记录(倒序,最新在最上;会话 ID 点击跳转打开该执行会话;已删除/已归档分开提示)、停止执行、Worktree 隔离块(分支 / 提交 / 改动统计 / 合并与清理)、执行报告块、验收清单块
- 待验收列卡片快捷操作:「✓ 完成」一键验收、「✗ 退回」退回待办并可附退回原因(agent 开工前会读)
- 验收清单 DoD(0.4.0):建卡时定验收条件(≤30 项);agent 用
taskboard_checklist增补/勾选(附证据 note);用户在详情页直接勾选;待验收时未完成项红色高亮 + 卡片「☑ n/m」角标(未全勾显红);清单编辑在表单中整组管理(勾选状态与证据保留) - 结构化执行报告(0.4.0):agent 收尾用
taskboard_execution_report提交(摘要 / 改动文件 / 自验 / 产物 / 剩余风险),自动挂到当前执行记录;待验收详情页分栏渲染;开场框架行明示提交时序(报告 → 评论 → 移待验收) - JSON 导入(0.4.0):顶栏「⬆ 导入」选择备份文件 → 干跑预览(新增 / 覆盖 / 无效分类明细)→ 合并(按 id upsert)或整册替换(自动先备份当前台账 + 二次确认);⬇ JSON 导出的文件即同格式可直接恢复
- 任务模板(0.4.0):「+ 新建任务 ▼」下拉(空白 / 内置 Bug 修复·发布检查·例行巡检 / 管理模板)一键预填表单(标题/描述/Prompt/紧急度/定时/隔离/preset/清单);任务详情「⌗ 存为模板」沉淀常用配置;模板存 DSH 主目录 side file,改名/删除在管理弹窗
- Diff 查看器(0.4.0):隔离块提交行、未提交修改文件行点击即在看板内展开 diff(提交
git show/ 文件git diff,128KB·2000 行封顶标注截断);worktree 已删时回落主仓(仅限提交与带基线的范围 diff)
Agent 工具(taskboard_*)
- 10 个工具:查板 / 建卡 / 改卡 / 移卡 / 评论 / 软删除 / 验收清单 / 执行报告,任何会话可用
- 代码级协议闸:agent 永远移不到 done(清单全勾也不行);任务被持有时不可抢占;model/execution 对 agent 只读
执行
- 手动执行或 cron 定时:每次执行在任务项目内新建全新会话(干净上下文、可指定模型、可指定 preset);开场两条消息同一回合送达——插件上下文行携带任务框架与交接协议(含失败回退路径),卡片内容(提示词或标题+描述)以正常用户消息呈现
- 任务级 preset(0.3.3):新建/编辑表单「执行模式(preset)」下拉——执行会话按该 preset 组合(工具集与人设由此而来,对齐 GUI 新会话的组合方式);默认预选部署默认 preset(本部署即标准模式),也可选「跟随部署默认」;preset 损坏时执行直接失败并把原因写进执行记录(不产出半组合会话);随时可改,下轮执行生效
- Git Worktree 隔离执行(0.3.0):任务级开关(默认开、记住上次选择),每次执行在
<项目>/.dsh-worktrees/<任务ID>独立 worktree 上进行,分支task/<标题>+<任务ID>(首次创建后定死,改名不改);执行会话归属项目根目录(分组、工具与文件沙箱完整可用——DSH 要求会话 cwd 即工作区根,0.3.2 修正),worktree 路径与边界纪律在开场指令中明确下达;结算自动采集提交列表 / 未提交修改警告 / 改动统计;非 git 项目或 git 不可用时自动降级原目录执行(执行记录注明降级原因,台账与执行主流程永不因 git 失败而失败);验收时详情页一键--no-ff合并到主工作区(主区脏或冲突原样报告,不自动解决)、删除 worktree(有未提交修改时拒绝)、可选删分支;支持「↻ 续跑」在现有 worktree/分支上继续执行(保留上次改动与提交)Worktree 隔离是协作约定而非沙箱:执行会话拥有完整工具权限,隔离依赖分支约定,不适用于运行不可信代码的场景。
- host 侧调度:关掉浏览器照常触发;错过窗口跳过不补跑
- 乐观并发(ifVersion)+ 完整归因(谁改的、哪个会话执行的)
- ⚙ 健康诊断:台账基本项 + 遗留 worktree(台账无主但目录存在)一键清理
安装
dsh plugin --profile <name> add dsh-taskboard # npm(推荐,预构建免授权)
dsh plugin --profile <name> add github:cloader/dsh-taskboard # GitHub 源
官方
@deepseek-ai/dsh-*包只写进 profile 的bundles列表,不要plugin add进 dependencies(避免 SDK 双实例遮蔽)。
开发
npm install && npm run build # host ESM + client CJS 双构建
npm test # vitest 全量
node tests/manual-git-e2e.mjs # 真 git 端到端手测(worktree 全链路 + 续跑 + diff 查看器)
node scripts/screenshot.mjs # 重新生成 img/ 截图(需本机 Edge)
升级日志
0.4.2
- 修复 DSH Desktop 上看板不出现(用户反馈:入口能点、后端正常,但中间看板无变化):当前 DSH Desktop 的 Web shell(
dsh-client-ui-layout)已完全移除data-pane属性,中间列改用 CSS Module 哈希类名(pI_x6G_centerCol)——而看板挂载选择器写死[data-pane="conversation"],querySelector永远落空,看板容器从未创建(侧栏入口正常,是因为它一直有[class*="sidebarCol"]兜底)。修复:挂载选择器与隐藏规则双兼容'[data-pane="conversation"], [class*="centerCol"]'(新旧 shell 通吃,与侧栏入口同款兜底策略);.dsh-atb-view以height:100%撑满列容器,不依赖列内部结构 - 回归测试:构造无
data-pane、哈希类名centerCol的 Desktop shell DOM——看板容器正确创建于列内、隐藏规则双选择器齐备
0.4.1
- 修复侧栏入口点击竞态(用户反馈):部分 shell 的 DOM 里,任务看板侧栏入口被插在 class 含
newSession的容器内部——点击入口时,看板的全局捕获监听器(「点侧栏会话/新会话让位」语义)先closeBoard,入口自身的toggleBoard再翻回来,表现为看板一开就闪关、或入口按钮关不掉。修复:捕获监听器先按closest('[data-dsh-atb-entry]')整体豁免入口子树(比给选择器加:not()更稳——:not()只排除元素自身匹配,挡不住入口嵌在带类祖先容器内的形态);真会话行/新会话按钮的让位语义不变。顺带加固newSessionButton()锚点扫描排除自身入口,杜绝自愈重插时锚点自引用 - 回归测试:构造「入口位于 newSession 容器内」的竞态形态 DOM——点击入口开/关 toggle 正常;点真新会话按钮仍让位
0.4.0
验收效率包——把「人验收」环节在看板内闭环:
- 验收清单 DoD:任务模型新增
checklist(≤30 项 × 200 字,勾选人/时间/证据 note 全程留痕)。建卡表单整组编辑(编辑保留勾选状态与证据);agent 侧新工具taskboard_checklist(add 增补 / check 勾选附证据 / uncheck 重开,代码闸:勾选永远不等于完成);执行开场框架行注入清单并下达「完成一项勾一项」纪律;待验收卡片与详情未完成项红色高亮,「✓ 完成」在有未勾项时二次确认并显示数量 - 结构化执行报告:执行记录新增
report { summary, changedFiles, checks, artifacts, risk };agent 收尾用新工具taskboard_execution_report提交——按「调用会话 + 运行中执行」定位挂载(agent 无需知道执行 id,重复提交覆盖);待验收详情页分栏渲染(摘要 / 改动文件 / 自验 / 产物 / 风险);开场交接协议更新为「报告 → 评论 → 移待验收」三步 - JSON 导入:
validateLedgerImport纯函数逐卡校验分类(新增 / 覆盖 / 无效+原因,文件内重复 id 拒绝;schemaVersion 不符明确报错;导入时残留running执行标记为失败——其结算守望已随源主机消亡);POST /import/preview干跑 +POST /import提交(merge 按 id upsert;replace 整册替换前自动写ledger.backup-<ts>.json);GUI「⬆ 导入」弹窗全流程可视化,整册替换双重确认 - 任务模板:host 侧
templates.jsonside file(首启播种内置 Bug 修复 / 发布检查 / 例行巡检);「+ 新建任务 ▼」下拉选模板预填全部配置(含清单与 preset);任务详情「⌗ 存为模板」;管理弹窗改名 / 删除 / 直接使用 - Diff 查看器:git face 新增
showCommit/showPathDiff(fail-soft,128KB / 2000 行封顶标注截断);详情页隔离块的提交行与未提交修改文件行点击即懒加载展开 diff;worktree 已删时自动回落主仓 - 测试 116 → 145;
taskboard_get详情渲染清单与报告标记;复制任务携带清单
0.3.3
- 修复执行会话拿不到工具(非标准模式):0.3.0 起部署引入 preset 体系后,工具不再是全局注册,而是各 preset 组合在会话创建时挂载(GUI 建会话走 apiproxy 的 composeAgent → presets.mount)。我们的执行服务此前直接 agents.create,不挂任何组合 → 会话无工具。现对齐该链路:执行会话按 preset 组合创建,
agentPreset记入会话头 - 任务级 preset 字段:创建任务时可选「执行模式(preset)」,默认预选部署默认 preset(本部署即标准模式)——即按你的决定「默认标准模式」;可切任意 preset(如梁神模式)或选「跟随部署默认」(不落字段,随部署默认变);编辑随时可改(每轮执行现组合,无锁定);复制任务携带;
taskboard_create增presetId参数;详情页显示 preset chip - 坏 preset 防护:preset 解析失败(不存在/损坏)→ 执行直接失败、原因写入执行记录、任务退回待办——不产出半组合会话(与 apiproxy 回滚语义一致)
- preset 目录用来自
agentPreset.list连接 RPC(无 roster 或离线时下拉隐藏,行为回落到裸组合);测试 111 → 116 项
0.3.2
- 修复 worktree 执行会话脱离项目组、工具不可用:0.3.0–0.3.1 把执行会话 cwd 指向 worktree 子目录,而 DSH 的会话模型要求 cwd === 工作区根目录(全等)——子目录导致会话无法挂入项目组(显示「未分组」),且文件沙箱边界与相对路径解析全部失效(agent 无法创建文件)。现改回:会话 cwd = 项目根(分组、工具、沙箱完整可用),worktree 绝对路径与边界纪律(命令 workdir 指向 worktree、文件读写用绝对路径、禁改主工作区其它文件、提交到任务分支)在开场框架行中明确下达。git 隔离与证据采集不受影响
0.3.1
- ↻ 续跑:详情页新增「续跑」——保留现有 worktree 与分支原状(上次的提交和未提交修改都在),在其上继续执行;基线取 worktree 当前 HEAD,证据只统计本轮新增提交。默认「立即执行」仍为全新基线(重置分支到主区 HEAD)
- 同仓库 git 操作互斥:同一仓库的建/删 worktree、合并、删分支在进程内串行执行,消除并发隔离执行之间的 index.lock 竞争
- 失败/取消也留证据:turn 出错或用户停止时,已产生的提交与未提交修改照样采集进执行记录(原先只在成功结算时采集)——中断的半成品可凭记录判断是否续跑
- 执行记录证据封顶:提交最多保留 50 条、未提交修改最多 100 行(均记录总数),超大改动不再撑爆每次全量重写的台账
- 合并空跑检测:分支没有领先主工作区的新提交时直接提示「无需合并」,不再产生假的「已合并」系统评论
- 物理清除连带清理:purge 任务前先检查 worktree——有未提交修改拒绝并列出文件;通过后连带删除 worktree 与任务分支
- 降级语义细化:降级原因区分「git 不可用(未安装/不在 PATH)」与「当前项目不是 git 仓库」;降级运行的开场提示明确警告会话正在主项目目录工作(先 git status、改动集中、结束说明改动文件)
- 全新检出提示:全新 worktree 的开场提示告知不含 node_modules/构建产物,构建测试前可能需重装依赖
- 诊断面板增强:新增 gitignore 建议列表(git 项目未忽略
.dsh-worktrees/一目了然,仍不自动修改);「悬挂执行中」更名为「执行中」 - README 注明 Worktree 隔离是协作约定而非沙箱;测试 97 → 111 项
0.3.0
- Git Worktree 隔离执行(旗舰):并发执行互不污染代码,验收即审分支
- 任务级隔离开关:新建表单「执行隔离」(默认 Worktree、记住上次选择;非 git 项目自动禁用并提示);
taskboard_create增isolation参数;复制任务携带;首次执行前可改、开始后锁定 - 执行链路:每次全新 worktree(
git worktree add --force到固定路径.dsh-worktrees/<任务ID>,固定分支task/<标题>+<任务ID>,标题清洗+截断、空标题回退纯 ID、改名不改分支);执行会话 cwd 指向 worktree;开场框架行引导 agent 把改动提交到该分支 - 结算采集:提交列表(hash+主题)、未提交修改警告、改动统计与文件数——「执行记录 ↔ commits 关联」并入本轮
- 验收操作(详情页):⇥ 合并(
--no-ff,主区脏/冲突原样报告且自动merge --abort复原)、🗑 删除 worktree(有未提交修改拒绝,可选连分支删除)、保留分支退回继续修改 - 安全规则:显式关闭 = 全程零 git 调用;非 git 项目 / git 不可用 / 超时全部自动降级原目录(isolationNote 注明原因,fail-soft:台账与执行永不因 git 失败而失败);合并的干净检查豁免插件自有的
.dsh-worktrees/目录;所有 git 操作带超时(查询 2s / 结构操作 15s) - host 新模块
src/host/git.ts:窄接口 GitFace(detect/prepare/collect/merge/remove/deleteBranch),exec 层可注入(测试零真 git);workspaces 路由下发 git 检测结果(60s 缓存);启动时对未忽略.dsh-worktrees/的项目提示 gitignore 建议(不自动改)
- 任务级隔离开关:新建表单「执行隔离」(默认 Worktree、记住上次选择;非 git 项目自动禁用并提示);
- ⚙ 健康诊断:台账基本项(修订号/任务数/悬挂执行中)+ 遗留 worktree 列表(台账无主但目录存在)一键清理(未注册目录 fs 兜底,有未提交修改仍拒绝)
taskboard_get详情输出隔离与分支信息;测试 67 → 97 项
0.2.2
- 待验收快捷操作:待验收列卡片上直接「✓ 完成 / ✗ 退回」,退回可附原因(可留空),退回与评语一次原子提交(移卡失败不会产生孤儿评论)
- 非法状态流转的 HTTP 状态码由 500 修正为 400
0.2.1
- 调整任务发起时的提示词
0.2.0
- 看板效率:顶栏新增搜索(标题/ID,大小写不敏感)、列内排序(默认/最近更新/紧急度/创建时间);筛选与排序按 localStorage 持久化(搜索不持久)
- 侧边栏状态条:「任务看板」入口同行右侧显示
待办|进行中|待验收计数(如0|1|2),三个数字分别着蓝/橙/紫状态色,悬停提示含义与实时数字,数字变化时上下滚动动画(增长上滚、减少下滚,尊重 prefers-reduced-motion) - 执行结算闭环:执行会话结束但未按协议交接(没评论/没移待验收)时,系统自动补评论并移入待验收——任务不再静默挂在进行中;执行失败也留系统评论
- 认领租约:认领超 30 分钟未动的任务,卡片与详情显示「⏱ 认领超时」;详情页新增「🔓 释放认领」一键退回待办
- 执行记录保留上限:每任务保留最近 20 条执行记录(详情页显示「+N 已清理」),定时任务的台账不再无限膨胀
- 全局并发上限:同时执行的会话数默认上限 3(
DSH_TASKBOARD_MAX_CONCURRENT可调);调度器满载时保留到期窗口不烧掉,下个 tick 重试 - 执行 Prompt 模板变量:
{{lastExecution}}(上次执行结果)、{{lastComments}}(最近 3 条评论)——巡检类定时任务能看到上次跑出了什么 - 复制任务:详情页「⧉ 复制」一键克隆全部配置为新卡
- 导出:顶栏「⬇ JSON」全量台账备份、「⬇ CSV」任务清单(带 BOM,Excel 直接打开)
- 状态色点:五列列头与「其它任务」三列的分类文字前显示状态色圆点(待规划灰/待办蓝/进行中橙/待验收紫/已完成绿/已删除红),与详情页状态 pill 同色系
- 执行会话跳转:详情页执行记录(倒序,最新在最上)点击会话短 ID 直接打开该执行会话,看板自动收起;已删除与已归档分开提示并带短 ID;运行时服务惰性解析、会话列表镜像滞后时自动刷新重查一次;短 ID 剥离
taskboard-中缀,各记录可区分
0.1.3
- 执行竞态与持锁修复:
- 「立即执行」原子闸:in-progress 检查移入串行写队列,重复点击 / 调度重叠最多开一个执行会话
- 认领改为显式
claimedBy/claimedAt字段(原先从 updatedBy 推断,用户编辑会误清持锁);执行期间任务由执行会话持有,其他会话不可移动;旧台账加载时自动迁移 - 执行失败自动回退 todo(原先永久卡在 in_progress);host 重启后残留的 running 执行标记为 failed 并归还任务;成功结算后释放持锁
- 执行可取消:详情页「■ 停止执行」——停止执行会话、执行记录标记 cancelled、任务回到待办
- 模型校验:建卡/改卡的固定模型做结构校验 + provider 路由存在性校验(host llm 运行时不可达时只做前者)
- 台账安全:
store.snapshot()/get()返回冻结副本,外部修改直接抛错,杜绝绕过版本号的原地改数据 - 调度器:tick 前先加载台账(修复 host 重启后首个 tick 读到空表导致定时任务不触发);启动补偿定时器随 dispose 清理
- 其它:执行记录会话 ID 点击复制;详情页显示持锁会话;删除死代码(
store.flush/ routestaskPath)
0.1.2
- 看板拖拽:所有列的卡片可互相拖动(按状态机校验合法流转,非法拖放弹窗提示);正在执行的任务拖动会被拦截,提示「该任务正在由【任务名】会话执行,不能拖动」
- 执行会话体验:执行会话标题固定为任务名(经
sessionTitle.rename写入,不会被自动重命名覆盖);首条消息以正常用户消息呈现(不再是插件上下文行) - 交互优化:
- 新建/编辑弹框新增「⚡ 立即执行」按钮(保存后直接发起执行)
- 详情页「立即执行」移至「编辑」按钮旁
- 「+ 新建任务」移至看板标题统计旁
- 状态流转按钮文案统一为「移至→{状态}」
- 弹窗:原生
alert()全部替换为主题化模态弹窗(Esc/遮罩可关)
0.1.1
- 初始 npm 发布:看板协作、8 个 agent 工具、手动/cron 执行、SSE 实时视图
License: Apache-2.0
收录徽章
[](https://deepseek-plugin.org/plugins/cloader/dsh-taskboard)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。