@godv61/dsh-task-engine 0.30.1 → 0.30.2
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/.adaptive-test.mjs +92 -83
- package/.evidence-test.mjs +16 -16
- package/.resource-test.mjs +19 -19
- package/.roundtrip-test.mjs +5 -5
- package/.sonar-credential-test.mjs +38 -38
- package/.sonarlint-local-test.mjs +13 -10
- package/.workflow-test.mjs +37 -37
- package/README.md +217 -216
- package/docs/development.md +45 -45
- package/docs/manual.html +175 -178
- package/lib/client.js +302 -142
- package/lib/client.js.map +3 -3
- package/lib/controller.d.ts +13 -0
- package/lib/controller.js +20 -1
- package/lib/controller.js.map +1 -1
- package/lib/dev-task.js +5 -4
- package/lib/dev-task.js.map +1 -1
- package/lib/sonar-report.js +11 -1
- package/lib/sonar-report.js.map +1 -1
- package/lib/sonar.d.ts +6 -0
- package/lib/sonar.js.map +1 -1
- package/lib/sonarlint-install.d.ts +7 -0
- package/lib/sonarlint-install.js +150 -0
- package/lib/sonarlint-install.js.map +1 -0
- package/lib/sonarlint-local.d.ts +5 -1
- package/lib/sonarlint-local.js +35 -21
- package/lib/sonarlint-local.js.map +1 -1
- package/package.json +1 -1
- package/scripts/verify-package.mjs +3 -3
- package/skills/code-review/SKILL.md +4 -4
- package/skills/eng-delivery/SKILL.md +2 -2
- package/skills/task-orchestration/SKILL.md +1 -1
- package/skills/test-validation/SKILL.md +3 -3
package/README.md
CHANGED
|
@@ -1,216 +1,217 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/godv61/dsh-task-engine/main/.github/assets/readme-hero.svg" alt="DSH Task Engine:从项目知识到可验证交付" width="100%" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
<h1 align="center">DSH Task Engine</h1>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
为 <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a> 提供按需求运行的工程化开发引擎。<br />
|
|
9
|
-
让项目知识、团队规范、测试证据和代码审核在每次开发中真正生效。
|
|
10
|
-
</p>
|
|
11
|
-
|
|
12
|
-
<p align="center">
|
|
13
|
-
<a href="https://www.npmjs.com/package/@godv61/dsh-task-engine"><img src="https://img.shields.io/npm/v/%40godv61%2Fdsh-task-engine?style=flat-square&color=0d9488" alt="npm 版本" /></a>
|
|
14
|
-
<a href="https://github.com/godv61/dsh-task-engine/actions/workflows/verify.yml"><img src="https://github.com/godv61/dsh-task-engine/actions/workflows/verify.yml/badge.svg" alt="自动验证状态" /></a>
|
|
15
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-334155?style=flat-square" alt="MIT License" /></a>
|
|
16
|
-
</p>
|
|
17
|
-
|
|
18
|
-
<p align="center">
|
|
19
|
-
<a href="#安装与检查">安装</a> ·
|
|
20
|
-
<a href="#首次初始化项目">项目初始化</a> ·
|
|
21
|
-
<a href="#执行一个开发任务">任务操作</a> ·
|
|
22
|
-
<a href="#按项目配置-sonarqube">SonarQube</a> ·
|
|
23
|
-
<a href="docs/manual.html">HTML 使用手册</a>
|
|
24
|
-
</p>
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## 它解决什么问题
|
|
29
|
-
|
|
30
|
-
一个项目会有许多需求、分支和会话。团队需要复用编码约定,但不同需求不该被迫走完全相同的步骤。
|
|
31
|
-
|
|
32
|
-
| 常见问题 | Task Engine 的做法 |
|
|
33
|
-
| --- | --- |
|
|
34
|
-
| 大模型反复询问项目结构、版本和编码习惯 | 初始化项目地图、技术栈与开发 Skill;Rule 保存团队约束。 |
|
|
35
|
-
| 小改动流程太重,大改动又缺少分析与拆解 | 按**每项需求**评估复杂度,选择低、中、高、超高四档路径。 |
|
|
36
|
-
| 会话说“测试通过”,实际没有执行测试 | `dev_task` 保存命令和回执;Maven 测试必须证明至少执行一个测试。 |
|
|
37
|
-
| 审核问题散落在聊天记录里 | 任务台账展示阶段、实施项、测试与审核;可选 Sonar 报告落到项目目录。 |
|
|
38
|
-
|
|
39
|
-
> **项目配置是团队知识,流程选择属于当前需求。** 同一项目的普通会话不会自动进入工程流程;不同工程任务也可以选择不同档次。
|
|
40
|
-
|
|
41
|
-
```text
|
|
42
|
-
项目初始化 每个新需求 交付
|
|
43
|
-
结构地图 · 技术栈 · Skill/Rule → 复杂度评估 → 阶段执行 → 测试 → 代码审核 → 完成
|
|
44
|
-
│ │ │
|
|
45
|
-
└── 项目级知识复用 ──────┘ └── 台账与证据
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## 安装与检查
|
|
49
|
-
|
|
50
|
-
插件必须安装到**实际启动的 DSH profile**。以下以 Web profile `web` 为例:
|
|
51
|
-
|
|
52
|
-
```sh
|
|
53
|
-
dsh plugin --profile web add @godv61/dsh-task-engine
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
如果从 DSH 源码运行,在 DSH 根目录执行:
|
|
57
|
-
|
|
58
|
-
```sh
|
|
59
|
-
pnpm dsh plugin --profile web add @godv61/dsh-task-engine
|
|
60
|
-
pnpm dsh web --no-open
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
安装后关闭旧的 DSH Web 进程,再以同一个 profile 启动。打开页面,检查侧边栏是否出现**工程任务**,以及新会话的模式菜单是否能选择**工程化开发引擎**。只在普通项目目录执行 `npm install` 不会把插件挂进 DSH profile;若没有入口,先核对安装和启动使用的是不是同一个 profile,再看 Web 启动日志。
|
|
64
|
-
|
|
65
|
-
## 首次初始化项目
|
|
66
|
-
|
|
67
|
-
1. 在**工程任务**顶部选择代码库根目录作为工作区,并确认当前 Git 分支。
|
|
68
|
-
2. 打开**项目初始化 → 项目 Skill / Rule 初始化**,点击**扫描并生成提案**。工作台会读取项目清单与部分源码,用已配置的默认模型生成 Skill / Rule 草稿;无需复制请求到会话。生成过程可能需要一两分钟。
|
|
69
|
-
3. 逐项检查草稿正文、简介、元技能挂载及 Rule 关联。可直接修改或移除不合适的建议;修改后点击**检查修改**。
|
|
70
|
-
4. 检查通过后点击**确认写入项目**。工作台再次核对项目地图覆盖、同名文件和配置版本,只写入刚审阅的提案。若项目配置或文件已变化,重新生成或检查。不要把某一条需求的实现方案当成整个项目的结构地图。
|
|
71
|
-
|
|
72
|
-
| 阶段 | 会发生什么 | 重点检查 |
|
|
73
|
-
| --- | --- | --- |
|
|
74
|
-
| 扫描并生成提案 | 只读扫描目录、构建清单、代表性源码,用默认模型生成草稿 | 后端、前端和脚本等主要模块是否都被发现。 |
|
|
75
|
-
| 检查修改 | 校验项目地图、Skill、Rule、挂载关系和同名冲突 | 内容是否覆盖整个仓库;版本和规则是否有代码证据。 |
|
|
76
|
-
| 确认写入项目 | 按同一提案哈希写入文件 | 已有同名资源不会被静默覆盖。 |
|
|
77
|
-
|
|
78
|
-
通常会生成 `.dsh/skills/<项目名>-project-map/SKILL.md`、技术栈与后端/前端编码 Skill,以及 `.dsh/rules/` 下的项目规则。**项目地图应描述整个仓库**的模块职责、依赖和通用入口;当前需求的页面、接口、验收条件应放进任务产物。页面中的 **AGENTS.md 初始化**是另一项操作。
|
|
79
|
-
|
|
80
|
-
团队共享前,审阅 `.dsh/skills/`、`.dsh/rules/` 和 `.dsh/meta.json`,再提交到 Git。Token 与本地审核报告不应提交。
|
|
81
|
-
|
|
82
|
-
## 元技能、Skill 和 Rule
|
|
83
|
-
|
|
84
|
-
内置元技能覆盖**需求分析、架构设计、任务编排、代码开发、测试、代码审核**。元技能约定本阶段做什么、交给下一阶段什么;项目 Skill 说明如何在当前仓库做;Rule 描述更具体的约束、触发条件与适用范围。
|
|
85
|
-
|
|
86
|
-
项目 Skill 可以放在 `.dsh/skills/`,工作台也能发现 `.agents/skills/` 中的 Codex 项目技能。用户级 Skill 可跨项目复用;**同名 Skill 的优先级是项目级 > 用户级 > 内置**。项目同名版本使用自己的 Rule 列表,不会自动混入被覆盖版本的 Rule。
|
|
87
|
-
|
|
88
|
-
在**工程任务 → 自适应流程**给元技能挂载 Skill,在对应 Skill 的 `profile.json` 中配置 Rule;项目挂载保存在 `.dsh/meta.json`。Rule 跟随 Skill 生效,不会因为挂在某一阶段就随意叠加给其他 Skill。已创建任务冻结阶段图和资源引用;被引用的 Skill/Rule 正文下次读取会更新,删除正在引用的资源会阻止流转。
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
|
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
| `.dsh/
|
|
169
|
-
| `.dsh/
|
|
170
|
-
| `.dsh/
|
|
171
|
-
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
<
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
<
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
<
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
<
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
<
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
- [
|
|
214
|
-
- [
|
|
215
|
-
|
|
216
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/godv61/dsh-task-engine/main/.github/assets/readme-hero.svg" alt="DSH Task Engine:从项目知识到可验证交付" width="100%" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">DSH Task Engine</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
为 <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a> 提供按需求运行的工程化开发引擎。<br />
|
|
9
|
+
让项目知识、团队规范、测试证据和代码审核在每次开发中真正生效。
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<a href="https://www.npmjs.com/package/@godv61/dsh-task-engine"><img src="https://img.shields.io/npm/v/%40godv61%2Fdsh-task-engine?style=flat-square&color=0d9488" alt="npm 版本" /></a>
|
|
14
|
+
<a href="https://github.com/godv61/dsh-task-engine/actions/workflows/verify.yml"><img src="https://github.com/godv61/dsh-task-engine/actions/workflows/verify.yml/badge.svg" alt="自动验证状态" /></a>
|
|
15
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-334155?style=flat-square" alt="MIT License" /></a>
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<a href="#安装与检查">安装</a> ·
|
|
20
|
+
<a href="#首次初始化项目">项目初始化</a> ·
|
|
21
|
+
<a href="#执行一个开发任务">任务操作</a> ·
|
|
22
|
+
<a href="#按项目配置-sonarqube">SonarQube</a> ·
|
|
23
|
+
<a href="docs/manual.html">HTML 使用手册</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 它解决什么问题
|
|
29
|
+
|
|
30
|
+
一个项目会有许多需求、分支和会话。团队需要复用编码约定,但不同需求不该被迫走完全相同的步骤。
|
|
31
|
+
|
|
32
|
+
| 常见问题 | Task Engine 的做法 |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| 大模型反复询问项目结构、版本和编码习惯 | 初始化项目地图、技术栈与开发 Skill;Rule 保存团队约束。 |
|
|
35
|
+
| 小改动流程太重,大改动又缺少分析与拆解 | 按**每项需求**评估复杂度,选择低、中、高、超高四档路径。 |
|
|
36
|
+
| 会话说“测试通过”,实际没有执行测试 | `dev_task` 保存命令和回执;Maven 测试必须证明至少执行一个测试。 |
|
|
37
|
+
| 审核问题散落在聊天记录里 | 任务台账展示阶段、实施项、测试与审核;可选 Sonar 报告落到项目目录。 |
|
|
38
|
+
|
|
39
|
+
> **项目配置是团队知识,流程选择属于当前需求。** 同一项目的普通会话不会自动进入工程流程;不同工程任务也可以选择不同档次。
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
项目初始化 每个新需求 交付
|
|
43
|
+
结构地图 · 技术栈 · Skill/Rule → 复杂度评估 → 阶段执行 → 测试 → 代码审核 → 完成
|
|
44
|
+
│ │ │
|
|
45
|
+
└── 项目级知识复用 ──────┘ └── 台账与证据
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 安装与检查
|
|
49
|
+
|
|
50
|
+
插件必须安装到**实际启动的 DSH profile**。以下以 Web profile `web` 为例:
|
|
51
|
+
|
|
52
|
+
```sh
|
|
53
|
+
dsh plugin --profile web add @godv61/dsh-task-engine
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
如果从 DSH 源码运行,在 DSH 根目录执行:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
pnpm dsh plugin --profile web add @godv61/dsh-task-engine
|
|
60
|
+
pnpm dsh web --no-open
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
安装后关闭旧的 DSH Web 进程,再以同一个 profile 启动。打开页面,检查侧边栏是否出现**工程任务**,以及新会话的模式菜单是否能选择**工程化开发引擎**。只在普通项目目录执行 `npm install` 不会把插件挂进 DSH profile;若没有入口,先核对安装和启动使用的是不是同一个 profile,再看 Web 启动日志。
|
|
64
|
+
|
|
65
|
+
## 首次初始化项目
|
|
66
|
+
|
|
67
|
+
1. 在**工程任务**顶部选择代码库根目录作为工作区,并确认当前 Git 分支。
|
|
68
|
+
2. 打开**项目初始化 → 项目 Skill / Rule 初始化**,点击**扫描并生成提案**。工作台会读取项目清单与部分源码,用已配置的默认模型生成 Skill / Rule 草稿;无需复制请求到会话。生成过程可能需要一两分钟。
|
|
69
|
+
3. 逐项检查草稿正文、简介、元技能挂载及 Rule 关联。可直接修改或移除不合适的建议;修改后点击**检查修改**。
|
|
70
|
+
4. 检查通过后点击**确认写入项目**。工作台再次核对项目地图覆盖、同名文件和配置版本,只写入刚审阅的提案。若项目配置或文件已变化,重新生成或检查。不要把某一条需求的实现方案当成整个项目的结构地图。
|
|
71
|
+
|
|
72
|
+
| 阶段 | 会发生什么 | 重点检查 |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| 扫描并生成提案 | 只读扫描目录、构建清单、代表性源码,用默认模型生成草稿 | 后端、前端和脚本等主要模块是否都被发现。 |
|
|
75
|
+
| 检查修改 | 校验项目地图、Skill、Rule、挂载关系和同名冲突 | 内容是否覆盖整个仓库;版本和规则是否有代码证据。 |
|
|
76
|
+
| 确认写入项目 | 按同一提案哈希写入文件 | 已有同名资源不会被静默覆盖。 |
|
|
77
|
+
|
|
78
|
+
通常会生成 `.dsh/skills/<项目名>-project-map/SKILL.md`、技术栈与后端/前端编码 Skill,以及 `.dsh/rules/` 下的项目规则。**项目地图应描述整个仓库**的模块职责、依赖和通用入口;当前需求的页面、接口、验收条件应放进任务产物。页面中的 **AGENTS.md 初始化**是另一项操作。
|
|
79
|
+
|
|
80
|
+
团队共享前,审阅 `.dsh/skills/`、`.dsh/rules/` 和 `.dsh/meta.json`,再提交到 Git。Token 与本地审核报告不应提交。
|
|
81
|
+
|
|
82
|
+
## 元技能、Skill 和 Rule
|
|
83
|
+
|
|
84
|
+
内置元技能覆盖**需求分析、架构设计、任务编排、代码开发、测试、代码审核**。元技能约定本阶段做什么、交给下一阶段什么;项目 Skill 说明如何在当前仓库做;Rule 描述更具体的约束、触发条件与适用范围。
|
|
85
|
+
|
|
86
|
+
项目 Skill 可以放在 `.dsh/skills/`,工作台也能发现 `.agents/skills/` 中的 Codex 项目技能。用户级 Skill 可跨项目复用;**同名 Skill 的优先级是项目级 > 用户级 > 内置**。项目同名版本使用自己的 Rule 列表,不会自动混入被覆盖版本的 Rule。
|
|
87
|
+
|
|
88
|
+
在**工程任务 → 自适应流程**给元技能挂载 Skill,在对应 Skill 的 `profile.json` 中配置 Rule;项目挂载保存在 `.dsh/meta.json`。Rule 跟随 Skill 生效,不会因为挂在某一阶段就随意叠加给其他 Skill。已创建任务冻结阶段图和资源引用;被引用的 Skill/Rule 正文下次读取会更新,删除正在引用的资源会阻止流转。
|
|
89
|
+
|
|
90
|
+
配置时先在左侧选择元技能;右侧显示核心 Skill 与已挂载 Skill。用搜索框查找要挂载的 Skill,点该 Skill 旁的**配置 Rule**会立即打开右侧抽屉,可按名称、来源或“已选”筛选规则。配置项目挂载后,使用页面底部始终可见的**保存自适应配置**;Rule 抽屉则单独保存对应 Skill 的规则档案。
|
|
91
|
+
|
|
92
|
+
## 四档流程与交接
|
|
93
|
+
|
|
94
|
+
| 档次 | 典型需求 | 默认阶段顺序 |
|
|
95
|
+
| --- | --- | --- |
|
|
96
|
+
| **低 · low** | 边界明确的局部修改 | 代码开发 → 测试 → 代码审核 → 完成 |
|
|
97
|
+
| **中 · medium** | 常规功能或缺陷修复 | 需求分析 → 代码开发 → 测试 → 代码审核 → 完成 |
|
|
98
|
+
| **高 · high** | 跨模块且有实现先后依赖 | 需求分析 → 任务编排 → 代码开发 → 测试 → 代码审核 → 完成 |
|
|
99
|
+
| **超高 · ultra** | 完整新模块或大范围重构 | 需求分析 → 架构设计 → 任务编排 → 代码开发 → 测试 → 代码审核 → 完成 |
|
|
100
|
+
|
|
101
|
+
需求分析交付目标、范围、非目标和可验证的验收条件;架构设计交付边界、影响与取舍;任务编排交付按实现先后排列的实施项 ID、依赖和交接产物;开发交付文件与逐项审查;测试交付真实命令;代码审核交付结论和可选 Sonar 报告。**实施项体现推进顺序,不是按人数分派工作。** 风险等级由模型另外判断,不等同复杂度。
|
|
102
|
+
|
|
103
|
+
## 执行一个开发任务
|
|
104
|
+
|
|
105
|
+
在项目工作区新建**工程化开发引擎**会话,可以直接这样提出需求:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
请在当前项目实现“设备授权范围”需求。先读取已有项目 Skill/Rule,
|
|
109
|
+
评估需求复杂度并明确验收条件。需要任务编排时,按实现先后列出
|
|
110
|
+
实施项、依赖和交接产物;开发、真实测试和代码审核按任务台账推进。
|
|
111
|
+
只在当前分支工作,不要推送。
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
随后按台账和 `dev_task` 的门禁推进:
|
|
115
|
+
|
|
116
|
+
1. **确认任务归属。** 先用 `status` 查看工作区和分支是否已有任务;新需求用 `assess` 预览档次和技能,再用 `create` 创建。发现已有任务时核对任务 ID,避免把需求写进别的任务。
|
|
117
|
+
2. **记录阶段产物。** 每阶段查看 `status` 给出的 Skill、Rule、必填产物及阻塞原因;用 `record` 写入当前阶段允许的内容,用 `advance` 进入下一阶段。不要手工改任务 JSON 跳过门禁。
|
|
118
|
+
3. **按顺序实施。** 高、超高任务先在计划中列稳定实施项 ID,再用 `items` 登记。`items` 默认按 ID 增量合并;例如只补 I5 不会删掉 I1–I4。确需重排或移除未开始的项目,显式使用 `items_mode=replace` 并提供完整列表;已完成或已有审查记录的项仍受保护。
|
|
119
|
+
4. **记录实现与逐项审查。** 用 `dispatch` 和 `review_item` 留痕。开发者可以在当前会话直接实施,不要求把任务派给其他人。把所有变更文件登记到任务 `files` 范围;代码变动会使旧测试和审核回执失效。
|
|
120
|
+
5. **验证与审核。** `verify` 执行真实命令;进入代码审核后,若启用 Sonar,调用 `sonar_check` 并处理结果,再记录 `review`。门禁通过后按 `status.commit` 提示提交并完成任务。
|
|
121
|
+
|
|
122
|
+
**测试回执的要求:** 退出码为 0 只是必要条件。对于 Maven 的 `test`、`verify`、`package`、`install`,输出必须有 Surefire/Failsafe 摘要且至少执行一个测试;显示 0 个测试或没有摘要时不能算通过。编译、静态检查、单元测试、接口测试和业务验收覆盖的风险不同,缺少环境或测试账号时应明确记录未覆盖项。
|
|
123
|
+
|
|
124
|
+
多会话并行时,建议每个任务使用独立分支或工作区,避免其他任务的未提交文件混入本次范围和审核。
|
|
125
|
+
|
|
126
|
+
## 按项目配置 SonarQube
|
|
127
|
+
|
|
128
|
+
**不需要 Sonar:** 保持“自适应流程”中的 Sonar 开关关闭,不必填地址、Key 或 Token;代码审核元技能和项目 Rule 仍会运行。
|
|
129
|
+
|
|
130
|
+
**需要 Sonar:** 在工作台顶部选对项目,进入**自适应流程 → SonarQube 审核**,依次填写:
|
|
131
|
+
|
|
132
|
+
| 字段 | 填写方式 |
|
|
133
|
+
| --- | --- |
|
|
134
|
+
| 服务地址 | SonarQube 根地址,如 `https://sonar.example.com`,不带项目页面路径。 |
|
|
135
|
+
| 项目 Key | 当前代码库在 SonarQube 中的项目标识,不同项目可以不同。 |
|
|
136
|
+
| Git 参考版本 | 高级设置,默认 `HEAD`,审核当前尚未提交的变更;也可填本机已有的分支或提交。 |
|
|
137
|
+
| 审核路径 | 高级设置,留空审核本次任务全部代码;项目只需审核后端时填写对应的相对目录。 |
|
|
138
|
+
| Token | 在同一页面单独保存到本机 DSH 凭据存储,按工作区隔离;保存后只显示“已配置”。 |
|
|
139
|
+
|
|
140
|
+
Sonar 的非秘密配置保存在项目 `.dsh/meta.json`;Token **不会写入该文件、任务或报告**。换项目时分别配置。项目的 Quality Profile 和规则本身仍由 SonarQube 服务器管理。
|
|
141
|
+
|
|
142
|
+
保存配置和 Token 后,管理员可点击**安装或检查本地分析器**。页面会显示当前项目各语言的生效规则数与分析器同步状态;这一步不审核或上传项目代码。首次下载完成后,后续任务的代码审核阶段会自动复用本机组件,即使管理员没有预先点击,审核时也会尝试自动准备。
|
|
143
|
+
|
|
144
|
+
### 提交前审核如何运行
|
|
145
|
+
|
|
146
|
+
测试通过并进入代码审核阶段后,代码审核元技能会调用 `dev_task sonar_check`。默认以 `HEAD` 为基线,读取当前任务尚未提交的 Git 变更,并按 SonarQube 项目的 Quality Profile 分析变更行;**无需提交或推送,也无需在页面手动发起**。首次运行会下载并校验官方 SonarLint 后台组件,缓存在运行 DSH 的用户目录 `~/.dsh/sonarlint-runtime/`;后台从 SonarQube 同步当前项目的语言分析器与规则。安装与同步要求这台机器能访问 Maven Central 和 SonarQube;网络或权限失败时审核会明确报错,不会静默通过。通常无需安装 IDEA、Maven、SonarScanner 或单独配置 JDK。JS/TS/Vue/CSS 分析仍可能需要可用的 Node.js。
|
|
147
|
+
|
|
148
|
+
首次下载约 93 MiB,网络较慢时会等待较久。如果运行 DSH 的机器访问 Maven Central 必须走代理,在启动 DSH 前设置 `DSH_SONARLINT_PROXY=http://127.0.0.1:7897`(替换为实际代理地址),或使用标准 `HTTPS_PROXY` 环境变量;重启 DSH 后生效。这是安装组件的网络设置,不会写入项目配置。若已手工准备后台组件,仍可用 `DSH_SONARLINT_JAVA` 与 `DSH_SONARLINT_LIB` 指向现有安装。
|
|
149
|
+
|
|
150
|
+
项目仅审核后端时,可在高级设置的“审核路径”填写实际后端目录,例如 Maven 模块。审核前会核对这些目录的 Git 变更是否全部登记在任务 `files`;漏登会报出文件名。范围外的前端或 SQL 不会被称为已通过本次后端审核。报告会列出项目生效规则数量、分析器状态和未覆盖文件;未覆盖的相关语言会阻断审核。
|
|
151
|
+
|
|
152
|
+
本地审核只能运行 SonarLint 支持的服务端规则,**通过不等于 SonarQube 服务端 Quality Gate 通过**。涉及全项目数据流、跨文件上下文或仅在服务端实现的规则,仍以团队的 CI 扫描结果为准。旧任务原有的 CI/上传式扫描配置仍可读取,但新项目页面只提供提交前审核。
|
|
153
|
+
|
|
154
|
+
### 查看审核、处理误报、沉淀 Rule
|
|
155
|
+
|
|
156
|
+
代码审核元技能自动调用 `dev_task sonar_check`。在**任务台账**展开最近一次审核,可查看原始结果、规则、严重程度、文件位置、分析器状态、人工复核状态和未解决数量。每次扫描在项目 `.dsh/reviews/<任务 ID>/` 生成 Markdown 报告;结构化结果写入 `.dsh/task-<任务 ID>.json`。
|
|
157
|
+
|
|
158
|
+
- **真实问题:** 修复代码,重新测试并复扫。真实、已修复且可复用的案例,可以通过 `learn_rule phase=propose → apply` 预览并沉淀为项目 Rule,供之后创建的任务使用。
|
|
159
|
+
- **疑似本地规则误报:** 用 `sonar_disposition` 指定本次报告的 `issue_key`,提供具体理由与源码证据,由人逐条批准。原始告警仍保留;未批准、证据不足、代码变化或重新扫描后都不能沿用处置。已确认误报不会自动转成 Rule。
|
|
160
|
+
- **自定义规则不准确:** 将问题、代码语义和证据反馈给 SonarQube 规则维护者;不要为消除告警而破坏业务实现。
|
|
161
|
+
|
|
162
|
+
## 任务台账与项目文件
|
|
163
|
+
|
|
164
|
+
“待开始”表示实施项还未执行;“实施中”表示已记录开始;“待审查”表示缺少该项的规格或质量审查;“代码审核”则是整个任务的后续阶段。它们不是团队成员分派状态。
|
|
165
|
+
|
|
166
|
+
| 位置 | 内容 | 团队共享建议 |
|
|
167
|
+
| --- | --- | --- |
|
|
168
|
+
| `.dsh/meta.json` | 项目元技能挂载及 Sonar 非秘密配置 | 审阅后提交 |
|
|
169
|
+
| `.dsh/skills/`、`.dsh/rules/` | 项目 Skill、Rule 与 Skill 的 `profile.json` | 审阅后提交 |
|
|
170
|
+
| `.dsh/task-<id>.json` | 任务阶段、实施项、测试和审核回执 | 按团队留痕策略决定 |
|
|
171
|
+
| `.dsh/reviews/` | 逐次 Sonar 报告与误报处置 | 可加入 `.gitignore` 留在本机 |
|
|
172
|
+
| 本机 DSH 凭据存储 | 按工作区隔离的 Sonar Token | 不提交、不分享 |
|
|
173
|
+
|
|
174
|
+
## 常见问题
|
|
175
|
+
|
|
176
|
+
<details>
|
|
177
|
+
<summary>安装后看不到“工程任务”或“工程化开发引擎”?</summary>
|
|
178
|
+
|
|
179
|
+
核对插件是否装在正在运行的 Web profile,关闭旧 Web 进程后重启,查看启动日志。普通预设与工程化预设加载的工具不同。
|
|
180
|
+
|
|
181
|
+
</details>
|
|
182
|
+
|
|
183
|
+
<details>
|
|
184
|
+
<summary>项目初始化在哪里操作?</summary>
|
|
185
|
+
|
|
186
|
+
在工程任务的“项目初始化”页直接点击“扫描并生成提案”,审阅后确认写入。页面使用默认模型;若提示模型未配置,先到“模型”页选择默认模型。工程化会话仍可按需使用 `dev_task init_project` 的 `inspect → propose → apply` 调用。项目根目录的 AGENTS.md 生成功能是独立操作。
|
|
187
|
+
|
|
188
|
+
</details>
|
|
189
|
+
|
|
190
|
+
<details>
|
|
191
|
+
<summary>为什么 Maven 构建成功,任务仍不能前进?</summary>
|
|
192
|
+
|
|
193
|
+
如果验证命令是 Maven 测试目标,插件还要求输出证明至少运行一个测试。检查 Surefire/Failsafe、JUnit 引擎和是否跳过测试;重新运行能看到测试摘要的命令。
|
|
194
|
+
|
|
195
|
+
</details>
|
|
196
|
+
|
|
197
|
+
<details>
|
|
198
|
+
<summary>为什么 Sonar 报了业务上必须创建的对象?</summary>
|
|
199
|
+
|
|
200
|
+
自定义规则可能过宽。保留告警并核对代码语义;本地规则分析可以逐条提交理由和证据由人批准,服务端规则应由维护者修正。不要复用本该独立的实体或挪动代码来隐藏告警。
|
|
201
|
+
|
|
202
|
+
</details>
|
|
203
|
+
|
|
204
|
+
<details>
|
|
205
|
+
<summary>为什么审核提示补文件范围?已有任务会随配置改变吗?</summary>
|
|
206
|
+
|
|
207
|
+
本次扫描路径内的 Git 变更若未登记到任务 `files`,需补入当前任务范围,或把其他任务移到独立分支/工作区。已有任务的阶段图和资源引用在创建时冻结;Skill/Rule 正文下次读取会更新,代码、范围或规则变化后应重新检查证据。
|
|
208
|
+
|
|
209
|
+
</details>
|
|
210
|
+
|
|
211
|
+
## 文档与参与
|
|
212
|
+
|
|
213
|
+
- [HTML 使用手册](docs/manual.html):适合下载后分享给团队使用者,覆盖安装、初始化、任务、Sonar 与排障。
|
|
214
|
+
- [开发指南](docs/development.md):插件架构、构建、测试和发布前检查。
|
|
215
|
+
- [反馈问题](https://github.com/godv61/dsh-task-engine/issues) · [MIT License](LICENSE)
|
|
216
|
+
|
|
217
|
+
<p align="center"><sub>DSH Task Engine · 让项目知识进入开发,让每次交付留下证据。</sub></p>
|
package/docs/development.md
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
# 开发与发布
|
|
2
|
-
|
|
3
|
-
[返回项目首页](../README.md) · [使用手册](manual.html)
|
|
4
|
-
|
|
5
|
-
插件分为 host 控制器、agent 工具和浏览器工作台。源码在 `src/`,构建结果在 `lib/`,npm 包包含预构建入口、内置 Skill、预设和提交钩子。
|
|
6
|
-
|
|
7
|
-
## 代码位置
|
|
8
|
-
|
|
9
|
-
| 路径 | 主要职责 |
|
|
10
|
-
| --- | --- |
|
|
11
|
-
| `src/adaptive.ts`、`src/workflows.ts`、`src/engine.ts` | 四档流程、兼容流程与任务状态机。 |
|
|
12
|
-
| `src/dev-task.ts` | `dev_task` 操作、阶段门禁和任务留痕。 |
|
|
13
|
-
| `src/sonarlint-local.ts`、`src/sonar.ts`、`src/sonar-report.ts` | 本地规则分析、服务端结果与 Markdown 报告。 |
|
|
14
|
-
| `src/verification-tests.ts` | Maven 测试摘要门禁。 |
|
|
15
|
-
| `src/project-init.ts` | 项目扫描与初始化覆盖检查。 |
|
|
16
|
-
| `src/controller.ts`、`src/client/` | 工作台读写接口与界面。 |
|
|
17
|
-
| `skills/`、`preset/` | 会话编排与元技能正文。 |
|
|
18
|
-
|
|
19
|
-
## 本地验证
|
|
20
|
-
|
|
21
|
-
在插件源码根目录执行:
|
|
22
|
-
|
|
23
|
-
```sh
|
|
24
|
-
npm install
|
|
25
|
-
npm run typecheck
|
|
26
|
-
npm run build
|
|
27
|
-
npm test
|
|
28
|
-
npm run verify:package
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
`verify:package` 将当前 tarball 安装到隔离临时目录,检查可发布入口、客户端注册、包内测试和 CLI 语法。CI 在 Windows 的 Node 22、24 上运行。提交前检查 `git status`,确认没有本机凭据、临时审核文件或生成包进入版本控制。
|
|
32
|
-
|
|
33
|
-
## 当前质量约束
|
|
34
|
-
|
|
35
|
-
- 本地 Sonar 审核必须先对照参考分支的 Git 差异、项目 `include_paths` 与任务 `files`;漏登文件不得产生“完整审核通过”。
|
|
36
|
-
- `ide-local` 的逐项误报处置只能在当前审核、当前代码指纹上由宿主人工批准;原始告警和结果保留。CI 或上传式服务端 Gate 不接受本地处置。
|
|
37
|
-
- Maven 测试目标在进程成功之外,还需解析到非零 Surefire/Failsafe 测试数。未输出摘要时失败关闭,其他命令按自身回执判断。
|
|
38
|
-
- `items` 默认按 ID 合并;显式 `items_mode=replace` 才允许移除未实施的项目。已完成或有审查记录的项仍保留。
|
|
39
|
-
- 文档只维护项目首页、本 HTML 使用手册和本开发指南,三处描述均以当前功能为准。
|
|
40
|
-
|
|
41
|
-
## 发布与部署检查
|
|
42
|
-
|
|
43
|
-
1. 更新 `package.json` 版本,运行上述验证,再检查 `npm pack --dry-run --json` 的文件清单只有当前文档。
|
|
44
|
-
2. 推送提交后发布 npm 包;需要 npm 登录或 WebAuthn 时,保持发布命令等待,由账号持有人完成验证。
|
|
45
|
-
3. 在实际 DSH Web profile 安装刚发布的精确版本并重启,确认侧边栏入口、会话预设和 `dev_task` 能加载。项目 Token 保存在本机凭据中,升级不应把它写进仓库。
|
|
1
|
+
# 开发与发布
|
|
2
|
+
|
|
3
|
+
[返回项目首页](../README.md) · [使用手册](manual.html)
|
|
4
|
+
|
|
5
|
+
插件分为 host 控制器、agent 工具和浏览器工作台。源码在 `src/`,构建结果在 `lib/`,npm 包包含预构建入口、内置 Skill、预设和提交钩子。
|
|
6
|
+
|
|
7
|
+
## 代码位置
|
|
8
|
+
|
|
9
|
+
| 路径 | 主要职责 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| `src/adaptive.ts`、`src/workflows.ts`、`src/engine.ts` | 四档流程、兼容流程与任务状态机。 |
|
|
12
|
+
| `src/dev-task.ts` | `dev_task` 操作、阶段门禁和任务留痕。 |
|
|
13
|
+
| `src/sonarlint-local.ts`、`src/sonar.ts`、`src/sonar-report.ts` | 本地规则分析、服务端结果与 Markdown 报告。 |
|
|
14
|
+
| `src/verification-tests.ts` | Maven 测试摘要门禁。 |
|
|
15
|
+
| `src/project-init.ts` | 项目扫描与初始化覆盖检查。 |
|
|
16
|
+
| `src/controller.ts`、`src/client/` | 工作台读写接口与界面。 |
|
|
17
|
+
| `skills/`、`preset/` | 会话编排与元技能正文。 |
|
|
18
|
+
|
|
19
|
+
## 本地验证
|
|
20
|
+
|
|
21
|
+
在插件源码根目录执行:
|
|
22
|
+
|
|
23
|
+
```sh
|
|
24
|
+
npm install
|
|
25
|
+
npm run typecheck
|
|
26
|
+
npm run build
|
|
27
|
+
npm test
|
|
28
|
+
npm run verify:package
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`verify:package` 将当前 tarball 安装到隔离临时目录,检查可发布入口、客户端注册、包内测试和 CLI 语法。CI 在 Windows 的 Node 22、24 上运行。提交前检查 `git status`,确认没有本机凭据、临时审核文件或生成包进入版本控制。
|
|
32
|
+
|
|
33
|
+
## 当前质量约束
|
|
34
|
+
|
|
35
|
+
- 本地 Sonar 审核必须先对照参考分支的 Git 差异、项目 `include_paths` 与任务 `files`;漏登文件不得产生“完整审核通过”。
|
|
36
|
+
- `ide-local` 的逐项误报处置只能在当前审核、当前代码指纹上由宿主人工批准;原始告警和结果保留。CI 或上传式服务端 Gate 不接受本地处置。
|
|
37
|
+
- Maven 测试目标在进程成功之外,还需解析到非零 Surefire/Failsafe 测试数。未输出摘要时失败关闭,其他命令按自身回执判断。
|
|
38
|
+
- `items` 默认按 ID 合并;显式 `items_mode=replace` 才允许移除未实施的项目。已完成或有审查记录的项仍保留。
|
|
39
|
+
- 文档只维护项目首页、本 HTML 使用手册和本开发指南,三处描述均以当前功能为准。
|
|
40
|
+
|
|
41
|
+
## 发布与部署检查
|
|
42
|
+
|
|
43
|
+
1. 更新 `package.json` 版本,运行上述验证,再检查 `npm pack --dry-run --json` 的文件清单只有当前文档。
|
|
44
|
+
2. 推送提交后发布 npm 包;需要 npm 登录或 WebAuthn 时,保持发布命令等待,由账号持有人完成验证。
|
|
45
|
+
3. 在实际 DSH Web profile 安装刚发布的精确版本并重启,确认侧边栏入口、会话预设和 `dev_task` 能加载。项目 Token 保存在本机凭据中,升级不应把它写进仓库。
|