@godv61/dsh-task-engine 0.23.0 → 0.23.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.
Files changed (52) hide show
  1. package/.p0-test.mjs +739 -734
  2. package/.workflow-test.mjs +234 -0
  3. package/README.md +78 -184
  4. package/cordis.patch.yml +10 -10
  5. package/defaults/eng.json +10 -10
  6. package/docs/CHANGELOG.md +185 -0
  7. package/docs/README.md +27 -0
  8. package/docs/assets/workflow-banner.svg +29 -0
  9. package/docs/configuration.md +49 -0
  10. package/docs/development.md +53 -0
  11. package/docs/faq.md +43 -0
  12. package/docs/getting-started.md +51 -0
  13. package/docs/manual.html +17 -11
  14. package/docs/release-0.23.0.md +3 -5
  15. package/docs/release-0.23.1.md +58 -0
  16. package/docs/resource-install.md +55 -11
  17. package/docs/roadmap.md +33 -0
  18. package/docs/testing/0.23.1//346/265/213/350/257/225/346/212/245/345/221/212.md +34 -0
  19. package/docs/testing/0.23.1//350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/346/230/216/347/273/206.md +41 -0
  20. package/docs/workflow-regression.md +36 -0
  21. package/hooks/commit-msg +4 -4
  22. package/lib/client.js +15 -14
  23. package/lib/client.js.map +3 -3
  24. package/lib/controller.js +5 -15
  25. package/lib/controller.js.map +1 -1
  26. package/lib/dev-task.js +188 -36
  27. package/lib/dev-task.js.map +1 -1
  28. package/lib/engine.d.ts +17 -1
  29. package/lib/engine.js +5 -0
  30. package/lib/engine.js.map +1 -1
  31. package/lib/shipped-skills.js +2 -1
  32. package/lib/shipped-skills.js.map +1 -1
  33. package/lib/skill-audit.d.ts +16 -0
  34. package/lib/skill-audit.js +60 -0
  35. package/lib/skill-audit.js.map +1 -0
  36. package/lib/workflows.js +4 -4
  37. package/lib/workflows.js.map +1 -1
  38. package/package.json +4 -3
  39. package/preset/agent.cordis.yml +21 -21
  40. package/preset/enable.mjs +87 -87
  41. package/preset/persona.md +4 -4
  42. package/preset/preset.yml +1 -1
  43. package/rules/coding-conventions.md +6 -6
  44. package/rules/commit-conventions.md +5 -5
  45. package/rules/security-redlines.md +5 -5
  46. package/skills/code-commit/SKILL.md +13 -13
  47. package/skills/code-implement/SKILL.md +23 -22
  48. package/skills/code-review/SKILL.md +13 -13
  49. package/skills/code-verify/SKILL.md +16 -11
  50. package/skills/eng-delivery/SKILL.md +38 -34
  51. package/skills/requirement-analysis/SKILL.md +15 -15
  52. package/skills/solution-design/SKILL.md +18 -15
