6aspec 3.0.0-dev.16 → 3.0.0-dev.19
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.
|
@@ -40,12 +40,29 @@
|
|
|
40
40
|
- 各里程碑完成度(M0~Mn:已完成/总数)
|
|
41
41
|
- 下一个可执行任务
|
|
42
42
|
|
|
43
|
+
**建立任务列表(外部状态锚点)**:
|
|
44
|
+
|
|
45
|
+
为每个待执行的 TASK,依次调用 `TaskCreate` 建立两个子任务,顺序为:
|
|
46
|
+
```
|
|
47
|
+
TASK-<序号>: 实现
|
|
48
|
+
TASK-<序号>: Compliance Review
|
|
49
|
+
```
|
|
50
|
+
例如有 TASK-001、TASK-002 待执行,则建立:
|
|
51
|
+
- `TASK-001: 实现`
|
|
52
|
+
- `TASK-001: Compliance Review`
|
|
53
|
+
- `TASK-002: 实现`
|
|
54
|
+
- `TASK-002: Compliance Review`
|
|
55
|
+
|
|
56
|
+
> 目的:任务列表作为外部状态锚点,防止 implementer subagent 返回后因"完成感"跳过 compliance review 步骤。
|
|
57
|
+
|
|
43
58
|
4. **执行任务(循环直到完成或阻塞)**
|
|
44
59
|
|
|
45
60
|
对每个待完成的任务,按以下流程执行:
|
|
46
61
|
|
|
47
62
|
**a. 派发 implementer agent**
|
|
48
63
|
|
|
64
|
+
调用前:将对应的 `TASK-<序号>: 实现` 任务标记为 `in_progress`。
|
|
65
|
+
|
|
49
66
|
调用 `6aspec-brown-implementer` agent,传入以下内容:
|
|
50
67
|
|
|
51
68
|
```
|
|
@@ -61,14 +78,16 @@
|
|
|
61
78
|
```
|
|
62
79
|
|
|
63
80
|
**处理 agent 状态**:
|
|
64
|
-
- `DONE
|
|
65
|
-
- `DONE_WITH_CONCERNS
|
|
81
|
+
- `DONE`:将 `TASK-<序号>: 实现` 标记为 `completed`,进入 spec compliance review
|
|
82
|
+
- `DONE_WITH_CONCERNS`:读取关注点,判断是否影响正确性;若影响则先处理,否则将 `TASK-<序号>: 实现` 标记为 `completed`,进入 review
|
|
66
83
|
- `NEEDS_CONTEXT`:补充缺失信息后重新调用
|
|
67
84
|
- `BLOCKED`:暂停,向用户报告阻塞原因和选项
|
|
68
85
|
- **agent 开始前提问**:若 agent 在实现前提出疑问,主 agent 回答后重新调用(携带原有上下文 + 补充答案)
|
|
69
86
|
|
|
70
87
|
**b. 派发 spec compliance reviewer agent**
|
|
71
88
|
|
|
89
|
+
调用前:将对应的 `TASK-<序号>: Compliance Review` 任务标记为 `in_progress`。
|
|
90
|
+
|
|
72
91
|
调用 `6aspec-brown-spec-compliance-reviewer` agent,传入以下内容:
|
|
73
92
|
|
|
74
93
|
```
|
|
@@ -84,7 +103,7 @@
|
|
|
84
103
|
```
|
|
85
104
|
|
|
86
105
|
**处理 review 结果**:
|
|
87
|
-
- `✅
|
|
106
|
+
- `✅ 通过`:将 `TASK-<序号>: Compliance Review` 标记为 `completed`,标记任务完成,继续下一个任务
|
|
88
107
|
- `❌ 有问题`:重新调用 6aspec-brown-implementer agent 修复,传入**相同的 `skipTest:true|false` 行** + 原有上下文 + reviewer 的完整反馈(具体缺失/多余/偏差及文件路径);修复后再次调用 reviewer;**最多循环 3 次**
|
|
89
108
|
- **超过 3 次仍未通过**:暂停,向用户报告每轮的问题和修复情况,让用户决定如何处理
|
|
90
109
|
|
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
- 若本任务引入/修改**可执行业务逻辑**(如 Service/Domain/校验/计算/流程编排)或修复缺陷:在项目有测试框架时补充/修改对应单元测试,覆盖任务关联的 AC/Scenario;若无测试框架则说明验证方式与回归点
|
|
43
43
|
- 若本任务主要为纯数据结构、**SQL/DDL/迁移脚本**、或**薄持久化**(见上):默认不强制单元测试;改为提供可审查的验证清单,并在报告中标注风险
|
|
44
44
|
- **禁止**:把「本任务动到了 Repository/Mapper」**单独**当成必须写单测的理由;是否写单测取决于是否出现**非平凡逻辑**(分支、规则、补偿、复杂 SQL 行为),以及 TASK/specs 是否点名要自动化测试
|
|
45
|
+
|
|
46
|
+
**🚨 测试红线(绝对禁止)**:
|
|
47
|
+
- **禁止在测试代码中重新实现被测逻辑**:不得在测试方法里自己写 stream filter、循环、条件判断等来"模拟"业务行为后再断言结果——这类测试无论业务代码是否正确都会通过,没有任何验证价值。
|
|
48
|
+
- **测试必须调用被测类的真实方法**:通过断言其返回值,或通过 mock verify 断言其对依赖的调用行为来验证。合法结构示例:`given(mock).thenReturn(x)` → 调用 `service.realMethod(...)` → `assertEquals(expected, result)` 或 `verify(mock).someMethod(...)`。
|
|
45
49
|
7. 完成后自我审查,报告结果
|
|
46
50
|
|
|
47
51
|
## 自我审查
|
|
@@ -54,7 +58,10 @@
|
|
|
54
58
|
|
|
55
59
|
**一致性**:是否遵循了现有代码风格、`code.md` 与 design.md 的技术决策?
|
|
56
60
|
|
|
57
|
-
**分层**:若本次改动涉及 Controller/API
|
|
61
|
+
**分层**:若本次改动涉及 Controller/API、事件订阅、消息消费或调度入口,执行以下客观计数检查(有 TASK/design 明确例外除外):
|
|
62
|
+
- 数一数入口类核心方法中对**外部系统**(Gateway、Repository、其他 Service)的调用次数:**超过 1 次即违规**,说明编排逻辑未下沉到 Service。
|
|
63
|
+
- 检查入口类是否存在**私有业务方法**(含 stream 聚合、多分支判断、远程查询封装等):有则违规,这些逻辑应在 Service 中实现。
|
|
64
|
+
- 合法的入口方法结构:解析入参 → 日志 → 调一次 Service → 返回结果。不符合此结构须重构后再报告。
|
|
58
65
|
|
|
59
66
|
**测试/验证**:
|
|
60
67
|
- 若 **`skipTest=true`**:是否已说明验证方式、回归点与残余风险?若 TASK/specs 强制要求测试而与参数冲突,是否已上报或已按主 agent 取舍执行?
|
|
@@ -35,15 +35,26 @@ git diff {BASE_SHA}..{HEAD_SHA}
|
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
3) **否则,如果未提供 SHA 但 git 可用**:
|
|
38
|
+
|
|
39
|
+
收集工作区所有未提交的变更(不包含已 commit 的代码):
|
|
40
|
+
|
|
38
41
|
```bash
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
# 已追踪文件的修改(未 add)
|
|
43
|
+
git diff
|
|
44
|
+
|
|
45
|
+
# 已 add 但未 commit 的变更
|
|
46
|
+
git diff --cached
|
|
47
|
+
|
|
48
|
+
# 未追踪的新文件(未 add),转成 unified diff 格式
|
|
49
|
+
git ls-files --others --exclude-standard | while read f; do
|
|
50
|
+
diff -u /dev/null "$f" || true
|
|
51
|
+
done
|
|
43
52
|
```
|
|
44
53
|
|
|
45
|
-
|
|
46
|
-
|
|
54
|
+
将以上三部分合并为完整 diff 进行审查。如果三部分均为空,提示用户"当前工作区没有任何未提交的变更"。
|
|
55
|
+
|
|
56
|
+
4) **否则(git 不可用)**:
|
|
57
|
+
- 提示用户"当前目录不是 git 仓库,请通过 --diff 参数提供 unified diff 文件"。
|
|
47
58
|
|
|
48
59
|
### 2. 读取需求(如果提供了文件路径)
|
|
49
60
|
|