@andyqiu/codeforge 0.3.14 → 0.4.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 +12 -8
- package/agents/codeforge.md +109 -64
- package/agents/coder-deep.md +41 -28
- package/agents/coder-quick.md +41 -28
- package/agents/coder.md +28 -28
- package/agents/planner.md +10 -7
- package/agents/reviewer-lite.md +248 -0
- package/agents/reviewer.md +177 -42
- package/commands/discard-session.md +63 -0
- package/commands/merge.md +80 -0
- package/dist/index.js +3631 -2238
- package/install.ps1 +8 -7
- package/install.sh +7 -6
- package/package.json +2 -1
- package/review-profiles/adr.md +72 -0
- package/review-profiles/code-c.md +46 -0
- package/review-profiles/code-csharp-lua-c.md +73 -0
- package/review-profiles/code-csharp.md +41 -0
- package/review-profiles/code-lua.md +42 -0
- package/review-profiles/code-python.md +43 -0
- package/review-profiles/code-typescript.md +45 -0
- package/review-profiles/code.md +51 -0
- package/review-profiles/decision-only.md +61 -0
- package/review-profiles/docs.md +46 -0
- package/review-profiles/plan-only.md +67 -0
- package/workflows/feature-dev.yaml +37 -7
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Review Profile: plan_only(方案文档审阅)
|
|
2
|
+
|
|
3
|
+
<!-- ADR:reviewer-multi-profile -->
|
|
4
|
+
|
|
5
|
+
> 适用:`review_target=plan_only`,审 planner 输出的方案 markdown(`plans/*.md`)。
|
|
6
|
+
> 本 profile **替代**通用 code.md 清单(方案审阅与代码审阅维度不同)。
|
|
7
|
+
|
|
8
|
+
## 适用场景
|
|
9
|
+
|
|
10
|
+
- codeforge 派 planner 出方案后,自动派 reviewer 审方案(ADR:full-chain-auto-review-gating)
|
|
11
|
+
- 用户手动 `/review plan_only`
|
|
12
|
+
- workflow `feature-dev.yaml` 第 2 步「审方案」
|
|
13
|
+
|
|
14
|
+
**不审什么**:不审代码 diff,只审 `plans/*.md`。pending 列表里若混杂代码 diff,**仅审 plan 文件**并在 Review Summary 标注「跳过 N 个非方案文件」。
|
|
15
|
+
|
|
16
|
+
## 审阅维度(7 维度,按优先级,逐项过)
|
|
17
|
+
|
|
18
|
+
| # | 维度 | 权重 | 检查清单 | 反例(必拒) |
|
|
19
|
+
|---|---|---|---|---|
|
|
20
|
+
| 1 | 需求覆盖完整性 | P0 | 每个 PRD/需求点是否有对应实现步骤?有无遗漏的 edge case(边界值 / 异常路径 / 失败回滚)?走 spec 路径时每个 `AC-x` / `PRE-x` 是否在 ADR-Draft Decision 段被引用? | 需求说「失败要 retry 3 次」方案没提;spec `AC-2` 在 Decision 段没出现 |
|
|
21
|
+
| 2 | 架构合理性 | P0 | 模块边界是否清晰(职责单一)?依赖方向是否合理(无下层依赖上层)?有无引入循环依赖?跨模块的接口契约是否明确? | 方案让 `lib/` 反向 import `agents/`;新模块同时职责「写存储+发 webhook+解析配置」 |
|
|
22
|
+
| 3 | ADR 覆盖 | P0 | 是否为**关键决策点**创建/引用了 ADR(新增 plugin / workflow / command / tool / agent)?现有 ADR 是否有冲突(如 ADR-A 说禁止 X,方案又用了 X)?ADR-Draft 三段(Context / Options / Decision)是否齐全? | 新建 plugin 没 ADR;方案与 ADR:apply-hard-gate 冲突未说明 |
|
|
23
|
+
| 4 | Phase 拆分合理性 | P1 | Phase 之间有无强依赖未声明(B Phase 依赖 A 但未注明)?单 Phase 是否过大(涉及 > 50 行改动建议再拆)?Phase 顺序是否反映依赖关系? | 一个 Phase 改 200 行;Phase 2 实际依赖 Phase 3 结果 |
|
|
24
|
+
| 5 | 接口稳定性 | P1 | 对外接口是否有破坏性变更(公开 API / CLI flag / 配置 schema)?是否需要迁移策略(旧调用方如何过渡)?是否需要 deprecation warning? | 改 cli flag 名字没迁移路径;改 KH schema 没数据迁移脚本 |
|
|
25
|
+
| 6 | 风险评估完整性 | P1 | 方案是否列了 ≥ 2 条风险?技术风险 / 时间风险 / 依赖风险各一句话标注?每条风险是否有 mitigation? | 风险表只写「无明显风险」;列了风险没 mitigation |
|
|
26
|
+
| 7 | 可回滚性 | P1 | 改动失败时能否快速回滚?有无 schema 变更 / 数据迁移这种不可逆操作?是否需要 feature flag? | 改 KH schema 没 rollback 脚本;删旧字段没保留窗口期 |
|
|
27
|
+
|
|
28
|
+
## 强制章节检查(机审清单 — 等价章节可接受)
|
|
29
|
+
|
|
30
|
+
按 `docs/agent-templates/planner.md` 模板核对,**允许等价章节命名**:
|
|
31
|
+
|
|
32
|
+
- [ ] **需求理解**(标题包含「需求」/「理解」/「目标」之一即可,≤ 5 行)
|
|
33
|
+
- [ ] **项目上下文**(标题含「上下文」/「背景」/「现状」之一)
|
|
34
|
+
- [ ] **需求溯源**(仅走 spec 路径强制;标题含「溯源」/「needs」/「acceptance」/「AC」之一)
|
|
35
|
+
- [ ] **实现方案**(标题含「方案」/「实现」/「设计」之一;必须包含 ≥ 3 个子节,分别覆盖:涉及文件、步骤、测试)
|
|
36
|
+
- [ ] **风险与缓解**(标题含「风险」;表格 ≥ 2 行;列名含「缓解」/「mitigation」/「应对」之一)
|
|
37
|
+
- [ ] **ADR-Draft**(标题字面量 `ADR-Draft`,**这一项不放宽**——Context / Options Considered / Decision 三段齐全)
|
|
38
|
+
|
|
39
|
+
**判定原则**:
|
|
40
|
+
- 章节**内容覆盖**才是关键,**不死磕标题字面量**
|
|
41
|
+
- 仅 `ADR-Draft` 标题保持字面量约束(让 `adr-check` 工具能机械 grep)
|
|
42
|
+
- 任一**内容覆盖**缺失 → REQUEST_CHANGES,反馈格式:「方案缺 X 内容(等价章节也接受,但当前章节内未覆盖)」
|
|
43
|
+
|
|
44
|
+
## 输出格式调整
|
|
45
|
+
|
|
46
|
+
`## File-by-File` 改为「方案章节-by-章节」:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
## 章节-by-章节
|
|
50
|
+
|
|
51
|
+
### `## 需求理解`
|
|
52
|
+
- ✓ 复述准确
|
|
53
|
+
|
|
54
|
+
### `## 实现方案 > ### 步骤`
|
|
55
|
+
- ⚠ Step 3 未声明依赖 Step 2 的输出
|
|
56
|
+
- ✗ Step 5 改了 lib/x.ts 但 `### 涉及文件` 未列出
|
|
57
|
+
|
|
58
|
+
### `## ADR-Draft`
|
|
59
|
+
- ✗ Decision 段没有引用 `AC-2`(走 spec 路径必须引用)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
REQUEST_CHANGES 时必须给「方案哪段」具体修改意见(不是「整体觉得不够」笼统话)。
|
|
63
|
+
|
|
64
|
+
## 失败回退
|
|
65
|
+
|
|
66
|
+
- pending 不含 `plans/*.md` → 报「未找到方案文件」,不要硬出审阅
|
|
67
|
+
- 方案 < 20 行(trivial 改动)→ 给 APPROVE 但备注「方案过短,可考虑省略本次 review」
|
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
# feature-dev.yaml — CodeForge 第一个真实工作流
|
|
3
3
|
#
|
|
4
4
|
# 触发:用户输入 /ship
|
|
5
|
-
# 流程:planner → coder → reviewer → apply
|
|
5
|
+
# 流程:planner → 审方案 → coder → reviewer → apply
|
|
6
6
|
# 关键步骤(write/apply)默认要求人工审批(除非 autonomy=full)
|
|
7
7
|
# ──────────────────────────────────────────────────────────────
|
|
8
8
|
|
|
9
9
|
name: feature-dev
|
|
10
|
-
# ADR:workflow-on-decision-branching
|
|
11
|
-
|
|
10
|
+
# ADR:workflow-on-decision-branching + ADR:full-chain-auto-review-gating
|
|
11
|
+
# — 跨 step 反馈循环上限。
|
|
12
|
+
# 原 3 是「reviewer→coder REQUEST_CHANGES」单层循环;
|
|
13
|
+
# 新增「reviewer→planner」方案 review 循环后,整体循环层数增加,
|
|
14
|
+
# max_loops 提升到 5 给两类回退路径足够预算。
|
|
15
|
+
max_loops: 5
|
|
12
16
|
version: 1.0.0
|
|
13
17
|
description: |
|
|
14
18
|
完整的"从需求到落地"流程。串联三个核心 agent:
|
|
15
19
|
1. planner 出方案(自动 smart_search + repo-map)
|
|
16
|
-
2.
|
|
17
|
-
3.
|
|
18
|
-
4.
|
|
20
|
+
2. reviewer 审方案(plan_only,REQUEST_CHANGES 回 planner 重写)
|
|
21
|
+
3. coder 按方案 stage 改动到 .codeforge/pending/
|
|
22
|
+
4. reviewer 审代码 + 跑测试
|
|
23
|
+
5. 用户审批 → apply 落地工作区 → 自动沉淀经验回 KH
|
|
19
24
|
|
|
20
25
|
trigger: /ship
|
|
21
26
|
|
|
@@ -36,6 +41,31 @@ steps:
|
|
|
36
41
|
on_error: skip # KH 不可用不阻塞主流程(C18 同精神)
|
|
37
42
|
on_error: abort
|
|
38
43
|
|
|
44
|
+
# ADR:full-chain-auto-review-gating — 软层 Phase 1,方案 review 门控
|
|
45
|
+
- name: 审方案
|
|
46
|
+
agent: reviewer
|
|
47
|
+
description: 审 planner 输出的方案(plans/*.md)合理性,通过后才派 coder 执行
|
|
48
|
+
inject_context:
|
|
49
|
+
review_target: plan_only
|
|
50
|
+
focus:
|
|
51
|
+
- 需求覆盖
|
|
52
|
+
- 设计合理性
|
|
53
|
+
- 风险评估
|
|
54
|
+
- 涉及文件清单
|
|
55
|
+
actions:
|
|
56
|
+
- tool: pending-changes
|
|
57
|
+
args:
|
|
58
|
+
action: list
|
|
59
|
+
status: pending
|
|
60
|
+
on_error: skip
|
|
61
|
+
on_decision:
|
|
62
|
+
APPROVE: continue
|
|
63
|
+
REQUEST_CHANGES:
|
|
64
|
+
action: goto
|
|
65
|
+
target: 规划 # 回 planner 改方案,max_loops=5 兜底
|
|
66
|
+
BLOCK: abort # 严重设计问题终止 workflow
|
|
67
|
+
on_error: abort
|
|
68
|
+
|
|
39
69
|
- name: 执行
|
|
40
70
|
agent: coder
|
|
41
71
|
description: 严格按方案 stage 改动;测试失败立刻停下汇报
|
|
@@ -65,7 +95,7 @@ steps:
|
|
|
65
95
|
APPROVE: continue # 进入"落地" step
|
|
66
96
|
REQUEST_CHANGES:
|
|
67
97
|
action: goto
|
|
68
|
-
target: 执行 # 回到 coder 实现 step(max_loops=
|
|
98
|
+
target: 执行 # 回到 coder 实现 step(max_loops=5 兜底)
|
|
69
99
|
BLOCK: abort # 严重问题终止 workflow
|
|
70
100
|
on_error: abort
|
|
71
101
|
|