add-coder 0.3.3 → 0.3.4
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 +36 -4
- package/package.json +2 -2
- package/templates/.add-coder-src-hash.json +14 -14
- package/templates/core/rules/project_rules.md +9 -9
- package/templates/core/rules/theory-practice-map.toml +1 -1
- package/templates/core/scripts/db-ensure.sh +1 -1
- package/templates/core/scripts/mcp-server/shared/env.ts +1 -1
- package/templates/core/scripts/mcp-server/shared/project-root-strategy.ts +1 -1
- package/templates/core/skills/add-paradigm/SKILL.md +2 -2
- package/templates/core/templates/01-/346/236/266/346/236/204//343/200/212ADD/345/274/200/345/217/221/345/267/245/344/275/234/350/267/257/345/276/204/344/270/216/346/226/207/346/241/243/345/215/217/345/220/214/350/247/204/350/214/203/343/200/213.md +1 -1
- package/templates/core/templates/index.md +1 -1
- package/templates/core/templates/prd-incremental-template.md +1 -1
- package/templates/core/templates/prd-incremental-template.schema.json +2 -2
- package/templates/core/templates/prd-standard-template.md +2 -2
- package/templates/core/templates/prd-standard-template.schema.json +3 -3
- package/templates/core/vocabulary/add-governance-vocabulary.md +2 -2
package/README.md
CHANGED
|
@@ -9,6 +9,8 @@ Make 0.75 into one.
|
|
|
9
9
|
|
|
10
10
|
> 🧭 **从零上手实操?** 请参见 [GUIDE.md](https://github.com/xiaomingming92/add-coder/blob/main/GUIDE.md) — 包含触发词速查、需求转 Plan、完整链路演练。
|
|
11
11
|
>
|
|
12
|
+
> 📖 **想看 ADD 范式真实落地案例?** → [老设备续命工程](#-案例示范老安卓设备续命工程) — weather_proxy 实践。
|
|
13
|
+
>
|
|
12
14
|
> 🔄 **add-coder 升级后担心更新本地Skills,rules,hooks,templates等等会很麻烦?** `npx add-coder sync --adapter=qoder --patch` — 实操看 [GUIDE.md §版本升级](https://github.com/xiaomingming92/add-coder/blob/main/GUIDE.md#%E4%B8%83add-coder-%E5%8D%87%E7%BA%A7%E5%90%8E%E6%80%8E%E4%B9%88%E6%9B%B4%E6%96%B0%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6) | 原理看 [DEVELOPMENT.md](https://github.com/xiaomingming92/add-coder/blob/main/DEVELOPMENT.md)
|
|
13
15
|
|
|
14
16
|
```bash
|
|
@@ -110,6 +112,20 @@ hook 不是「通知推送」,而是 **ADD 范式在 IDE agent 生命周期中
|
|
|
110
112
|
|
|
111
113
|
|
|
112
114
|
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 📖 案例示范:老安卓设备续命工程
|
|
118
|
+
|
|
119
|
+
[weather_proxy](https://github.com/xiaomingming92/weather_proxy) 是 ADD 范式在真实项目中的完整落地案例——为一个 2010 年代的旧 Android 设备(中兴 V880 / HTC G13)重建天气服务。
|
|
120
|
+
|
|
121
|
+
- 🧓 **硬件完好,软件死亡** — 厂商天气服务全部关停,设备只能看不能用
|
|
122
|
+
- 📐 **ADD 范式全链路可见** — 从 `.trae/specs/` 早期三元组 → `.qoder/` 标准化 → 集中裁决层 TOML 化
|
|
123
|
+
- 🔧 **集中裁决层实战** — `caijuehub/` 三层架构:TOML 声明 → 转录引擎 → 策略消费,新增机型只需 10 行配置
|
|
124
|
+
- 📊 **DeviceRegistry 重构** — cron-service.ts 647→232 行,stop() 全覆盖,4 个历史 Bug 修复
|
|
125
|
+
- 🧪 **45 用例全覆盖** — vitest,tsc --noEmit 零错误,ESLint 零新增
|
|
126
|
+
|
|
127
|
+
> ⚠️ 仅限个人学习与技术讨论。详见 [weather_proxy/README.md](https://github.com/xiaomingming92/weather_proxy#readme)。
|
|
128
|
+
|
|
113
129
|
---
|
|
114
130
|
|
|
115
131
|
## 快速开始
|
|
@@ -147,7 +163,7 @@ npx add-coder init
|
|
|
147
163
|
|------|------|------|
|
|
148
164
|
| ① | 检测 IDE | 扫描 `.qoder/` `.claude/` `.vscode/` 存在性,或通过 `--adapter` 指定 |
|
|
149
165
|
| ② | 加载配置 | 交互式问答 > `add-coder.config.ts` > 自动检测 > 默认值 |
|
|
150
|
-
| ③ | 数据库部署 | `db-ensure.sh` 启容器/PG 连接 + `injectPrisma()`
|
|
166
|
+
| ③ | 数据库部署 | `db-ensure.sh` 启容器/PG 连接 + `injectPrisma()` 集中裁决层(Prisma init → AddUser 模型复制 → db push → generate) |
|
|
151
167
|
| ④ | 渲染模板 | 55 个 core 模板文件(skills/agents/templates/plans/specs/scripts…) |
|
|
152
168
|
| ⑤ | 部署适配 | 将 core 内容复制到 `.add/` `.qoder/` `.claude/` 三目录,补 IDE 专属 hooks/mcp |
|
|
153
169
|
| ⑥ | 写入文件 | 交互/yes/force/dry-run 四种模式,`.sh` 脚本自动 `chmod` |
|
|
@@ -256,8 +272,8 @@ Tasks (实验性) 双向 ✅ 已实现 长任务持久化
|
|
|
256
272
|
> image: docker.io/postgres:16-alpine
|
|
257
273
|
> ports: ["127.0.0.1:5433:5432"]
|
|
258
274
|
> environment:
|
|
259
|
-
> POSTGRES_DB:
|
|
260
|
-
> POSTGRES_USER:
|
|
275
|
+
> POSTGRES_DB: <your-db>
|
|
276
|
+
> POSTGRES_USER: <your-db-user>
|
|
261
277
|
> POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
262
278
|
> ```
|
|
263
279
|
> 数据卷建议挂载到 `~/data/your_project/postgres/`,避免容器销毁丢失数据。
|
|
@@ -285,6 +301,8 @@ Tasks (实验性) 双向 ✅ 已实现 长任务持久化
|
|
|
285
301
|
|
|
286
302
|
> 🧭 **Getting hands-on?** See [GUIDE.md](https://github.com/xiaomingming92/add-coder/blob/main/GUIDE.md) — trigger word quick reference, requirements-to-Plan, and full workflow walkthrough.
|
|
287
303
|
>
|
|
304
|
+
> 📖 **Want to see ADD in action?** → [Old Android Device Revival](#-case-study-breathing-life-back-into-old-android-devices) — weather_proxy practice.
|
|
305
|
+
>
|
|
288
306
|
> 🔄 **Worried about updating local Skills, rules, hooks, templates after upgrading add-coder?** `npx add-coder sync --adapter=qoder --patch` — how-to: [GUIDE.md](https://github.com/xiaomingming92/add-coder/blob/main/GUIDE.md#%E4%B8%83add-coder-%E5%8D%87%E7%BA%A7%E5%90%8E%E6%80%8E%E4%B9%88%E6%9B%B4%E6%96%B0%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6) | principles: [DEVELOPMENT.md](https://github.com/xiaomingming92/add-coder/blob/main/DEVELOPMENT.md)
|
|
289
307
|
|
|
290
308
|
```bash
|
|
@@ -393,6 +411,20 @@ Each IDE(Claude Code / Qoder CN / VS Code Copilot / Trae / Codex)has its own
|
|
|
393
411
|
|
|
394
412
|
---
|
|
395
413
|
|
|
414
|
+
## 📖 Case Study: Breathing Life Back into Old Android Devices
|
|
415
|
+
|
|
416
|
+
[weather_proxy](https://github.com/xiaomingming92/weather_proxy) is a complete ADD paradigm implementation — rebuilding weather services for 2010-era Android devices (ZTE V880 / HTC G13).
|
|
417
|
+
|
|
418
|
+
- 🧓 **Hardware intact, software dead** — official weather services all shut down
|
|
419
|
+
- 📐 **Full ADD pipeline** — `.trae/specs/` triads → `.qoder/` standardization → Caijuehub TOML
|
|
420
|
+
- 🔧 **Caijuehub in action** — 3-layer architecture: TOML declaration → transcribe engine → strategy consumption
|
|
421
|
+
- 📊 **DeviceRegistry refactor** — cron-service.ts 647→232 lines, 4 historical bugs fixed
|
|
422
|
+
- 🧪 **45 test cases** — vitest, zero tsc errors, zero new ESLint warnings
|
|
423
|
+
|
|
424
|
+
> ⚠️ Personal learning & technical discussion only. See [weather_proxy/README.md](https://github.com/xiaomingming92/weather_proxy#readme).
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
396
428
|
## Quick Start
|
|
397
429
|
|
|
398
430
|
```bash
|
|
@@ -526,7 +558,7 @@ npx add-coder init
|
|
|
526
558
|
> ports: ["127.0.0.1:5433:5432"]
|
|
527
559
|
> environment:
|
|
528
560
|
> POSTGRES_DB: mydb
|
|
529
|
-
> POSTGRES_USER:
|
|
561
|
+
> POSTGRES_USER: <your-db-user>
|
|
530
562
|
> POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
531
563
|
> ```
|
|
532
564
|
> Mount data volume to `~/data/your_project/postgres/` to avoid data loss on container removal.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "add-coder",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "[codein2027](https://github.com/xiaomingming92/codein2027) - A complete scaffolding for building the ADD programming paradigm, the implementation layer for AI code governance. Core principle: Audit as Infrastructure. Breaks the black-box programming process and cross-session amnesia, evolving programming paradigms into an auditable, traceable, and convergent new era. npx-ready.\n\n[codein2027](https://github.com/xiaomingming92/codein2027) 快速构建 ADD 编程范式的完整脚手架——AI 代码治理的落地方案。以「审计即基础设施」为核心,彻底打破编程过程黑盒与跨轮失忆,让编程范式进化为可审计、可追溯、可收敛的新时代。npx 即用,人人可体验。",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"mcp",
|
|
34
34
|
"workflow",
|
|
35
35
|
"codein2027",
|
|
36
|
-
"
|
|
36
|
+
"集中裁决层",
|
|
37
37
|
"caijuehub"
|
|
38
38
|
],
|
|
39
39
|
"author": "xiaomingming",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_version": "0.3.
|
|
2
|
+
"_version": "0.3.4",
|
|
3
3
|
"adapters/claude/hooks/doc-format-guard.sh": "ec59ad3f",
|
|
4
4
|
"adapters/claude/hooks/lib/common.sh": "db321ef6",
|
|
5
5
|
"adapters/claude/hooks/lib/context-inject.sh": "4132f203",
|
|
@@ -176,9 +176,9 @@
|
|
|
176
176
|
"core/reports/index.md": "6348c374",
|
|
177
177
|
"core/reports/runtime-report/gateway.md": "a5751665",
|
|
178
178
|
"core/reviews/.gitkeep": "e3b0c442",
|
|
179
|
-
"core/rules/project_rules.md": "
|
|
180
|
-
"core/rules/theory-practice-map.toml": "
|
|
181
|
-
"core/scripts/db-ensure.sh": "
|
|
179
|
+
"core/rules/project_rules.md": "ce952f48",
|
|
180
|
+
"core/rules/theory-practice-map.toml": "b1db99fd",
|
|
181
|
+
"core/scripts/db-ensure.sh": "faeb6b92",
|
|
182
182
|
"core/scripts/gen-plan-index.sh": "bfc6ad3e",
|
|
183
183
|
"core/scripts/mcp-server/elicitation/confirm.ts": "924857b8",
|
|
184
184
|
"core/scripts/mcp-server/elicitation/index.ts": "44c5dc3f",
|
|
@@ -193,10 +193,10 @@
|
|
|
193
193
|
"core/scripts/mcp-server/resources/round-task.ts": "104a0d74",
|
|
194
194
|
"core/scripts/mcp-server/sampling/index.ts": "7ee26d92",
|
|
195
195
|
"core/scripts/mcp-server/sampling/review.ts": "5db7a8df",
|
|
196
|
-
"core/scripts/mcp-server/shared/env.ts": "
|
|
196
|
+
"core/scripts/mcp-server/shared/env.ts": "57f4c2f2",
|
|
197
197
|
"core/scripts/mcp-server/shared/fs.ts": "97257db9",
|
|
198
198
|
"core/scripts/mcp-server/shared/prisma.ts": "5133f329",
|
|
199
|
-
"core/scripts/mcp-server/shared/project-root-strategy.ts": "
|
|
199
|
+
"core/scripts/mcp-server/shared/project-root-strategy.ts": "1a5bdc57",
|
|
200
200
|
"core/scripts/mcp-server/shared/response.ts": "f7806b67",
|
|
201
201
|
"core/scripts/mcp-server/tasks/index.ts": "c040eb75",
|
|
202
202
|
"core/scripts/mcp-server/tasks/runner.ts": "d84bd35d",
|
|
@@ -210,12 +210,12 @@
|
|
|
210
210
|
"core/scripts/mcp-server/tools/quality.ts": "26ddf75d",
|
|
211
211
|
"core/scripts/mcp-server/types.ts": "6c5e60bc",
|
|
212
212
|
"core/scripts/mcp-server.ts": "99cc6833",
|
|
213
|
-
"core/skills/add-paradigm/SKILL.md": "
|
|
213
|
+
"core/skills/add-paradigm/SKILL.md": "dab8a2ab",
|
|
214
214
|
"core/skills/session-init/SKILL.md": "0fbdc5cd",
|
|
215
215
|
"core/specs/add-coder-npm-package/checklist.md": "ed92032c",
|
|
216
216
|
"core/specs/add-coder-npm-package/spec.md": "c7d0f235",
|
|
217
217
|
"core/specs/add-coder-npm-package/tasks.md": "c34301e5",
|
|
218
|
-
"core/templates/01-架构/《ADD开发工作路径与文档协同规范》.md": "
|
|
218
|
+
"core/templates/01-架构/《ADD开发工作路径与文档协同规范》.md": "8c10ae18",
|
|
219
219
|
"core/templates/TERMINOLOGY.md": "e9f4f781",
|
|
220
220
|
"core/templates/add-route-template-heavyweight.md": "8b1eb7c2",
|
|
221
221
|
"core/templates/add-route-template.md": "670f9ebe",
|
|
@@ -228,11 +228,11 @@
|
|
|
228
228
|
"core/templates/handoff-multi-round.schema.json": "abed4220",
|
|
229
229
|
"core/templates/handoff-single-round-template.md": "dceb7c86",
|
|
230
230
|
"core/templates/handoff-single-round.schema.json": "0627cda2",
|
|
231
|
-
"core/templates/index.md": "
|
|
232
|
-
"core/templates/prd-incremental-template.md": "
|
|
233
|
-
"core/templates/prd-incremental-template.schema.json": "
|
|
234
|
-
"core/templates/prd-standard-template.md": "
|
|
235
|
-
"core/templates/prd-standard-template.schema.json": "
|
|
231
|
+
"core/templates/index.md": "0fb42ea5",
|
|
232
|
+
"core/templates/prd-incremental-template.md": "4a996ad5",
|
|
233
|
+
"core/templates/prd-incremental-template.schema.json": "bb44f022",
|
|
234
|
+
"core/templates/prd-standard-template.md": "abf639c2",
|
|
235
|
+
"core/templates/prd-standard-template.schema.json": "2b76a919",
|
|
236
236
|
"core/templates/report-template.md": "bc4602ac",
|
|
237
237
|
"core/templates/report-template.schema.json": "44dd2bd0",
|
|
238
238
|
"core/templates/review-implementation-template.md": "a8f8c748",
|
|
@@ -252,6 +252,6 @@
|
|
|
252
252
|
"core/templates/tasks-template.md": "3a0f318d",
|
|
253
253
|
"core/templates/tasks-template.schema.json": "c046de41",
|
|
254
254
|
"core/tools/README.md": "26a63460",
|
|
255
|
-
"core/vocabulary/add-governance-vocabulary.md": "
|
|
255
|
+
"core/vocabulary/add-governance-vocabulary.md": "0bd9f725",
|
|
256
256
|
"shared/hooks-lib/common.sh": "441eee52"
|
|
257
257
|
}
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
| P0 | `add-paradigm` SKILL | 每次开发必须先执行 | ✅ 已实现 | |
|
|
9
9
|
| P0 | `add-paradigm` Step 0 | 文档先行(Documentation First)| ✅ 已实现 | |
|
|
10
10
|
| P0 | ADD-0.2 用户代码与思想完整性 | IDE 不得结构化、匿名化或利用用户的代码与思维方式 | ✅ 已定义 | |
|
|
11
|
-
| P0 | ADD-16
|
|
11
|
+
| P0 | ADD-16 集中裁决层契约强制门禁 | 涉及审计/日志等跨模块治理模块的变更,必须先读取集中裁决层契约 + 核对 caijue.toml + 调用 Guardian 门禁 | ✅ 已实现 | 2026-06-25 引入 |
|
|
12
12
|
| P1 | MCP-5 稀疏推理 | 新对话必须调 query_audit_logs | ✅ 已实现 | |
|
|
13
13
|
| P1 | ADD-7 开发操作审计 | 每次改代码必须调 record_dev_operation | ✅ 已实现 | |
|
|
14
14
|
| P1 | ADD-0.1 文档先行 | 广义文档贯穿全生命周期(Plan → Review → Spec → Code → Checklist → runtime-review → 回归校准)。具体约束见 ADD-9~ADD-12 | ✅ 已实现 | |
|
|
15
|
-
| P1 | ADD-0.3 自动审计机制 |
|
|
15
|
+
| P1 | ADD-0.3 自动审计机制 | 数据流转路径必须可观测,集中裁决层输入/输出优先 | ✅ 已实现 | 第7轮 `AuditCallback` 实现 |
|
|
16
16
|
| P2 | ADD-1 可观测性优先 | 审计基础设施先于业务逻辑 | ✅ 已实现 | |
|
|
17
17
|
| P2 | ADD-2 阶段标记对称 | 每阶段 Start/End 成对 | ✅ 已实现 | |
|
|
18
18
|
| P2 | ADD-3 最小可观测单元 | 粒度细化到操作最小单元 | ✅ 已实现 | |
|
|
@@ -110,7 +110,7 @@ ADD 是**开发阶段**的编程范式,不是运行时范式。
|
|
|
110
110
|
- ADD 的反馈闭环消费者是:IDE 中的 AI 助手 + 编程人员
|
|
111
111
|
- AI 助手消费审计数据:自动检查合规性、调整代码生成策略、提示修复方向
|
|
112
112
|
- 编程人员消费审计数据:从审计数据定位问题根因、判断功能是否收敛
|
|
113
|
-
-
|
|
113
|
+
- 运行时范式(集中裁决层/能力模型/组件消费能力对象)是独立的下一步演化,不在 ADD 范围内
|
|
114
114
|
- ADD 产出的 AuditPhase 枚举天然可桥接到运行时状态定义,但桥接是后续步骤
|
|
115
115
|
|
|
116
116
|
## ADD-0.1:广义文档先行(Documentation First)
|
|
@@ -219,7 +219,7 @@ ADD 范式产出的不仅是代码,更是编程人员的思维过程、架构
|
|
|
219
219
|
|
|
220
220
|
| 层级 | 覆盖范围 | 要求 |
|
|
221
221
|
|------|---------|------|
|
|
222
|
-
| **最低(核心路径)** |
|
|
222
|
+
| **最低(核心路径)** | 集中裁决层(或等价业务判断集中点)的输入/输出 | 必须实现。核心业务的流转事实可审计,非核心路径可暂缺 |
|
|
223
223
|
| **理想(全链路)** | 数据从源头到消费的每一个架构节点 | 目标状态。全链路无死角;能力模型动态验证(能力授予/回收、匹配/不匹配的全路径)可审计;"数据入库 → 拉取 → 裁决 → 能力对象 → 消费"每一步都可追溯 |
|
|
224
224
|
|
|
225
225
|
**强制底线**:任何系统至少达到"最低"层级。低于此线 = 不可审计。
|
|
@@ -234,7 +234,7 @@ ADD 范式产出的不仅是代码,更是编程人员的思维过程、架构
|
|
|
234
234
|
3. **成功/失败等价** — 成功路径和失败路径均有审计记录(ADD-6)
|
|
235
235
|
4. **节点/接口过滤** — 可配置白名单/黑名单,支持跳过路径(如 login、health check)
|
|
236
236
|
5. **脱敏** — 敏感字段(password/token/secret)自动替换为 `***`
|
|
237
|
-
6.
|
|
237
|
+
6. **集中裁决层优先** — 集中裁决层的输入/输出是最高优先级的审计点,比 CRUD 记录更重要
|
|
238
238
|
|
|
239
239
|
### 与 ADD-5 的关系说明
|
|
240
240
|
|
|
@@ -723,14 +723,14 @@ AI 可能在完成 Step 3 代码后标记 Task 为 ✅ 但跳过 Step 3.5/4/5/8
|
|
|
723
723
|
|
|
724
724
|
---
|
|
725
725
|
|
|
726
|
-
## ADD-16
|
|
726
|
+
## ADD-16:集中裁决层契约强制门禁
|
|
727
727
|
|
|
728
|
-
|
|
728
|
+
**集中裁决层契约(caijue.toml + 集中裁决层写入契约文档)是所有跨模块治理变更的强制前置条件。AI 不得在未确认契约合规的情况下修改被管辖代码。**
|
|
729
729
|
|
|
730
730
|
### 强制范围
|
|
731
731
|
|
|
732
732
|
以下文件/模块的任何代码变更(新建/修改/删除),AI 必须:
|
|
733
|
-
1. **编码前**读取
|
|
733
|
+
1. **编码前**读取 `《集中裁决层-AuditLog写入契约》.md` 确认 L1/L2 归属与 action 命名空间
|
|
734
734
|
2. **编码前**确认 `caijue.toml` 中已有对应 `[[caijue]]` 条目(无则先注册)
|
|
735
735
|
3. **编码后**调用 `add-flow-guardian` 执行 Step 3 出口门禁(含审计调用覆盖 + try/catch 审计检查)
|
|
736
736
|
|
|
@@ -757,7 +757,7 @@ AI 可能在完成 Step 3 代码后标记 Task 为 ✅ 但跳过 Step 3.5/4/5/8
|
|
|
757
757
|
|
|
758
758
|
### 与 ADD-0.1 的关系
|
|
759
759
|
|
|
760
|
-
ADD-0.1 要求"文档先行"(先改文档再改代码)。ADD-16 是对 ADD-0.1 的细化——当变更涉及审计/日志等跨模块治理领域时,"文档"
|
|
760
|
+
ADD-0.1 要求"文档先行"(先改文档再改代码)。ADD-16 是对 ADD-0.1 的细化——当变更涉及审计/日志等跨模块治理领域时,"文档"具体指集中裁决层契约文档 + caijue.toml。
|
|
761
761
|
|
|
762
762
|
---
|
|
763
763
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# db-ensure.sh — 容器启动 + 环境准备
|
|
3
|
-
# prisma init/copy/push/generate 由 init.ts → injectPrisma()
|
|
3
|
+
# prisma init/copy/push/generate 由 init.ts → injectPrisma() 集中裁决层处理
|
|
4
4
|
# 用法: bash db-ensure.sh <engine> <container> [--migrate]
|
|
5
5
|
set -euo pipefail
|
|
6
6
|
|
|
@@ -7,7 +7,7 @@ import { resolveProjectRoot } from "./project-root-strategy.js"
|
|
|
7
7
|
const __filename = fileURLToPath(import.meta.url)
|
|
8
8
|
const __dirname = dirname(__filename)
|
|
9
9
|
|
|
10
|
-
//
|
|
10
|
+
// 集中裁决层驱动:PROJECT_ROOT 推导由 project-root-rules.toml → project-root-strategy.ts 定义
|
|
11
11
|
export const PROJECT_ROOT = resolveProjectRoot(__dirname)
|
|
12
12
|
|
|
13
13
|
export const MAGIC_DIR = process.env.MAGIC_DIR || basename(resolve(__dirname, "..", "..", ".."))
|
|
@@ -20,7 +20,7 @@ function findProjectRoot(fromDir: string): string {
|
|
|
20
20
|
return resolve(fromDir, "..", "..", "..", "..")
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
/**
|
|
23
|
+
/** 集中裁决层消费:按 PROJECT_ROOT_PRIORITY 顺序逐层尝试。 */
|
|
24
24
|
export function resolveProjectRoot(__dirname: string): string {
|
|
25
25
|
const resolvers: Record<string, () => string> = {
|
|
26
26
|
env_var: () => process.env.PROJECT_ROOT || "",
|
|
@@ -10,7 +10,7 @@ description: "Audit-Driven Development paradigm workflow. Invoke when starting a
|
|
|
10
10
|
**范式边界**(定义在 `{{magicDir}}/rules/project_rules.md` ADD-0):
|
|
11
11
|
- ADD 是开发阶段编程范式,不是运行时范式
|
|
12
12
|
- 反馈闭环消费者:IDE 中的 AI 助手 + 编程人员
|
|
13
|
-
-
|
|
13
|
+
- 运行时范式(集中裁决层/能力模型)是独立的下一步演化
|
|
14
14
|
|
|
15
15
|
**核心原则**(始终生效,定义在 `{{magicDir}}/rules/project_rules.md`):
|
|
16
16
|
- ADD-0:范式边界与消费者定义
|
|
@@ -324,7 +324,7 @@ Plan 级闭包: {业务功能描述}
|
|
|
324
324
|
|
|
325
325
|
#### 0.7.1 Plan 活跃判定标准(裁决逻辑)
|
|
326
326
|
|
|
327
|
-
> **裁决定位**:"某个 Plan 是否活跃"不是文档约定问题,而是需要从 add-route 的 Step 勾选状态中做确定性判定的裁决逻辑。在 add-coder 项目的 hook 脚本中以 shell 函数实现(`detect_active_add`),暂不依赖 caijuehub
|
|
327
|
+
> **裁决定位**:"某个 Plan 是否活跃"不是文档约定问题,而是需要从 add-route 的 Step 勾选状态中做确定性判定的裁决逻辑。在 add-coder 项目的 hook 脚本中以 shell 函数实现(`detect_active_add`),暂不依赖 caijuehub 集中裁决层分发(`npx add-coder init` 不产出 caijuehub)。
|
|
328
328
|
|
|
329
329
|
**活跃判定规则**:
|
|
330
330
|
|
|
@@ -112,7 +112,7 @@ ADD 不是万能范式。用错了阶段反而拖慢迭代速度。
|
|
|
112
112
|
|------|------|--------|----------------|
|
|
113
113
|
| **MVP 早期** | SOLO | 快速验证想法,一个人加一个 AI 足以跑通核心链路 | 需求还在漂移,今天写的规则明天就改——播种前先圈地 |
|
|
114
114
|
| **MVP 收尾** | ADD 预埋 | 核心功能收敛后,做三件事:① 写架构文档 ② 收敛类型定义 ③ 定义核心接口合约 | 功能已经稳定到可以说清楚边界了。此时不预埋,持续迭代时 AI 会在散落的 if 上继续贴 if,债务不可逆 |
|
|
115
|
-
| **持续迭代** | ADD 全流程 | 每个需求走完整闭环:Plan → Review → Handoff → Spec → 代码+审计 → 收敛判断 |
|
|
115
|
+
| **持续迭代** | ADD 全流程 | 每个需求走完整闭环:Plan → Review → Handoff → Spec → 代码+审计 → 收敛判断 | 系统复杂度超过人脑容量,没有集中裁决层和审计链路就是盲飞 |
|
|
116
116
|
|
|
117
117
|
> **一句话判断**:如果你还在"这个功能到底要不要做"的阶段,用 SOLO 快跑;如果你已经到了"核心链路跑通了,接下来要稳着加功能"的阶段,ADD 预埋;如果你已经在修复"改了这里那里爆"的问题,ADD 晚了,但赶紧上还来得及止损。
|
|
118
118
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**我要做…** | **用这个模板** | **为什么**
|
|
8
8
|
--|--|--
|
|
9
|
-
| 写产品需求文档 | `prd-standard-template.md` | 含 Plan 拆分建议 +
|
|
9
|
+
| 写产品需求文档 | `prd-standard-template.md` | 含 Plan 拆分建议 + 集中裁决层关联 |
|
|
10
10
|
| 增量更新 PRD | `prd-incremental-template.md` | 在原 PRD 上追加/修改 |
|
|
11
11
|
| 新建开发任务(需要架构设计) | `standard-plan-template.md` | 含方案选型、架构设计、依赖图,适合复杂改动(**默认**)
|
|
12
12
|
| 新建开发任务(简单修复) | `simple-plan-template.md` | 内联 Handoff,无需独立 spec 文件(仅小修改/用户主动提)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"template": "prd-incremental-template.md",
|
|
3
|
-
"description": "增量 PRD 校验只验证 ADD 交互接口——Plan 拆分影响 +
|
|
3
|
+
"description": "增量 PRD 校验只验证 ADD 交互接口——Plan 拆分影响 + 集中裁决层影响。变更内容本身是人工写作,不做结构校验。",
|
|
4
4
|
"sections": [
|
|
5
5
|
{
|
|
6
6
|
"id": "plan-impact",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"id": "caijuehub-impact",
|
|
13
|
-
"heading": "##
|
|
13
|
+
"heading": "## 五、集中裁决层影响",
|
|
14
14
|
"required": true,
|
|
15
15
|
"description": "增量改动必须声明涉及哪些裁决规则的增删改。"
|
|
16
16
|
}
|
|
@@ -198,9 +198,9 @@ Plan 3: {plan名称} ── 模板: {simple/standard} ── 聚焦: {子功能
|
|
|
198
198
|
|
|
199
199
|
---
|
|
200
200
|
|
|
201
|
-
##
|
|
201
|
+
## 十一、集中裁决层关联
|
|
202
202
|
|
|
203
|
-
> 本章节列出本 PRD 涉及的规则和边界,哪些建议集中到 `caijue.toml` 管理。必填——PRD
|
|
203
|
+
> 本章节列出本 PRD 涉及的规则和边界,哪些建议集中到 `caijue.toml` 管理。必填——PRD 中的约束不进入集中裁决层,等于没有被强制执行。
|
|
204
204
|
|
|
205
205
|
### 11.1 建议集中裁决的规则
|
|
206
206
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"template": "prd-standard-template.md",
|
|
3
|
-
"description": "PRD 校验只验证与 ADD 体系的交互接口——Plan 拆分建议 +
|
|
3
|
+
"description": "PRD 校验只验证与 ADD 体系的交互接口——Plan 拆分建议 + 集中裁决层关联。内部需求章节是人工写作内容,不做结构校验。",
|
|
4
4
|
"sections": [
|
|
5
5
|
{
|
|
6
6
|
"id": "plan-split",
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"id": "caijuehub-link",
|
|
13
|
-
"heading": "##
|
|
13
|
+
"heading": "## 十一、集中裁决层关联",
|
|
14
14
|
"required": true,
|
|
15
|
-
"description": "PRD 必须列出建议集中到 caijue.toml
|
|
15
|
+
"description": "PRD 必须列出建议集中到 caijue.toml 管理的规则和边界约束。约束不进集中裁决层等于没有被强制执行。"
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"placeholders": [
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
|
|
100
100
|
| 触发词 | LLM 含义 | 优先级 |
|
|
101
101
|
|--------|---------|--------|
|
|
102
|
-
|
|
|
102
|
+
| `集中裁决层` / `caijue` / `caijue.toml` | 读 `src/caijuehub/caijue.toml` | 🟡 P1 |
|
|
103
103
|
| `agentAudit` / `审计打点` | ADD-7:业务代码中调用 `agentAudit(phase, detail, extra)` 植入运行时审计点(区别于 `record_dev_operation` MCP 工具) | 🟡 P1 |
|
|
104
104
|
| `agentAuditNodeStart` / `agentAuditNodeEnd` | ADD-2:节点进入/退出阶段标记,用于验证阶段对称性 | 🟡 P1 |
|
|
105
105
|
| `Phase` / `AgentAuditPhase` | `src/lib/agent-audit-logger.ts` 中的阶段联合类型 | 🟡 P1 |
|
|
@@ -352,7 +352,7 @@ LLM: "验收通过 → 自动写 devlog日志(走mcp)(无需用户提醒)→
|
|
|
352
352
|
|
|
353
353
|
| 优先级 | 触发词 | LLM 含义 |
|
|
354
354
|
|:--:|------|---------|
|
|
355
|
-
| P1 |
|
|
355
|
+
| P1 | `集中裁决层` / `caijue` / `caijue.toml` | 读 `src/caijuehub/caijue.toml`,含所有裁决条目 |
|
|
356
356
|
| P1 | `agentAudit` / `审计打点` | ADD-7:在业务代码中调用 `agentAudit(phase, detail, extra)` 植入运行时审计点(与 `record_dev_operation` 不同:前者是代码内审计函数,后者是 MCP 工具写 AuditLog 表) |
|
|
357
357
|
| P2 | `agentAuditNodeStart/End` | ADD-2:节点进入/退出阶段标记,用于阶段对称性验证 |
|
|
358
358
|
| P1 | `Phase` / `AgentAuditPhase` | `src/lib/agent-audit-logger.ts` 中的阶段联合类型 |
|