package/defaults/eng.json CHANGED
@@ -1,10 +1,10 @@
1
- {
2
- "flow": "standard",
3
- "stage_bindings": {
4
- "需求评审": { "skills": ["requirement-analysis"], "rules": ["security-redlines"] },
5
- "设计": { "skills": ["solution-design"] },
6
- "开发": { "skills": ["code-implement"], "rules": ["coding-conventions"] },
7
- "交付": { "skills": ["code-verify", "code-commit"], "rules": ["coding-conventions", "commit-conventions"] },
8
- "代码审核": { "skills": ["code-review"], "rules": ["security-redlines"] }
9
- }
10
- }
1
+ {
2
+ "flow": "standard",
3
+ "stage_bindings": {
4
+ "需求评审": { "skills": ["requirement-analysis"], "rules": ["security-redlines"] },
5
+ "设计": { "skills": ["solution-design"] },
6
+ "开发": { "skills": ["code-implement"], "rules": ["coding-conventions"] },
7
+ "交付": { "skills": ["code-verify"], "rules": ["coding-conventions"] },
8
+ "代码审核": { "skills": ["code-review", "code-commit"], "rules": ["security-redlines", "commit-conventions"] }
9
+ }
10
+ }
@@ -0,0 +1,185 @@
1
+ # 更新日志
2
+
3
+ [← 文档导航](README.md)
4
+
5
+ 按版本查阅功能变化。当前使用方式以[项目首页](../README.md)和使用指南为准;历史条目中的实现方式、限制与测试数量可能已被后续版本替代。
6
+
7
+ ## 0.23.1
8
+
9
+ - 汇总本轮候选版的资源来源、Windows 技能加载、实施审核保留、派工状态、真实技能/验证/提交回执及状态一致性修复。
10
+ - 新增 status.artifact_requirements,提前披露当前阶段的记录字段和缺项;未知字段拒绝时给出恢复指引,整次写入保持不变。
11
+ - 需求技能按预设实际字段记录,修正敏捷流程误用标准字段的问题;小修正、权限恢复、契约核对和测试证据说明同步更新。
12
+ - 旧任务保留冻结流程,新任务使用标准 v2 和执行证据门禁。实际能力及未覆盖边界见[发布说明](release-0.23.1.md)与[测试说明](testing/0.23.1/测试报告.md)。
13
+
14
+ 以下 rc 条目为本轮迭代历史,已汇总至 0.23.1;“尚未发布”描述的是当时状态。
15
+
16
+ ## 0.23.1-rc.5(本地回归候选,尚未发布)
17
+
18
+ - 修复状态查询显示允许提交、实际却因技能未执行或回执过期而拒绝的不一致。status 新增 evidence_blockers,commit.allowed 纳入同一技能与文件摘要检查;不改写历史验证回执。
19
+ - 回归覆盖缺失技能、两种回执同时过期、只刷新验证、全部刷新后恢复,以及只读状态查询不修改台账。
20
+ - 测试说明区分已执行但失败、依赖阻塞未执行和模拟验证,要求测试对象与证据对应;不以报告行数证明质量。
21
+
22
+ ## 0.23.1-rc.4(本地回归候选,尚未发布)
23
+
24
+ - 小修正允许主代理实施,保留两阶段审核与必要验证,不强制重新派子代理和无关编译。
25
+ - 子任务指引要求沙箱拒绝后走正式审批或报告阻塞,禁止反复换等价命令、改 ACL 规避。
26
+ - 这些是执行指引改进,不替代 Harness 沙箱或子代理控制能力;实际回归仍在进行。
27
+
28
+ ## 0.23.1-rc.3(本地回归候选,尚未发布)
29
+
30
+ - 状态明确列出需要命令回执的附加技能;内置技能不重复要求 skill_result,可选的内置回执过期不会额外阻塞流程。
31
+ - 派工前登记 dispatch,自动标记实施项进行中;重派清除旧审核,禁止同时派发另一进行中项。登记表示派工意图,实际执行以工具日志为准。
32
+ - 已有实施项更新可省略标题,保留原文和审核;已审核项改标题且仍标完成时立即拒绝,避免追加修复项造成审核静默丢失。
33
+ - 方案要求核对真实接口字段及组件行为;审批驳回后先获取反馈、修订方案,再重新申请。
34
+ - 验证和审核指引补充异步时序、组件交互及上游异常响应检查;编译和源码匹配不能代替行为测试。
35
+ - 已安装并在原 EAMDEV-R2 任务实机验证:省略标题保留审核、派工先设进行中、重派撤销旧审核。完整终态闭环仍在验证。
36
+
37
+ ## 0.23.1-rc.2(本地回归候选,尚未发布)
38
+
39
+ - 修复同名项目/个人资源覆盖导致来源误标。
40
+ - 第二轮实机发现并修复 Windows CRLF / BOM 导致内置技能注册、技能列表与正文读取失败;安装包检查覆盖七个内置技能注册。
41
+ - status 支持不带 task_id 发现工作区任务;更新实施项状态保留已有审核记录。
42
+ - 验证命令继承调用会话的沙箱策略及取消信号,返回真实失败与沙箱信息。
43
+ - 标准流程 v2 将提交放在审核之后;新任务完成前检查真实提交回执。
44
+ - 新任务检查技能加载记录,附加技能要求执行证据;终态技能提前执行。
45
+ - 验证回执关联声明文件内容,文件或范围变化后须重验。旧任务不强制迁移。
46
+
47
+ 真实 EAM 项目重跑尚未完成,不能据自动化测试宣告实机闭环通过。
48
+
49
+ ## 0.23.0
50
+
51
+ - 技能选择系统文件夹,规则选择 Markdown 文件,预览后确认安装。
52
+ - 统一资源卡片、搜索筛选、加载反馈、删除确认和窄屏布局。
53
+ - 增加任务台账搜索、风险/阶段筛选与验证审核摘要。
54
+ - 加强导入校验与失败清理,修复任务并发写入的版本读取次序。
55
+ - 优先使用 Harness 已注册的工作区,补充发布包行为测试和 Node 22/24 CI。
56
+
57
+ [完整发布说明](release-0.23.0.md) · [测试报告](testing/0.23.0/测试报告.md)
58
+
59
+ ## 早期版本
60
+
61
+ 以下保留原项目的版本记录,供追溯变化;历史验证描述不代表对当前版本的额外测试承诺。
62
+
63
+ ### 0.22.7
64
+
65
+ **skill 目录选择器 + 包形态(0.22.7)**:① 安装表单新增「浏览…」——host 端 `listDirs` 逐级列举目录(Windows 盘符快捷 + 路径输入回车跳转 + ↑ 上级 + **可点击面包屑**标明当前位置),含 `SKILL.md` 的子目录标「含 SKILL.md ✓」,当前目录能否直接安装实时提示,点「选此目录」回填路径,彻底不用手输;② 安装上限放宽到 1000 文件 / 100 MB(单文件 20 MB 上限),skill 作为<b>完整包</b>安装(references / scripts / 模板 / 资源等全部保留,仍自动排除 node_modules / `.git` / `__pycache__` 缓存);③ 实机验证<b>项目级</b>(工作区 `.dsh/skills`)与<b>用户级</b>(`$DSH_HOME/skills`)两条安装路径均完整落盘,逐级进入与面包屑经浏览器实测确认。
66
+
67
+ ### 0.22.6
68
+
69
+ **文案与安装体验(0.22.6)**:「安装 skill」输入框 placeholder 去掉示例绝对路径,改为通用提示「本机 skill 目录,需含 SKILL.md」;`installSkill` 支持<b>容器目录自动定位</b>——填的目录自身没有 SKILL.md 但直接子目录里恰好有一个含 SKILL.md 的 skill 根时自动装入该子目录(多个候选则提示直接填 skill 根)。
70
+
71
+ ### 0.22.5
72
+
73
+ **目录型 skill 安装(0.22.5)**:工作台「技能」页新增「安装 skill」——把本机已有的目录型 skill(`SKILL.md` + references / scripts / agents 等文件)一键装到<b>项目级</b>(工作区 `.dsh/skills`,团队共享)或<b>用户级</b>(`$DSH_HOME/skills`,个人所有项目可用);安装校验 SKILL.md frontmatter、拒绝覆盖内置同名、拒绝覆盖已装同名、自动排除 node_modules / .git / `__pycache__` 等缓存目录并限制 200 文件 / 20 MB;实机验证 `software-testing` 目录型 skill 从 UI 安装完整落盘(含 references + scripts)。
74
+
75
+ ### 0.22.3
76
+
77
+ **可信边界加固(0.22.3,采纳 GPT 评审)**:① 验证命令统一在任务记录的项目根运行(monorepo 子目录不再跑错目录),receipt.root 与任务根强校验;② 旧任务(无 frozen 快照)禁止升 `high_risk`——迁移或重建后才可;③ `init apply` 强制 `expected_hash`,新增 `existing_hash` 防审批期间文件被换(TOCTOU);④ 任务记录新增 `revision`,每次写入 compare-and-swap,并发覆盖直接报错(`changed concurrently`);⑤ 工作台 Remote 增加 host workspace registry(`registerWorkspace` 供 harness 集成,注册后未授权路径一律拒绝);⑥ sandbox 升级审批展示 workspace;⑦ 文档明确 hook(本地反馈)/ host(工具流约束)/ CI(最终可信门禁)三层职责边界。
78
+
79
+ ### 0.22.2
80
+
81
+ **质量修补(0.22.2,采纳 codex 评审五项)**:① client typecheck 修复——`project.ts` 不再依赖 `node:path`,浏览器面可完整类型检查;② sandbox 升级补审批——`sandbox_permissions` 必须与 `justification` 成对出现,`danger-full-access` 需人工一次批准,无审批服务即拒绝;③ Remote 任意路径设防——工作台 Remote 拒绝非绝对路径与系统级根目录;④ `set_risk` 升到 `high_risk` 时受流程能力门约束(`minimal`/`agile` 拒绝,不再绕过 `create` 的检查);⑤ `loadTask` 补齐旧记录缺失字段(items / verification / review / commits),损坏记录 fail-closed 而非引擎裸崩。
82
+
83
+ ### 0.22.1
84
+
85
+ **沙箱写入修复(0.22.1)**:`dev_task` 的文件写入此前没有携带按调用传递的沙箱策略(`writeText` 的 `sandboxPolicy` 参数),在 DSH 文件沙箱下会把 workspace 内的任务记录写入误判为越界而拒绝(`file access denied under workspace-write mode`,且会话策略变化无法影响它);现在每次写入显式携带 `{ mode, workspaceRoot: 会话目录 }`,并新增 `sandbox_permissions` 参数(`workspace-write` / `danger-full-access`)作为被拒后的一次性升级路径。
86
+
87
+ ### 0.22.0
88
+
89
+ **审计和发布质量(0.22.0)**:① 流程快照 hash——任务创建时固化 `config` 的 SHA-256,工具与提交钩子读任务记录时校验,被手改的快照一律拒绝继续;② 提交钩子完整性检测——新增 `dev_task verify_hook`,比对 `.git/hooks/commit-msg` 与内置门禁的 hash,被替换/篡改立即报错;③ 风险降级审批——新增 `set_risk`,`high_risk → standard` 必须人工批准并落 `risk_downgrades` 审计记录;④ 验证回执绑定项目根——receipt 记录 `root`,与任务 workspace 绑定;⑤ 内置规则指纹锁定——创建时固化内置规则内容指纹,包升级后 `status` 报 `bindings_drift` 而非静默换规则;⑥ 多项目 / 多语言 / 多任务测试矩阵补强。
90
+
91
+ ### 0.21.0
92
+
93
+ **通用项目适配(0.21.0)**:① 新增项目适配层 `src/project.ts`——按特征文件识别 Node / Java / Python / Go / Rust 类型,从 workspace 向上发现项目根(`.git` / `.dsh` / 语言特征文件);② 各语言默认验证命令(`npm test` / `mvn -q test` / `python -m pytest` / `go test ./...` / `cargo test`),`verify` 不带 `command` 时按 `.dsh/eng.json` 的 `verify_command` → 语言默认链自动跑真实命令;③ 治理文件识别扩展至 `AGENTS.md`、`CLAUDE.md`、`.cursorrules`,`init inspect` 一并报告治理文件、项目根、语言栈与项目级 skill/rule 目录(约定 `.dsh/rules/*.md`、`.dsh/skills/<name>/SKILL.md`);④ 提交钩子加风险策略——触及敏感路径(`.git` / `.env` / credentials / secrets;`.dsh` 的任务记录与流程配置由快照 hash 与豁免保护)要求任务为 `high_risk` 且验证有真实命令回执,否则拒绝;⑤ 初始化写入越界保护——`init` / `create` 的写入目标必须落在项目根内;任务记录新增 `root` / `project_type` 字段。
94
+
95
+ ### 0.20.0
96
+
97
+ **安全闭环(0.20.0)**:① 验证改真实命令回执——`dev_task verify` 新增 `command` 入参,引擎通过宿主 shell 服务真实运行该命令并落 `VerificationReceipt`(命令 / 退出码 / 超时 / 中止 / 起止时间 / stdout / stderr);`high_risk` 任务的 `verified` 门改为要求回执 `exit_code === 0` 且非超时 / 中止,纯文本 `passed` 声明不再放行(常规风险仍可用 `passed` + `evidence` 文本);② 文件范围检查补 `T` + 改用 `--name-status`——`--diff-filter=ACMRDT` 纳入类型变换,提交状态随范围拒绝一并报出,删除 / 类型变换 / 重命名的旧·新路径都受范围检查;③ 提交钩子改为从 `engine.ts` / `workflows.ts` 单一源打包生成(`build-hook.mjs`),彻底消除手写镜像漂移,未知流程在钩子侧同样 fail-closed(不再静默回退 `standard`)。
98
+
99
+ ### 0.19.2
100
+
101
+ **审计修复(0.19.2)**:补齐七项——① 提交钩子 `stagedFiles` 用 `core.quotePath=false` + `-z` 按 NUL 拆分(中文文件名不再被八进制转义误拒)并补 `D`(删除范围外文件也被拦);② 提交消息第一段改为 task id、钩子按 id 精确定位任务(不再按分支/mtime 猜,同分支多任务不再锁错);③ artifact id 全流程唯一 + `record` 校验产物属于当前阶段(堵越阶段复用);④ 高风险验证证据 `trim()` 后须非空(`evidence:[""]` 不再通过);⑤ README/手册加「诚实边界」,明说验证/评审/实施项是模型自报、需人工或 CI 兜底;⑥ 文档修正优先级(内置 &gt; 用户 &gt; 项目、内置不可覆盖)与 enable 措辞,`.dsh/task-*.json`/`eng.json` 豁免文件范围门;⑦ 提交钩子改用任务快照的 frozen 配置校验(对抗任务执行中改流程导致的配置漂移);⑧ 工作台 `writeInit` 对齐 `init` 保护(已有 `AGENTS.md` 时需显式 overwrite + 前端确认才覆盖);⑨ `.p0-test.mjs` 纳入发布包,装包后 `npm test` 可用。新增回归测试。
102
+
103
+ ### 0.19.1
104
+
105
+ **使用手册跟进(0.19.1)**:随包发布的 `docs/manual.html` 补上工作台「项目初始化」(默认置顶标签页、项目根自动发现、AI 生成 150 秒超时 + 覆盖需人工确认),第 7 节标签页从「三个」改为「五个」;安装章节补全 dsh CLI(非源码)安装方式与 pnpm 前置、`dsh plugin add` 的挂载机制;删除顶层已废弃的 `USER_GUIDE.html`(v0.9.1、无引用、不随包发布),README 目录结构描述同步为五标签页。
106
+
107
+ ### 0.19.0
108
+
109
+ **工作台项目初始化(0.19.0)**:工作台新增置顶的「项目初始化」标签页——加载展示项目根 `AGENTS.md`、一键让 AI 扫描项目生成草稿(预览后再确认写回)、支持手动编辑与覆盖;Host 控制器新增 `readInit`/`writeInit`/`generateInit` 三个 Remote,`generateInit` 通过 `ctx.llm` + 默认模型在 Host 端直接生成,复用 `dev_task init` 的 200 行硬约束。
110
+
111
+ ### 0.18.1
112
+
113
+ **会话工作目录修复(0.18.1)**:`dev_task` 的所有文件操作此前用 `fs.resolve(相对路径)` 不带 cwd,落到了 fs 后端默认目录(DSH 进程目录)而非会话工作区——在 web 会话里会把台账、配置、`AGENTS.md`、git 钩子写到/读到错误位置。改为从 `exec.agent.session.header.cwd` 取会话工作区并传给每个解析,补 4 项回归测试。
114
+
115
+ ### 0.18.0
116
+
117
+ **工程可靠性加固(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` 需人工批准。
118
+
119
+ ### 0.17.0
120
+
121
+ **项目初始化 + 语言无关内置规则(0.17.0)**:`dev_task` 新增 `init` 操作,生成项目根 `AGENTS.md`(DSH 每会话自动注入),落盘前做 200 行硬校验、已存在需 `overwrite` 才覆盖;内置 `solution-design` / `coding-conventions` / `security-redlines` 去掉 Java 专属概念(Impl / DTO / VO、Controller / Mapper),改成语言中立骨架,语言特定规范交给项目自建 rule。
122
+
123
+ ### 0.16.0
124
+
125
+ **流程预设收敛(0.16.0)**:把「自由编辑阶段图/守卫/产物/提交规则/验证开关」收敛为「选一套内置流程预设 + 给节点挂 skill/rule」。新增 `src/workflows.ts` 内置 `standard` / `agile` / `minimal` 三套流程(阶段图、守卫、产物字段、提交规则、验证证据开关全部固化);`.dsh/eng.json` 从完整配置精简为 `{ flow, stage_bindings }`;工作台删掉流转/产物/提交规则/验证开关编辑 UI,只剩「流程预设 + 流程节点(只读)+ 阶段技能/规则」;git 提交钩子同步按 `flow` 选预设。
126
+
127
+ ### 0.15.0
128
+
129
+ **弹窗 + markdown 查看(0.15.0)**:skill/rule 的查看与编辑从内联卡片改为居中宽弹窗;查看时正文用 DSH 自带的 `MarkdownText` 渲染成 markdown 富文本(不引入任何新依赖),编辑时正文保持纯文本。
130
+
131
+ ### 0.14.0
132
+
133
+ **skill / rule 查看 + 删除(0.14.0)**:内置 skill/rule 从「只读不可见」改为「可查看正文」;自建(项目/用户)skill/rule 新增删除(两步确认)。删改在类型层即把 `bundled` 排除,内置资源永不误删。
134
+
135
+ ### 0.13.0
136
+
137
+ **两阶段评审硬门(0.13.0)**:`todos_done` 进一步收紧——每个 done 的 item 必须带 spec + quality 都 pass 的评审记录,缺评审或任一阶段 fail 都会挡住「开发 → 交付」,并以具体 item 报出阻塞原因(`todosBlockers`)。派工审计保持软约束。
138
+
139
+ ### 0.12.0
140
+
141
+ **台账硬门 + 软约束修复(0.12.0)**:`todos_done` 守卫改为「实施项非空且全部 done」;`code-implement` 技能里写清「两阶段都 pass 才标 done」。
142
+
143
+ ### 0.11.0
144
+
145
+ **派工 / 审核审计(0.11.0)**:`TaskItem` 新增 `dispatch`(子代理派工留痕)与 `review`(spec / quality 两阶段评审)字段;`dev_task` 新增 `dispatch`、`review_item` 操作;工作台新增「任务台账」视图展示逐项审计。派工留痕是软约束——模型可自己实现小项而不强制派子代理。
146
+
147
+ ### 0.10.0
148
+
149
+ **需求/方案人工确认门(0.10.0)**:`requirement_confirmation` / `solution_confirmation` 两个守卫从「模型自己标记」升级为「人来批准」。走 `advance` 撞上确认门时,`dev_task` 用 `@deepseek-ai/dsh-user-approval` 发起审批;人在页面点「允许」才放行,模型不能自己确认、也不能绕过。headless e2e 验证真模型全流程时两个确认都会触发。
150
+
151
+ ### 0.9.1
152
+
153
+ **工作台可用性(0.9.1)**:修复「新建 skill / 新建 rule」按钮点击不弹出表单(`formOpen` 只认编辑态,新建态缺少显式标志);给六个守卫补 hover 说明、把「产物齐全」改名「产物字段已填全」并讲清「产物 = 阶段要写清楚的记录、字段 = 这份记录里必填的空」,「节点挂载」改名「阶段技能 / 规则」。
154
+
155
+ ### 0.9.0
156
+
157
+ **点选即用(0.9.0)**:host 入口新增 `src/seed-preset.ts`——首次启动自动把当前 `standard` 复制成 `eng` 预设(换工程人设 + 追加 agent 行,幂等、不覆盖手改)。装 bundle 重启后预设列表直接出现「工程化开发引擎」,点选即激活、切走即不激活,零复制/零编辑/零脚本。实机 boot 验证:boot 后 `.agent-presets/eng` 自动生成(agent 行 + 工程人设齐全)、roster 列出 `eng`(user)、`eng` 会话有 `dev_task` 且 persona 含「铁律」、`standard` 会话无 `dev_task`。
158
+
159
+ ### 0.8.1
160
+
161
+ **一键激活(0.8.1)**:新增 `preset/enable.mjs`(bin: `dsh-task-engine-enable`),一条命令自动复制 `standard` → `eng`、把 persona 换成工程人设、追加 agent 行、写 `preset.yml`。persona 从「必须换」降级为「可选」——`eng-delivery` 技能自带 `whenToUse`,即使不加人设,模型遇到开发请求也自己加载技能走 `dev_task`;最简激活只剩「复制预设 + 追加一行 agent 行」。实机验证:脚本生成的 `eng` 预设挂载后 `dev_task` 可见、persona 以工程人设(含「铁律」)渲染、`standard` 仍无 `dev_task`。
162
+
163
+ ### 0.8.0
164
+
165
+ **按预设激活(0.8.0)**:`dev_task` 工具与内置技能从 host 全局层拆到 agent 层。host 入口只挂 `task-engine` Remote 控制器 + 工作台 UI(`src/index.ts`);新增 `src/agent.ts`(`./agent` 出品)、`src/dev-task.ts`、`src/shipped-skills.ts`,由预设的 `agent.cordis.yml` 命名后,在**该预设的 scope** 里注册工具与技能。实机 boot 验证:`standard` 会话工具目录不含 `dev_task`(26 个工具),加了 `@godv61/dsh-task-engine/agent` 行的 `eng` 会话含 `dev_task`(27 个工具)且描述正确,换回 `standard` 再次不含——切换预设即切换流程激活状态。
166
+
167
+ ### 0.7.0
168
+
169
+ **全屏工作台 + 在线编辑(0.7.0)**:配置页从设置弹窗迁出,改为侧边栏 `sidebar.footer.action`「工程流程」按钮,点开 `shell.overlay` 全屏工作台(触发按钮与覆盖层共享一个 store 控制开关)。工作台分「流程配置 / 技能 skill / 规则 rule」三个标签页;技能和规则列表支持在线编辑——`readSkill`/`readRule` 读回正文、改 description/whenToUse/正文、`writeSkill`/`writeRule` 写回;内置项只读,项目/用户项可原地编辑,新建同时支持项目级/用户级。旧的 `settings.section` 入口移除,统一走侧边栏按钮。浏览器 e2e 全绿。
170
+
171
+ ### 0.6.1
172
+
173
+ **配置页精简 + 自建 skill 可观测(0.6.1)**:设置页的流转/产物/提交规则/新建默认折叠,「节点挂载」从六阶段全平铺改成「选一个阶段再看它挂了什么」;新建成功提示带回显路径(`.dsh/skills/<name>/SKILL.md` 或 `$DSH_HOME/…`),挂载清单给非内置的 skill/rule 标「(项目)/(用户)」来源。修复 `listSkills` 依赖 host skill registry 导致项目 `.dsh/skills` 自建技能不显示的问题——改为与 `listRules` 一致,直接扫「内置 + 项目 + 用户」三层目录。浏览器 e2e 全绿。
174
+
175
+ ### 0.6.0
176
+
177
+ **skill/rule 挂载与渐进披露(0.6.0)**:`WorkflowConfig` 新增 `stage_bindings`(每阶段挂 skills/rules,可选字段),`dev_task` 的 `status`/`advance` 按当前阶段披露挂载的 skill 名 + rule 正文;内置 6 技能 + 3 规则库;Host 控制器新增 `listSkills`/`listRules`/`writeSkill`/`writeRule`;设置页新增「节点挂载」和「新建 skill / rule」两块,同时补上 `dev_task` 缺失的 `items` 操作(更新实施项状态)。引擎层 `stage_bindings` 校验(未知阶段/空名)与合并已单测通过。
178
+
179
+ ### 0.5.0
180
+
181
+ **网页图形化配置界面(0.5.0)**:新增 `src/client/` 设置页「工程流程配置」+ Host 端 `task-engine` Remote 控制器;`@godv61/dsh-task-engine` 升级为双端包(`dsh.client` manifest + `./client` 出品,`exports` 暴露)。已实机验证:`dsh web` 起服务后 boot 数据里 `@godv61/dsh-task-engine` 以 `inject:["@deepseek-ai/dsh-api-gateway"]` 进入 application batch、`/plugins/…/client.js` 正常服务;headless 冒烟确认 boot + `dev_task` 未被新控制器破坏。浏览器点击级 e2e 留到发布后用真浏览器收尾。
182
+
183
+ ### 0.4.1
184
+
185
+ **真实模型端到端(0.4.1)**:headless + NewAPI DeepSeek 下让真模型走 `dev_task` 全流程,抓到并修掉一个真实 bug——`readText`/`writeText` 调 `fs.resolve()` 漏了 `await`,把 `Promise<FsTarget>` 当 `target` 传给了读写方法,导致 create/record/advance/commit 全部写不了任务文件、读永远返回 undefined。0.4.1 修复(`await fs.resolve(relPath)`),并把 `task_id` 在 create 也必填的说明补进工具 schema 与技能。修复后走真实 `ctx.fs` 路径冒烟全绿。
package/docs/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # 使用文档
2
+
3
+ [← 返回项目首页](../README.md)
4
+
5
+ DSH Task Engine 是 DeepSeek Harness 的个人工程流程工作台。先完成安装,再按需要配置流程、技能和规则。
6
+
7
+ ## 开始使用
8
+
9
+ | 文档 | 内容 |
10
+ | :--- | :--- |
11
+ | [安装与启用](getting-started.md) | 安装到 Web profile、启用工程会话、确认安装结果。 |
12
+ | [流程配置](configuration.md) | 三个内置流程、阶段绑定、配置文件与任务快照。 |
13
+ | [技能与规则安装](resource-install.md) | 系统文件选择、安装预览、项目/个人范围和格式要求。 |
14
+ | [常见问题](faq.md) | 预设区别、资源使用、项目目录与能力限制。 |
15
+ | [完整 HTML 手册](manual.html) | 详细操作、工具说明与任务走查;下载后在浏览器中打开。 |
16
+
17
+ ## 参与开发
18
+
19
+ | 文档 | 内容 |
20
+ | :--- | :--- |
21
+ | [开发指南](development.md) | 构建、测试、包结构与可选 host 接入。 |
22
+ | [功能规划](roadmap.md) | 自定义流程的提案范围,区分已发布功能与规划。 |
23
+ | [更新日志](CHANGELOG.md) | 按版本查阅变化。 |
24
+ | [0.23.1 发布说明](release-0.23.1.md) | 真实项目发现的问题、修复及能力边界。 |
25
+ | [0.23.1 测试说明](testing/0.23.1/测试报告.md) | 自动化、安装包与实机证据的适用范围。 |
26
+ | [0.23.0 发布说明](release-0.23.0.md) | 前一版安装交互及界面调整。 |
27
+ | [插件收录材料](listing/submission.md) | Awesome DSH Plugin 的提交条件与条目草稿。 |
@@ -0,0 +1,29 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="400" viewBox="0 0 1280 400" role="img" aria-labelledby="title description">
2
+ <title id="title">DSH Task Engine · 个人工程流程工作台</title>
3
+ <desc id="description">标准流程示意:需求评审、设计、开发、交付、代码审核、完成。流程、技能与规则组成个人开发工作台。</desc>
4
+ <defs>
5
+ <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#111b2c"/><stop offset="1" stop-color="#172c35"/></linearGradient>
6
+ <linearGradient id="accent"><stop stop-color="#86efac"/><stop offset="1" stop-color="#5eead4"/></linearGradient>
7
+ </defs>
8
+ <rect width="1280" height="400" rx="24" fill="url(#bg)"/>
9
+ <path d="M1000 0L1280 280M1120 0L1280 160M920 0L1280 360" stroke="#345454" stroke-opacity=".2" stroke-width="1"/>
10
+ <g font-family="Segoe UI, PingFang SC, Microsoft YaHei, sans-serif">
11
+ <rect x="56" y="43" width="30" height="30" rx="8" fill="url(#accent)"/>
12
+ <path d="M64 58h14m-6-6 6 6-6 6" fill="none" stroke="#14262c" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
13
+ <text x="101" y="65" fill="#d2e8e3" font-size="18" font-weight="600" letter-spacing="2">DSH TASK ENGINE</text>
14
+ <text x="56" y="141" fill="#f4f7f7" font-size="46" font-weight="650">让每次开发,都有清晰的下一步。</text>
15
+ <text x="58" y="184" fill="#a6b9bd" font-size="22">DeepSeek Harness 的个人工程流程工作台</text>
16
+ <text x="58" y="228" fill="#80dcb3" font-size="15" letter-spacing="1">流程预设 / 阶段技能 / 项目规则 / 交付记录</text>
17
+ <g fill="#1c3440" stroke="#35505a">
18
+ <rect x="56" y="264" width="168" height="76" rx="13"/><rect x="252" y="264" width="168" height="76" rx="13"/>
19
+ <rect x="448" y="264" width="168" height="76" rx="13"/><rect x="644" y="264" width="168" height="76" rx="13"/>
20
+ <rect x="840" y="264" width="168" height="76" rx="13"/><rect x="1036" y="264" width="168" height="76" rx="13"/>
21
+ </g>
22
+ <g fill="#e4efee" font-size="21" text-anchor="middle">
23
+ <text x="140" y="310">需求评审</text><text x="336" y="310">设计</text><text x="532" y="310">开发</text>
24
+ <text x="728" y="310">交付</text><text x="924" y="310">代码审核</text><text x="1120" y="310" fill="#86efac">完成</text>
25
+ </g>
26
+ <g fill="#729a9b" font-size="22" text-anchor="middle"><text x="238" y="310">→</text><text x="434" y="310">→</text><text x="630" y="310">→</text><text x="826" y="310">→</text><text x="1022" y="310">→</text></g>
27
+ <text x="1204" y="372" fill="#839b9f" font-size="13" text-anchor="end">STANDARD WORKFLOW · 标准流程示意</text>
28
+ </g>
29
+ </svg>
@@ -0,0 +1,49 @@
1
+ # 流程配置
2
+
3
+ [← 文档导航](README.md)
4
+
5
+ 当前版本通过内置流程和阶段资源绑定配置项目。推荐使用工作台“流程配置”页面;高级用户也可以编辑项目根目录的 `.dsh/eng.json`。
6
+
7
+ ## 选择流程
8
+
9
+ | flow | 阶段 | 主要特点 |
10
+ | :--- | :--- | :--- |
11
+ | `standard` | 需求评审 → 设计 → 开发 → 交付 → 代码审核 → 完成 | 包含确认、产物、验证、审核与文件范围检查,支持高风险任务。 |
12
+ | `agile` | 需求 → 开发 → 交付 → 审查 | 减少阶段与产物要求,不支持高风险任务。 |
13
+ | `minimal` | 开发 → 交付 | 精简为实施项完成和提交检查点,不支持高风险任务。 |
14
+
15
+ 项目没有配置文件时使用 `standard`;配置文件存在但 flow 缺失或无效时会报错,不会自动忽略错误。
16
+
17
+ ## 追加技能与规则
18
+
19
+ 最小配置如下:
20
+
21
+ ```json
22
+ {
23
+ "flow": "standard"
24
+ }
25
+ ```
26
+
27
+ `stage_bindings` 的键是当前流程中的阶段名称,值是该阶段需要的技能与规则名称。字段可省略;默认绑定仍然生效。[默认配置示例](../defaults/eng.json)列出了标准流程的绑定。
28
+
29
+ 当前绑定采用追加方式:项目增加的名称会与预设默认项合并去重;取消默认项的勾选不会移除其绑定。内置同名资源优先,使用不同名称来安装自己的资源。
30
+
31
+ 进入阶段后,`dev_task` 披露该阶段的技能名和规则内容。新任务离开阶段前会检查 Harness 的 skill 工具成功加载记录;附加技能还须记录 `skill_result`(技能名、执行场景、真实验收命令回执)。`status.skill_obligations` 中的 `command_receipts_required` 列出需要回执的技能;七个内置技能使用已有的记录、验证、审核和提交操作,无需重复登记附加回执。安装一个技能不会自动执行其中的脚本。
32
+
33
+ 挂在终态(例如“完成”)的技能在进入终态前执行。测试技能通常建议挂在“交付”;现有“完成”绑定也会在审核阶段执行后才放行。标准流程 v2 在审核通过后提交,并核对真实 Git HEAD。修改文件或声明范围后,旧验证回执失效。
34
+
35
+ 资源管理保留项目和个人目录的同名条目,避免来源误标和误操作。绑定仍按名称选择,内置优先;自建同名资源按项目优先于个人解析。技能最终由 Harness 的技能目录加载。
36
+
37
+ ## 哪些内容暂时不能修改
38
+
39
+ 阶段顺序、转移条件、产物必填字段和提交策略由所选预设固定。新建规则可以提供工作指引,但不会改变引擎中的提交消息校验或阶段条件。
40
+
41
+ 可视化自定义流程的范围见[功能规划](roadmap.md),目前尚未发布。
42
+
43
+ ## 配置与正在进行的任务
44
+
45
+ 新任务记录创建时的完整流程快照,后续按该快照执行。修改项目配置影响之后创建的任务,不会自动迁移进行中的任务。
46
+
47
+ 验证命令还可以由配置中的 `verify_command` 指定;未指定时根据项目类型选择默认命令。当前工作台保存流程时只写入 flow 和 stage_bindings,手写的额外字段可能被移除;使用此项时请检查保存后的文件。这一问题纳入后续配置编辑器改造。
48
+
49
+ 下一步:[资源安装](resource-install.md) · [常见问题](faq.md)
@@ -0,0 +1,53 @@
1
+ # 开发指南
2
+
3
+ [← 文档导航](README.md)
4
+
5
+ 插件包含 host 控制器、agent 工具和浏览器工作台。代码为 TypeScript,发布到 npm 的包包含预构建入口与资源文件。
6
+
7
+ ## 本地验证
8
+
9
+ 在插件源码目录执行:
10
+
11
+ ```sh
12
+ npm install
13
+ npm run build
14
+ npm run typecheck
15
+ npm test
16
+ npm run verify:package
17
+ ```
18
+
19
+ `build` 生成 host、浏览器客户端与提交钩子;`typecheck` 检查 host 和 client 两个编译面。`verify:package` 将 tarball 安装到干净临时项目,检查包入口、客户端注册、包内测试和 CLI 语法。
20
+
21
+ CI 在 Windows 的 Node 22/24 上运行。具体用例与限制见[测试报告](testing/0.23.0/测试报告.md);每次功能修改选择相关验证,文档排版调整只需要文档、链接和渲染检查。
22
+
23
+ ## 代码导航
24
+
25
+ | 位置 | 职责 |
26
+ | :--- | :--- |
27
+ | [src/engine.ts](../src/engine.ts) | 状态机、阶段条件和提交规则检查。 |
28
+ | [src/workflows.ts](../src/workflows.ts) | 三套内置流程及默认技能/规则绑定。 |
29
+ | [src/dev-task.ts](../src/dev-task.ts) | 模型使用的 dev_task 工具与任务文件操作。 |
30
+ | [src/controller.ts](../src/controller.ts) | 工作台读取配置、任务和资源的 Remote 控制器。 |
31
+ | [src/resource-import.ts](../src/resource-import.ts) | 导入校验、安装预览、独占写入与失败清理。 |
32
+ | [src/client](../src/client/) | 工作台界面与客户端 Remote 定义。 |
33
+ | [src/hook.ts](../src/hook.ts) | 提交钩子的源码,构建后输出到 hooks/commit-msg。 |
34
+ | [cordis.patch.yml](../cordis.patch.yml) | Bundle 的 host 挂载声明。 |
35
+
36
+ ## 启用方式
37
+
38
+ Host 入口挂载工作台控制器,并在 eng 预设不存在时生成“工程化开发引擎”。Agent 入口只在引用它的会话预设中注册工具和技能。
39
+
40
+ 需要将插件接入自己的会话预设时,在该预设的 agent.cordis.yml 加入:
41
+
42
+ ```yaml
43
+ - id: task-engine-agent
44
+ name: '@godv61/dsh-task-engine/agent'
45
+ ```
46
+
47
+ 已存在的 eng 预设不会被自动覆盖。手工调整前先备份;配套的 enable 脚本也会拒绝覆盖已存在的预设。
48
+
49
+ ## 可选 host 接入
50
+
51
+ 0.23.0 优先使用 Harness 的 `workspaceRegistry.resolveByPath` 获取已登记工作区。旧 host 可以通过插件导出的 `registerWorkspace` 和 `enableStrictWorkspaces` 配置注册目录及严格模式,接口定义见 [src/controller.ts](../src/controller.ts)。注册范围不等于会话身份鉴权;个人本机使用不要求为此改造 Harness。
52
+
53
+ 发布前保持 README、使用手册和实际代码一致;不要将规划中的功能描述为已经可用。
package/docs/faq.md ADDED
@@ -0,0 +1,43 @@
1
+ # 常见问题
2
+
3
+ [← 文档导航](README.md)
4
+
5
+ ## 这是服务器产品吗?
6
+
7
+ 本项目面向本机个人工作台。日常使用重点是选对工作区、明确操作目标、保护现有文件和保留任务记录;多用户服务器的会话权限隔离不属于当前产品的必修项。
8
+
9
+ ## 为什么安装了插件,聊天里没有 dev_task?
10
+
11
+ 安装会添加工作台,但任务工具只在挂载插件 agent 的会话预设中启用。新建会话时选择“工程化开发引擎”,再检查工具是否可用。工作台中的“标准研发”等选项是任务流程,不能代替会话预设开关。
12
+
13
+ ## 能自己增删流程阶段吗?
14
+
15
+ 0.23.0 支持选择三个内置流程和追加阶段资源,不支持自由修改阶段。复制预设、编辑阶段与条件、导入导出已列入[自定义流程方案](roadmap.md),尚未实现。
16
+
17
+ ## 安装资源后就会自动使用吗?
18
+
19
+ 还需要到“流程配置”选择阶段并挂载资源。任务执行时按阶段披露对应内容;安装行为本身不会执行资源中的脚本。
20
+
21
+ ## 改了流程,原来的任务会变化吗?
22
+
23
+ 任务保存创建时的流程快照。修改项目配置不会自动改变进行中的任务;新任务使用保存后的配置。
24
+
25
+ ## 能移除默认技能、覆盖内置规则吗?
26
+
27
+ 当前预设绑定只能追加,内置资源只读且同名优先。需要自建资源时使用新名称。自定义流程方案会提供自由配置绑定的能力。
28
+
29
+ ## 工具显示验证或审核通过,能完全相信吗?
30
+
31
+ 0.23.1 新建任务的验证需要真实命令回执,要求退出码为 0 且未超时、中止或被沙箱拒绝;代码修改后需重验。旧任务保持原验证约定。附加技能记录加载、命令和场景证据;审核和实施项结论仍由模型记录。命令覆盖是否充分、审核是否准确仍需判断,不能把一个成功退出码当作全部需求已验证。
32
+
33
+ ## 本地提交钩子有什么作用?
34
+
35
+ 它在普通 git commit 时检查任务、阶段、消息和文件范围。`--no-verify`、替换 hooksPath 或直接修改本地数据仍可能绕过检查;项目需要更强的提交约束时,应结合自己的 CI 和人工审核。
36
+
37
+ ## hash 和版本号能防止任意篡改吗?
38
+
39
+ hash 检查流程快照是否与保存的摘要一致,文件版本检查阻止并发覆盖。任务 JSON 没有签名,具有文件修改权限的人可以同时修改内容与摘要;它们不提供独立防篡改认证。
40
+
41
+ ## 为什么 GitHub 上的 HTML 手册显示源码?
42
+
43
+ GitHub 文件页不会直接作为网页运行 HTML。下载 [manual.html](manual.html) 后用浏览器打开,或先阅读本站点内的 Markdown 指南。
@@ -0,0 +1,51 @@
1
+ # 安装与启用
2
+
3
+ [← 文档导航](README.md)
4
+
5
+ 本指南适用于已在本机使用 DeepSeek Harness 的用户。安装后,你会获得一个“工程流程”工作台和一个“工程化开发引擎”会话预设。
6
+
7
+ ## 1. 安装插件
8
+
9
+ 确认 pnpm 可用,将插件添加到所用的 Web profile。以下命令使用 `web`。
10
+
11
+ ```sh
12
+ dsh plugin --profile web add @godv61/dsh-task-engine
13
+ ```
14
+
15
+ 如果你正在 Harness 源码目录开发,使用:
16
+
17
+ ```sh
18
+ pnpm dsh plugin --profile web add @godv61/dsh-task-engine@0.23.0
19
+ pnpm dsh web --no-open
20
+ ```
21
+
22
+ 已有 Web 进程时,先关闭该进程再启动,避免端口冲突。通过 `dsh plugin` 安装会将插件加入对应 profile;仅在任意目录执行 `npm install` 不会完成工作台挂载。
23
+
24
+ ## 2. 检查安装结果
25
+
26
+ 重启后检查两个位置:
27
+
28
+ - 侧边栏出现 **工程流程**,打开后可以选择工作区。
29
+ - 新建会话时,可以选择 **工程化开发引擎**。
30
+
31
+ 没有看到入口时,先确认安装和启动使用的是同一个 profile,再检查启动日志中的插件加载错误。命令报找不到 pnpm 时,需要先准备好 pnpm 环境。
32
+
33
+ ## 3. 配置第一个项目
34
+
35
+ 1. 在工作台顶部选择工作区。
36
+ 2. 进入“流程配置”,按任务复杂程度选择标准研发、敏捷轻量或纯代码。
37
+ 3. 如需自己的技能或规则,在对应页面安装,再回到流程配置挂载到阶段。
38
+ 4. 保存配置,在使用“工程化开发引擎”预设的会话中描述任务。
39
+
40
+ 后续在“任务台账”查看阶段、实施项与验证审核记录。项目初始化会管理根目录的 `AGENTS.md`:先查看或生成草稿,再确认保存。
41
+
42
+ ## 两种预设的区别
43
+
44
+ | 位置 | 决定什么 |
45
+ | :--- | :--- |
46
+ | 会话中的“工程化开发引擎” | 是否启用 `dev_task`、配套技能和工程人设。 |
47
+ | 工作台中的三个流程预设 | 任务经过哪些阶段、每一步需要满足什么条件。 |
48
+
49
+ 如果切换到未挂载插件 agent 的其他会话预设,该会话不会启用这套任务工具;侧边栏工作台仍可使用。
50
+
51
+ 下一步:[配置流程](configuration.md) · [安装资源](resource-install.md) · [常见问题](faq.md)
package/docs/manual.html CHANGED
@@ -35,7 +35,7 @@
35
35
  <header class="hero">
36
36
  <p class="eyebrow">DSH · ENGINEERING DELIVERY ENGINE</p>
37
37
  <h1>工程化交付引擎 使用手册</h1>
38
- <p class="lead">这是一套装在 DeepSeek Harness 里的工程流程约束。它把「需求评审 → 设计 → 开发 → 交付 → 代码审核」做成硬门槛:阶段不能跳、关键节点必须人来拍板、验证和提交都被机械检查。团队只选一套流程,再给每个节点挂上合适的 skill 和 rule。</p>
38
+ <p class="lead">这是一套装在 DeepSeek Harness 里的工程流程约束。它把「需求评审 → 设计 → 开发 → 交付 → 代码审核」做成硬门槛:阶段不能跳、关键节点必须人来拍板、验证和提交都被机械检查。在个人工作台里选一套流程,再给每个节点挂上合适的技能和规则。</p>
39
39
  <div class="badges">
40
40
  <span class="badge">选流程预设即可</span>
41
41
  <span class="badge">standard / agile / minimal</span>
@@ -48,6 +48,7 @@
48
48
  <div class="layout">
49
49
  <nav aria-label="目录">
50
50
  <strong>目录</strong>
51
+ <a href="https://github.com/godv61/dsh-task-engine#readme">项目首页 ↗</a>
51
52
  <a href="#overview">1. 工作原理</a>
52
53
  <a href="#install">2. 安装与启用</a>
53
54
  <a href="#structure">3. 文件与目录</a>
@@ -74,14 +75,14 @@
74
75
  → 需求评审 · requirement-analysis
75
76
  → 设计 · solution-design
76
77
  → 开发 · code-implement
77
- → 交付 · code-verify + code-commit
78
- → 代码审核 · code-review</code></pre>
78
+ → 交付 · code-verify
79
+ → 代码审核 · code-review + code-commit</code></pre>
79
80
  <div class="callout">
80
81
  <p><strong>它不是常驻程序。</strong>只有你在「工程化开发引擎」预设的会话里提出开发请求时,才触发 <code>dev_task</code> 和这套门禁;换到别的预设,流程完全不介入。</p>
81
82
  </div>
82
83
  <p>三样东西分工明确:<strong>流程预设</strong>决定「走哪条流水线、有哪些守卫」,<strong>Skill</strong> 决定「这一站做什么」,<strong>Rule</strong> 决定「这一站守什么」。任务状态单独落盘,负责「跨会话恢复到哪一步」。</p>
83
84
  <div class="callout warn">
84
- <p><strong>诚实边界:</strong>阶段流转、提交格式、文件范围、消息里的任务绑定、流程快照 hash、钩子完整性、敏感路径风险策略是<b>代码硬校验</b>(不匹配直接拒绝);<b>高风险任务的「验证通过」也是真实命令回执</b>——引擎实际运行 <code>verify</code> 命令、取退出码(<code>exit_code === 0</code> 且非超时/中止)才放行,不是模型自报。仍属模型自报、需人工或 CI 兜底的是:常规风险的验证声明、「评审通过」「实施项完成」,以及回执命令本身的覆盖面。只有「需求确认」「方案确认」两扇门由人工批准点亮,风险降级(high_risk → standard)也由人工批准。</p>
85
+ <p><strong>诚实边界:</strong>阶段流转、提交格式、文件范围、消息里的任务绑定、流程快照 hash、钩子完整性、敏感路径风险策略是<b>代码硬校验</b>(不匹配直接拒绝);<b>高风险任务的「验证通过」也是真实命令回执</b>——引擎实际运行 <code>verify</code> 命令、取退出码(<code>exit_code === 0</code> 且非超时/中止)才放行,不是模型自报。仍属模型自报、需人工或 CI 兜底的是:旧任务的常规风险验证声明、「评审通过」「实施项完成」,以及回执命令本身的覆盖面。只有「需求确认」「方案确认」两扇门由人工批准点亮,风险降级(high_risk → standard)也由人工批准。</p>
85
86
  </div>
86
87
  </section>
87
88
 
@@ -192,6 +193,7 @@ pnpm install &amp;&amp; pnpm run build &amp;&amp; pnpm dsh web</code></pre>
192
193
  </section>
193
194
 
194
195
  <section id="configure">
196
+ <p>当前版本支持三个内置流程及追加阶段资源。可视化自定义流程处于规划阶段,尚未发布。</p>
195
197
  <h2>7. 配置流程与挂载</h2>
196
198
  <p>侧边栏点「工程流程」打开工作台,五个标签页:<strong>项目初始化 / 流程配置 / 任务 / 技能 skill / 规则 rule</strong>,默认落在「项目初始化」(详见第 8 节)。日常配流程只需在「流程配置」页做两件事:</p>
197
199
  <ol>
@@ -263,13 +265,14 @@ pnpm install &amp;&amp; pnpm run build &amp;&amp; pnpm dsh web</code></pre>
263
265
  <tbody>
264
266
  <tr><td>需求评审</td><td>拆需求、落「需求说明」</td><td>字段填全,且<b>人点「允许」确认需求</b></td></tr>
265
267
  <tr><td>设计</td><td>出最小方案、落「设计文档」</td><td>字段填全,且<b>人点「允许」确认方案</b></td></tr>
266
- <tr><td>开发</td><td>逐项实现,每项做规格 + 质量两阶段评审</td><td>实施项非空且全部 done(每项带两阶段评审)</td></tr>
267
- <tr><td>交付</td><td>验证、记证据,按门禁提交</td><td>验证通过(高风险必须真实命令回执,退出码 0)</td></tr>
268
- <tr><td>代码审核</td><td>评审变更,落「评审记录」</td><td>结论通过且字段填全</td></tr>
268
+ <tr><td>开发</td><td>独立交付可派子代理,小修正可由主代理实施;每项做规格 + 质量两阶段评审</td><td>实施项非空且全部 done(每项带两阶段评审);已有项可省略标题,改已审核标题须显式重开</td></tr>
269
+ <tr><td>交付</td><td>执行验证、记录证据</td><td>新任务必须真实命令回执,退出码 0,未超时、取消或被沙箱拒绝</td></tr>
270
+ <tr><td>代码审核</td><td>评审变更,执行终态技能,受控提交</td><td>结论通过、字段填全、技能义务完成且真实 Git 提交已回写</td></tr>
269
271
  <tr><td>完成</td><td>收尾</td><td>—</td></tr>
270
272
  </tbody>
271
273
  </table>
272
274
  </div>
275
+ <p>新任务离开阶段前检查绑定技能是否通过 skill 工具成功加载;附加技能需通过 <code>skill_result</code> 记录执行场景与真实验收命令;状态中的 <code>command_receipts_required</code> 列出这些技能,七个内置技能无需重复登记。挂在“完成”的技能在前一阶段执行。命令成功只证明该命令通过,不证明测试覆盖完整。审核改动后须重跑验证。旧任务继续使用冻结快照。</p>
273
276
  <h3>贯穿全程的硬规则</h3>
274
277
  <ul>
275
278
  <li>阶段是硬状态:status 说你在哪,就只做那一步,绝不倒带重走、绝不跳。</li>
@@ -354,10 +357,11 @@ risk_level: high_risk // 涉及鉴权,验证要加证据
354
357
 
355
358
  ④ 交付
356
359
  - 验证:跑鉴权用例,`verify` 传真实命令(high_risk 由引擎取退出码判定)。
357
- - 提交:【模块】【TASK】查询接口增加权限校验(只含本任务文件)
360
+ - 文件改动后必须重新验证,旧回执失效。
358
361
 
359
362
  ⑤ 代码审核
360
- - 结论:通过 · 问题:无
363
+ - 结论:通过 · 问题:无
364
+ - 执行挂在完成阶段的附加技能,再提交并回写真实 hash。
361
365
 
362
366
  ⑥ 完成</code></pre>
363
367
  <p>这类任务不应因为「以后可能复用」扩展成多层架构,也不应把推荐项自动当成验收条件。</p>
@@ -378,9 +382,11 @@ risk_level: high_risk // 涉及鉴权,验证要加证据
378
382
  <details><summary>Remote 如何限制工作区?</summary><div>有 <code>workspaceRegistry.resolveByPath</code> 的 Harness 使用主机注册目录;未注册路径拒绝。旧主机保留绝对路径和系统目录检查,并提供严格注册 API。工作区注册不等于当前会话授权;共享多用户部署仍需要调用上下文和主机权限边界。</div></details>
379
383
  <details><summary>dev_task 写文件被沙箱拒绝(file access denied)怎么办?</summary><div>沙箱按调用策略放行写入,偶发的越界误判可用一次性升级重试:同一操作加 <code>sandbox_permissions: "workspace-write"(或 "danger-full-access")</code> 并配 <code>justification</code>(一句话说明原因),升级需要<b>人工批准</b>;无审批服务时直接拒绝。日常任务记录写入默认已在会话工作区内放行,通常无需升级。</div></details>
380
384
  <details><summary>「完成」等于上线了吗?</summary><div>不等于。<code>done</code> 只表示本地验证与必要评审通过;上线、合并、发布需人另行决定。</div></details>
381
- <p class="stamp">版本 0.23.0 · 系统文件选择与安装预览 · 工作台交互改进 · 最后更新:2026-09-15</p>
385
+ <p>状态查询中的 <code>evidence_blockers</code> 列出过期验证和附加技能回执;<code>commit.allowed</code> 同时检查这些阻塞及技能执行义务。<code>legal_next</code> 是流程定义的候选去向,不表示所有门禁已通过。</p>
386
+ <details><summary>记录需求时提示字段不存在怎么办?</summary><div>先读取 <code>status.artifact_requirements</code>,按当前阶段列出的字段填写。标准需求为 <code>scope</code> 和 <code>acceptance_criteria</code>,敏捷流程只有 <code>scope</code>。疑问、假设或待确认取舍写入字段正文,不新增字段名。错误输入整次不保存,修正后再提交;不需要修改流程配置或历史任务记录。</div></details>
387
+ <p class="stamp">版本 0.23.1 · 流程执行与真实回执修复 · 最后更新:2026-09-16</p>
382
388
  </section>
383
389
  </main>
384
390
  </div>
385
391
  </body>
386
- </html>
392
+ </html>
@@ -1,5 +1,7 @@
1
1
  # 0.23.0 修改清单与发布说明
2
2
 
3
+ [← 文档导航](README.md)
4
+
3
5
  ## 本次实现
4
6
 
5
7
  | 分类 | 问题 | 处理 |
@@ -23,11 +25,7 @@
23
25
 
24
26
  ## 后续建议
25
27
 
26
- 1. Harness 层:Typert 注入会话身份与授权 workspace;可信持久化签名与 CI 验证交付回执。注册工作区不能替代会话权限。
27
- 2. 大包导入:改为分块上传、取消与进度、服务端临时包 TTL、并发与内存预算;当前 100 MB 是代码上限,不是远程实测容量承诺。
28
- 3. 资源维护:记录来源与版本、显式升级/差异预览、备份与恢复;当前同名拒绝覆盖。
29
- 4. 产品完善:全量中英语言字典、更多屏幕/浏览器/辅助技术验证,台账分页与完整任务数据 schema。
30
- 5. 市场材料:公开源码、`dsh-plugin` topic、真实截图;符合仓库至少一天的条件后提交收录 PR。
28
+ 后续优先讨论可视化自定义流程、资源导入反馈和资源维护。详细范围见[功能规划](roadmap.md)。产品定位为个人本机工作台,会话级服务器隔离不列为当前版本必修项。
31
29
 
32
30
  ## 验证与发布
33
31