dsh-taskboard 0.1.0 → 0.1.1
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 +27 -147
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,169 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
DeepSeek Harness(DSH)的 **Agent 任务看板插件**:人把工作拆成卡片挂上看板,agent 会话通过 `taskboard_*` 工具认领、推进、评论、移交,人最终验收。双向协作,不是单向 todo 列表。
|
|
4
|
-
|
|
5
|
-
```
|
|
6
|
-
人在 GUI 建卡(选项目/紧急度/模型/执行方式)
|
|
7
|
-
│
|
|
8
|
-
▼
|
|
9
|
-
看板 ◄──SSE 实时刷新──┐
|
|
10
|
-
│ │ agent 会话内:
|
|
11
|
-
[手动执行/定时触发] │ taskboard_get / comment_add / move
|
|
12
|
-
│ ▼
|
|
13
|
-
▼ 卡片 → in_progress →(实现+自验)→ in_review
|
|
14
|
-
在任务项目里新建会话 agent 到此为止,永远到不了 done
|
|
15
|
-
(指定模型,干净上下文)
|
|
16
|
-
│
|
|
17
|
-
▼
|
|
18
|
-
人在看板上确认 → done(唯一入口)
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## 功能特性
|
|
22
|
-
|
|
23
|
-
**Host 侧(agent 工具 + 台账 + 调度)**
|
|
1
|
+
[](https://www.npmjs.com/package/dsh-taskboard)
|
|
2
|
+
[](https://github.com/cloader/dsh-taskboard/blob/main/LICENSE)
|
|
24
3
|
|
|
25
|
-
-
|
|
26
|
-
- **任务挂项目**:项目直接映射 DSH workspace,零新实体;认领(todo→in_progress)校验调用会话归属,跨项目认领被拒
|
|
27
|
-
- **紧急度三色**:urgent 红 / normal 紫 / relaxed 蓝,贯穿卡片、筛选、详情
|
|
28
|
-
- **每任务可固定模型**:执行时创建会话即生效;未指定走部署默认模型
|
|
29
|
-
- **两种执行方式**:认领制(项目内会话认领)或定时执行(host 侧 cron,关掉浏览器照样跑,错过窗口跳过不补跑)
|
|
30
|
-
- **一键真实执行**:手动「执行」在任务项目内新建全新会话(干净上下文)提交任务 prompt,回合结算记入执行记录
|
|
31
|
-
- **乐观并发**:所有写操作带 `ifVersion`,冲突返回 `version_conflict`
|
|
32
|
-
- **完整归因**:每次变更记录 actor(user / agent+sessionId),评论区分作者
|
|
33
|
-
- **host 权威台账**:`~/.dsh/dsh-taskboard.json` 原子持久化,全局 revision 单调递增,SSE 推送 + 断线全量对账
|
|
34
|
-
|
|
35
|
-
**协议硬闸(代码级强制,不靠 prompt 自觉)**
|
|
36
|
-
|
|
37
|
-
- agent 移卡到 `done` 一律 `forbidden` —— 完成只能由人在 GUI 确认
|
|
38
|
-
- 认领要求会话 cwd 解析到任务所属 workspace(跨项目 = `workspace_mismatch`)
|
|
39
|
-
- 任务被某 agent 会话持有期间,其他会话不可抢占(任何移动 `forbidden`)
|
|
40
|
-
- agent 不可篡改任务的 model / execution 配置(归创建者/用户所有)
|
|
41
|
-
|
|
42
|
-
**Client 侧(看板 UI)**
|
|
43
|
-
|
|
44
|
-
- **五列看板**:待规划 / 待办 / 进行中 / 待验收 / 已完成;blocked 角标不占列;canceled / archived / 已删除收进「其它任务」页
|
|
45
|
-
- **筛选栏**:项目下拉 + 紧急度三色 chip 多选
|
|
46
|
-
- **任务卡片**:紧急度左缘色条、模型 / ⏰ 定时(下次运行时间)/ 受阻 / 最近执行结果角标、评论计数;backlog ↔ todo 拖拽
|
|
47
|
-
- **新建 / 编辑任务弹窗**(`TaskFormModal`,新建与编辑共用):
|
|
48
|
-
- 头部图标 + 副标题、双列网格表单、底部实时校验提示 + 操作按钮
|
|
49
|
-
- 紧急度色点卡片三选(各带副提示)、执行方式分段选择(认领制 / 定时)
|
|
50
|
-
- Cron 预设 chip 高亮选中,**实时校验**(非法表达式红框)+ **下次运行时间预览**(与 host 调度器同一套纯函数)
|
|
51
|
-
- 模型下拉读运行时已配置目录,「默认模型」为第一项
|
|
52
|
-
- Esc 关闭、自动聚焦标题、保存提示版本变化
|
|
53
|
-
- **任务编辑**:详情面板「✎ 编辑」回填全部字段;GUI 作为 owner surface 可改标题 / 描述 / Prompt / 紧急度 / **项目改绑** / 执行方式 / 模型(含清除回默认)
|
|
54
|
-
- **详情面板**:状态流转(done 二次确认)、受阻标记、用户/agent 气泡评论流、执行记录时间线(结果/耗时/会话短 id/错误摘要)、危险区(软删除→物理清除需确认)
|
|
55
|
-
- **主题适配**:全部颜色走外壳 `--dsw-alias-*` 设计令牌,浅色 / 深色主题与皮肤自动跟随
|
|
56
|
-
|
|
57
|
-
## 核心概念
|
|
4
|
+
# dsh-taskboard
|
|
58
5
|
|
|
59
|
-
|
|
60
|
-
|---|---|
|
|
61
|
-
| 项目 | 直接映射 DSH workspace(无新实体)。任务创建时必须选一个 |
|
|
62
|
-
| 紧急度 | `urgent` 红 / `normal` 紫 / `relaxed` 蓝,看板列内以色条区分,支持筛选 |
|
|
63
|
-
| 状态机 | `backlog → todo → in_progress → in_review → done`,旁路 `canceled` / `archived`;`blocked` 是布尔标记不是状态 |
|
|
64
|
-
| 执行方式 | `claim`(项目内会话认领)或 `scheduled`(host 侧 cron 定时触发) |
|
|
65
|
-
| 模型 | 每任务可固定 `{provider, model}`;执行时应用到新建会话,未指定用部署默认模型 |
|
|
66
|
-
| 乐观并发 | 所有写操作带 `ifVersion`,冲突返回 `version_conflict`(重读再试一次即可) |
|
|
67
|
-
| 归因 | 每次变更记录 actor(user / agent+sessionId),评论挂 threadId |
|
|
6
|
+
DeepSeek Harness 的**任务看板插件**:人建卡、agent 认领执行、人验收。任务挂项目(workspace)、可指定模型、支持手动与定时执行,全流程双向协作。
|
|
68
7
|
|
|
69
|
-
##
|
|
8
|
+
## 界面
|
|
70
9
|
|
|
71
|
-
|
|
72
|
-
|---|---|
|
|
73
|
-
| `taskboard_list` | 按项目/状态/紧急度过滤列卡(开始工作前先看) |
|
|
74
|
-
| `taskboard_get` | 读单卡全文(描述/prompt/评论/版本) |
|
|
75
|
-
| `taskboard_create` | 建卡(需要 agent 身份) |
|
|
76
|
-
| `taskboard_update` | 改标题/描述/prompt/紧急度/blocked(带 ifVersion) |
|
|
77
|
-
| `taskboard_move` | 移动状态(带 ifVersion;**代码级拒绝 agent 移到 done**) |
|
|
78
|
-
| `taskboard_comment_add` | 追加进度/报告评论 |
|
|
79
|
-
| `taskboard_comments` | 列评论(先读再决定开工) |
|
|
80
|
-
| `taskboard_delete` | 软删除(agent 只能标记,人在 GUI 清除) |
|
|
10
|
+
<p align="center"><img src="https://raw.githubusercontent.com/cloader/dsh-taskboard/main/img/board.png" alt="任务看板" width="880"></p>
|
|
81
11
|
|
|
82
|
-
|
|
12
|
+
<p align="center"><img src="https://raw.githubusercontent.com/cloader/dsh-taskboard/main/img/modal.png" alt="新建任务" width="440"></p>
|
|
83
13
|
|
|
84
|
-
##
|
|
14
|
+
## 核心功能
|
|
85
15
|
|
|
86
|
-
|
|
16
|
+
**看板协作**
|
|
17
|
+
- 五列看板(待规划 / 待办 / 进行中 / 待验收 / 已完成)+ 受阻标记,SSE 实时刷新
|
|
18
|
+
- 任务挂项目:认领校验会话归属,跨项目不可抢
|
|
19
|
+
- 紧急度三色(紧急/一般/不急)筛选与色条
|
|
20
|
+
- 新建/编辑弹窗:项目、模型、紧急度、执行方式、cron 实时校验与下次运行预览
|
|
21
|
+
- 详情面板:状态流转(done 仅限人工)、agent/用户评论流、执行记录回链会话
|
|
87
22
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
4. 任务 prompt 作为普通用户消息提交,消息头带任务 ID 与状态说明;
|
|
92
|
-
5. 回合结算:成功 → `succeeded`;回合错误 → `failed`(错误入台账)。
|
|
23
|
+
**Agent 工具(taskboard_\*)**
|
|
24
|
+
- 8 个工具:查板 / 建卡 / 改卡 / 移卡 / 评论 / 软删除,任何会话可用
|
|
25
|
+
- 代码级协议闸:agent 永远移不到 done;任务被持有时不可抢占;model/execution 对 agent 只读
|
|
93
26
|
|
|
94
|
-
|
|
27
|
+
**执行**
|
|
28
|
+
- 手动执行或 cron 定时:每次执行在任务项目内新建全新会话(干净上下文、可指定模型)
|
|
29
|
+
- host 侧调度:关掉浏览器照常触发;错过窗口跳过不补跑
|
|
30
|
+
- 乐观并发(ifVersion)+ 完整归因(谁改的、哪个会话执行的)
|
|
95
31
|
|
|
96
32
|
## 安装
|
|
97
33
|
|
|
98
|
-
**GitHub 源安装**(收录 [awesome-dsh-plugin 精选列表](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)后,dshmarket 市场里的一键安装走的也是这条路):
|
|
99
|
-
|
|
100
34
|
```bash
|
|
101
|
-
dsh plugin --profile <name> add
|
|
35
|
+
dsh plugin --profile <name> add dsh-taskboard # npm(推荐,预构建免授权)
|
|
36
|
+
dsh plugin --profile <name> add github:cloader/dsh-taskboard # GitHub 源
|
|
102
37
|
```
|
|
103
38
|
|
|
104
|
-
>
|
|
105
|
-
|
|
106
|
-
**npm 裸名安装**(需先将包发布到 npm;同样是预构建,免构建授权):
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
dsh plugin --profile <name> add dsh-taskboard
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
本地 link 开发:profile 的 `package.json`:
|
|
113
|
-
|
|
114
|
-
```json
|
|
115
|
-
{
|
|
116
|
-
"dependencies": {
|
|
117
|
-
"dsh-taskboard": "link:D:/path/to/dsh-taskboard"
|
|
118
|
-
},
|
|
119
|
-
"dsh": {
|
|
120
|
-
"profile": {
|
|
121
|
-
"bundles": [
|
|
122
|
-
"@deepseek-ai/dsh-base",
|
|
123
|
-
"@deepseek-ai/dsh-web-app",
|
|
124
|
-
"dsh-taskboard"
|
|
125
|
-
]
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
然后 `dsh plugin --profile <name> add link:D:/path/to/dsh-taskboard`。
|
|
132
|
-
|
|
133
|
-
> ⚠️ 官方 `@deepseek-ai/dsh-*` 包只写进 `bundles` 列表,**不要** `plugin add` 进 profile dependencies(会引发 SDK 双实例遮蔽,详见项目根 README 的踩坑记录)。
|
|
134
|
-
|
|
135
|
-
host 侧改动需重启 `dsh web`;client 侧改动 rebuild 后刷新页面。
|
|
39
|
+
> 官方 `@deepseek-ai/dsh-*` 包只写进 profile 的 `bundles` 列表,不要 `plugin add` 进 dependencies(避免 SDK 双实例遮蔽)。
|
|
136
40
|
|
|
137
41
|
## 开发
|
|
138
42
|
|
|
139
43
|
```bash
|
|
140
|
-
npm install
|
|
141
|
-
npm
|
|
142
|
-
|
|
143
|
-
npm run typecheck
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## 架构
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
src/
|
|
150
|
-
shared/protocol.ts # 状态机/紧急度/cron/记录类型(host+client 共享)
|
|
151
|
-
shared/api.ts # HTTP/SSE 线上契约
|
|
152
|
-
host/
|
|
153
|
-
store.ts # 台账:串行 mutate、原子持久化、订阅
|
|
154
|
-
tools.ts # 8 个 taskboard_* 工具 + 代码级协议闸
|
|
155
|
-
sdk.ts # SDK 兼容层(零运行时官方包 import)
|
|
156
|
-
protocol-text.ts # agent 工作流协议 systemPrompt section
|
|
157
|
-
execution.ts # 执行服务(新会话/模型/结算)
|
|
158
|
-
scheduler.ts # host 侧 cron tick
|
|
159
|
-
routes.ts # JSON + SSE HTTP 面
|
|
160
|
-
client/
|
|
161
|
-
index.ts # 注入入口(connection)
|
|
162
|
-
api.ts controller.ts # fetch/SSE + useSyncExternalStore 状态源
|
|
163
|
-
board/*.tsx # 看板视图(五列/筛选/卡片/详情/新建·编辑弹窗 TaskFormModal)
|
|
164
|
-
sidebar-entry.ts board-mount.tsx styles.ts
|
|
165
|
-
tests/ # vitest:protocol/tools/execution/routes/client + smoke-host
|
|
166
|
-
e2e/ # dev-server 手工验证脚本(P0–P4,见 tests/e2e/README.md)
|
|
44
|
+
npm install && npm run build # host ESM + client CJS 双构建
|
|
45
|
+
npm test # vitest 41 项
|
|
46
|
+
node scripts/screenshot.mjs # 重新生成 img/ 截图(需本机 Edge)
|
|
167
47
|
```
|
|
168
48
|
|
|
169
49
|
License: Apache-2.0
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-taskboard",
|
|
3
3
|
"description": "Agent-first task board for the DSH web GUI: host-authoritative task ledger with taskboard_* agent tools, project (= workspace) claim boundaries, per-task model execution in fresh sessions, host-side cron scheduling, and a live SSE kanban view. Mounts via the official dsh plugin system — no DSH source changes.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|