178 lines
4.3 KiB
Markdown
Executable File
178 lines
4.3 KiB
Markdown
Executable File
# 核心Loop
|
||
|
||
> 相关:[[Loop工程]]、[[超级Loop]]、[[Harness工程]]、[[测试策略金字塔]]
|
||
|
||
## 定义
|
||
|
||
**核心Loop**是AI编程中AI自治运行的开发循环,通过Plan → TDD → 验证的流程,实现半自动有人值守的开发。
|
||
|
||
**核心思想**:Plan阶段人机协作,执行阶段AI自治。
|
||
|
||
## 核心流程
|
||
|
||
```
|
||
开始进入循环
|
||
↓
|
||
[Chat] 进入Plan模式
|
||
↓
|
||
装载需求规格,给出指令进行Plan
|
||
↓
|
||
[Chat] 符合要求,退出Plan模式,开始执行?
|
||
↓ 是
|
||
[模型] 读取Plan
|
||
↓
|
||
创建API测试,实现代码
|
||
↓
|
||
[模型] 运行测试/浏览器调试,是否成功?
|
||
↓ 否 → 重复多次/白天持续很久/夜间
|
||
↓ 是
|
||
[模型] 退出循环
|
||
↓
|
||
(给予ByPass权限)
|
||
```
|
||
|
||
## 三个阶段
|
||
|
||
### 阶段1:Plan(规划)
|
||
- **输入**:需求规格、技术规格
|
||
- **输出**:实现方案、任务列表
|
||
- **关键**:关闭所有开放性问题
|
||
- **人工介入**:确认Plan是否合理
|
||
|
||
**Plan模版**:
|
||
```markdown
|
||
# Plan: 实现用户注册功能
|
||
|
||
## 目标
|
||
实现用户注册API,支持邮箱验证
|
||
|
||
## 任务列表
|
||
- [ ] 1. 创建数据库表users
|
||
- [ ] 2. 实现POST /api/v1/users API
|
||
- [ ] 3. 实现邮箱验证逻辑
|
||
- [ ] 4. 编写单元测试
|
||
- [ ] 5. 编写API测试
|
||
|
||
## 实现方案
|
||
1. 使用Flyway创建users表
|
||
2. Controller接收CreateUserCommand
|
||
3. AppService调用UserRepository保存
|
||
4. 发送验证邮件
|
||
|
||
## 验收标准
|
||
- 所有单元测试通过
|
||
- 所有API测试通过
|
||
- 代码符合阿里巴巴Java开发手册
|
||
|
||
## 状态
|
||
- 开始时间:2026-06-20 10:00
|
||
- 预计完成:2026-06-20 12:00
|
||
```
|
||
|
||
### 阶段2:执行(Implementation)
|
||
- **输入**:Plan
|
||
- **输出**:API测试、实现代码
|
||
- **关键**:按照Plan逐步实现
|
||
- **AI自治**:无需人工介入
|
||
|
||
**步骤**:
|
||
1. 编写API测试
|
||
2. 运行测试(断言失败)
|
||
3. 编写实现代码
|
||
4. 运行测试(通过)
|
||
|
||
### 阶段3:验证(Verification)
|
||
- **输入**:API测试、实现代码
|
||
- **输出**:测试结果、修复建议
|
||
- **关键**:所有测试通过
|
||
- **AI自治**:自动运行测试,自动修复
|
||
|
||
## Loop规则
|
||
|
||
### 1. Plan等待确认
|
||
在docs/plans下根据模版创建Plan,等待人工确认。
|
||
|
||
### 2. 编写API测试
|
||
根据Plan实现API测试,运行成功并断言失败。
|
||
|
||
```java
|
||
@Test
|
||
void testCreateUser() {
|
||
CreateUserRequest request = new CreateUserRequest();
|
||
request.setUsername("testuser");
|
||
request.setEmail("test@example.com");
|
||
request.setPassword("Password123");
|
||
|
||
Response<UserResponse> response = userClient.create(request);
|
||
|
||
assertEquals(201, response.getCode());
|
||
assertNotNull(response.getData().getId());
|
||
}
|
||
```
|
||
|
||
### 3. 编写实现
|
||
编写单元测试 + 实现代码,通过编译。
|
||
|
||
```java
|
||
@PostMapping("/users")
|
||
public Response<UserResponse> createUser(@RequestBody CreateUserRequest request) {
|
||
return Response.success(userAppService.create(request));
|
||
}
|
||
```
|
||
|
||
### 4. 运行API测试
|
||
运行测试,并修复失败的测试和其他错误。
|
||
|
||
```bash
|
||
mvn test -Dtest=UserApiTest
|
||
```
|
||
|
||
## 退出条件
|
||
|
||
1. 所有API测试通过
|
||
2. 所有单元测试通过
|
||
3. 代码符合规范(Lint通过)
|
||
4. 没有编译错误
|
||
|
||
## ByPass权限
|
||
|
||
AI在某些情况下可以跳过某些步骤:
|
||
- 测试环境不可用
|
||
- 第三方服务不可用
|
||
- 紧急修复
|
||
|
||
在AGENTS.md中定义ByPass规则。
|
||
|
||
## 适用场景
|
||
|
||
- **后端开发**:API开发、业务逻辑实现
|
||
- **中等复杂度**:需要TDD驱动的开发
|
||
- **团队协作**:需要统一开发流程
|
||
|
||
## 优势
|
||
|
||
- **质量可控**:TDD驱动,代码质量有保障
|
||
- **可追溯**:Plan记录了实现过程
|
||
- **AI自治**:执行阶段无需人工介入
|
||
- **持续迭代**:可以快速修复问题
|
||
|
||
## 挑战
|
||
|
||
- **Plan质量**:Plan阶段需要充分沟通
|
||
- **测试覆盖**:需要编写全面的测试
|
||
- **运行时间**:Loop可能需要较长时间
|
||
|
||
## 最佳实践
|
||
|
||
1. **Plan阶段充分沟通**:关闭所有开放性问题
|
||
2. **TDD驱动**:先写测试再写代码
|
||
3. **记录状态**:方便复盘和优化
|
||
4. **ByPass控制**:紧急情况可以跳过步骤
|
||
|
||
## 相关概念
|
||
|
||
- [[Loop工程]]:核心Loop是Loop工程的具体实现
|
||
- [[超级Loop]]:核心Loop的扩展,增加E2E测试
|
||
- [[Harness工程]]:核心Loop是Harness的组成部分
|
||
- [[测试策略金字塔]]:核心Loop使用的测试策略
|