@godv61/dsh-task-engine 0.17.0 → 0.19.0

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 CHANGED
@@ -138,14 +138,16 @@ dsh plugin --profile <name> add .
138
138
 
139
139
  ## 项目初始化(init)
140
140
 
141
- 二开 / 遗留项目常常没有文档,AI 接手前需要先「认识」这个项目。`dev_task`(operation=init)生成项目根的 `AGENTS.md` 描述文件:
141
+ 二开 / 遗留项目常常没有文档,AI 接手前需要先「认识」这个项目。`dev_task`(operation=init)走 **inspect → propose → apply** 三阶段管理项目根的 `AGENTS.md`,绝不直接覆盖已有治理文件:
142
142
 
143
- 1. `dev_task`(operation=init,不带 content)——读取现有 `AGENTS.md`(若有),返回给模型合并。
144
- 2. 模型扫描项目(目录结构、技术栈、构建/运行命令、约定、红线),写成 `AGENTS.md` 全文。
145
- 3. `dev_task`(operation=init,content=全文)——落盘前做**行数硬校验**(上限 200 行),超限拒绝并要求精简;若已存在 `AGENTS.md`,必须带 `overwrite: true` 才覆盖,防止裸覆盖手写约定。
143
+ 1. `inspect`——读取现有 `AGENTS.md`(若有)返回给模型;没有则提示扫描项目。
144
+ 2. `propose`——模型扫描(目录结构、技术栈、构建/运行命令、约定、红线)后给出全文草稿,此步**只预览不落盘**。
145
+ 3. `apply`——落盘。首次创建直接写入;覆盖已有 `AGENTS.md` 必须 `overwrite: true` 且**经人工批准**,否则拒绝。
146
146
 
147
147
  - **为什么是 `AGENTS.md`**:DSH 平台会把项目根的 `AGENTS.md` **自动注入到每个会话**——生成一次,之后每个任务开工 AI 都自带这份项目认知,引擎无需额外的注入逻辑。
148
148
  - **行数上限**:`AGENTS.md` 每次都进上下文,200 行(约 4–6K token)是硬约束,逼着只写「项目是什么 → 怎么跑 → 结构 → 约定 → 坑」,而不是塞长篇文档。
149
+ - **治理文件保护**:`AGENTS.md` 默认受保护——已有文件时 `apply` 不裸覆盖,需显式 `overwrite` + 人工批准。
150
+ - **工作台可视化入口(0.19.0)**:以上三阶段也能在网页工作台点按钮完成。工作台第一个标签页「项目初始化」会**加载展示**当前 `AGENTS.md`(无则显示「未初始化」);点「让 AI 初始化 / 重新初始化」由工作台调用默认模型扫描项目生成草稿(预览,不落盘),点「保存并覆盖」才写回;也可「手动编辑」后保存。页面入口与 `dev_task init` 读写的是同一份 `AGENTS.md`,两处共用 200 行硬约束。
149
151
 
150
152
  ## 状态与待办
151
153
 
@@ -166,4 +168,7 @@ dsh plugin --profile <name> add .
166
168
  - **skill / rule 查看 + 删除(0.14.0)**:内置 skill/rule 从「只读不可见」改为「可查看正文」;自建(项目/用户)skill/rule 新增删除(两步确认)。删改在类型层即把 `bundled` 排除,内置资源永不误删。
167
169
  - **弹窗 + markdown 查看(0.15.0)**:skill/rule 的查看与编辑从内联卡片改为居中宽弹窗;查看时正文用 DSH 自带的 `MarkdownText` 渲染成 markdown 富文本(不引入任何新依赖),编辑时正文保持纯文本。
168
170
  - **流程预设收敛(0.16.0)**:把「自由编辑阶段图/守卫/产物/提交规则/验证开关」收敛为「选一套内置流程预设 + 给节点挂 skill/rule」。新增 `src/workflows.ts` 内置 `standard` / `agile` / `minimal` 三套流程(阶段图、守卫、产物字段、提交规则、验证证据开关全部固化);`.dsh/eng.json` 从完整配置精简为 `{ flow, stage_bindings }`;工作台删掉流转/产物/提交规则/验证开关编辑 UI,只剩「流程预设 + 流程节点(只读)+ 阶段技能/规则」;git 提交钩子同步按 `flow` 选预设。
