dsh-taskboard 0.2.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -4
- package/lib/client.js +635 -23
- package/lib/host/execution.js +194 -54
- package/lib/host/execution.js.map +1 -1
- package/lib/host/git.js +234 -0
- package/lib/host/git.js.map +1 -0
- package/lib/host/routes.js +252 -4
- package/lib/host/routes.js.map +1 -1
- package/lib/host/tools.js +16 -2
- package/lib/host/tools.js.map +1 -1
- package/lib/index.js +17 -2
- package/lib/index.js.map +1 -1
- package/lib/shared/api.js.map +1 -1
- package/lib/shared/protocol.js +10 -1
- package/lib/shared/protocol.js.map +1 -1
- package/package.json +74 -74
- package/src/client/api.ts +19 -3
- package/src/client/board/TaskBoard.tsx +73 -0
- package/src/client/board/TaskDetail.tsx +173 -1
- package/src/client/board/TaskFormModal.tsx +100 -1
- package/src/client/controller.ts +89 -6
- package/src/client/index.ts +18 -1
- package/src/client/styles.ts +45 -0
- package/src/host/execution.ts +291 -65
- package/src/host/git.ts +293 -0
- package/src/host/routes.ts +268 -5
- package/src/host/tools.ts +17 -0
- package/src/index.ts +24 -1
- package/src/shared/api.ts +35 -3
- package/src/shared/protocol.ts +64 -0
- package/src/shared/version.ts +1 -1
package/README.md
CHANGED
|
@@ -18,8 +18,8 @@ DeepSeek Harness 的**任务看板插件**:人建卡、agent 认领执行、
|
|
|
18
18
|
- 任务挂项目:认领校验会话归属,跨项目不可抢
|
|
19
19
|
- 紧急度三色(紧急/一般/不急)筛选与色条;搜索(标题/ID)与列内排序,筛选排序持久化
|
|
20
20
|
- 列头状态色圆点:待规划灰 / 待办蓝 / 进行中橙 / 待验收紫 / 已完成绿 / 已删除红
|
|
21
|
-
- 新建/编辑弹窗:项目、模型、紧急度、执行方式、cron
|
|
22
|
-
- 详情面板:状态流转(done 仅限人工)、agent/用户评论流、执行记录(倒序,最新在最上;会话 ID
|
|
21
|
+
- 新建/编辑弹窗:项目、模型、紧急度、执行方式、cron 实时校验与下次运行预览、执行隔离开关
|
|
22
|
+
- 详情面板:状态流转(done 仅限人工)、agent/用户评论流、执行记录(倒序,最新在最上;会话 ID 点击跳转打开该执行会话;已删除/已归档分开提示)、停止执行、Worktree 隔离块(分支 / 提交 / 改动统计 / 合并与清理)
|
|
23
23
|
- 待验收列卡片快捷操作:「✓ 完成」一键验收、「✗ 退回」退回待办并可附退回原因(agent 开工前会读)
|
|
24
24
|
|
|
25
25
|
**Agent 工具(taskboard_\*)**
|
|
@@ -27,9 +27,13 @@ DeepSeek Harness 的**任务看板插件**:人建卡、agent 认领执行、
|
|
|
27
27
|
- 代码级协议闸:agent 永远移不到 done;任务被持有时不可抢占;model/execution 对 agent 只读
|
|
28
28
|
|
|
29
29
|
**执行**
|
|
30
|
-
- 手动执行或 cron
|
|
30
|
+
- 手动执行或 cron 定时:每次执行在任务项目内新建全新会话(干净上下文、可指定模型、可指定 preset);开场两条消息同一回合送达——插件上下文行携带任务框架与交接协议(含失败回退路径),卡片内容(提示词或标题+描述)以正常用户消息呈现
|
|
31
|
+
- **任务级 preset(0.3.3)**:新建/编辑表单「执行模式(preset)」下拉——执行会话按该 preset 组合(工具集与人设由此而来,对齐 GUI 新会话的组合方式);默认预选部署默认 preset(本部署即标准模式),也可选「跟随部署默认」;preset 损坏时执行直接失败并把原因写进执行记录(不产出半组合会话);随时可改,下轮执行生效
|
|
32
|
+
- **Git Worktree 隔离执行(0.3.0)**:任务级开关(默认开、记住上次选择),每次执行在 `<项目>/.dsh-worktrees/<任务ID>` 独立 worktree 上进行,分支 `task/<标题>+<任务ID>`(首次创建后定死,改名不改);执行会话归属项目根目录(分组、工具与文件沙箱完整可用——DSH 要求会话 cwd 即工作区根,0.3.2 修正),worktree 路径与边界纪律在开场指令中明确下达;结算自动采集提交列表 / 未提交修改警告 / 改动统计;非 git 项目或 git 不可用时自动降级原目录执行(执行记录注明降级原因,台账与执行主流程永不因 git 失败而失败);验收时详情页一键 `--no-ff` 合并到主工作区(主区脏或冲突原样报告,不自动解决)、删除 worktree(有未提交修改时拒绝)、可选删分支;支持「↻ 续跑」在现有 worktree/分支上继续执行(保留上次改动与提交)
|
|
33
|
+
> Worktree 隔离是协作约定而非沙箱:执行会话拥有完整工具权限,隔离依赖分支约定,不适用于运行不可信代码的场景。
|
|
31
34
|
- host 侧调度:关掉浏览器照常触发;错过窗口跳过不补跑
|
|
32
35
|
- 乐观并发(ifVersion)+ 完整归因(谁改的、哪个会话执行的)
|
|
36
|
+
- ⚙ 健康诊断:台账基本项 + 遗留 worktree(台账无主但目录存在)一键清理
|
|
33
37
|
|
|
34
38
|
## 安装
|
|
35
39
|
|
|
@@ -44,12 +48,48 @@ dsh plugin --profile <name> add github:cloader/dsh-taskboard # GitHub 源
|
|
|
44
48
|
|
|
45
49
|
```bash
|
|
46
50
|
npm install && npm run build # host ESM + client CJS 双构建
|
|
47
|
-
npm test # vitest
|
|
51
|
+
npm test # vitest 116 项
|
|
52
|
+
node tests/manual-git-e2e.mjs # 真 git 端到端手测(worktree 全链路 + 续跑)
|
|
48
53
|
node scripts/screenshot.mjs # 重新生成 img/ 截图(需本机 Edge)
|
|
49
54
|
```
|
|
50
55
|
|
|
51
56
|
## 升级日志
|
|
52
57
|
|
|
58
|
+
### 0.3.3
|
|
59
|
+
|
|
60
|
+
- **修复执行会话拿不到工具(非标准模式)**:0.3.0 起部署引入 preset 体系后,工具不再是全局注册,而是各 preset 组合在会话创建时挂载(GUI 建会话走 apiproxy 的 composeAgent → presets.mount)。我们的执行服务此前直接 agents.create,不挂任何组合 → 会话无工具。现对齐该链路:执行会话按 preset 组合创建,`agentPreset` 记入会话头
|
|
61
|
+
- **任务级 preset 字段**:创建任务时可选「执行模式(preset)」,默认预选部署默认 preset(本部署即标准模式)——即按你的决定「默认标准模式」;可切任意 preset(如梁神模式)或选「跟随部署默认」(不落字段,随部署默认变);编辑随时可改(每轮执行现组合,无锁定);复制任务携带;`taskboard_create` 增 `presetId` 参数;详情页显示 preset chip
|
|
62
|
+
- **坏 preset 防护**:preset 解析失败(不存在/损坏)→ 执行直接失败、原因写入执行记录、任务退回待办——不产出半组合会话(与 apiproxy 回滚语义一致)
|
|
63
|
+
- preset 目录用来自 `agentPreset.list` 连接 RPC(无 roster 或离线时下拉隐藏,行为回落到裸组合);测试 111 → 116 项
|
|
64
|
+
### 0.3.2
|
|
65
|
+
|
|
66
|
+
- **修复 worktree 执行会话脱离项目组、工具不可用**:0.3.0–0.3.1 把执行会话 cwd 指向 worktree 子目录,而 DSH 的会话模型要求 cwd === 工作区根目录(全等)——子目录导致会话无法挂入项目组(显示「未分组」),且文件沙箱边界与相对路径解析全部失效(agent 无法创建文件)。现改回:会话 cwd = 项目根(分组、工具、沙箱完整可用),worktree 绝对路径与边界纪律(命令 workdir 指向 worktree、文件读写用绝对路径、禁改主工作区其它文件、提交到任务分支)在开场框架行中明确下达。git 隔离与证据采集不受影响
|
|
67
|
+
|
|
68
|
+
### 0.3.1
|
|
69
|
+
|
|
70
|
+
- **↻ 续跑**:详情页新增「续跑」——保留现有 worktree 与分支原状(上次的提交和未提交修改都在),在其上继续执行;基线取 worktree 当前 HEAD,证据只统计本轮新增提交。默认「立即执行」仍为全新基线(重置分支到主区 HEAD)
|
|
71
|
+
- **同仓库 git 操作互斥**:同一仓库的建/删 worktree、合并、删分支在进程内串行执行,消除并发隔离执行之间的 index.lock 竞争
|
|
72
|
+
- **失败/取消也留证据**:turn 出错或用户停止时,已产生的提交与未提交修改照样采集进执行记录(原先只在成功结算时采集)——中断的半成品可凭记录判断是否续跑
|
|
73
|
+
- **执行记录证据封顶**:提交最多保留 50 条、未提交修改最多 100 行(均记录总数),超大改动不再撑爆每次全量重写的台账
|
|
74
|
+
- **合并空跑检测**:分支没有领先主工作区的新提交时直接提示「无需合并」,不再产生假的「已合并」系统评论
|
|
75
|
+
- **物理清除连带清理**:purge 任务前先检查 worktree——有未提交修改拒绝并列出文件;通过后连带删除 worktree 与任务分支
|
|
76
|
+
- **降级语义细化**:降级原因区分「git 不可用(未安装/不在 PATH)」与「当前项目不是 git 仓库」;降级运行的开场提示明确警告会话正在主项目目录工作(先 git status、改动集中、结束说明改动文件)
|
|
77
|
+
- **全新检出提示**:全新 worktree 的开场提示告知不含 node_modules/构建产物,构建测试前可能需重装依赖
|
|
78
|
+
- **诊断面板增强**:新增 gitignore 建议列表(git 项目未忽略 `.dsh-worktrees/` 一目了然,仍不自动修改);「悬挂执行中」更名为「执行中」
|
|
79
|
+
- README 注明 Worktree 隔离是协作约定而非沙箱;测试 97 → 111 项
|
|
80
|
+
|
|
81
|
+
### 0.3.0
|
|
82
|
+
|
|
83
|
+
- **Git Worktree 隔离执行(旗舰)**:并发执行互不污染代码,验收即审分支
|
|
84
|
+
- 任务级隔离开关:新建表单「执行隔离」(默认 Worktree、记住上次选择;非 git 项目自动禁用并提示);`taskboard_create` 增 `isolation` 参数;复制任务携带;首次执行前可改、开始后锁定
|
|
85
|
+
- 执行链路:每次全新 worktree(`git worktree add --force` 到固定路径 `.dsh-worktrees/<任务ID>`,固定分支 `task/<标题>+<任务ID>`,标题清洗+截断、空标题回退纯 ID、改名不改分支);执行会话 cwd 指向 worktree;开场框架行引导 agent 把改动提交到该分支
|
|
86
|
+
- 结算采集:提交列表(hash+主题)、未提交修改警告、改动统计与文件数——「执行记录 ↔ commits 关联」并入本轮
|
|
87
|
+
- 验收操作(详情页):⇥ 合并(`--no-ff`,主区脏/冲突原样报告且自动 `merge --abort` 复原)、🗑 删除 worktree(有未提交修改拒绝,可选连分支删除)、保留分支退回继续修改
|
|
88
|
+
- 安全规则:显式关闭 = 全程零 git 调用;非 git 项目 / git 不可用 / 超时全部自动降级原目录(isolationNote 注明原因,fail-soft:台账与执行永不因 git 失败而失败);合并的干净检查豁免插件自有的 `.dsh-worktrees/` 目录;所有 git 操作带超时(查询 2s / 结构操作 15s)
|
|
89
|
+
- host 新模块 `src/host/git.ts`:窄接口 GitFace(detect/prepare/collect/merge/remove/deleteBranch),exec 层可注入(测试零真 git);workspaces 路由下发 git 检测结果(60s 缓存);启动时对未忽略 `.dsh-worktrees/` 的项目提示 gitignore 建议(不自动改)
|
|
90
|
+
- **⚙ 健康诊断**:台账基本项(修订号/任务数/悬挂执行中)+ 遗留 worktree 列表(台账无主但目录存在)一键清理(未注册目录 fs 兜底,有未提交修改仍拒绝)
|
|
91
|
+
- `taskboard_get` 详情输出隔离与分支信息;测试 67 → 97 项
|
|
92
|
+
|
|
53
93
|
### 0.2.2
|
|
54
94
|
|
|
55
95
|
- **待验收快捷操作**:待验收列卡片上直接「✓ 完成 / ✗ 退回」,退回可附原因(可留空),退回与评语一次原子提交(移卡失败不会产生孤儿评论)
|