@godv61/dsh-task-engine 0.29.1 → 0.29.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.
@@ -29,7 +29,7 @@ function diskFs() {
29
29
  }
30
30
  }
31
31
 
32
- test('Codex project Skills are discovered separately; new DSH Skills stay in .dsh', async t => {
32
+ test('Codex project Skills are discovered separately; new DSH Skills stay in .dsh', async t => {
33
33
  const root = fixture(t)
34
34
  const body = '---\nname: same\ndescription: Codex method\n---\nCodex body v1\n'
35
35
  put(join(root, '.agents/skills/same/SKILL.md'), body)
@@ -42,7 +42,23 @@ test('Codex project Skills are discovered separately; new DSH Skills stay in .ds
42
42
  const created = await Controller.prototype.writeSkill.call(receiver, { level: 'project', name: 'new-one', description: 'New DSH method', whenToUse: '', content: 'body', path: root })
43
43
  assert.equal(created.ok, true)
44
44
  assert.equal(readFileSync(join(root, '.dsh/skills/new-one/SKILL.md'), 'utf8').includes('body'), true)
45
- })
45
+ })
46
+
47
+ test('a project Skill can shadow a bundled meta Skill without replacing an existing project copy', async t => {
48
+ const root = fixture(t)
49
+ const receiver = { authorizedPath: async path => path }
50
+ const request = { level: 'project', name: 'requirements-analysis', description: 'Team requirements method',
51
+ whenToUse: 'During requirement analysis', content: 'Project method', path: root, createOnly: true }
52
+ const first = await Controller.prototype.writeSkill.call(receiver, request)
53
+ assert.equal(first.ok, true)
54
+ const file = join(root, '.dsh/skills/requirements-analysis/SKILL.md')
55
+ assert.match(readFileSync(file, 'utf8'), /Project method/)
56
+ const second = await Controller.prototype.writeSkill.call(receiver, { ...request, content: 'Should not replace' })
57
+ assert.equal(second.ok, false)
58
+ assert.match(readFileSync(file, 'utf8'), /Project method/)
59
+ const catalog = await Controller.prototype.listSkills.call(receiver, root)
60
+ assert.deepEqual(catalog.skills.filter(skill => skill.name === 'requirements-analysis').map(skill => skill.ref.source).sort(), ['bundled', 'project'])
61
+ })
46
62
 
47
63
  test('a bound Codex Skill loads its attached DSH Rule and reads edits next time', async t => {
48
64
  const root = fixture(t)
package/README.md CHANGED
@@ -52,9 +52,8 @@ dsh plugin --profile web add @godv61/dsh-task-engine
52
52
 
53
53
  | 页面 | 你可以做什么 |
54
54
  | :--- | :--- |
55
- | **项目初始化** | 维护 `AGENTS.md`;工程会话可用 `dev_task init_project` 扫描仓库、预览并生成项目 Skill/Rule。 |
55
+ | **项目初始化** | 分开管理 `AGENTS.md` 与项目 Skill/Rule。后者可在页面复制初始化请求,发给“工程化开发引擎”会话后由 `dev_task init_project` 扫描、预览并应用。 |
56
56
  | **自适应流程** | 查看四档任务路径、元技能绑定与可选 SonarQube 审核配置。 |
57
- | **旧版流程** | 维护旧项目的 `.dsh/eng.json`;已有任务继续按冻结快照执行。 |
58
57
  | **任务台账** | 查看实施、验证和审核记录,按关键词、阶段或风险筛选。 |
59
58
  | **技能** | 安装、编辑技能,并集中维护每个技能唯一的规则列表。 |
60
59
  | **规则** | 选择 Markdown 文件安装规则,维护项目或个人开发约定。 |
@@ -63,23 +62,15 @@ dsh plugin --profile web add @godv61/dsh-task-engine
63
62
 
64
63
  新路径的四档顺序、元技能交接契约、`init_project` 和可选 SonarQube 审核见[自适应工程任务](docs/adaptive-workflows.md)。
65
64
 
66
- **流程与工作方法各有职责。** 四档流程规定阶段与门禁,并在相应阶段加载内置元技能;项目业务技能和规则由使用者配置。旧版三个流程不自带技能或提交格式,「采用推荐配置」只填写可修改的提交文本、产物字段和评审深度。同一条规则可由多个技能共享。任务的流程与资源引用在创建时确定;Skill/Rule 正文在每次交互读取最新版本,创建时副本仅用于审计。[新流程说明](docs/adaptive-workflows.md) · [旧版配置细节](docs/configuration.md)
65
+ **流程与工作方法各有职责。** 四档流程规定阶段与门禁,并在相应阶段加载内置元技能;项目业务技能和规则由使用者配置。同一条规则可由多个技能共享。点击元技能的“配置核心 Skill 的 Rule”,内置或用户级 Skill 可在保存时生成同名项目副本,再挂载项目 Rule。任务的流程与资源引用在创建时确定;Skill/Rule 正文在每次交互读取最新版本,创建时副本仅用于审计。[自适应流程说明](docs/adaptive-workflows.md)
67
66
 
68
- ## 旧版流程兼容
69
-
70
- | 预设 | 阶段顺序 | 适用场景 |
71
- | :--- | :--- | :--- |
72
- | **完整研发** `standard` | 需求评审 → 设计 → 开发 → 交付 → 代码审核 → 完成 | 需要需求、方案和交付检查的完整开发任务。 |
73
- | **日常迭代** `agile` | 需求 → 开发 → 交付 → 审查 | 目标明确的日常开发任务。 |
74
- | **快速修改** `minimal` | 开发 → 交付 | 已明确做法的小改动。 |
75
-
76
- 旧版阶段顺序和检查条件继续有效;没有传入 `complexity` 的旧调用仍按 `.dsh/eng.json` 执行。新任务通过 `complexity` 使用四档自适应流程;旧任务不迁移或改写。
67
+ 已有任务仍按创建时的快照运行;旧版 `.dsh/eng.json` 也继续可读。工作台只展示自适应流程,旧版配置细节保存在[历史文档](docs/configuration.md)。
77
68
 
78
69
  ## 把自己的技能和规则带进来
79
70
 
80
71
  **选择文件 → 检查预览 → 选择范围 → 确认安装 → 挂到阶段。**
81
72
 
82
- 技能选择含 `SKILL.md` 的文件夹,规则选择一个 `.md` 文件。预览会显示名称、正文、文件数、体积和目标路径;同名资源不会被覆盖。
73
+ 技能选择含 `SKILL.md` 的文件夹,规则选择一个 `.md` 文件。预览会显示名称、正文、文件数、体积和目标路径;目标目录中已有同名资源不会被覆盖。项目级 Skill 可与内置 Skill 同名,以项目版本优先生效。
83
74
 
84
75
  | 安装范围 | 存放位置 | 用途 |
85
76
  | :--- | :--- | :--- |
package/docs/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@
4
4
 
5
5
  按版本查阅功能变化。当前使用方式以[项目首页](../README.md)和使用指南为准;历史条目中的实现方式、限制与测试数量可能已被后续版本替代。
6
6
 
7
+ ## 0.29.3(2026-10-01)
8
+
9
+ - “项目初始化”页明确区分项目 Skill/Rule 初始化与 `AGENTS.md` 生成,提供可复制的工程会话请求;“自适应流程”页增加直达入口。
10
+ - 说明 Web 服务更新后旧页面可能失去交互,需要刷新页面;规则配置按钮在新页面可打开编辑窗口。
11
+
12
+ ## 0.29.2(2026-10-01)
13
+
14
+ - “配置核心 Skill 的 Rule”现在可打开内置或用户级核心 Skill 的规则编辑器;保存时创建同名项目 Skill 并挂载 Rule,创建前不会修改项目文件。
15
+ - 工作台移除“旧版流程”标签;既有任务快照和 `.dsh/eng.json` 继续可读。
16
+
7
17
  ## 0.29.1(2026-09-30)
8
18
 
9
19
  - 修复 0.29.0 浏览器 Remote 清单漏掉四个自适应配置接口,导致“工程任务”工作台打开时报 `remote.readAdaptive is not a function` 的问题。
@@ -1,8 +1,8 @@
1
1
  # 自适应工程任务
2
2
 
3
- 本页描述 `0.29.0` 的任务级流程。可选 SonarQube 接入复用 CI 扫描,要求先提交并推送才能审核;它还不能对未提交代码执行 Sonar 检查。
3
+ 本页描述 `0.29.3` 的任务级流程。可选 SonarQube 接入复用 CI 扫描,要求先提交并推送才能审核;它还不能对未提交代码执行 Sonar 检查。
4
4
 
5
- 此文描述待发布的任务级流程。旧 `.dsh/eng.json`、三个旧流程与已创建任务的快照继续可读;新需求在工程化会话中先评估复杂度,调用 `dev_task assess` 预览,再用 `create` 的 `complexity` 与 `complexity_reason` 创建任务。复杂度由需求范围和实现依赖决定,`risk_level` 单独判断。
5
+ 旧 `.dsh/eng.json` 与已创建任务的快照继续可读,工作台不再提供旧版流程配置页。新需求在工程化会话中先评估复杂度,调用 `dev_task assess` 预览,再用 `create` 的 `complexity` 与 `complexity_reason` 创建任务。复杂度由需求范围和实现依赖决定,`risk_level` 单独判断。
6
6
 
7
7
  | 复杂度 | 适用情形 | 元技能顺序 |
8
8
  | :--- | :--- | :--- |
@@ -26,6 +26,8 @@
26
26
 
27
27
  每个节点始终加载同名核心 Skill。`.dsh/meta.json` 的 `meta_bindings` 只增加项目需要的 Skill 名称,不决定整个项目所有会话的流程。相同名称按 `.dsh/skills` → `.agents/skills` → `$DSH_HOME/skills` → 插件内置解析。生效 Skill 的 `profile.json` 持有 Rule 引用;项目同名覆盖用户级时采用项目 Skill 自身的 Rule,不暗中合并。
28
28
 
29
+ 工作台中点击“配置核心 Skill 的 Rule”即可编辑。若核心 Skill 当前来自内置、用户级或 `.agents/skills`,保存时会先复制为同名 `.dsh/skills` 项目 Skill,再写入该项目 Skill 的 Rule 档案;打开编辑器不会写入文件。
30
+
29
31
  ```json
30
32
  {
31
33
  "meta_bindings": {
@@ -39,6 +41,8 @@
39
41
 
40
42
  ## 初始化项目知识
41
43
 
44
+ 工作台“项目初始化”页将项目 Skill/Rule 与 `AGENTS.md` 分为两个区域。“自适应流程”页顶部也有“初始化项目 Skill / Rule”入口。点击“复制初始化请求”后,在项目根工作区的新“工程化开发引擎”会话中粘贴发送;页面本身不会启动模型或写入 Skill/Rule。
45
+
42
46
  在项目根目录运行 `dev_task init_project phase=inspect`。扫描读取一级目录与常见构建清单,返回结构、可证实的技术栈版本及建议的多个项目 Skill 名称,例如 `eam-project-map`、`eam-tech-stack`、`eam-code-backend`。模型结合实际源码、测试和现有治理文件拟定 Skill/Rule 内容;`phase=propose` 预览文件与挂载关系;用相同内容及哈希调用 `phase=apply` 才写入 `.dsh/skills`、`.dsh/rules` 和 `.dsh/meta.json`。已有同名资源不会被 init 覆盖。扫描结果只提供证据,旧代码中的偶发写法不能自动成为团队规则。
43
47
 
44
48
  ## 可选 SonarQube 审核
package/docs/faq.md CHANGED
@@ -6,9 +6,13 @@
6
6
 
7
7
  本项目面向本机个人工作台。日常使用重点是选对工作区、明确操作目标、保护现有文件和保留任务记录;多用户服务器的会话权限隔离不属于当前产品的必修项。
8
8
 
9
- ## 为什么安装了插件,聊天里没有 dev_task?
10
-
11
- 安装会添加工作台,但任务工具只在挂载插件 agent 的会话预设中启用。新建会话时选择“工程化开发引擎”,再检查工具是否可用。工作台中的“标准研发”等选项是任务流程,不能代替会话预设开关。
9
+ ## 为什么安装了插件,聊天里没有 dev_task?
10
+
11
+ 安装会添加工作台,但任务工具只在挂载插件 agent 的会话预设中启用。新建会话时选择“工程化开发引擎”,再检查工具是否可用。工作台中的“标准研发”等选项是任务流程,不能代替会话预设开关。
12
+
13
+ ## 项目 Skill/Rule 的 init 在哪里?
14
+
15
+ 进入工作台“项目初始化”页,复制“项目 Skill / Rule 初始化”请求,在项目根工作区的“工程化开发引擎”会话中发送。模型会用 `dev_task init_project` 先扫描和预览,确认后才写入。页面下方的 `AGENTS.md` 生成是独立功能。“自适应流程”页顶部也有直达入口。Web 服务升级后若旧页面按钮无响应,请刷新页面。
12
16
 
13
17
  ## 能自己增删流程阶段吗?
14
18
 
@@ -16,7 +20,7 @@
16
20
 
17
21
  ## 安装资源后就会自动使用吗?
18
22
 
19
- 还需要为技能配置规则,并在「自适应流程」把它挂到元技能;旧版流程则在「旧版流程」挂到阶段。任务执行时按阶段披露对应内容;安装行为本身不会执行资源中的脚本。
23
+ 还需要为技能配置规则,并在「自适应流程」把它挂到元技能。内置核心 Skill 也可直接点“配置核心 Skill 的 Rule”:保存时创建同名项目 Skill,再挂载所选规则。任务执行时按阶段披露对应内容;安装行为本身不会执行资源中的脚本。
20
24
 
21
25
  ## 改了流程,原来的任务会变化吗?
22
26
 
@@ -37,11 +37,11 @@ pnpm dsh web --no-open
37
37
  ## 3. 配置第一个项目
38
38
 
39
39
  1. 在工作台顶部选择工作区。
40
- 2. 在「自适应流程」页查看四档路径;旧项目可在「旧版流程」继续维护原预设。
41
- 3. 如需自己的技能或规则,在对应页面安装,再挂载到元技能或旧版阶段。
40
+ 2. 在「自适应流程」页查看四档路径,并按需设置 SonarQube 审核。
41
+ 3. 如需自己的技能或规则,在对应页面安装,再挂载到元技能;内置核心 Skill 可在配置 Rule 时复制为同名项目 Skill。
42
42
  4. 保存配置,在使用“工程化开发引擎”预设的会话中描述任务。
43
43
 
44
- 后续在“任务台账”查看阶段、实施项与验证审核记录。项目初始化会管理根目录的 `AGENTS.md`:先查看或生成草稿,再确认保存。
44
+ 后续在“任务台账”查看阶段、实施项与验证审核记录。“项目初始化”页分为两部分:项目 Skill/Rule 初始化先复制请求到工程化开发引擎会话,由 `dev_task init_project` 执行扫描、预览、确认后应用;`AGENTS.md` 可直接在页面生成草稿并确认保存。
45
45
 
46
46
  ## 两种预设的区别
47
47
 
@@ -49,8 +49,7 @@ pnpm dsh web --no-open
49
49
  | :--- | :--- |
50
50
  | 会话中的“工程化开发引擎” | 是否启用 `dev_task`、配套技能和工程人设。 |
51
51
  | 四档自适应流程 | 每个新需求按复杂度独立选择阶段与门禁。 |
52
- | 三个旧流程预设 | 沿用项目 `.dsh/eng.json` 中的阶段与门禁。 |
53
52
 
54
53
  如果切换到未挂载插件 agent 的其他会话预设,该会话不会启用这套任务工具;侧边栏工作台仍可使用。
55
54
 
56
- 下一步:[配置流程](configuration.md) · [安装资源](resource-install.md) · [常见问题](faq.md)
55
+ 下一步:[自适应流程](adaptive-workflows.md) · [安装资源](resource-install.md) · [常见问题](faq.md)
package/docs/manual.html CHANGED
@@ -17,7 +17,7 @@
17
17
  </head>
18
18
  <body>
19
19
  <header>
20
- <p>DeepSeek Harness · 0.29.1</p>
20
+ <p>DeepSeek Harness · 0.29.3</p>
21
21
  <h1>DSH Task Engine 使用手册</h1>
22
22
  <p>按每个需求选择工程路径,用项目 Skill 和 Rule 复用团队规范;SonarQube 审核由项目自行选择。</p>
23
23
  </header>
@@ -31,14 +31,13 @@
31
31
  <a href="#init">项目初始化</a>
32
32
  <a href="#sonar">可选 SonarQube</a>
33
33
  <a href="#commit">为什么当前要提交</a>
34
- <a href="#legacy">旧版流程</a>
35
34
  <a href="#limits">验证边界</a>
36
35
  </nav>
37
36
  <main>
38
37
  <section id="status">
39
38
  <h2>版本状态</h2>
40
- <div class="note">本手册描述 <code>0.29.1</code> 的自适应流程、项目 Skill/Rule 初始化与可选 SonarQube CI 接入。Sonar 审核当前需要先提交并完成 CI 扫描,尚不支持未提交代码的本地 Sonar 审核。</div>
41
- <p>本手册替换了旧版 HTML 说明。旧版三流程的详细操作保存在<a href="manual-legacy.html">历史手册</a>,现行新功能的技术细节见<a href="adaptive-workflows.md">自适应流程说明</a>。</p>
39
+ <div class="note">本手册描述 <code>0.29.3</code> 的自适应流程、项目 Skill/Rule 初始化与可选 SonarQube CI 接入。Sonar 审核当前需要先提交并完成 CI 扫描,尚不支持未提交代码的本地 Sonar 审核。</div>
40
+ <p>本手册替换了旧版 HTML 说明。旧任务快照仍可读,工作台已移除旧版流程页。历史操作保存在<a href="manual-legacy.html">历史手册</a>,现行技术细节见<a href="adaptive-workflows.md">自适应流程说明</a>。</p>
42
41
  </section>
43
42
  <section id="start">
44
43
  <h2>开始使用</h2>
@@ -48,7 +47,7 @@
48
47
  <li>新建「工程化开发引擎」会话并描述需求。模型先分析复杂度,用 <code>dev_task assess</code> 预览,再在创建任务时给出 <code>complexity</code> 和理由。</li>
49
48
  <li>在「任务台账」查看阶段、验证、审核及 Sonar 记录。每个任务独立选择流程;同一项目里的其他会话不会被统一推入同一流程。</li>
50
49
  </ol>
51
- <p>工作台的「项目初始化」仍可维护 <code>AGENTS.md</code>;生成项目 Skill/Rule 使用会话中的 <code>dev_task init_project</code>。</p>
50
+ <p>工作台「项目初始化」页分开显示项目 Skill/Rule 初始化与 <code>AGENTS.md</code> 生成。前者可复制请求到工程化开发引擎会话,再由 <code>dev_task init_project</code> 执行;页面本身不会直接生成项目 Skill/Rule。</p>
52
51
  </section>
53
52
  <section id="flows">
54
53
  <h2>四档任务流程</h2>
@@ -66,7 +65,7 @@
66
65
  <section id="skills">
67
66
  <h2>元技能、Skill 与 Rule</h2>
68
67
  <p>内置六个通用元技能:需求分析、架构设计、任务编排、代码开发、测试、代码审核。每个阶段加载同名核心 Skill;使用者可为阶段增加项目 Skill。每个 Skill 的 <code>profile.json</code> 保存它引用的 Rule 和证据要求。</p>
69
- <p>同名 Skill 的选择顺序是 <code>.dsh/skills</code> → <code>.agents/skills</code> → 用户目录 → 插件内置。项目同名 Skill 采用自己的 Rule,不混合用户级同名 Skill 的规则。工作台可编辑项目 Skill 的 Rule 绑定。</p>
68
+ <p>同名 Skill 的选择顺序是 <code>.dsh/skills</code> → <code>.agents/skills</code> → 用户目录 → 插件内置。项目同名 Skill 采用自己的 Rule,不混合用户级同名 Skill 的规则。点击“配置核心 Skill 的 Rule”即可编辑;若当前是内置或用户级 Skill,保存时先复制为同名项目 Skill,再写入规则档案。</p>
70
69
  <pre><code>{
71
70
  "meta_bindings": {
72
71
  "requirements-analysis": ["my-project-map"],
@@ -77,6 +76,7 @@
77
76
  </section>
78
77
  <section id="init">
79
78
  <h2>项目初始化</h2>
79
+ <p>从「自适应流程」页顶部点击「初始化项目 Skill / Rule」,或直接进入「项目初始化」页。点击「复制初始化请求」,在项目根工作区的新「工程化开发引擎」会话中粘贴发送。此页下方的 <code>AGENTS.md</code> 生成是另一项独立功能。</p>
80
80
  <p>在项目工作区用 <code>dev_task init_project phase=inspect</code> 扫描目录和常见构建清单,取得项目结构、技术栈及可证实版本。模型再检查代表性源码,拟定项目地图、技术栈、后端或前端开发等 Skill 与 Rule。</p>
81
81
  <ol>
82
82
  <li><code>phase=inspect</code>:只读扫描并返回建议。</li>
@@ -107,10 +107,6 @@
107
107
  <div class="note warn">如果团队要求「功能通过 → 未提交代码审核 → 修复 → 审核通过 → 再提交」,当前 Sonar 接入还不满足这一顺序。不要把本版 CI 检查描述为提交前 Sonar 审核。</div>
108
108
  <p>参考:<a href="https://docs.sonarsource.com/sonarqube-for-intellij/using/rules">SonarQube for IntelliJ 规则与 Connected Mode</a>、<a href="https://docs.sonarsource.com/sonarqube-server/2025.4/user-guide/connected-mode">SonarQube Server 的本地分析说明</a>。</p>
109
109
  </section>
110
- <section id="legacy">
111
- <h2>旧版流程兼容</h2>
112
- <p>已有 <code>.dsh/eng.json</code> 的项目仍可在「旧版流程」管理 <code>standard</code>、<code>agile</code>、<code>minimal</code>。未带 <code>complexity</code> 的旧调用继续按旧配置运行;旧任务继续使用创建时的快照。细节见<a href="configuration.md">旧流程配置</a>和<a href="manual-legacy.html">历史 HTML 手册</a>。</p>
113
- </section>
114
110
  <section id="limits">
115
111
  <h2>验证边界</h2>
116
112
  <ul>