@godv61/dsh-task-engine 0.27.0 → 0.27.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/.acceptance.mjs +11 -6
- package/.assessment-batch1.mjs +14 -11
- package/.codex-project-test.mjs +80 -0
- package/.enforce-test.mjs +4 -5
- package/.evidence-test.mjs +3 -3
- package/.filter-test.mjs +6 -8
- package/.freeze-test.mjs +20 -11
- package/.p0-test.mjs +21 -24
- package/.roundtrip-test.mjs +16 -28
- package/.workflow-test.mjs +6 -8
- package/README.md +8 -6
- package/defaults/eng.json +1 -97
- package/docs/CHANGELOG.md +7 -0
- package/docs/configuration.md +12 -13
- package/docs/faq.md +1 -1
- package/docs/manual.html +16 -34
- package/docs/resource-install.md +5 -3
- package/hooks/commit-msg +4 -33
- package/lib/client.js +94 -108
- package/lib/client.js.map +3 -3
- package/lib/controller.d.ts +4 -3
- package/lib/controller.js +12 -6
- package/lib/controller.js.map +1 -1
- package/lib/dev-task.js +33 -27
- package/lib/dev-task.js.map +1 -1
- package/lib/engine.d.ts +2 -3
- package/lib/engine.js +2 -2
- package/lib/engine.js.map +1 -1
- package/lib/shipped-skills.d.ts +2 -4
- package/lib/shipped-skills.js +2 -4
- package/lib/shipped-skills.js.map +1 -1
- package/lib/skill-audit.d.ts +4 -4
- package/lib/skill-audit.js +19 -14
- package/lib/skill-audit.js.map +1 -1
- package/lib/workflows.d.ts +3 -4
- package/lib/workflows.js +2 -41
- package/lib/workflows.js.map +1 -1
- package/package.json +4 -4
- package/preset/agent.cordis.yml +1 -1
- package/preset/persona.md +1 -1
- package/scripts/verify-package.mjs +3 -1
- package/skills/eng-delivery/SKILL.md +4 -4
- package/rules/coding-conventions.md +0 -7
- package/rules/commit-conventions.md +0 -6
- package/rules/security-redlines.md +0 -6
- package/skills/code-commit/SKILL.md +0 -13
- package/skills/code-implement/SKILL.md +0 -24
- package/skills/code-review/SKILL.md +0 -13
- package/skills/code-verify/SKILL.md +0 -20
- package/skills/requirement-analysis/SKILL.md +0 -16
- package/skills/solution-design/SKILL.md +0 -19
package/defaults/eng.json
CHANGED
|
@@ -1,97 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"flow": "standard",
|
|
3
|
-
"stage_bindings": {
|
|
4
|
-
"需求评审": {
|
|
5
|
-
"skill_refs": [
|
|
6
|
-
{
|
|
7
|
-
"source": "bundled",
|
|
8
|
-
"name": "requirement-analysis"
|
|
9
|
-
}
|
|
10
|
-
]
|
|
11
|
-
},
|
|
12
|
-
"设计": {
|
|
13
|
-
"skill_refs": [
|
|
14
|
-
{
|
|
15
|
-
"source": "bundled",
|
|
16
|
-
"name": "solution-design"
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
},
|
|
20
|
-
"开发": {
|
|
21
|
-
"skill_refs": [
|
|
22
|
-
{
|
|
23
|
-
"source": "bundled",
|
|
24
|
-
"name": "code-implement"
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
"交付": {
|
|
29
|
-
"skill_refs": [
|
|
30
|
-
{
|
|
31
|
-
"source": "bundled",
|
|
32
|
-
"name": "code-verify"
|
|
33
|
-
}
|
|
34
|
-
]
|
|
35
|
-
},
|
|
36
|
-
"代码审核": {
|
|
37
|
-
"skill_refs": [
|
|
38
|
-
{
|
|
39
|
-
"source": "bundled",
|
|
40
|
-
"name": "code-review"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"source": "bundled",
|
|
44
|
-
"name": "code-commit"
|
|
45
|
-
}
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
"skill_profiles": {
|
|
50
|
-
"bundled:requirement-analysis": {
|
|
51
|
-
"rules": [
|
|
52
|
-
{
|
|
53
|
-
"source": "bundled",
|
|
54
|
-
"name": "security-redlines"
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
},
|
|
58
|
-
"bundled:solution-design": {
|
|
59
|
-
"rules": []
|
|
60
|
-
},
|
|
61
|
-
"bundled:code-implement": {
|
|
62
|
-
"rules": [
|
|
63
|
-
{
|
|
64
|
-
"source": "bundled",
|
|
65
|
-
"name": "coding-conventions"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"source": "bundled",
|
|
69
|
-
"name": "security-redlines"
|
|
70
|
-
}
|
|
71
|
-
]
|
|
72
|
-
},
|
|
73
|
-
"bundled:code-verify": {
|
|
74
|
-
"rules": []
|
|
75
|
-
},
|
|
76
|
-
"bundled:code-review": {
|
|
77
|
-
"rules": [
|
|
78
|
-
{
|
|
79
|
-
"source": "bundled",
|
|
80
|
-
"name": "coding-conventions"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"source": "bundled",
|
|
84
|
-
"name": "security-redlines"
|
|
85
|
-
}
|
|
86
|
-
]
|
|
87
|
-
},
|
|
88
|
-
"bundled:code-commit": {
|
|
89
|
-
"rules": [
|
|
90
|
-
{
|
|
91
|
-
"source": "bundled",
|
|
92
|
-
"name": "commit-conventions"
|
|
93
|
-
}
|
|
94
|
-
]
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
1
|
+
{"flow":"standard"}
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
按版本查阅功能变化。当前使用方式以[项目首页](../README.md)和使用指南为准;历史条目中的实现方式、限制与测试数量可能已被后续版本替代。
|
|
6
6
|
|
|
7
|
+
## 0.27.1
|
|
8
|
+
|
|
9
|
+
- 移除六个内置业务 Skill 和三个内置 Rule,仅保留会话编排 Skill `eng-delivery`;阶段技能和规则完全由使用者创建或安装。
|
|
10
|
+
- 三个流程及其推荐配置均不再绑定业务资源。推荐配置只提供可修改的提交文本、产物字段和评审深度,采用时保留现有技能与规则绑定。
|
|
11
|
+
- 移除依赖已删内置规则的全局指纹与技能名称特例;空绑定流程仍按阶段与门禁运行,用户资源继续按原引用实时读取。
|
|
12
|
+
- 兼容 DSH 新旧版本的图标导出名称,修复新版客户端中“工程流程”侧栏入口渲染失败、工作台无法打开的问题。
|
|
13
|
+
|
|
7
14
|
## 0.27.0
|
|
8
15
|
|
|
9
16
|
- 采用推荐配置时将所引用的内置技能和规则各复制一份到项目目录,并改写为项目引用;共享规则仍只有一份,重复采用保留用户已编辑的项目文件。旧项目可单独迁移内置引用,打开或普通保存时不自动改写。
|
package/docs/configuration.md
CHANGED
|
@@ -24,20 +24,19 @@
|
|
|
24
24
|
}
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
`stage_bindings` 的键是当前流程中的阶段名称,`skill_refs`
|
|
27
|
+
`stage_bindings` 的键是当前流程中的阶段名称,`skill_refs` 只保存技能引用。项目级技能(包括从 `.agents/skills` 发现的 Codex 技能)的 `skill_profiles` 在 `.dsh/eng.json` 中保存唯一的规则列表和证据类型;用户级技能的规则配置保存在 `$DSH_HOME/skills/<技能名>/profile.json`,所有项目和会话共用。用户级技能只能关联用户级规则,避免引用某个项目独有的规则。
|
|
28
28
|
|
|
29
29
|
```json
|
|
30
30
|
{
|
|
31
31
|
"flow": "standard",
|
|
32
32
|
"stage_bindings": {
|
|
33
33
|
"开发": {
|
|
34
|
-
"skill_refs": [{ "source": "
|
|
34
|
+
"skill_refs": [{ "source": "project", "name": "my-implementation" }]
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"skill_profiles": {
|
|
38
|
-
"
|
|
39
|
-
"rules": [{ "source": "
|
|
40
|
-
{ "source": "project", "name": "api-contract" }],
|
|
38
|
+
"project:my-implementation": {
|
|
39
|
+
"rules": [{ "source": "project", "name": "api-contract" }],
|
|
41
40
|
"evidence": "none"
|
|
42
41
|
}
|
|
43
42
|
}
|
|
@@ -46,21 +45,21 @@
|
|
|
46
45
|
|
|
47
46
|
**规则挂载在技能下,节点不提供规则追加、禁用或覆盖。** 在工作台“技能”页或流程页的技能规则侧栏配置规则;同一技能挂到任何节点,都是同一套规则。需要不同规则组合时,复制成另一个独立技能。旧版把规则内联在各节点技能绑定的配置仍可读取;保存后会转为上述格式。若旧内联绑定与 `skill_profiles` 同时存在,明确配置的技能档案优先,所有节点使用它的规则和凭证;若没有技能档案而同一旧技能在不同节点的规则不同,系统会要求先复制为独立技能,不会任意选一套覆盖另一套。
|
|
48
47
|
|
|
49
|
-
规则引用带来源(`bundled:` / `project:` / `user:`),因此同名资源不会被混淆。同一份规则可被多个技能引用,不需要复制正文;编辑共享规则时界面会显示受影响的技能。
|
|
48
|
+
规则引用带来源(`bundled:` / `project:` / `user:`),因此同名资源不会被混淆。同一份规则可被多个技能引用,不需要复制正文;编辑共享规则时界面会显示受影响的技能。
|
|
49
|
+
|
|
50
|
+
项目技能可来自 `.dsh/skills/<名称>/SKILL.md`(引用来源 `project:`)或 `.agents/skills/<名称>/SKILL.md`(引用来源 `codex-project:`)。工作台会扫描这两个项目目录;新建技能仍默认写入 `.dsh/skills`。Codex 项目技能的正文在工作台中只读,可在原文件编辑;其规则配置仍属于该技能,存于项目 `.dsh/eng.json`,规则正文可引用项目 `.dsh/rules`。例如,节点使用 `codex-project:my-skill`,对应 `skill_profiles["codex-project:my-skill"].rules` 可引用 `project:api-contract`。Codex 自身 `.codex/rules/*.rules` 是命令权限配置,并非这里的 Markdown 规则。
|
|
50
51
|
|
|
51
|
-
[
|
|
52
|
+
[最小配置示例](../defaults/eng.json)仅选择流程,不绑定技能或规则。
|
|
52
53
|
|
|
53
|
-
**预设不带任何绑定。** 一个只写了 `flow`
|
|
54
|
-
|
|
55
|
-
以前已采用的项目如仍使用 `bundled:` 引用,打开或保存时不会擅自迁移。它们继续引用内置样本,新任务会读取当前插件版本的正文;若要固定为项目资源,可在流程页点「把当前内置引用迁移到项目」并保存,保留其他现有配置。
|
|
54
|
+
**预设不带任何绑定。** 一个只写了 `flow` 的配置就是字面意思:节点没有绑定,阶段仍按流程骨架流转。工作台的「采用推荐配置」只填写可修改的提交文本、产物字段和评审深度,不添加或覆盖技能与规则。项目级技能和规则放在 `.dsh/skills/` 与 `.dsh/rules/`;同一份规则可由多个技能引用。
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
插件只内置会话编排技能 `eng-delivery`,不提供阶段业务技能或业务规则。它由会话预设使用,不显示在阶段技能列表。工作台可以安装或新建项目级、用户级资源。
|
|
58
57
|
|
|
59
|
-
进入阶段后,`dev_task`
|
|
58
|
+
进入阶段后,`dev_task` 按稳定的资源引用读取并披露该阶段技能和规则的最新正文。DSH 技能仍检查 Harness 的 skill 工具成功加载记录;Codex 项目技能使用 `dev_task operation=load_skill`(`skill_name` 传 `codex-project:<名称>`)加载技能及所挂规则,并检查这次加载记录。技能可声明证据类型(`command` / `artifact` / `review` / `manual` / `none`)。`manual` 通过宿主人工审批记录,不要求执行命令;`artifact` 需要该阶段有产物定义且必填字段完整。未声明时沿用命令回执。`status.skill_obligations` 中的 `command_receipts_required` 列出需要命令回执的技能。
|
|
60
59
|
|
|
61
60
|
挂在终态(例如"完成")的技能在进入终态前执行。测试技能通常建议挂在"交付";现有"完成"绑定也会在审核阶段执行后才放行。标准流程 v2 在审核通过后提交,并核对真实 Git HEAD。修改文件或声明范围后,旧验证回执失效。
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
资源管理保留不同来源的同名条目,避免来源误标和误操作。DSH 技能通过 Harness 的 skill 工具加载;Codex 项目技能通过 `dev_task load_skill` 按来源和任务读取。
|
|
64
63
|
|
|
65
64
|
### 旧配置迁移
|
|
66
65
|
|
package/docs/faq.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
## 能移除推荐技能、修改内置规则吗?
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
流程预设没有强制技能绑定。当前安装包只保留会话编排技能 `eng-delivery`,不再附带业务技能和规则;它只负责按 `dev_task` 的状态与门禁编排,不决定业务方法。用户的业务技能可建在项目 `.dsh/skills`,也可使用同项目 `.agents/skills` 中已有的 Codex 技能;规则仍由用户配置在技能下。不同来源的同名资源分别引用。
|
|
28
28
|
|
|
29
29
|
## 工具显示验证或审核通过,能完全相信吗?
|
|
30
30
|
|
package/docs/manual.html
CHANGED
|
@@ -72,11 +72,9 @@
|
|
|
72
72
|
<pre><code>开发请求
|
|
73
73
|
→ dev_task(统一入口,硬约束在代码里执行)
|
|
74
74
|
→ eng-delivery(编排:读状态 → 选阶段 → 推进)
|
|
75
|
-
→
|
|
76
|
-
→
|
|
77
|
-
→
|
|
78
|
-
→ 交付 · code-verify
|
|
79
|
-
→ 代码审核 · code-review + code-commit</code></pre>
|
|
75
|
+
→ 按所选流程进入当前阶段
|
|
76
|
+
→ 读取该阶段由使用者绑定的技能和规则
|
|
77
|
+
→ 检查门禁并推进到下一阶段</code></pre>
|
|
80
78
|
<div class="callout">
|
|
81
79
|
<p><strong>它不是常驻程序。</strong>只有你在「工程化开发引擎」预设的会话里提出开发请求时,才触发 <code>dev_task</code> 和这套门禁;换到别的预设,流程完全不介入。</p>
|
|
82
80
|
</div>
|
|
@@ -107,7 +105,7 @@ pnpm install && pnpm run build && pnpm dsh web</code></pre>
|
|
|
107
105
|
<p><code>dsh plugin --profile <name> add <package></code> 会在 <code>$DSH_HOME/profiles/<name>/</code> 里执行 <code>pnpm add</code>,并自动识别插件声明的 <code>dsh.bundle.patch</code>,把它挂进该 profile 的插件层栈——<b>不要</b>手写 <code>npm i</code> 装到别处,那样不会挂载。</p>
|
|
108
106
|
<p>装完<b>重启 <code>dsh web</code></b> 生效,自动完成两件事:侧边栏多出「工程流程」工作台;预设列表多出「工程化开发引擎」。</p>
|
|
109
107
|
<h3>2.4 启用</h3>
|
|
110
|
-
<p>新建会话 →
|
|
108
|
+
<p>新建会话 → 预设选「工程化开发引擎」。这个会话会启用 <code>dev_task</code> 与编排技能 <code>eng-delivery</code>,按配置的流程走。</p>
|
|
111
109
|
<div class="callout"><p>想「正式开发」就选它;想「让 AI 自由探索」就选 <code>standard</code>。切换预设本身就是开关,零配置。</p></div>
|
|
112
110
|
</section>
|
|
113
111
|
|
|
@@ -128,7 +126,8 @@ pnpm install && pnpm run build && pnpm dsh web</code></pre>
|
|
|
128
126
|
<thead><tr><th>路径</th><th>作用</th><th>何时读取或修改</th></tr></thead>
|
|
129
127
|
<tbody>
|
|
130
128
|
<tr><td><code>.dsh/eng.json</code></td><td>流程、阶段技能引用及技能规则配置</td><td>新任务创建时读取并冻结;工作台保存时写入</td></tr>
|
|
131
|
-
<tr><td><code>.dsh/skills/</code></td><td>项目级 skill(团队共享)</td><td
|
|
129
|
+
<tr><td><code>.dsh/skills/</code></td><td>项目级 DSH skill(团队共享)</td><td>新建默认写入这里;节点挂载命中时按需读取</td></tr>
|
|
130
|
+
<tr><td><code>.agents/skills/</code></td><td>项目级 Codex skill(团队共享)</td><td>工作台自动发现;通过 dev_task load_skill 读取技能与所挂规则</td></tr>
|
|
132
131
|
<tr><td><code>.dsh/rules/</code></td><td>项目级 rule(团队共享)</td><td>节点挂载命中时按需读取</td></tr>
|
|
133
132
|
<tr><td><code>.dsh/task-*.json</code></td><td>当前任务的有效状态快照</td><td>确认、实施、验证、评审、切换阶段时更新</td></tr>
|
|
134
133
|
<tr><td><code>$DSH_HOME/skills/ · rules/</code></td><td>用户级 skill / rule</td><td>引用显式记录来源,同名资源互不混淆</td></tr>
|
|
@@ -159,18 +158,12 @@ pnpm install && pnpm run build && pnpm dsh web</code></pre>
|
|
|
159
158
|
|
|
160
159
|
<section id="skills">
|
|
161
160
|
<h2>5. Skills:这一步做什么</h2>
|
|
162
|
-
<p
|
|
161
|
+
<p>插件仅内置 <code>eng-delivery</code>,用于会话编排。项目级与用户级业务技能由使用者自行创建或安装;工作台也可发现当前项目 <code>.agents/skills</code> 中已有的 Codex 技能。挂到节点后,走到那一步才加载。</p>
|
|
163
162
|
<div class="table-wrap">
|
|
164
163
|
<table>
|
|
165
164
|
<thead><tr><th>Skill</th><th>职责</th><th>不负责</th></tr></thead>
|
|
166
165
|
<tbody>
|
|
167
166
|
<tr><td><code>eng-delivery</code></td><td>读任务状态、按阶段推进、确保不越轨</td><td>代替各阶段 Skill 的专业工作</td></tr>
|
|
168
|
-
<tr><td><code>requirement-analysis</code></td><td>目标、验收、非目标,落需求说明,等人确认</td><td>编码</td></tr>
|
|
169
|
-
<tr><td><code>solution-design</code></td><td>最小方案、技术基线、改动点,落设计文档</td><td>实现</td></tr>
|
|
170
|
-
<tr><td><code>code-implement</code></td><td>实现、做「规格 + 质量」两阶段评审,都过才标完成</td><td>无关重构</td></tr>
|
|
171
|
-
<tr><td><code>code-verify</code></td><td>按验收与风险验证、记录结果(高风险必须跑真实命令回执)</td><td>掩盖失败或自动修复</td></tr>
|
|
172
|
-
<tr><td><code>code-commit</code></td><td>校验阶段、范围、消息格式后提交</td><td>远程 push / 合并 / 发布</td></tr>
|
|
173
|
-
<tr><td><code>code-review</code></td><td>评审变更,落结论与问题清单</td><td>代替实现或验证</td></tr>
|
|
174
167
|
</tbody>
|
|
175
168
|
</table>
|
|
176
169
|
</div>
|
|
@@ -178,18 +171,7 @@ pnpm install && pnpm run build && pnpm dsh web</code></pre>
|
|
|
178
171
|
|
|
179
172
|
<section id="rules">
|
|
180
173
|
<h2>6. Rules:这一步守什么</h2>
|
|
181
|
-
<p>Rule
|
|
182
|
-
<div class="table-wrap">
|
|
183
|
-
<table>
|
|
184
|
-
<thead><tr><th>Rule</th><th>约束内容</th><th>典型触发</th></tr></thead>
|
|
185
|
-
<tbody>
|
|
186
|
-
<tr><td><code>coding-conventions</code></td><td>编码规范:复用优先、禁空 catch、禁全表更新等</td><td>写代码</td></tr>
|
|
187
|
-
<tr><td><code>commit-conventions</code></td><td>提交消息格式、只提交任务内文件、禁止 push / 合并 / 发布</td><td>本地提交</td></tr>
|
|
188
|
-
<tr><td><code>security-redlines</code></td><td>敏感数据、危险动作和权限边界</td><td>所有写操作</td></tr>
|
|
189
|
-
</tbody>
|
|
190
|
-
</table>
|
|
191
|
-
</div>
|
|
192
|
-
<p>内置资源只是可选示例,正文只读。团队可以创建自己的技能和规则,把规则绑定到技能,再决定哪些节点使用该技能;提交消息格式应在项目配置中设置。</p>
|
|
174
|
+
<p>Rule 是纯正文的约束,配置在技能下。节点引用技能,任务走到该节点时才读取技能及其规则的最新正文;预设不会自动绑定它们。插件不内置业务规则。团队可创建自己的技能和共享规则,再决定哪些节点使用技能;提交消息格式在项目配置中设置。</p>
|
|
193
175
|
</section>
|
|
194
176
|
|
|
195
177
|
<section id="configure">
|
|
@@ -200,17 +182,17 @@ pnpm install && pnpm run build && pnpm dsh web</code></pre>
|
|
|
200
182
|
<li><strong>选流程预设</strong>:standard / agile / minimal;如需现成起点,可单独点击「采用推荐配置」。</li>
|
|
201
183
|
<li><strong>给节点选技能</strong>:先选节点,再用双栏选择器挑选技能;点技能的规则配置,在右侧栏绑定规则与证据类型,最后保存。</li>
|
|
202
184
|
</ol>
|
|
203
|
-
<p
|
|
204
|
-
<p
|
|
185
|
+
<p>「技能」和「规则」页提供搜索、来源筛选、新建、安装、查看、编辑与删除。点「安装技能」选择含 <code>SKILL.md</code> 的文件夹;点「安装规则」选择一个 <code>.md</code> 文件。选择后先显示预览:名称、正文、文件数、体积、目标路径和同名冲突。确认项目或个人范围后点击「确认安装」;预览本身不写入文件,改变范围后需要重新预览。</p>
|
|
186
|
+
<p>新建项目资源默认写入工作区 <code>.dsh/skills</code> 或 <code>.dsh/rules</code>;个人资源写入 <code>$DSH_HOME</code> 对应目录。当前项目 <code>.agents/skills</code> 中已有的 Codex 技能也会显示,其正文在工作台只读,可编辑原文件;规则仍配置在该技能下,规则正文可引用项目 <code>.dsh/rules</code>。浏览器选择的是浏览器所在电脑的文件;高级目录模式读取 Harness 主机的目录。技能保留脚本、references、模板和二进制资源,排除常见缓存;上限 1000 文件、100 MB、单文件 20 MB、20 层目录,<code>SKILL.md</code> 和规则正文上限 1 MB。拒绝覆盖同名资源;主机扫描拒绝符号链接和 junction。浏览器上传不提供源链接元数据。</p>
|
|
205
187
|
<p>资源删除前会显示名称与实际目标路径,确认后永久删除;可点击「保留」取消。任务台账支持搜索、风险与阶段筛选,并显示验证、审核和更新时间。流程配置读取与保存失败时显示错误,损坏任务记录不会被静默视为没有任务。</p>
|
|
206
188
|
<pre><code>// .dsh/eng.json 等价内容
|
|
207
189
|
{
|
|
208
190
|
"flow": "standard",
|
|
209
191
|
"stage_bindings": {
|
|
210
|
-
"开发": { "skill_refs": [{ "source": "
|
|
192
|
+
"开发": { "skill_refs": [{ "source": "project", "name": "my-implementation" }] }
|
|
211
193
|
},
|
|
212
194
|
"skill_profiles": {
|
|
213
|
-
"
|
|
195
|
+
"project:my-implementation": {
|
|
214
196
|
"rules": [{ "source": "project", "name": "my-coding-rule" }],
|
|
215
197
|
"evidence": "none"
|
|
216
198
|
}
|
|
@@ -277,7 +259,7 @@ pnpm install && pnpm run build && pnpm dsh web</code></pre>
|
|
|
277
259
|
</tbody>
|
|
278
260
|
</table>
|
|
279
261
|
</div>
|
|
280
|
-
<p
|
|
262
|
+
<p>新任务离开阶段前检查绑定技能是否成功加载;Codex 项目技能通过 <code>dev_task load_skill</code> 加载其正文及所挂规则。技能可以声明 <code>command</code>、<code>artifact</code>、<code>review</code>、<code>manual</code> 或 <code>none</code> 证据类型。只有需要命令回执的技能才出现在 <code>command_receipts_required</code> 中。挂在终态的技能在进入终态前执行。命令成功只证明该命令通过,不证明覆盖完整;文件变动后须重新验证。任务的流程配置按创建时的快照执行,Skill/Rule 正文在下一次交互读取最新版本。</p>
|
|
281
263
|
<h3>贯穿全程的硬规则</h3>
|
|
282
264
|
<ul>
|
|
283
265
|
<li>阶段是硬状态:status 说你在哪,就只做那一步,绝不倒带重走、绝不跳。</li>
|
|
@@ -377,8 +359,8 @@ risk_level: high_risk // 涉及鉴权,验证要加证据
|
|
|
377
359
|
<div class="callout danger">
|
|
378
360
|
<p>引擎只允许:读取仓库事实、修改<b>已确认任务范围内</b>的文件、按策略创建<b>范围受控的本地提交</b>。远程 push / 合并 / 发布、数据库写入,需人单独决定。</p>
|
|
379
361
|
</div>
|
|
380
|
-
<details open><summary>切换预设就是开关吗?</summary><div
|
|
381
|
-
<details><summary
|
|
362
|
+
<details open><summary>切换预设就是开关吗?</summary><div>是。选「工程化开发引擎」才启用 <code>dev_task</code> 与编排技能;工作台中的 <code>standard</code>、<code>agile</code>、<code>minimal</code> 则选择该工具使用的流程骨架。</div></details>
|
|
363
|
+
<details><summary>技能和规则由谁提供?</summary><div>插件只内置用于会话编排的 <code>eng-delivery</code>。项目或个人技能与规则由你创建或安装;规则挂在技能下,再把技能挂到节点。空绑定时流程门禁照常运行。</div></details>
|
|
382
364
|
<details><summary>任务文档要不要提交?</summary><div>要。<code>.dsh/task-*.json</code> 是团队共享、跨会话恢复的任务事实,随分支提交——引擎已豁免 <code>.dsh/task-*.json</code> 与 <code>.dsh/eng.json</code>,不受文件范围门拦截;忽略它别人只能看到代码,看不到确认内容和进度。</div></details>
|
|
383
365
|
<details><summary>一个会话能同时做两个需求吗?</summary><div>一个任务对应一份状态文档、一个分支。新需求保存当前进度后切新分支,切回原分支即可恢复。</div></details>
|
|
384
366
|
<details><summary>提交被拒是怎么回事?</summary><div>通常是四类:没建 dev_task 任务、阶段没到提交检查点、消息格式不符、提交文件不在任务范围内。按拒绝原因修正即可。</div></details>
|
|
@@ -390,7 +372,7 @@ risk_level: high_risk // 涉及鉴权,验证要加证据
|
|
|
390
372
|
<p>状态查询中的 <code>evidence_blockers</code> 列出过期验证和附加技能回执;<code>commit.allowed</code> 同时检查这些阻塞及技能执行义务。<code>legal_next</code> 是流程定义的候选去向,不表示所有门禁已通过。</p>
|
|
391
373
|
<details><summary>记录需求时提示字段不存在怎么办?</summary><div>先读取 <code>status.artifact_requirements</code>,按当前阶段列出的字段填写。标准需求为 <code>scope</code> 和 <code>acceptance_criteria</code>,敏捷流程只有 <code>scope</code>。疑问、假设或待确认取舍写入字段正文,不新增字段名。错误输入整次不保存,修正后再提交;不需要修改流程配置或历史任务记录。</div></details>
|
|
392
374
|
<details><summary>验证命令被沙箱阻止怎么办?</summary><div><code>verify</code> 与 <code>skill_result</code> 默认使用会话权限。原命令被沙箱阻止后,用相同命令和 <code>sandbox_permissions: "danger-full-access"</code>、<code>justification</code> 申请单次重试。审批显示命令,批准后才执行;拒绝、取消或审批不可用时不执行、不写回执。授权只对本次调用生效,不改变会话权限。以本次回执的实际模式和退出码判断结果。</div></details>
|
|
393
|
-
<p class="stamp"
|
|
375
|
+
<p class="stamp">适用于当前研发版 · 最后更新:2026-09-26</p>
|
|
394
376
|
</section>
|
|
395
377
|
</main>
|
|
396
378
|
</div>
|
package/docs/resource-install.md
CHANGED
|
@@ -23,9 +23,11 @@
|
|
|
23
23
|
|
|
24
24
|
| 范围 | 技能 | 规则 |
|
|
25
25
|
| :--- | :--- | :--- |
|
|
26
|
-
| 项目 | 工作区 `.dsh/skills` | 工作区 `.dsh/rules` |
|
|
27
|
-
| 个人 | `$DSH_HOME/skills` | `$DSH_HOME/rules` |
|
|
28
|
-
|
|
26
|
+
| 项目 | 工作区 `.dsh/skills` | 工作区 `.dsh/rules` |
|
|
27
|
+
| 个人 | `$DSH_HOME/skills` | `$DSH_HOME/rules` |
|
|
28
|
+
|
|
29
|
+
工作台还会自动发现当前项目 `.agents/skills/<名称>/SKILL.md` 中的 Codex 技能。它保留在原目录,正文可查看;要改正文请编辑原文件。可在 DSH 工作台给该技能挂多条 `.dsh/rules` 规则;新建技能和规则仍默认存入 `.dsh`。
|
|
30
|
+
|
|
29
31
|
`DSH_HOME` 默认是用户主目录下的 `.dsh`。删除确认框显示实际路径;确认删除后不经过回收站。内置资源只读,项目和个人资源可以查看、编辑和删除。
|
|
30
32
|
|
|
31
33
|
## 格式与大小限制
|
package/hooks/commit-msg
CHANGED
|
@@ -158,10 +158,6 @@ function checkFileScope(state2, committing, config2) {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
// src/workflows.ts
|
|
161
|
-
function bundled(skill, ...rules) {
|
|
162
|
-
const ref = (name) => ({ source: "bundled", name });
|
|
163
|
-
return { skill: ref(skill), rules: rules.map(ref) };
|
|
164
|
-
}
|
|
165
161
|
var STANDARD = {
|
|
166
162
|
stages: ["\u9700\u6C42\u8BC4\u5BA1", "\u8BBE\u8BA1", "\u5F00\u53D1", "\u4EA4\u4ED8", "\u4EE3\u7801\u5BA1\u6838", "\u5B8C\u6210"],
|
|
167
163
|
start_stage: "\u9700\u6C42\u8BC4\u5BA1",
|
|
@@ -188,19 +184,7 @@ var STANDARD_RECOMMENDATION = {
|
|
|
188
184
|
{ stage: "\u9700\u6C42\u8BC4\u5BA1", id: "requirement", name: "\u9700\u6C42\u8BF4\u660E", fields: ["scope", "acceptance_criteria"] },
|
|
189
185
|
{ stage: "\u8BBE\u8BA1", id: "design", name: "\u8BBE\u8BA1\u6587\u6863", fields: ["approach", "risks", "impact"] },
|
|
190
186
|
{ stage: "\u4EE3\u7801\u5BA1\u6838", id: "review", name: "\u8BC4\u5BA1\u8BB0\u5F55", fields: ["conclusion", "issues"] }
|
|
191
|
-
]
|
|
192
|
-
stage_bindings: {
|
|
193
|
-
"\u9700\u6C42\u8BC4\u5BA1": { skills: [bundled("requirement-analysis", "security-redlines")] },
|
|
194
|
-
"\u8BBE\u8BA1": { skills: [bundled("solution-design")] },
|
|
195
|
-
"\u5F00\u53D1": { skills: [bundled("code-implement", "coding-conventions", "security-redlines")] },
|
|
196
|
-
"\u4EA4\u4ED8": { skills: [bundled("code-verify")] },
|
|
197
|
-
"\u4EE3\u7801\u5BA1\u6838": {
|
|
198
|
-
skills: [
|
|
199
|
-
bundled("code-review", "coding-conventions", "security-redlines"),
|
|
200
|
-
bundled("code-commit", "commit-conventions")
|
|
201
|
-
]
|
|
202
|
-
}
|
|
203
|
-
}
|
|
187
|
+
]
|
|
204
188
|
};
|
|
205
189
|
var AGILE = {
|
|
206
190
|
stages: ["\u9700\u6C42", "\u5F00\u53D1", "\u4EA4\u4ED8", "\u5BA1\u67E5"],
|
|
@@ -234,18 +218,9 @@ var AGILE_RECOMMENDATION = {
|
|
|
234
218
|
},
|
|
235
219
|
artifacts: [
|
|
236
220
|
{ stage: "\u9700\u6C42", id: "requirement", name: "\u9700\u6C42\u8BF4\u660E", fields: ["scope"] },
|
|
237
|
-
//
|
|
238
|
-
// `record artifact=review`. Declaring it keeps that binding executable: the
|
|
239
|
-
// engine refuses an undeclared artifact, so a bound skill pointing at one would
|
|
240
|
-
// be a contract the recommendation made impossible to satisfy.
|
|
221
|
+
// Optional review record; the flow's review gate itself does not require a skill.
|
|
241
222
|
{ stage: "\u5BA1\u67E5", id: "review", name: "\u8BC4\u5BA1\u8BB0\u5F55", fields: ["conclusion", "issues"] }
|
|
242
|
-
]
|
|
243
|
-
stage_bindings: {
|
|
244
|
-
"\u9700\u6C42": { skills: [bundled("requirement-analysis", "security-redlines")] },
|
|
245
|
-
"\u5F00\u53D1": { skills: [bundled("code-implement", "coding-conventions", "security-redlines")] },
|
|
246
|
-
"\u4EA4\u4ED8": { skills: [bundled("code-verify"), bundled("code-commit", "commit-conventions")] },
|
|
247
|
-
"\u5BA1\u67E5": { skills: [bundled("code-review", "coding-conventions", "security-redlines")] }
|
|
248
|
-
}
|
|
223
|
+
]
|
|
249
224
|
};
|
|
250
225
|
var MINIMAL = {
|
|
251
226
|
stages: ["\u5F00\u53D1", "\u4EA4\u4ED8"],
|
|
@@ -261,11 +236,7 @@ var MINIMAL_RECOMMENDATION = {
|
|
|
261
236
|
// A fast-change flow checks each change once, not twice under two headings a
|
|
262
237
|
// short change rarely distinguishes. The item still has to be reviewed — what
|
|
263
238
|
// drops is the duplicated verdict, which is where the weight actually was.
|
|
264
|
-
review_depth: "single"
|
|
265
|
-
stage_bindings: {
|
|
266
|
-
"\u5F00\u53D1": { skills: [bundled("code-implement", "coding-conventions", "security-redlines")] },
|
|
267
|
-
"\u4EA4\u4ED8": { skills: [bundled("code-commit", "commit-conventions")] }
|
|
268
|
-
}
|
|
239
|
+
review_depth: "single"
|
|
269
240
|
};
|
|
270
241
|
function deriveCapabilities(config2) {
|
|
271
242
|
const caps = [];
|