Remove loop-build harness and associated configuration files.
This commit is contained in:
172
loop-build/README.md
Normal file
172
loop-build/README.md
Normal file
@@ -0,0 +1,172 @@
|
||||
# loop-build(Codex CLI harness)
|
||||
|
||||
本目录提供一套受控的长周期执行流程:**PLAN -> APPROVE -> 单步 LOOP -> VERIFY -> RE-APPROVE -> 重复**。
|
||||
|
||||
## 1)一次性初始化
|
||||
|
||||
1. 运行:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/init.sh
|
||||
```
|
||||
|
||||
2. 阅读依赖检查结果;建议在工作树基本干净(clean)时开始任务。
|
||||
3. 保留生成的 `.loop-build/TASKS.md`,作为任务记录模板。
|
||||
|
||||
## 2)创建任务并产出 PLAN
|
||||
|
||||
你需要提供:
|
||||
- `goal`
|
||||
- `constraints`
|
||||
- `repo_context_hint`
|
||||
- `current_state_summary`
|
||||
|
||||
随后在 Codex CLI 会话中使用 `prompts/planner.md`,生成严格 JSON,且 `plan_steps` 需为 3~7 步。
|
||||
|
||||
将结果写入:
|
||||
|
||||
```bash
|
||||
./.loop-build/state/current_task.json
|
||||
```
|
||||
|
||||
推荐包含字段:
|
||||
- `task_id`、`goal`、`constraints`、`plan_steps[]`、`success_criteria`、`risk_notes`、`required_files`、`verify_targets`
|
||||
|
||||
每个 `plan_step` 必须包含:
|
||||
- `step_id`
|
||||
- `action`
|
||||
- `verification`
|
||||
- `rollback`
|
||||
- `risk_level`
|
||||
- `expected_output`
|
||||
|
||||
### Plan 审批(强制)
|
||||
|
||||
未记录审批前,**不要**执行任何 `step`。
|
||||
|
||||
执行:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/run_task.sh APPROVE_PLAN
|
||||
```
|
||||
|
||||
需要修改 plan 时:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/run_task.sh REVISE_PLAN "need narrower scope"
|
||||
```
|
||||
|
||||
取消任务:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/run_task.sh CANCEL_TASK
|
||||
```
|
||||
|
||||
`run_task.sh` 会读取 `current_task.json`,输出 plan 概览(步骤、风险、文件、验证、回滚),并等待一次性人类回复。
|
||||
|
||||
## 3)循环执行(每次只跑 1 步)
|
||||
|
||||
审批通过后:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/run_task.sh step 1
|
||||
```
|
||||
|
||||
执行行为:
|
||||
- 仅执行一个 plan step。
|
||||
- 默认输出统一 diff(`git diff` 风格)。
|
||||
- 仅当该 step 的 plan 指定 verification 时才执行验证。
|
||||
- 向 `.loop-build/state/history.ndjson` 追加一条 NDJSON 记录。
|
||||
- 更新 `.loop-build/state/current_task.json` 的 `completed_steps` / `next_step` / `open_questions`。
|
||||
- 暂停并等待 `APPROVE_NEXT`,再继续下一步。
|
||||
|
||||
### 每步后再次审批
|
||||
|
||||
一步完成后,选择其中一个:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/run_task.sh APPROVE_NEXT
|
||||
./.loop-build/scripts/run_task.sh REVISE_PLAN "scope too large for current diff"
|
||||
./.loop-build/scripts/run_task.sh CANCEL_TASK
|
||||
```
|
||||
|
||||
继续执行:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/run_task.sh step 2
|
||||
```
|
||||
|
||||
## 4)验证流程
|
||||
|
||||
`verify.sh` 支持:
|
||||
|
||||
```bash
|
||||
./.loop-build/scripts/verify.sh unit
|
||||
./.loop-build/scripts/verify.sh lint
|
||||
./.loop-build/scripts/verify.sh typecheck
|
||||
./.loop-build/scripts/verify.sh all
|
||||
```
|
||||
|
||||
手动验证时:
|
||||
|
||||
```bash
|
||||
APPROVE=1 ./.loop-build/scripts/verify.sh unit
|
||||
```
|
||||
|
||||
在 `run_task.sh` 的循环中,验证会经过同一套策略门禁。
|
||||
|
||||
## 5)防“代码倾泻”规则(由 prompt 与脚本共同执行)
|
||||
|
||||
- 默认只输出统一 diff,不输出完整文件。
|
||||
- 每个 step 默认最多改动 **2 个文件**(超过则必须拆分 step)。
|
||||
- 单步失败会自动重试,最多 2 次。
|
||||
- 错误输出只保留前后关键片段,避免噪声。
|
||||
|
||||
## 6)安全策略模型
|
||||
|
||||
策略文件位于 `.loop-build/config/`:
|
||||
|
||||
- `policy.env`:开关配置和显式解锁变量。
|
||||
- `allowlist.txt`:默认只读安全前缀(无需审批)。
|
||||
- `denylist.txt`:默认禁止的动作,需显式解锁。
|
||||
|
||||
`run_task.sh` 执行任何命令前都会经过 `check_policy`(前缀匹配 + 显式解锁校验)。
|
||||
|
||||
默认受限动作示例:`sudo`、`rm -rf`、`curl`、`wget`、`git clone`、`curl|bash` / 下载并执行类写法。
|
||||
|
||||
## 7)示例任务
|
||||
|
||||
### 示例 1:修复一个失败测试
|
||||
1. 填写 goal/constraints。
|
||||
2. 生成 3~7 步 PLAN。
|
||||
3. 执行 `APPROVE_PLAN`。
|
||||
4. `step 1` -> `verify`(如配置)。
|
||||
5. `APPROVE_NEXT` -> `step 2` -> `step ...`。
|
||||
|
||||
### 示例 2:小范围重构(<=2 文件)
|
||||
1. 明确范围仅限文件 A/B。
|
||||
2. 要求 plan step 包含 `risk_level=LOW` 且有回滚说明。
|
||||
3. 每步独立执行,并在每个 diff 后重新审批。
|
||||
|
||||
### 示例 3:新增一个测试用例
|
||||
1. Plan 应包含 fixtures/setup、断言、针对性验证。
|
||||
2. 确保每步最多触及 1 个测试文件 + 1 个源码文件。
|
||||
3. 步骤间重新审批以控制变更边界。
|
||||
|
||||
## 8)文件清单
|
||||
|
||||
- `.loop-build/README.md`
|
||||
- `.loop-build/TASKS.md`
|
||||
- `.loop-build/state/current_task.json`
|
||||
- `.loop-build/state/history.ndjson`
|
||||
- `.loop-build/prompts/planner.md`
|
||||
- `.loop-build/prompts/executor.md`
|
||||
- `.loop-build/prompts/reviewer.md`
|
||||
- `.loop-build/scripts/init.sh`
|
||||
- `.loop-build/scripts/verify.sh`
|
||||
- `.loop-build/scripts/run_task.sh`
|
||||
- `.loop-build/scripts/apply_patch.sh`
|
||||
- `.loop-build/scripts/snapshot.sh`
|
||||
- `.loop-build/config/policy.env`
|
||||
- `.loop-build/config/allowlist.txt`
|
||||
- `.loop-build/config/denylist.txt`
|
||||
Reference in New Issue
Block a user