169
- - **项目初始化 + 语言无关内置规则(0.17.0)**:`dev_task` 新增 `init` 操作,生成项目根 `AGENTS.md`(DSH 每会话自动注入),落盘前做 200 行硬校验、已存在需 `overwrite` 才覆盖;内置 `solution-design` / `coding-conventions` / `security-redlines` 去掉 Java 专属概念(Impl / DTO / VO、Controller / Mapper),改成语言中立骨架,语言特定规范交给项目自建 rule。
171
+ - **项目初始化 + 语言无关内置规则(0.17.0)**:`dev_task` 新增 `init` 操作,生成项目根 `AGENTS.md`(DSH 每会话自动注入),落盘前做 200 行硬校验、已存在需 `overwrite` 才覆盖;内置 `solution-design` / `coding-conventions` / `security-redlines` 去掉 Java 专属概念(Impl / DTO / VO、Controller / Mapper),改成语言中立骨架,语言特定规范交给项目自建 rule。
172
+ - **工程可靠性加固(0.18.0)**:① 高风险任务与流程能力绑定——`high_risk` 任务只能在具备「验证门 + 文件范围 + 评审门」能力的流程创建,选 `agile`/`minimal` 直接拒绝;② 任务创建时固化流程快照(预设 id + version + 完整配置),后续 `status`/`advance`/`verify`/`review`/`commit` 一律用快照,中途改 `.dsh/eng.json` 不再漂移在途任务的门禁;③ 未知流程失败关闭——`.dsh/eng.json` 缺 `flow` 或 `flow` 不在预设里一律报错(`UNKNOWN_FLOW` / 缺字段),不再静默回退 `standard`;④ 核心 skill/rule 不可取消、不可被同名覆盖——项目阶段绑定只能追加不能移除预设自带绑定,同名规则/技能读内置版、新建同名被拒;⑤ `init` 升级 `inspect → propose → apply` 三阶段,覆盖已有 `AGENTS.md` 需人工批准。
173
+ - **会话工作目录修复(0.18.1)**:`dev_task` 的所有文件操作此前用 `fs.resolve(相对路径)` 不带 cwd,落到了 fs 后端默认目录(DSH 进程目录)而非会话工作区——在 web 会话里会把台账、配置、`AGENTS.md`、git 钩子写到/读到错误位置。改为从 `exec.agent.session.header.cwd` 取会话工作区并传给每个解析,补 4 项回归测试。
174
+ - **工作台项目初始化(0.19.0)**:工作台新增置顶的「项目初始化」标签页——加载展示项目根 `AGENTS.md`、一键让 AI 扫描项目生成草稿(预览后再确认写回)、支持手动编辑与覆盖;Host 控制器新增 `readInit`/`writeInit`/`generateInit` 三个 Remote,`generateInit` 通过 `ctx.llm` + 默认模型在 Host 端直接生成,复用 `dev_task init` 的 200 行硬约束。
package/docs/manual.html CHANGED
@@ -141,6 +141,8 @@ pnpm install &amp;&amp; pnpm run build &amp;&amp; pnpm dsh web</code></pre>
141
141
  </div>
142
142
  <div class="callout warn">
143
143
  <p>预设之外,单个任务还有两个模型自动判断的字段:<code>work_size</code>(tiny / standard / complex,决定拆多细)和 <code>risk_level</code>(standard / high_risk,决定验证强度)。它们不是流程档位,是单个任务的规模与风险标签。</p>
144
+ <p><strong>高风险任务只能在 <code>standard</code> 流程建</strong>——引擎要求高风险任务具备「验证门 + 文件范围 + 评审门」,<code>agile</code>/<code>minimal</code> 没有验证门和评审门,建 <code>high_risk</code> 任务会被直接拒绝。要跑高风险就选标准研发,或把风险降到 standard。</p>
145
+ <p>任务创建时会把所选流程<b>固化成快照</b>——之后在途任务一直按创建时的门禁走,中途改 <code>.dsh/eng.json</code> 只影响新任务,不影响已建任务。</p>
144
146
  </div>
145
147
  </section>
146
148
 
@@ -204,10 +206,9 @@ pnpm install &amp;&amp; pnpm run build &amp;&amp; pnpm dsh web</code></pre>
204
206
  <p>二开 / 遗留项目没有文档时,先让 AI 给项目建一份「描述文件」——项目根的 <code>AGENTS.md</code>。DSH 平台会把它<b>自动注入到每个会话</b>,生成一次,之后每个任务开工 AI 都自带这份项目认知。</p>
205
207
  <div class="callout"><p><strong>什么时候用:</strong>接手一个 AI 还不认识的项目(尤其二次开发的遗留代码)时,先跑一次 init 摸底;全新项目或 AI 已熟悉时可跳过。</p></div>
206
208
  <ol>
207
- <li>对 AI 说「帮我初始化这个项目」;AI 扫目录结构、技术栈、构建 / 运行命令、约定与红线。</li>
208
- <li>AI 写成 <code>AGENTS.md</code>,通过 <code>dev_task</code>(operation=init)落盘。</li>
209
- <li>落盘前硬校验<b>行数 ≤ 200 行</b>——超了必须精简到「项目是什么 → 怎么跑 → 结构 → 约定 → 坑」,只留骨架不塞长文。</li>
210
- <li>已有 <code>AGENTS.md</code> 时,引擎拒绝裸覆盖,必须先读回、合并后再带 <code>overwrite</code> 重写,保护手写约定。</li>
209
+ <li><b>inspect</b>:对 AI 说「帮我初始化这个项目」;AI 读现有 <code>AGENTS.md</code>(若有)返回,没有则扫目录结构、技术栈、构建 / 运行命令、约定与红线。</li>
210
+ <li><b>propose</b>:AI 写成 <code>AGENTS.md</code> 草稿,此步<b>只预览、不落盘</b>,同时硬校验<b>行数 ≤ 200 行</b>——超了精简到「项目是什么 → 怎么跑 → 结构 → 约定 → 坑」,只留骨架不塞长文。</li>
211
+ <li><b>apply</b>:落盘。首次创建直接写入;覆盖已有 <code>AGENTS.md</code> 必须带 <code>overwrite</code> 且<b>经人工批准</b>,保护项目已有治理文件不被 AI 裸覆盖。</li>
211
212
  </ol>
212
213
  <pre><code>项目根/
213
214
  ├─ AGENTS.md ← init 生成,DSH 每会话自动注入