@c-d-cc/reap 0.1.2 → 0.2.1
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.ja.md +321 -0
- package/README.ko.md +11 -5
- package/README.md +11 -5
- package/README.zh-CN.md +321 -0
- package/dist/cli.js +545 -259
- package/dist/templates/commands/reap.help.md +70 -45
- package/dist/templates/commands/reap.status.md +12 -2
- package/dist/templates/commands/reap.update.md +40 -0
- package/dist/templates/hooks/opencode-session-start.js +206 -0
- package/dist/templates/hooks/session-start.sh +45 -8
- package/package.json +2 -2
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="media/logo.png" alt="REAP" width="80" height="80" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">REAP</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Recursive Evolutionary Autonomous Pipeline</strong><br>
|
|
9
|
+
AI与人类通过迭代Generation来进化软件的开发管线。
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
> [English](README.md) | [한국어](README.ko.md) | [日本語](README.ja.md)
|
|
13
|
+
|
|
14
|
+
<table align="center">
|
|
15
|
+
<tr>
|
|
16
|
+
<td align="center"><strong>Genome</strong><br><sub>设计与知识</sub></td>
|
|
17
|
+
<td align="center">→</td>
|
|
18
|
+
<td align="center"><strong>Evolution</strong><br><sub>代际进化</sub></td>
|
|
19
|
+
<td align="center">→</td>
|
|
20
|
+
<td align="center"><strong>Civilization</strong><br><sub>Source Code</sub></td>
|
|
21
|
+
</tr>
|
|
22
|
+
</table>
|
|
23
|
+
|
|
24
|
+
REAP定义应用程序的遗传信息(Genome),为每个世代设定目标进行实现,并将过程中发现的Genome缺陷反馈到后续阶段。随着世代的积累,Genome不断进化,Source Code(Civilization)持续成长。
|
|
25
|
+
|
|
26
|
+
## 为什么选择REAP?
|
|
27
|
+
|
|
28
|
+
在使用AI代理进行开发时,你是否遇到过这些问题?
|
|
29
|
+
|
|
30
|
+
- **上下文丢失** — 每次开启新会话,代理就会忘记项目上下文
|
|
31
|
+
- **分散开发** — 没有明确目标地到处修改代码
|
|
32
|
+
- **设计与代码脱节** — 文档和代码随着时间推移越来越不一致
|
|
33
|
+
- **遗忘的教训** — 辛苦获得的经验教训无法带到下一次工作中
|
|
34
|
+
|
|
35
|
+
REAP通过**基于世代的进化模型**解决这些问题:
|
|
36
|
+
|
|
37
|
+
- 每个世代专注于一个目标(Objective → Completion)
|
|
38
|
+
- AI代理在每次会话开始时自动获取当前上下文(SessionStart Hook)
|
|
39
|
+
- 实现过程中发现的设计问题记录在backlog中,在Completion时反映
|
|
40
|
+
- 回顾(Completion)中提取的教训积累在Genome中
|
|
41
|
+
|
|
42
|
+
## 安装
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# npm
|
|
46
|
+
npm install -g @c-d-cc/reap
|
|
47
|
+
|
|
48
|
+
# 或 Bun
|
|
49
|
+
bun install -g @c-d-cc/reap
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
> **要求**:[Node.js](https://nodejs.org) v18+,[Claude Code](https://claude.ai/claude-code)或[OpenCode](https://opencode.ai) CLI。[Bun](https://bun.sh)是可选的。
|
|
53
|
+
|
|
54
|
+
## 快速开始
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# 1. 初始化项目
|
|
58
|
+
|
|
59
|
+
# 新项目
|
|
60
|
+
reap init my-project
|
|
61
|
+
|
|
62
|
+
# 现有项目
|
|
63
|
+
cd my-project
|
|
64
|
+
reap init
|
|
65
|
+
|
|
66
|
+
# 2. 在Claude Code中运行一个完整的Generation
|
|
67
|
+
claude
|
|
68
|
+
> /reap.evolve "实现用户认证"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`/reap.evolve`会自动运行一个Generation的完整生命周期 — 从Objective到Completion — 与用户交互式进行。它处理Generation的创建、每个阶段的执行以及阶段间的推进。这是日常开发中最常用的核心命令。
|
|
72
|
+
|
|
73
|
+
如果需要更精细的控制,也可以手动推进每个阶段:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
> /reap.start # 开始新的Generation
|
|
77
|
+
> /reap.objective # 定义目标 + 规格
|
|
78
|
+
> /reap.next # 前进到下一阶段
|
|
79
|
+
> /reap.planning # 实施计划
|
|
80
|
+
> /reap.next
|
|
81
|
+
> /reap.implementation # AI+人类协作编写代码
|
|
82
|
+
> ...
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## 生命周期
|
|
86
|
+
|
|
87
|
+
每个Generation经历5个阶段的生命周期:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Objective → Planning → Implementation ⟷ Validation → Completion
|
|
91
|
+
(目标定义) (计划) (实现) (验证) (完成)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
| 阶段 | 内容 | 产出物 |
|
|
95
|
+
|------|------|--------|
|
|
96
|
+
| **Objective** | 定义目标 + 需求 + 验收标准 | `01-objective.md` |
|
|
97
|
+
| **Planning** | 任务分解、实施方案、依赖关系 | `02-planning.md` |
|
|
98
|
+
| **Implementation** | AI+人类协作编写代码 | `03-implementation.md` |
|
|
99
|
+
| **Validation** | 执行测试、检查完成条件 | `04-validation.md` |
|
|
100
|
+
| **Completion** | 回顾 + 应用Genome变更 + 归档 | `05-completion.md` |
|
|
101
|
+
|
|
102
|
+
## 核心概念
|
|
103
|
+
|
|
104
|
+
### Genome
|
|
105
|
+
|
|
106
|
+
应用程序的遗传信息 — 架构原则、业务规则、开发约定、技术约束的集合。
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
.reap/genome/
|
|
110
|
+
├── principles.md # 架构原则/决策
|
|
111
|
+
├── domain/ # 业务规则(按模块)
|
|
112
|
+
├── conventions.md # 开发规则/约定
|
|
113
|
+
└── constraints.md # 技术约束/选择
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Genome不变原则**:当前世代不直接修改Genome。发现问题时记录在backlog中,仅在Completion阶段反映。
|
|
117
|
+
|
|
118
|
+
**Environment不变原则**:当前世代不直接修改Environment。发现外部环境变化时记录在backlog中,在Completion阶段反映。
|
|
119
|
+
|
|
120
|
+
### Backlog
|
|
121
|
+
|
|
122
|
+
`.reap/life/backlog/`中存储所有待反映的项目。每个项目使用markdown + frontmatter格式:
|
|
123
|
+
|
|
124
|
+
- `type: genome-change` — 在Completion时应用到Genome
|
|
125
|
+
- `type: environment-change` — 在Completion时应用到Environment
|
|
126
|
+
- `type: task` — 下一个Objective的目标候选(延期任务、技术债务等)
|
|
127
|
+
|
|
128
|
+
每个项目还有`status`字段:
|
|
129
|
+
|
|
130
|
+
- `status: pending` — 未处理项目(默认)
|
|
131
|
+
- `status: consumed` — 在当前世代中已处理(需要`consumedBy: gen-XXX`)
|
|
132
|
+
|
|
133
|
+
归档时(`/reap.next` from Completion),`consumed`项目移至lineage,`pending`项目结转到下一个世代的backlog。
|
|
134
|
+
|
|
135
|
+
**部分完成是正常的** — 依赖Genome变更的任务标记为`[deferred]`并交接到下一个世代。
|
|
136
|
+
|
|
137
|
+
### 四轴结构
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
.reap/
|
|
141
|
+
├── genome/ # 遗传信息(跨世代进化)
|
|
142
|
+
├── environment/ # 外部环境(API文档、基础设施、业务约束)
|
|
143
|
+
├── life/ # 当前世代的状态和产出物
|
|
144
|
+
└── lineage/ # 已完成世代的归档
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## CLI命令
|
|
148
|
+
|
|
149
|
+
| 命令 | 说明 |
|
|
150
|
+
|------|------|
|
|
151
|
+
| `reap init <name>` | 初始化项目。创建`.reap/`结构 |
|
|
152
|
+
| `reap status` | 查看当前Generation状态 |
|
|
153
|
+
| `reap update` | 将命令/模板/hook同步到最新版本 |
|
|
154
|
+
| `reap fix` | 诊断和修复`.reap/`结构 |
|
|
155
|
+
| `reap help` | 输出CLI命令 + 斜杠命令 + 工作流摘要 |
|
|
156
|
+
|
|
157
|
+
### 选项
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
reap init my-project --mode adoption # 将REAP应用到现有项目
|
|
161
|
+
reap init my-project --preset bun-hono-react # 使用预设初始化Genome
|
|
162
|
+
reap update --dry-run # 预览变更
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## 代理集成
|
|
166
|
+
|
|
167
|
+
REAP通过斜杠命令和会话钩子与AI代理集成。当前支持的代理:**Claude Code**、**OpenCode**。
|
|
168
|
+
|
|
169
|
+
### 斜杠命令
|
|
170
|
+
|
|
171
|
+
斜杠命令安装在`.claude/commands/`中,驱动整个工作流:
|
|
172
|
+
|
|
173
|
+
| 命令 | 说明 |
|
|
174
|
+
|------|------|
|
|
175
|
+
| `/reap.start` | 开始新的Generation |
|
|
176
|
+
| `/reap.objective` | 定义目标 + 需求 |
|
|
177
|
+
| `/reap.planning` | 任务分解 + 实施计划 |
|
|
178
|
+
| `/reap.implementation` | AI+人类协作编写代码 |
|
|
179
|
+
| `/reap.validation` | 执行测试、检查完成条件 |
|
|
180
|
+
| `/reap.completion` | 回顾 + 应用Genome变更 |
|
|
181
|
+
| `/reap.next` | 前进到下一个生命周期阶段 |
|
|
182
|
+
| `/reap.back` | 回到前一个阶段(micro loop) |
|
|
183
|
+
| `/reap.status` | 显示当前Generation状态和项目健康度 |
|
|
184
|
+
| `/reap.sync` | 基于源代码同步Genome |
|
|
185
|
+
| `/reap.help` | 基于当前状态的上下文AI帮助(topic: workflow, commands, strict, genome, backlog) |
|
|
186
|
+
| `/reap.update` | 检查REAP更新并升级到最新版本 |
|
|
187
|
+
| **`/reap.evolve`** | **从头到尾运行一个完整的Generation(推荐)** |
|
|
188
|
+
|
|
189
|
+
### SessionStart Hook
|
|
190
|
+
|
|
191
|
+
每次会话开始时自动运行,向AI代理注入以下内容:
|
|
192
|
+
|
|
193
|
+
- REAP工作流完整指南(Genome、生命周期、四轴结构等)
|
|
194
|
+
- 当前Generation状态(在哪个阶段、下一步做什么)
|
|
195
|
+
- 遵循REAP生命周期的规则
|
|
196
|
+
|
|
197
|
+
这确保即使打开新会话,代理也能立即理解项目上下文。
|
|
198
|
+
|
|
199
|
+
### Strict模式
|
|
200
|
+
|
|
201
|
+
在`.reap/config.yml`中设置`strict: true`可以限制AI代理在REAP工作流之外修改代码:
|
|
202
|
+
|
|
203
|
+
```yaml
|
|
204
|
+
# .reap/config.yml
|
|
205
|
+
strict: true # 默认:false
|
|
206
|
+
language: korean # 产出物和交互的语言
|
|
207
|
+
autoUpdate: true # 会话开始时自动更新
|
|
208
|
+
agents: # 检测到的代理(由reap init/update管理)
|
|
209
|
+
- claude-code
|
|
210
|
+
- opencode
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
| 情境 | 行为 |
|
|
214
|
+
|------|------|
|
|
215
|
+
| 无活跃Generation / 非实现阶段 | 代码修改完全阻止 |
|
|
216
|
+
| Implementation阶段 | 仅允许`02-planning.md`范围内的修改 |
|
|
217
|
+
| 逃生舱 | 用户明确请求"override"或"bypass strict"时允许 |
|
|
218
|
+
|
|
219
|
+
Strict模式默认禁用(`strict: false`)。
|
|
220
|
+
|
|
221
|
+
### REAP Hooks
|
|
222
|
+
|
|
223
|
+
在`.reap/config.yml`中定义hook,在生命周期事件时执行命令或AI提示:
|
|
224
|
+
|
|
225
|
+
```yaml
|
|
226
|
+
hooks:
|
|
227
|
+
onGenerationStart:
|
|
228
|
+
- command: "echo 'Generation started'"
|
|
229
|
+
onStageTransition:
|
|
230
|
+
- command: "echo 'Stage changed'"
|
|
231
|
+
onGenerationComplete:
|
|
232
|
+
- command: "reap update"
|
|
233
|
+
- prompt: "如果本Generation有功能变更,请更新README。"
|
|
234
|
+
onRegression:
|
|
235
|
+
- command: "echo 'Regressed'"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
每个hook使用`command`(shell命令)或`prompt`(AI代理指令)之一。
|
|
239
|
+
|
|
240
|
+
| 事件 | 触发时机 |
|
|
241
|
+
|------|----------|
|
|
242
|
+
| `onGenerationStart` | `/reap.start`创建新Generation后 |
|
|
243
|
+
| `onStageTransition` | `/reap.next`前进到下一阶段后 |
|
|
244
|
+
| `onGenerationComplete` | `/reap.next`归档已完成的Generation后 |
|
|
245
|
+
| `onRegression` | `/reap.back`回到前一阶段后 |
|
|
246
|
+
|
|
247
|
+
Hook由AI代理在项目根目录中执行。
|
|
248
|
+
|
|
249
|
+
## `reap init`后的项目结构
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
my-project/
|
|
253
|
+
├── src/ # Civilization(源代码)
|
|
254
|
+
└── .reap/
|
|
255
|
+
├── config.yml # 项目配置
|
|
256
|
+
├── genome/ # 遗传信息
|
|
257
|
+
│ ├── principles.md
|
|
258
|
+
│ ├── domain/
|
|
259
|
+
│ ├── conventions.md
|
|
260
|
+
│ └── constraints.md
|
|
261
|
+
├── environment/ # 外部环境
|
|
262
|
+
├── life/ # 当前世代
|
|
263
|
+
│ ├── current.yml
|
|
264
|
+
│ └── backlog/
|
|
265
|
+
└── lineage/ # 已完成世代的归档
|
|
266
|
+
|
|
267
|
+
~/.claude/ # 用户级别(reap init时安装)
|
|
268
|
+
├── commands/ # 斜杠命令(/reap.*)
|
|
269
|
+
└── settings.json # SessionStart hook注册
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
## 谱系压缩(Lineage Compression)
|
|
273
|
+
|
|
274
|
+
随着世代的积累,lineage目录会变大。REAP通过自动两级压缩来管理:
|
|
275
|
+
|
|
276
|
+
| 级别 | 输入 | 输出 | 最大行数 | 触发条件 |
|
|
277
|
+
|------|------|------|----------|----------|
|
|
278
|
+
| **Level 1** | 世代文件夹(5个产出物) | `gen-XXX.md` | 40行 | lineage > 10,000行 + 5个以上世代 |
|
|
279
|
+
| **Level 2** | 5个Level 1文件 | `epoch-XXX.md` | 60行 | Level 1达到5个以上 |
|
|
280
|
+
|
|
281
|
+
压缩在世代完成时自动执行。压缩后的文件以目标(Objective)和结果(Completion)为中心保存,中间过程仅保留特别事项。
|
|
282
|
+
|
|
283
|
+
## 进化流程(Evolution Flow)
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
Generation #1 (Genome v1)
|
|
287
|
+
→ Objective: "实现用户认证"
|
|
288
|
+
→ Planning → Implementation
|
|
289
|
+
→ Implementation中发现需要OAuth2 → 在backlog中记录genome-change
|
|
290
|
+
→ Validation (partial)
|
|
291
|
+
→ Completion → 回顾 + genome反映 → Genome v2 → 归档
|
|
292
|
+
|
|
293
|
+
Generation #2 (Genome v2)
|
|
294
|
+
→ Objective: "OAuth2集成 + 权限管理"
|
|
295
|
+
→ 上一世代的延期任务 + 新目标
|
|
296
|
+
→ ...
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## 预设(Presets)
|
|
300
|
+
|
|
301
|
+
使用`reap init --preset`应用适合技术栈的Genome初始配置。
|
|
302
|
+
|
|
303
|
+
| 预设 | 技术栈 |
|
|
304
|
+
|------|--------|
|
|
305
|
+
| `bun-hono-react` | Bun + Hono + React |
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
reap init my-project --preset bun-hono-react
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## 入口模式(Entry Modes)
|
|
312
|
+
|
|
313
|
+
| 模式 | 说明 |
|
|
314
|
+
|------|------|
|
|
315
|
+
| `greenfield` | 从零开始构建新项目(默认) |
|
|
316
|
+
| `migration` | 参考现有系统进行新建 |
|
|
317
|
+
| `adoption` | 将REAP应用到现有代码库 |
|
|
318
|
+
|
|
319
|
+
## 许可证
|
|
320
|
+
|
|
321
|
+
MIT
|