@cyning/harness 2.0.3 → 2.1.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/AGENTS.md +4 -3
- package/CHANGELOG.md +39 -0
- package/README.md +7 -5
- package/docs/ARCHITECTURE.md +2 -1
- package/docs/methodology/AUDIT_doc_consistency_2026-06-15_zh.md +29 -22
- package/docs/methodology/README.md +1 -0
- package/docs/methodology/execution/PROMPT_review_v203_v2_hat_flow_bump_v1_zh.md +136 -0
- package/docs/methodology/execution/README.md +1 -0
- package/docs/methodology/execution/reviews/review_v2_hat_flow_20260621.md +71 -0
- package/docs/methodology/pointers/HARNESS_HAT_CHAIN_V2_ONEPAGER_v1_zh.md +31 -0
- package/docs/methodology/pointers/README.md +1 -0
- package/docs/methodology/pointers/SDD_HAT_FLOW_v1_zh.md +5 -4
- package/docs/methodology/product/DESIGN_ONTOLOGY_v1_zh.md +100 -47
- package/docs/methodology/product/README.md +2 -1
- package/docs/methodology/product/SDD_HAT_FLOW_v2_zh.md +78 -0
- package/graph/templates/00_main.graph.yaml +72 -0
- package/graph/templates/00_main.md +53 -40
- package/graph/templates/02_version.md +6 -0
- package/graph/templates/10_flow_MAIN.graph.yaml +105 -0
- package/graph/templates/10_flow_MAIN.md +80 -38
- package/graph/templates/99_mermaid_protocol.md +39 -20
- package/graph/templates/README.md +37 -12
- package/harness/prompts/10-requirements.md +3 -1
- package/harness/prompts/22-task-audit.md +3 -1
- package/harness/prompts/30-execute-code.md +2 -1
- package/harness/prompts/40-self-check.md +7 -4
- package/harness/prompts/README.md +31 -22
- package/ontology.yaml +27 -7
- package/package.json +1 -1
- package/wizard/ONBOARDING_wizard_v1_zh.md +2 -1
- package/wizard/guides/GUIDE_new_project_bootstrap_v1_zh.md +158 -0
- package/graph/templates/00_main.ai.md +0 -28
- package/graph/templates/10_flow_MAIN.ai.md +0 -43
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# 产品设计本体 · cyning-harness(v1.
|
|
1
|
+
# 产品设计本体 · cyning-harness(v1.3)
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
| 项 | 内容 |
|
|
5
5
|
| ------- | --------------------------------------------------------------------------------------------------------------------- |
|
|
6
6
|
| **状态** | `draft` |
|
|
7
|
-
| **版本** | v1.
|
|
8
|
-
| **日期** | 2026-06-
|
|
7
|
+
| **版本** | v1.3 |
|
|
8
|
+
| **日期** | 2026-06-21 |
|
|
9
9
|
| **范围** | **产品内部**概念模型 · 指导模板 / wizard / sync / SDD 链实现 |
|
|
10
10
|
| **非范围** | 商业战略、ETCLOVG 行业对标(见 [`../pointers/STRATEGY_ONTOLOGY_v1_zh.md`](../pointers/STRATEGY_ONTOLOGY_v1_zh.md)) |
|
|
11
11
|
| **真值** | 本文件 + [`../../ARCHITECTURE.md`](../../ARCHITECTURE.md) + [`../../../harness/templates/`](../../../harness/templates/) + `ontology.yaml`(机器可读抽取 · v0.4+ · 与本文件同目录) |
|
|
@@ -64,7 +64,7 @@ Stakeholder Hat · Task · Gate · Review 运行时
|
|
|
64
64
|
|
|
65
65
|
```yaml
|
|
66
66
|
# docs/ontology.yaml · 从本 Markdown 抽取 · 非第二真值
|
|
67
|
-
version: "1.
|
|
67
|
+
version: "1.3"
|
|
68
68
|
classes:
|
|
69
69
|
- id: Track
|
|
70
70
|
domain: Package
|
|
@@ -110,7 +110,7 @@ schemas:
|
|
|
110
110
|
| **VersionManifest** | 钉住产品包版本(v0.3+) | `.cyning-harness/manifest.json` | `{ "version": "0.3.0" }` |
|
|
111
111
|
| **Task** | 可验收工作项文档 | `docs/tasks/active/task_*.md` | 改码 task |
|
|
112
112
|
| **Epic** | 多 Task 总纲(**v1 暂为 Task 特化** · 见 §1.4) | `docs/tasks/active/TASK_epic_*.md` | Epic 编排 |
|
|
113
|
-
| **Hat** | SDD 角色帽(行为约束) | `docs/harness/prompts/N-*.md` | `22-task-audit
|
|
113
|
+
| **Hat** | SDD 角色帽(行为约束) | `docs/harness/prompts/N-*.md` | `20-task-audit`(Starter 别名 `22-task-audit`) |
|
|
114
114
|
| **InvokeSnapshot** | 新帽开局时的调用体落盘 | `docs/harness/invokes/` | `invoke_*_30_*.md` |
|
|
115
115
|
| **AuditReview** | 任务审核书面产出 | `docs/harness/reviews/` | `*_audit_R1_*.md` |
|
|
116
116
|
| **FailureReport** | 30 执行失败时的结构化产出(v0.3+) | `docs/harness/reviews/` 或 task 附录 | `*_30_failure_*.md` |
|
|
@@ -213,7 +213,7 @@ Task --executedIn--> ExecutionShell [external] # Cursor / Kimi C
|
|
|
213
213
|
|
|
214
214
|
```yaml
|
|
215
215
|
Hat:
|
|
216
|
-
hat_id: string # 稳定 ID · 如 "
|
|
216
|
+
hat_id: string # 稳定 ID · 如 "20-task-audit" · gate-check 解析用 · 历史 "22-task-audit" 为别名
|
|
217
217
|
|
|
218
218
|
Task:
|
|
219
219
|
task_slug: string
|
|
@@ -259,7 +259,9 @@ SyncOperation:
|
|
|
259
259
|
| HumanGate → blocks_hats | **1..*** · **无重复 hat_id** | 同一 Gate 内不可重复阻塞同一帽 |
|
|
260
260
|
| Hat → blocked_by_gates | **0..***(同 Task 内) | 多 Gate 可叠阻塞同一 Hat(如 30) |
|
|
261
261
|
| Task → HG-AUDIT-R1 | 改码类 **1:1 必须** | 30 前须存在且可解析 |
|
|
262
|
-
|
|
|
262
|
+
| Task → HG-SPEC-SIGNOFF | Epic / 功能轨 **0..1** | SPEC 已 signed 后 00 方可派 P0 task 链至 30 |
|
|
263
|
+
| 20-task-audit 每轮 → AuditReview | **1:1 必须** | 零阻塞也落盘 |
|
|
264
|
+
| 20-spec-audit 每轮 → AuditReview | **1:1 必须**(功能轨) | 如 `*_spec_ACCEPT_*` |
|
|
263
265
|
| InvokeSnapshot → 新帽开局 | **0..1** | 每帽首次 §3 替换后落盘 |
|
|
264
266
|
| Sync → Task/Reviews/by-task | **禁止覆盖** | 业务数据与纪律层分离 |
|
|
265
267
|
|
|
@@ -304,23 +306,36 @@ instance_marker: .cyning-harness/tracks/process.yaml
|
|
|
304
306
|
|
|
305
307
|
JSON Schema 真值:`docs/schemas/track-schema.json`(v0.4+ · 与 `ontology.yaml` 的 `schemas.track` 互链)。
|
|
306
308
|
|
|
307
|
-
### 3.2 帽链(Hat 特化 · Starter vs Extended
|
|
309
|
+
### 3.2 帽链(Hat 特化 · Starter vs Extended · **V2**)
|
|
308
310
|
|
|
309
311
|
```text
|
|
310
312
|
Hat(抽象)
|
|
311
|
-
├── OrchestratorHat(00 ·
|
|
312
|
-
├──
|
|
313
|
-
│ ├──
|
|
314
|
-
│
|
|
315
|
-
|
|
316
|
-
|
|
313
|
+
├── OrchestratorHat(00 · Extended · 工作区)
|
|
314
|
+
├── RequirementsHat(10 · 拆为两子类)
|
|
315
|
+
│ ├── SpecRequirementsHat(10-spec · Extended)
|
|
316
|
+
│ └── TaskRequirementsHat(10-task · Starter 别名 10-requirements)
|
|
317
|
+
├── AuditHat(20 · 拆为两子类 · 均须 reviews/)
|
|
318
|
+
│ ├── SpecAuditHat(20-spec-audit · Extended · HG-SPEC-SIGNOFF)
|
|
319
|
+
│ └── TaskAuditHat(20-task-audit · Starter 别名 22-task-audit · HG-AUDIT-R1)
|
|
320
|
+
├── ExecuteHat(30 · Starter)
|
|
321
|
+
├── SelfCheckHat(40 · Extended · A2 待入 Starter)
|
|
322
|
+
└── ReinspectHat(50 · Extended)
|
|
317
323
|
```
|
|
318
324
|
|
|
325
|
+
**10 / 20 双类型对照(V2 · 与工作区 [`GUIDANCE_harness_hat_v2_chain_v1_zh.md`](../../../../docs/harness/guides/GUIDANCE_harness_hat_v2_chain_v1_zh.md) 对齐)**
|
|
326
|
+
|
|
327
|
+
| 10(思考回填) | 20(书面审) | 人闸 |
|
|
328
|
+
|----------------|--------------|------|
|
|
329
|
+
| **10-spec** | **20-spec-audit** | **HG-SPEC-SIGNOFF** |
|
|
330
|
+
| **10-task** | **20-task-audit** | **HG-AUDIT-R1** |
|
|
331
|
+
|
|
332
|
+
**轻量 task(维护者同意)**:SPEC 已 HG-SPEC-SIGNOFF → 00 草稿 → **10-task R0–R2** → **20-task-audit R1** → HG-AUDIT-R1 → 30→40→…
|
|
333
|
+
|
|
319
334
|
**设计决策**:
|
|
320
335
|
|
|
321
|
-
-
|
|
322
|
-
- **
|
|
323
|
-
- `blocks_hats` **必须**引用 `Hat.hat_id` · gate-check 动态解析 ·
|
|
336
|
+
- 产品包 Starter 闭包 = **10-task(10-requirements)+ 20-task-audit(22-task-audit)+ 30 + 40**(A2)。
|
|
337
|
+
- **10-spec / 20-spec-audit** 为 **ExtendedHat** · 工作区 POINTER · **不**默认复制进用户仓。
|
|
338
|
+
- `blocks_hats` **必须**引用 `Hat.hat_id` · gate-check 动态解析 · **禁止**硬编码裸编号字符串作为唯一真值 · **须**接受历史别名 `22-task-audit`。
|
|
324
339
|
|
|
325
340
|
### 3.3 Preset 特化
|
|
326
341
|
|
|
@@ -367,36 +382,69 @@ Task(抽象)
|
|
|
367
382
|
|
|
368
383
|
## 4. 状态机与生命周期
|
|
369
384
|
|
|
370
|
-
### 4.1 SDD 帽链(ProcessTrack
|
|
385
|
+
### 4.1 SDD 帽链(ProcessTrack 核心 · **V2**)
|
|
386
|
+
|
|
387
|
+
**标准流程(人读版 · 与 [`SDD_HAT_FLOW_v2_zh.md`](./SDD_HAT_FLOW_v2_zh.md) 一致)**
|
|
371
388
|
|
|
372
389
|
```text
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
390
|
+
人 + 00 chat 大纲
|
|
391
|
+
→ 10-spec R0–R9
|
|
392
|
+
→ 20-spec-audit + HG-SPEC-SIGNOFF(人签 · 可多轮修改)
|
|
393
|
+
→ 00 起草 P0 task
|
|
394
|
+
→ 10-task
|
|
395
|
+
→ 20-task-audit R1(↺ 10-task)
|
|
396
|
+
→ HG-AUDIT-R1(人签)
|
|
397
|
+
→ 30 → 40(同 Agent · 自修重跑 40 直至通过)
|
|
398
|
+
→ 50(↺ 30 · 可选)
|
|
399
|
+
→ CLOSE(小问题 → 下一 task/SPEC · 偏差过大 → 10-spec/10-task)
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
**状态机(实现读版)**
|
|
403
|
+
|
|
404
|
+
```text
|
|
405
|
+
[00] ──► 10-spec ◄──────────────────────────────┐
|
|
406
|
+
│ │
|
|
407
|
+
▼ │
|
|
408
|
+
20-spec-audit(R*) ──[HG-SPEC-SIGNOFF]──► [00 起草 task]
|
|
409
|
+
│ │ │
|
|
410
|
+
│ └── 人 rejected / 未过 ──► 10-spec
|
|
411
|
+
└── 否决 ──► 10-spec │
|
|
412
|
+
│
|
|
413
|
+
[00] ──► 10-task ◄─────────────────────────────────┤
|
|
414
|
+
│ │
|
|
415
|
+
▼ │
|
|
416
|
+
20-task-audit(R*) ──[HG-AUDIT-R1]──► 30 ══► 40(同 Agent 闭环)
|
|
377
417
|
│ │ │
|
|
378
|
-
│ ├──
|
|
379
|
-
│
|
|
380
|
-
│
|
|
381
|
-
|
|
418
|
+
│ │ ├── 50? ── fail ──► 30
|
|
419
|
+
│ │ └── CLOSE ──► done | 下一 task | ↺ 10
|
|
420
|
+
│ ├── HG pending ──► blocked
|
|
421
|
+
│ ├── HG rejected ──► 10-task
|
|
422
|
+
│ └── 30 失败 ──► FailureReport ──► 20-task-audit 或 10-task
|
|
423
|
+
└── 否决 ──► 10-task
|
|
382
424
|
```
|
|
383
425
|
|
|
384
|
-
**
|
|
426
|
+
**30→40 纪律**:40 为 Verify 子步;**默认不单独派 40 对话** · 30 Agent 跑 task 验证命令、回填自检结论 · 不通过则改码并重跑直至通过。
|
|
427
|
+
|
|
428
|
+
**bugfix 轨**:跳过 10-spec / 20-spec-audit · 自 **10-task → 20-task-audit → 30**。
|
|
429
|
+
|
|
430
|
+
**FailureReport 联动(模板级 · v0.3+)**:10-task / 20-task-audit Prompt **须**检查 task 是否关联 `FailureReport`;若存在,`failed` 原因与退回路径须在 Review / 需求节 **显式引用** 该 Artifact 路径。
|
|
385
431
|
|
|
386
432
|
| 转移 | 条件 |
|
|
387
433
|
| ------- | ----------------------------------------------- |
|
|
388
|
-
| → 30 | `HG-AUDIT-R1 = approved` **且**
|
|
434
|
+
| → 30 | `HG-AUDIT-R1 = approved` **且** 20-task-audit 无内容阻塞 |
|
|
435
|
+
| Epic → 30(链) | **另须** `HG-SPEC-SIGNOFF = approved`(若 task 自 SPEC 投影) |
|
|
389
436
|
| 30 拒开工 | 任一 blocking gate = pending · 或 failure_paths 缺失 → **blocked** |
|
|
390
|
-
| 30 执行失败 | 产出 **FailureReport** · task.status → **failed** · 维护者选择退回
|
|
391
|
-
| HG rejected | 记录否决理由 · task.status → **draft** · **强制** 回 10 |
|
|
392
|
-
| → CLOSE |
|
|
393
|
-
|
|
|
437
|
+
| 30 执行失败 | 产出 **FailureReport** · task.status → **failed** · 维护者选择退回 20-task-audit 或 10-task |
|
|
438
|
+
| HG rejected | 记录否决理由 · task.status → **draft** · **强制** 回 10-task |
|
|
439
|
+
| → CLOSE | 50 pass 或跳过 50 · task status → done · **小问题**留下一 task/SPEC · **偏差过大**维护者 ↺ 10-spec/10-task |
|
|
440
|
+
| 50 fail | 打回 **30** 修复 |
|
|
441
|
+
| 10-task 重入 | 20-spec-audit / 20-task-audit 否决 · HG **rejected** · 30 **failed** · CLOSE 决策重开 |
|
|
394
442
|
|
|
395
443
|
|
|
396
444
|
| Task.status | 含义 | 恢复路径 |
|
|
397
445
|
| --- | --- | --- |
|
|
398
446
|
| `blocked` | Gate pending 或 30 拒开工 | Gate approved → 继续 30 |
|
|
399
|
-
| `failed` | 30 执行失败已落 FailureReport | 退回
|
|
447
|
+
| `failed` | 30 执行失败已落 FailureReport | 退回 20-task-audit 或 退回 10-task 重定范围 |
|
|
400
448
|
|
|
401
449
|
### 4.2 HumanGate
|
|
402
450
|
|
|
@@ -410,7 +458,7 @@ pending ──(maintainer reject)──► rejected
|
|
|
410
458
|
pending ──(Agent 30 扫描)──► BLOCKED(运行时 · 非持久 status)──► TEMPLATE_30_gate_stop
|
|
411
459
|
```
|
|
412
460
|
|
|
413
|
-
| status |
|
|
461
|
+
| status | 20-task-audit 行为 | 30 行为 | 后续 |
|
|
414
462
|
| --- | --- | --- | --- |
|
|
415
463
|
| `pending` | 可产出 Review · **禁止**附 30 Prompt(D2) | **BLOCKED** | — |
|
|
416
464
|
| `approved` | 正常 | 允许开工 | — |
|
|
@@ -494,8 +542,8 @@ R1 ──(零阻塞 + 人签)──► 30 允许
|
|
|
494
542
|
|
|
495
543
|
| ID | 公理 |
|
|
496
544
|
| ------ | --------------------------------------------------- |
|
|
497
|
-
| **D1** | 每次
|
|
498
|
-
| **D2** | `HG-AUDIT-R1 = pending` 时
|
|
545
|
+
| **D1** | 每次 **20-task-audit** **必须** 产出 `AuditReview`(零阻塞须写明) |
|
|
546
|
+
| **D2** | `HG-AUDIT-R1 = pending` 时 **20-task-audit** **禁止** 附 30 Prompt |
|
|
499
547
|
| **D3** | 30 首输出 **必须** 扫描 task 闸表(见 `TEMPLATE_30_gate_stop`) · 目标 CLI:`gate-check` |
|
|
500
548
|
| **D4** | 改码 task 开工前 `HG-GRAPH-MODULES = approved`(D4-a) |
|
|
501
549
|
| **D5** | `test_strategy=required` → 须先失败测试再实现(或同 PR 可见红过) |
|
|
@@ -620,18 +668,22 @@ npx CLI ≡ WizardTool 新实例
|
|
|
620
668
|
|
|
621
669
|
---
|
|
622
670
|
|
|
623
|
-
## 8. 与 SDD
|
|
671
|
+
## 8. 与 SDD 编号对照(快速查 · **V2**)
|
|
672
|
+
|
|
673
|
+
> 链真值(工作区):[`docs/harness/guides/GUIDANCE_harness_hat_v2_chain_v1_zh.md`](../../../../docs/harness/guides/GUIDANCE_harness_hat_v2_chain_v1_zh.md)
|
|
624
674
|
|
|
675
|
+
| 编号 | Hat 类 / hat_id | 必落盘类 | Starter |
|
|
676
|
+
| --- | --------------- | ---------------- | --- |
|
|
677
|
+
| 00 | OrchestratorHat | —(Handoff / KPI · Extended) | — |
|
|
678
|
+
| **10-spec** | SpecRequirementsHat | SPEC(更新) | Extended |
|
|
679
|
+
| **10-task** | TaskRequirementsHat | Task(更新) | ✅(`10-requirements` 别名) |
|
|
680
|
+
| **20-spec-audit** | SpecAuditHat | **AuditReview**(`*_spec_*`) | Extended |
|
|
681
|
+
| **20-task-audit** | TaskAuditHat | **AuditReview**(`*_audit_*`) | ✅(`22-task-audit` 别名) |
|
|
682
|
+
| 30 | ExecuteHat | 代码 diff · **FailureReport**(失败时) | ✅ |
|
|
683
|
+
| 40 | SelfCheckHat | Task.自检结论 | Extended(A2 待入 Starter) |
|
|
684
|
+
| 50 | ReinspectHat | 可选 Review | Extended |
|
|
625
685
|
|
|
626
|
-
|
|
627
|
-
| --- | --------------- | ---------------- |
|
|
628
|
-
| 00 | OrchestratorHat | —(Handoff / KPI · Extended) |
|
|
629
|
-
| 10 | RequirementsHat | Task(更新) |
|
|
630
|
-
| 20 | SpecReviewHat | —(对话 · Extended) |
|
|
631
|
-
| 22 | TaskAuditHat | **AuditReview** |
|
|
632
|
-
| 30 | ExecuteHat | 代码 diff · **FailureReport**(失败时) |
|
|
633
|
-
| 40 | SelfCheckHat | Task.自检结论 · Extended Starter 待 A2 |
|
|
634
|
-
| 50 | ReinspectHat | 可选 Review · Extended |
|
|
686
|
+
**历史编号(别名 · 勿删)**:`20-review-spec-task` → **10-spec**;`10-requirements` → **10-task**;`22-task-audit` → **20-task-audit**。
|
|
635
687
|
|
|
636
688
|
|
|
637
689
|
---
|
|
@@ -697,7 +749,7 @@ npx CLI ≡ WizardTool 新实例
|
|
|
697
749
|
### 11.1 下一步优先级(评审共识 · 非本体变更)
|
|
698
750
|
|
|
699
751
|
```text
|
|
700
|
-
P0 最小 v0.2 闭环(harness-only · sync
|
|
752
|
+
P0 最小 v0.2 闭环(harness-only · sync · 见 SDD_HAT_FLOW_v2 标准流程)
|
|
701
753
|
P1 gate-check 基础 · README Quick Start + §7.5 展开
|
|
702
754
|
P2 examples/kimi-code-integration(v0.3)· 第一篇对外博客
|
|
703
755
|
P3 v0.2.0 tag · Kimi 社区触达 · 简历链 GitHub
|
|
@@ -716,4 +768,5 @@ P3 v0.2.0 tag · Kimi 社区触达 · 简历链 GitHub
|
|
|
716
768
|
| v1.1 | 2026-06-15 | 吸收外部评审:元本体 · ICVO · 异常态 · 迁移/rollback · Epic 编排 · S5/S6/D7 · track.yaml · Q5 |
|
|
717
769
|
| v1.1.1 | 2026-06-15 | Preset 更名 `kimi-code-meta` · §3.3.1 meta/bootstrap 用语 · 锁定 rejected→10 · 合并冲突强制人工 |
|
|
718
770
|
| v1.2 | 2026-06-15 | v1.2 评审:§0.3 贡献清单 · §0.4 ontology.yaml · track-schema · D6-a · 合并 base 澄清 · plan 预检 · 状态图细化 · depends_on 禁环 |
|
|
771
|
+
| v1.3 | 2026-06-21 | **V2 帽链**:10-spec/10-task · 20-spec-audit/20-task-audit · 30→40 同 Agent · 50/CLOSE 打回 · [`SDD_HAT_FLOW_v2_zh.md`](./SDD_HAT_FLOW_v2_zh.md) |
|
|
719
772
|
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
| 文档 | 说明 |
|
|
4
4
|
| --- | --- |
|
|
5
|
-
| **[`DESIGN_ONTOLOGY_v1_zh.md`](./DESIGN_ONTOLOGY_v1_zh.md)** | **真值** v1.
|
|
5
|
+
| **[`DESIGN_ONTOLOGY_v1_zh.md`](./DESIGN_ONTOLOGY_v1_zh.md)** | **真值** v1.3 · Track / Hat / Sync / P·S·D 公理 / ICVO |
|
|
6
|
+
| **[`SDD_HAT_FLOW_v2_zh.md`](./SDD_HAT_FLOW_v2_zh.md)** | **帽链流程** · 人读版 · 30→40 · 打回规则 |
|
|
6
7
|
|
|
7
8
|
**分层**:回答「产品 **是什么** · 由哪些实体组成 · 允许哪些状态转移」。
|
|
8
9
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# SDD 帽链流程(V2 · 产品仓真值)
|
|
2
|
+
|
|
3
|
+
| 项 | 内容 |
|
|
4
|
+
|----|------|
|
|
5
|
+
| **版本** | v2.0 |
|
|
6
|
+
| **日期** | 2026-06-21 |
|
|
7
|
+
| **关联** | [`DESIGN_ONTOLOGY_v1_zh.md`](./DESIGN_ONTOLOGY_v1_zh.md) §3.2 · §4.1 · §8 · [`../../../harness/prompts/README.md`](../../../harness/prompts/README.md) |
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. 标准流程(功能 / Epic)
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
人 + 00 chat 生成大纲
|
|
15
|
+
→ 10-spec R0–R9(回填 SPEC · 可多轮)
|
|
16
|
+
→ 20-spec-audit(规格验收 · reviews/)
|
|
17
|
+
↔ HG-SPEC-SIGNOFF(人签 · 未过则回到 10-spec 或 20 再审)
|
|
18
|
+
→ 00 起草 P0 task(自 SPEC §13 投影)
|
|
19
|
+
→ 10-task(回填 task §5)
|
|
20
|
+
→ 20-task-audit R1(reviews/ · 可打回 10-task)
|
|
21
|
+
↔ HG-AUDIT-R1(人签)
|
|
22
|
+
→ 30 实现
|
|
23
|
+
→ 40 自检(通常由 30 同一 Agent 连续执行 · 失败自修并重跑 40 直至通过 · 无需单独开 40 对话)
|
|
24
|
+
→ 50 独立复检(可选 · 未过打回 30)
|
|
25
|
+
→ CLOSE(关账 · KPI)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**10 / 20 配对**
|
|
29
|
+
|
|
30
|
+
| 10 | 20 | 人闸 |
|
|
31
|
+
|----|-----|------|
|
|
32
|
+
| 10-spec | 20-spec-audit | HG-SPEC-SIGNOFF |
|
|
33
|
+
| 10-task | 20-task-audit | HG-AUDIT-R1 |
|
|
34
|
+
|
|
35
|
+
历史别名:`10-requirements`→10-task · `22-task-audit`→20-task-audit。
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. 打回与关账
|
|
40
|
+
|
|
41
|
+
| 节点 | 常见打回 | 说明 |
|
|
42
|
+
|------|----------|------|
|
|
43
|
+
| 20-spec-audit | → **10-spec** | 规格缺口 · 人闸 pending / rejected |
|
|
44
|
+
| 20-task-audit | → **10-task** | task 验收 / failure_paths 不可执行 |
|
|
45
|
+
| 50 | → **30** | 独立视角发现实现问题 |
|
|
46
|
+
| CLOSE | → **下一 task / SPEC 增量** | 小问题留后续迭代 |
|
|
47
|
+
| CLOSE | → **10-spec 或 10-task** | 结果与预期相差太远 · 维护者决策重开 |
|
|
48
|
+
|
|
49
|
+
**30→40**:不强制新对话;30 Agent 跑验证命令、回填 `### 自检结论(执行者)`,不通过则改码再跑,直到 task 所列命令绿。
|
|
50
|
+
|
|
51
|
+
**00**:编排层 · 不写产品代码 · 起草 SPEC/task · 派下一棒 Prompt。
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. bugfix 捷径
|
|
56
|
+
|
|
57
|
+
Issue ≈ mini-SPEC 且已签收时:**跳过 10-spec / 20-spec-audit** · 自 **00 草稿 task → 10-task → 20-task-audit → …**。
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 4. Starter 包与用户仓
|
|
62
|
+
|
|
63
|
+
| 帽 | 产品仓 Starter | 完整 Prompt |
|
|
64
|
+
|----|----------------|-------------|
|
|
65
|
+
| 10-task | `harness/prompts/10-requirements.md` | 工作区 Extended |
|
|
66
|
+
| 20-task-audit | `harness/prompts/22-task-audit.md` | 同上 |
|
|
67
|
+
| 30 / 40 | ✅ Starter | 同上 |
|
|
68
|
+
| 10-spec / 20-spec-audit / 00 / 50 | POINTER | 工作区 `docs/harness/prompts/` |
|
|
69
|
+
|
|
70
|
+
工作区 Ink 全量库:[`docs/harness/guides/GUIDANCE_harness_hat_v2_chain_v1_zh.md`](../../../../docs/harness/guides/GUIDANCE_harness_hat_v2_chain_v1_zh.md)(POINTER · 私有 monorepo)。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 修订记录
|
|
75
|
+
|
|
76
|
+
| 版本 | 日期 | 说明 |
|
|
77
|
+
|------|------|------|
|
|
78
|
+
| v2.0 | 2026-06-21 | 与 Ink 工作区 V2 对齐 · 30→40 同 Agent · 50/CLOSE 打回规则 |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
graph_id: "00_main"
|
|
2
|
+
title: "顶层流程总图"
|
|
3
|
+
description: "模板包主入口分发与典型子流程路由"
|
|
4
|
+
version: "2026-06-30"
|
|
5
|
+
|
|
6
|
+
nodes:
|
|
7
|
+
- id: "Q"
|
|
8
|
+
label: "用户 / 客户端请求"
|
|
9
|
+
- id: "E"
|
|
10
|
+
label: "应用入口"
|
|
11
|
+
- id: "M1"
|
|
12
|
+
label: "核心业务处理"
|
|
13
|
+
- id: "M2"
|
|
14
|
+
label: "次要路径"
|
|
15
|
+
- id: "ADM"
|
|
16
|
+
label: "Admin / Job"
|
|
17
|
+
- id: "FLOW_MAIN"
|
|
18
|
+
label: "主路径子流程"
|
|
19
|
+
- id: "FLOW_DOC"
|
|
20
|
+
label: ">10_flow_MAIN.md"
|
|
21
|
+
- id: "DB"
|
|
22
|
+
label: "持久化"
|
|
23
|
+
- id: "STRUCT_DOC"
|
|
24
|
+
label: ">01_struct.md"
|
|
25
|
+
|
|
26
|
+
edges:
|
|
27
|
+
- from: "Q"
|
|
28
|
+
to: "E"
|
|
29
|
+
label: "->"
|
|
30
|
+
anchors:
|
|
31
|
+
- path: "src/main.py"
|
|
32
|
+
line: 1
|
|
33
|
+
- path: "app/router/index.ts"
|
|
34
|
+
line: 1
|
|
35
|
+
- from: "E"
|
|
36
|
+
to: "M1"
|
|
37
|
+
label: "主路径 A"
|
|
38
|
+
anchors:
|
|
39
|
+
- path: "handlers/resource.py"
|
|
40
|
+
symbol: "handle_create"
|
|
41
|
+
- from: "E"
|
|
42
|
+
to: "M2"
|
|
43
|
+
label: "主路径 B"
|
|
44
|
+
anchors:
|
|
45
|
+
- path: "handlers/health.py"
|
|
46
|
+
symbol: "health_check"
|
|
47
|
+
- from: "E"
|
|
48
|
+
to: "ADM"
|
|
49
|
+
label: "管理/批处理"
|
|
50
|
+
anchors:
|
|
51
|
+
- path: "jobs/ingest.py"
|
|
52
|
+
symbol: "run_sync"
|
|
53
|
+
- from: "M1"
|
|
54
|
+
to: "FLOW_MAIN"
|
|
55
|
+
mark: "::triggers"
|
|
56
|
+
type: "triggers"
|
|
57
|
+
- from: "FLOW_MAIN"
|
|
58
|
+
to: "FLOW_DOC"
|
|
59
|
+
label: "加载"
|
|
60
|
+
- from: "M1"
|
|
61
|
+
to: "DB"
|
|
62
|
+
label: "->"
|
|
63
|
+
anchors:
|
|
64
|
+
- path: "db/repository.py"
|
|
65
|
+
- from: "ADM"
|
|
66
|
+
to: "DB"
|
|
67
|
+
label: "->"
|
|
68
|
+
anchors:
|
|
69
|
+
- path: "db/repository.py"
|
|
70
|
+
- from: "E"
|
|
71
|
+
to: "STRUCT_DOC"
|
|
72
|
+
label: "加载"
|
|
@@ -1,52 +1,65 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
graph_id: 00_main
|
|
3
|
+
title: 顶层流程总图
|
|
4
|
+
description: 模板包主入口分发与典型子流程路由
|
|
5
|
+
version: '2026-06-30'
|
|
6
|
+
generated_from: 00_main.graph.yaml
|
|
7
|
+
generator: scripts/graph_yaml_compile.js
|
|
8
|
+
---
|
|
2
9
|
|
|
3
|
-
|
|
4
|
-
> **双轨**:须与 [`00_main.ai.md`](./00_main.ai.md) 语义等价;flowchart 改 `.ai.md` 优先,再同步本文件。
|
|
5
|
-
> **协议**:[`99_mermaid_protocol.md`](./99_mermaid_protocol.md)
|
|
10
|
+
# 顶层流程总图
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
> 模板包主入口分发与典型子流程路由
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
2. 子图节点 > 7 时折叠为 `[[Phase]]`,链至独立 `10_flow_*.md`。
|
|
11
|
-
3. 异常分支可挂侧链;主干保持可读。
|
|
14
|
+
> **源文件**:`00_main.graph.yaml` · 由 `scripts/graph_yaml_compile.js` 生成 · 请勿直接手写本文件
|
|
12
15
|
|
|
13
16
|
```mermaid
|
|
14
17
|
flowchart TD
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
Q[[用户 / 客户端请求]]
|
|
19
|
+
E[[应用入口]]
|
|
20
|
+
M1[[核心业务处理]]
|
|
21
|
+
M2[[次要路径]]
|
|
22
|
+
ADM[[Admin / Job]]
|
|
23
|
+
FLOW_MAIN[[主路径子流程]]
|
|
24
|
+
FLOW_DOC[>10_flow_MAIN.md]
|
|
25
|
+
DB[(持久化)]
|
|
26
|
+
STRUCT_DOC[>01_struct.md]
|
|
27
|
+
Q --> E
|
|
28
|
+
E --"主路径 A"--> M1
|
|
29
|
+
E --"主路径 B"--> M2
|
|
30
|
+
E --"管理/批处理"--> ADM
|
|
31
|
+
M1 --"::triggers"--> FLOW_MAIN
|
|
32
|
+
FLOW_MAIN --"加载"--> FLOW_DOC
|
|
33
|
+
M1 --> DB
|
|
30
34
|
ADM --> DB
|
|
31
|
-
|
|
32
|
-
%%
|
|
33
|
-
classDef start fill:#e1f5fe,stroke:#01579b,stroke-width:2px
|
|
34
|
-
classDef main fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px
|
|
35
|
-
classDef infra fill:#fff8e1,stroke:#ff6f00,stroke-width:1px
|
|
36
|
-
|
|
37
|
-
class Q,E start
|
|
38
|
-
class M1,M2,ADM main
|
|
39
|
-
class FLOW_MAIN,DB infra
|
|
35
|
+
E --"加载"--> STRUCT_DOC
|
|
36
|
+
%% 锚点:见 YAML 源 edges[].anchors
|
|
40
37
|
```
|
|
41
38
|
|
|
42
|
-
##
|
|
39
|
+
## Nodes
|
|
43
40
|
|
|
44
|
-
|
|
|
45
|
-
|
|
46
|
-
|
|
|
47
|
-
|
|
|
41
|
+
| ID | Label |
|
|
42
|
+
|----|-------|
|
|
43
|
+
| Q | 用户 / 客户端请求 |
|
|
44
|
+
| E | 应用入口 |
|
|
45
|
+
| M1 | 核心业务处理 |
|
|
46
|
+
| M2 | 次要路径 |
|
|
47
|
+
| ADM | Admin / Job |
|
|
48
|
+
| FLOW_MAIN | 主路径子流程 |
|
|
49
|
+
| FLOW_DOC | >10_flow_MAIN.md |
|
|
50
|
+
| DB | 持久化 |
|
|
51
|
+
| STRUCT_DOC | >01_struct.md |
|
|
48
52
|
|
|
49
|
-
##
|
|
53
|
+
## Edges
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
| From | To | Label | Type | Anchors |
|
|
56
|
+
|------|----|-------|------|---------|
|
|
57
|
+
| Q | E | -> | | src/main.py#L1, app/router/index.ts#L1 |
|
|
58
|
+
| E | M1 | 主路径 A | | handlers/resource.py::handle_create |
|
|
59
|
+
| E | M2 | 主路径 B | | handlers/health.py::health_check |
|
|
60
|
+
| E | ADM | 管理/批处理 | | jobs/ingest.py::run_sync |
|
|
61
|
+
| M1 | FLOW_MAIN | ::triggers | triggers | |
|
|
62
|
+
| FLOW_MAIN | FLOW_DOC | 加载 | | |
|
|
63
|
+
| M1 | DB | -> | | db/repository.py |
|
|
64
|
+
| ADM | DB | -> | | db/repository.py |
|
|
65
|
+
| E | STRUCT_DOC | 加载 | | |
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# 图谱版本时间线
|
|
2
|
+
|
|
3
|
+
| 日期 | 版本 | 事件 |
|
|
4
|
+
|------|------|------|
|
|
5
|
+
| YYYY-MM-DD | v0.1 | 首次嵌入用户仓(请替换为真实日期) |
|
|
6
|
+
| 2026-06-30 | v0.2 | 模板包迁移至 YAML-first:`00_main.graph.yaml`、`10_flow_MAIN.graph.yaml` 成为唯一编辑源;`.ai.md` 双轨文件弃用并删除;`scripts/graph_yaml_compile.js` + `scripts/verify-template-compile.sh` 上线 |
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
graph_id: "10_flow_MAIN"
|
|
2
|
+
title: "主路径 Flow 示例"
|
|
3
|
+
description: "典型 HTTP 请求从入口到响应的主干流程"
|
|
4
|
+
version: "2026-06-30"
|
|
5
|
+
|
|
6
|
+
nodes:
|
|
7
|
+
- id: "IN"
|
|
8
|
+
label: "HTTP 请求"
|
|
9
|
+
- id: "AUTH"
|
|
10
|
+
label: "鉴权 / 会话校验"
|
|
11
|
+
- id: "VAL"
|
|
12
|
+
label: "参数校验"
|
|
13
|
+
- id: "SVC"
|
|
14
|
+
label: "业务服务层"
|
|
15
|
+
- id: "ERR_AUTH"
|
|
16
|
+
label: "Auth Failed"
|
|
17
|
+
- id: "ERR_VAL"
|
|
18
|
+
label: "Validation Failed"
|
|
19
|
+
- id: "REPO"
|
|
20
|
+
label: "仓储 / ORM"
|
|
21
|
+
- id: "DB"
|
|
22
|
+
label: "数据库 / 存储"
|
|
23
|
+
- id: "HIT"
|
|
24
|
+
label: "record exists?"
|
|
25
|
+
- id: "NOTFOUND"
|
|
26
|
+
label: "404 / 空结果"
|
|
27
|
+
- id: "BIZERR"
|
|
28
|
+
label: "4xx 业务错误"
|
|
29
|
+
- id: "RESP"
|
|
30
|
+
label: "组装响应 DTO"
|
|
31
|
+
- id: "OUT"
|
|
32
|
+
label: "返回 JSON / 页面"
|
|
33
|
+
- id: "LOG"
|
|
34
|
+
label: "结构化日志"
|
|
35
|
+
- id: "MAIN_DOC"
|
|
36
|
+
label: ">00_main.md"
|
|
37
|
+
|
|
38
|
+
edges:
|
|
39
|
+
- from: "IN"
|
|
40
|
+
to: "AUTH"
|
|
41
|
+
label: "->"
|
|
42
|
+
anchors:
|
|
43
|
+
- path: "middleware/auth.py"
|
|
44
|
+
symbol: "require_user"
|
|
45
|
+
- from: "AUTH"
|
|
46
|
+
to: "VAL"
|
|
47
|
+
label: "[ok]"
|
|
48
|
+
- from: "AUTH"
|
|
49
|
+
to: "ERR_AUTH"
|
|
50
|
+
label: "[err]"
|
|
51
|
+
anchors:
|
|
52
|
+
- path: "middleware/auth.py"
|
|
53
|
+
line: 42
|
|
54
|
+
- from: "VAL"
|
|
55
|
+
to: "SVC"
|
|
56
|
+
label: "[ok]"
|
|
57
|
+
anchors:
|
|
58
|
+
- path: "services/resource_service.py"
|
|
59
|
+
symbol: "handle"
|
|
60
|
+
- from: "VAL"
|
|
61
|
+
to: "ERR_VAL"
|
|
62
|
+
label: "[err]"
|
|
63
|
+
- from: "SVC"
|
|
64
|
+
to: "REPO"
|
|
65
|
+
label: "->"
|
|
66
|
+
anchors:
|
|
67
|
+
- path: "repositories/resource_repo.py"
|
|
68
|
+
symbol: "find_by_id"
|
|
69
|
+
- from: "REPO"
|
|
70
|
+
to: "DB"
|
|
71
|
+
label: "->"
|
|
72
|
+
anchors:
|
|
73
|
+
- path: "db/session.py"
|
|
74
|
+
- from: "REPO"
|
|
75
|
+
to: "HIT"
|
|
76
|
+
label: "?>"
|
|
77
|
+
- from: "HIT"
|
|
78
|
+
to: "NOTFOUND"
|
|
79
|
+
label: "[no]"
|
|
80
|
+
- from: "HIT"
|
|
81
|
+
to: "SVC"
|
|
82
|
+
label: "[yes]"
|
|
83
|
+
- from: "SVC"
|
|
84
|
+
to: "BIZERR"
|
|
85
|
+
label: "[err]"
|
|
86
|
+
anchors:
|
|
87
|
+
- path: "services/resource_service.py"
|
|
88
|
+
- from: "SVC"
|
|
89
|
+
to: "RESP"
|
|
90
|
+
label: "->"
|
|
91
|
+
- from: "RESP"
|
|
92
|
+
to: "OUT"
|
|
93
|
+
label: "->"
|
|
94
|
+
anchors:
|
|
95
|
+
- path: "handlers/resource.py"
|
|
96
|
+
symbol: "to_response"
|
|
97
|
+
- from: "OUT"
|
|
98
|
+
to: "LOG"
|
|
99
|
+
mark: "::archives"
|
|
100
|
+
type: "archives"
|
|
101
|
+
anchors:
|
|
102
|
+
- path: "observability/logger.py"
|
|
103
|
+
- from: "IN"
|
|
104
|
+
to: "MAIN_DOC"
|
|
105
|
+
label: "加载"
|