@godv61/dsh-task-engine 0.29.0 → 0.29.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.
@@ -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
@@ -54,7 +54,6 @@ dsh plugin --profile web add @godv61/dsh-task-engine
54
54
  | :--- | :--- |
55
55
  | **项目初始化** | 维护 `AGENTS.md`;工程会话可用 `dev_task init_project` 扫描仓库、预览并生成项目 Skill/Rule。 |
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.2(2026-10-01)
8
+
9
+ - “配置核心 Skill 的 Rule”现在可打开内置或用户级核心 Skill 的规则编辑器;保存时创建同名项目 Skill 并挂载 Rule,创建前不会修改项目文件。
10
+ - 工作台移除“旧版流程”标签;既有任务快照和 `.dsh/eng.json` 继续可读。
11
+
12
+ ## 0.29.1(2026-09-30)
13
+
14
+ - 修复 0.29.0 浏览器 Remote 清单漏掉四个自适应配置接口,导致“工程任务”工作台打开时报 `remote.readAdaptive is not a function` 的问题。
15
+ - DSH 兼容检查现在比对 Host 暴露的方法与浏览器描述符,防止同类遗漏再次发布。
16
+
7
17
  ## 0.29.0(2026-09-30)
8
18
 
9
19
  - 新任务可按低、中、高、超高复杂度选择任务级流程;内置六个元技能及交接契约,旧 `.dsh/eng.json` 与旧任务快照兼容。
@@ -1,8 +1,8 @@
1
1
  # 自适应工程任务
2
2
 
3
- 本页描述 `0.29.0` 的任务级流程。可选 SonarQube 接入复用 CI 扫描,要求先提交并推送才能审核;它还不能对未提交代码执行 Sonar 检查。
3
+ 本页描述 `0.29.2` 的任务级流程。可选 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": {
package/docs/faq.md CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ## 安装资源后就会自动使用吗?
18
18
 
19
- 还需要为技能配置规则,并在「自适应流程」把它挂到元技能;旧版流程则在「旧版流程」挂到阶段。任务执行时按阶段披露对应内容;安装行为本身不会执行资源中的脚本。
19
+ 还需要为技能配置规则,并在「自适应流程」把它挂到元技能。内置核心 Skill 也可直接点“配置核心 Skill 的 Rule”:保存时创建同名项目 Skill,再挂载所选规则。任务执行时按阶段披露对应内容;安装行为本身不会执行资源中的脚本。
20
20
 
21
21
  ## 改了流程,原来的任务会变化吗?
22
22
 
@@ -37,8 +37,8 @@ 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
44
  后续在“任务台账”查看阶段、实施项与验证审核记录。项目初始化会管理根目录的 `AGENTS.md`:先查看或生成草稿,再确认保存。
@@ -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.0</p>
20
+ <p>DeepSeek Harness · 0.29.2</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.0</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.2</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>
@@ -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"],
@@ -107,10 +106,6 @@
107
106
  <div class="note warn">如果团队要求「功能通过 → 未提交代码审核 → 修复 → 审核通过 → 再提交」,当前 Sonar 接入还不满足这一顺序。不要把本版 CI 检查描述为提交前 Sonar 审核。</div>
108
107
  <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
108
  </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
109
  <section id="limits">
115
110
  <h2>验证边界</h2>
116
111
  <ul>