openalex-mcp-server 1.0.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/.claude/README.md +680 -0
- package/.claude/commands/prd.md +138 -0
- package/.claude/commands/ralph-yolo.md +346 -0
- package/.claude/commands/ralph.md +226 -0
- package/.claude/ralph-config.json +17 -0
- package/.claude/scripts/prompt.md +108 -0
- package/.claude/scripts/ralph.sh +127 -0
- package/.claude/skills/prd.md +270 -0
- package/.claude/skills/ralph-yolo.md +613 -0
- package/.claude/skills/ralph.md +315 -0
- package/.claude/templates/prd.json.example +64 -0
- package/.env.example +8 -0
- package/.github/workflows/npm-publish.yml +48 -0
- package/README.md +525 -0
- package/config/mcp-config.json +77 -0
- package/docs/PRD.md +897 -0
- package/docs/api-document.md +973 -0
- package/docs/document-mcp.txt +1 -0
- package/package.json +49 -0
- package/prd-progress.txt +66 -0
- package/src/cache-manager.js +204 -0
- package/src/cli.js +47 -0
- package/src/fulltext-downloader.js +333 -0
- package/src/index.js +603 -0
- package/src/json-optimizer.js +153 -0
- package/src/openalex-client.js +305 -0
- package/src/types/pdf-parse.d.ts +13 -0
- package/src/utils.js +90 -0
- package/tests/cli.test.js +31 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,680 @@
|
|
|
1
|
+
# Ralph Slash Commands for Claude Code
|
|
2
|
+
|
|
3
|
+
可移植的 Ralph 自主 Agent 循环系统配置。
|
|
4
|
+
|
|
5
|
+
Ralph 是一个自主 AI Agent 循环系统,提供 **两种执行模式** 完成项目开发:
|
|
6
|
+
1. **Classic Ralph** - 通过重复运行 Amp 来完成 PRD(需要 Amp CLI)
|
|
7
|
+
2. **Ralph YOLO** - 直接使用 Claude Code 子 Agent 完成(无需 Amp!)✨
|
|
8
|
+
|
|
9
|
+
内存通过 git 历史、`prd-progress.txt` 和 `prd.json` 持久化。
|
|
10
|
+
|
|
11
|
+
## 目录
|
|
12
|
+
|
|
13
|
+
- [两种执行模式对比](#两种执行模式对比)
|
|
14
|
+
- [安装](#安装)
|
|
15
|
+
- [前置要求](#前置要求)
|
|
16
|
+
- [快速开始](#快速开始)
|
|
17
|
+
- [重要配置](#重要配置)
|
|
18
|
+
- [使用方法](#使用方法)
|
|
19
|
+
- [故障排除](#故障排除)
|
|
20
|
+
- [最佳实践](#最佳实践)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 两种执行模式对比
|
|
25
|
+
|
|
26
|
+
### Classic Ralph (原版)
|
|
27
|
+
|
|
28
|
+
**优点:**
|
|
29
|
+
- 成熟稳定,经过验证
|
|
30
|
+
- 完全独立的 Amp 实例
|
|
31
|
+
- 适合大规模项目
|
|
32
|
+
|
|
33
|
+
**缺点:**
|
|
34
|
+
- ❌ 需要 Amp CLI
|
|
35
|
+
- ❌ 需要 jq 工具
|
|
36
|
+
- ❌ 需要配置 bash 脚本
|
|
37
|
+
- ❌ 外部循环管理
|
|
38
|
+
|
|
39
|
+
**使用场景:**
|
|
40
|
+
- 已有 Amp 环境的专业用户
|
|
41
|
+
- 需要完全隔离的开发环境
|
|
42
|
+
|
|
43
|
+
### Ralph YOLO (新版推荐!)
|
|
44
|
+
|
|
45
|
+
**优点:**
|
|
46
|
+
- ✅ 无需 Amp CLI!只用 Claude Code
|
|
47
|
+
- ✅ 无需 jq 和其他依赖
|
|
48
|
+
- ✅ 主会话保持完整上下文
|
|
49
|
+
- ✅ 实时进度跟踪和监控
|
|
50
|
+
- ✅ 可以随时中断和恢复
|
|
51
|
+
- ✅ 更容易调试和干预
|
|
52
|
+
|
|
53
|
+
**缺点:**
|
|
54
|
+
- 新功能,可能存在未知问题
|
|
55
|
+
|
|
56
|
+
**使用场景:**
|
|
57
|
+
- 快速原型开发
|
|
58
|
+
- 不想安装 Amp 的用户
|
|
59
|
+
- 需要实时监控开发进度
|
|
60
|
+
- 免费版 Claude Code 用户(无 Amp)ノ(✿゚▽゚)ノ
|
|
61
|
+
|
|
62
|
+
**推荐:** 大多数用户应该优先尝试 **Ralph YOLO**!
|
|
63
|
+
|
|
64
|
+
## 安装
|
|
65
|
+
|
|
66
|
+
将此 `.claude/` 目录复制到你的项目根目录:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# 方法 1: 直接复制
|
|
70
|
+
cp -r /path/to/ralph/.claude /your/project/.claude
|
|
71
|
+
|
|
72
|
+
# 方法 2: 使用符号链接(开发 Ralph 时)
|
|
73
|
+
ln -s /path/to/ralph/.claude /your/project/.claude
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
验证安装:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# 检查目录结构
|
|
80
|
+
ls -la .claude/
|
|
81
|
+
|
|
82
|
+
# 检查脚本权限
|
|
83
|
+
## 赋权可执行
|
|
84
|
+
chmod +x .claude/scripts/ralph.sh
|
|
85
|
+
# 查看当前权限
|
|
86
|
+
ls -la .claude/scripts/ralph.sh
|
|
87
|
+
|
|
88
|
+
# 应该显示类似这样的输出:
|
|
89
|
+
# -rwxr-xr-x 1 user group 5119 Jan 16 13:49 ralph.sh
|
|
90
|
+
# ^^ ^^^ ^^^
|
|
91
|
+
# || | || |
|
|
92
|
+
# || | || +-- 其人权限 (read/execute)
|
|
93
|
+
# || | +----- 组权限 (read/execute)
|
|
94
|
+
# || +------- 所有者权限 (read/write/execute)
|
|
95
|
+
# |+--------- 普通文件
|
|
96
|
+
# +---------- 可执行?
|
|
97
|
+
|
|
98
|
+
# 移除可执行权限
|
|
99
|
+
chmod -x .claude/scripts/ralph.sh
|
|
100
|
+
|
|
101
|
+
# 给所有用户添加可执行权限
|
|
102
|
+
chmod a+x .claude/scripts/ralph.sh
|
|
103
|
+
# a = all(所有用户)
|
|
104
|
+
|
|
105
|
+
常用的数字方式 (๑•̀ㅂ•́)✧:
|
|
106
|
+
|
|
107
|
+
# 755 = rwxr-xr-x(所有者可读写执行,其他人可读执行)
|
|
108
|
+
chmod 755 .claude/scripts/ralph.sh
|
|
109
|
+
|
|
110
|
+
# 744 = rwxr--r--(所有者可读写执行,其他人只读)
|
|
111
|
+
chmod 744 .claude/scripts/ralph.sh```
|
|
112
|
+
|
|
113
|
+
## 前置要求
|
|
114
|
+
|
|
115
|
+
### 1. Amp CLI
|
|
116
|
+
|
|
117
|
+
[Amp CLI](https://ampcode.com) 必须已安装并认证:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# 检查安装
|
|
121
|
+
which amp
|
|
122
|
+
amp --version
|
|
123
|
+
|
|
124
|
+
# 如果未安装,访问 https://ampcode.com 安装
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 2. jq 工具
|
|
128
|
+
|
|
129
|
+
`jq` 是处理 JSON 的命令行工具:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# 检查安装
|
|
133
|
+
which jq
|
|
134
|
+
|
|
135
|
+
# macOS
|
|
136
|
+
brew install jq
|
|
137
|
+
|
|
138
|
+
# Linux/Ubuntu
|
|
139
|
+
sudo apt-get install jq
|
|
140
|
+
|
|
141
|
+
# Linux/CentOS
|
|
142
|
+
sudo yum install jq
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 3. Git 仓库
|
|
146
|
+
|
|
147
|
+
确保你的项目是一个 Git 仓库:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# 初始化仓库(如果还没有)
|
|
151
|
+
git init
|
|
152
|
+
|
|
153
|
+
# 检查状态
|
|
154
|
+
git status
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 快速开始
|
|
158
|
+
|
|
159
|
+
### (推荐)直接一次性完成对话
|
|
160
|
+
#### 新开一个对话
|
|
161
|
+
|
|
162
|
+
/PRD 请遍历项目后生成可用于/ralph 的 PRD 文件,用于实现以下目标:XXXX;,并启动 /ralph,在XXX个循环内完成开发任务。
|
|
163
|
+
|
|
164
|
+
### 步骤 1: 生成 PRD
|
|
165
|
+
|
|
166
|
+
使用 Claude Code 的 `/prd` 命令:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
/prd "添加用户认证功能"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
PRD skill 会:
|
|
173
|
+
- 询问 3-5 个澄清问题(带选项)
|
|
174
|
+
- 生成结构化的 PRD 文档
|
|
175
|
+
- 保存到 `tasks/prd-[feature-name].md`
|
|
176
|
+
|
|
177
|
+
### 步骤 2: 运行 Ralph
|
|
178
|
+
|
|
179
|
+
使用 `/ralph` 命令:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
/ralph tasks/prd-user-auth.md
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Ralph skill 会:
|
|
186
|
+
- 将 PRD 转换为 `prd.json`
|
|
187
|
+
- 创建功能分支
|
|
188
|
+
- 启动自主循环实现每个用户故事
|
|
189
|
+
|
|
190
|
+
### 步骤 3: 监控进度
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# 查看已完成的用户故事
|
|
194
|
+
cat prd.json | jq '.userStories[] | {id, title, passes}'
|
|
195
|
+
|
|
196
|
+
# 查看进度日志
|
|
197
|
+
cat prd-progress.txt
|
|
198
|
+
|
|
199
|
+
# 查看 git 提交历史
|
|
200
|
+
git log --oneline -10
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## 重要配置
|
|
204
|
+
|
|
205
|
+
### ⚠️ 脚本执行权限(必须)
|
|
206
|
+
|
|
207
|
+
ralph.sh 脚本必须有可执行权限:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
# 检查权限
|
|
211
|
+
ls -la .claude/scripts/ralph.sh
|
|
212
|
+
|
|
213
|
+
# 如果没有执行权限,添加权限
|
|
214
|
+
chmod +x .claude/scripts/ralph.sh
|
|
215
|
+
|
|
216
|
+
# 验证(应该显示 -rwxr-xr-x)
|
|
217
|
+
ls -la .claude/scripts/ralph.sh
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**如果脚本没有执行权限,Ralph 将无法运行!**
|
|
221
|
+
|
|
222
|
+
### 🔄 Amp 自动切换(推荐)
|
|
223
|
+
|
|
224
|
+
当任务超过单个上下文窗口时,启用 Amp 的自动切换功能:
|
|
225
|
+
|
|
226
|
+
编辑 `~/.config/amp/settings.json`:
|
|
227
|
+
|
|
228
|
+
```json
|
|
229
|
+
{
|
|
230
|
+
"amp.experimental.autoHandoff": { "context": 90 }
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**这会让 Ralph 在上下文使用率达到 90% 时自动切换到新实例**,实现:
|
|
235
|
+
- 处理更大的任务
|
|
236
|
+
- 避免上下文溢出
|
|
237
|
+
- 自动保持上下文连贯性
|
|
238
|
+
|
|
239
|
+
如果没有启用此功能,大型任务可能会:
|
|
240
|
+
- 上下文填满后失败
|
|
241
|
+
- 生成不完整的代码
|
|
242
|
+
- 迭代效率降低
|
|
243
|
+
|
|
244
|
+
### 🔁 循环次数配置
|
|
245
|
+
|
|
246
|
+
默认最大迭代次数是 **10 次**。
|
|
247
|
+
|
|
248
|
+
修改循环次数:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# 方法 1: 命令行参数(推荐)
|
|
252
|
+
bash .claude/scripts/ralph.sh 20
|
|
253
|
+
|
|
254
|
+
# 方法 2: 编辑配置文件
|
|
255
|
+
# 编辑 .claude/ralph-config.json
|
|
256
|
+
{
|
|
257
|
+
"ralph": {
|
|
258
|
+
"maxIterations": 20
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**如何选择循环次数:**
|
|
264
|
+
- 小型功能(3-5 个故事):10 次
|
|
265
|
+
- 中型功能(6-15 个故事):20 次
|
|
266
|
+
- 大型功能(16+ 个故事):30-50 次
|
|
267
|
+
|
|
268
|
+
**注意:** 如果循环次数用完但任务未完成,Ralph 会保存状态并退出。你可以直接再次运行,它会从停止处继续。
|
|
269
|
+
|
|
270
|
+
### 📁 其他配置选项
|
|
271
|
+
|
|
272
|
+
编辑 `.claude/ralph-config.json`:
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"prd": {
|
|
277
|
+
"outputDir": "tasks", // PRD 输出目录
|
|
278
|
+
"filenamePattern": "prd-{slug}.md" // PRD 文件名模式
|
|
279
|
+
},
|
|
280
|
+
"ralph": {
|
|
281
|
+
"maxIterations": 10, // 最大迭代次数
|
|
282
|
+
"branchPrefix": "ralph/", // 分支前缀
|
|
283
|
+
"archiveDir": ".claude/archive", // 归档目录
|
|
284
|
+
"progressFile": "prd-progress.txt",// 进度文件名
|
|
285
|
+
"prdFile": "prd.json" // PRD 文件名
|
|
286
|
+
},
|
|
287
|
+
"amp": {
|
|
288
|
+
"autoHandoffContext": 90 // 自动切换阈值(百分比)
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## 使用方法
|
|
294
|
+
|
|
295
|
+
### `/prd` - 生成 PRD
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
/prd "功能描述"
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**示例:**
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
/prd "添加任务优先级功能"
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
PRD skill 会询问澄清问题,你可以用选项快速回答:
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
1. 主要目标是什么?
|
|
311
|
+
A. 改善用户体验
|
|
312
|
+
B. 提高用户留存率
|
|
313
|
+
C. 减少支持工作量
|
|
314
|
+
|
|
315
|
+
你的回答:1A
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### `/ralph` - 运行 Ralph
|
|
319
|
+
|
|
320
|
+
```
|
|
321
|
+
/ralph [路径]
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
**用法:**
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
# 从 PRD 创建并运行
|
|
328
|
+
/ralph tasks/prd-my-feature.md
|
|
329
|
+
|
|
330
|
+
# 从现有 prd.json 运行
|
|
331
|
+
/ralph prd.json
|
|
332
|
+
|
|
333
|
+
# 直接运行(查找 prd.json)
|
|
334
|
+
/ralph
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### 直接运行脚本
|
|
338
|
+
|
|
339
|
+
你也可以直接运行脚本,不通过 Claude Code:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
# 使用默认循环次数(10次)
|
|
343
|
+
bash .claude/scripts/ralph.sh
|
|
344
|
+
|
|
345
|
+
# 指定循环次数
|
|
346
|
+
bash .claude/scripts/ralph.sh 20
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### 监控命令
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
# 查看用户故事完成状态
|
|
353
|
+
cat prd.json | jq '.userStories[] | {id, title, passes}'
|
|
354
|
+
|
|
355
|
+
# 只看未完成的故事
|
|
356
|
+
cat prd.json | jq '.userStories[] | select(.passes == false) | {id, title, priority}'
|
|
357
|
+
|
|
358
|
+
# 查看进度日志
|
|
359
|
+
cat prd-progress.txt
|
|
360
|
+
|
|
361
|
+
# 查看 git 提交历史
|
|
362
|
+
git log --oneline -10
|
|
363
|
+
|
|
364
|
+
# 查看当前分支
|
|
365
|
+
git branch --show-current
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## 故障排除
|
|
369
|
+
|
|
370
|
+
### 问题 1: 脚本没有执行权限
|
|
371
|
+
|
|
372
|
+
**症状:**
|
|
373
|
+
```
|
|
374
|
+
bash: .claude/scripts/ralph.sh: Permission denied
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**解决:**
|
|
378
|
+
```bash
|
|
379
|
+
chmod +x .claude/scripts/ralph.sh
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### 问题 2: Amp CLI 未安装
|
|
383
|
+
|
|
384
|
+
**症状:**
|
|
385
|
+
```
|
|
386
|
+
amp: command not found
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**解决:**
|
|
390
|
+
访问 https://ampcode.com 安装 Amp CLI。
|
|
391
|
+
|
|
392
|
+
### 问题 3: jq 未安装
|
|
393
|
+
|
|
394
|
+
**症状:**
|
|
395
|
+
```
|
|
396
|
+
jq: command not found
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**解决:**
|
|
400
|
+
```bash
|
|
401
|
+
# macOS
|
|
402
|
+
brew install jq
|
|
403
|
+
|
|
404
|
+
# Linux/Ubuntu
|
|
405
|
+
sudo apt-get install jq
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### 问题 4: Git 工作区不干净
|
|
409
|
+
|
|
410
|
+
**症状:**
|
|
411
|
+
Ralph 拒绝启动,提示有未提交的更改。
|
|
412
|
+
|
|
413
|
+
**解决:**
|
|
414
|
+
```bash
|
|
415
|
+
# 提交更改
|
|
416
|
+
git add .
|
|
417
|
+
git commit -m "WIP"
|
|
418
|
+
|
|
419
|
+
# 或暂存更改
|
|
420
|
+
git stash
|
|
421
|
+
|
|
422
|
+
# 或清理更改
|
|
423
|
+
git checkout .
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### 问题 5: prd.json 不存在
|
|
427
|
+
|
|
428
|
+
**症状:**
|
|
429
|
+
```
|
|
430
|
+
Error: prd.json not found
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
**解决:**
|
|
434
|
+
```
|
|
435
|
+
/ralph tasks/prd-your-feature.md
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
先指定 PRD 文件让 Ralph 生成 prd.json。
|
|
439
|
+
|
|
440
|
+
### 问题 6: Amp 上下文填满
|
|
441
|
+
|
|
442
|
+
**症状:**
|
|
443
|
+
- Amp 运行缓慢
|
|
444
|
+
- 生成不完整的代码
|
|
445
|
+
- 迭代失败
|
|
446
|
+
|
|
447
|
+
**解决:**
|
|
448
|
+
1. 启用自动切换(见上文配置)
|
|
449
|
+
2. 拆分大型用户故事
|
|
450
|
+
3. 减少每个故事的代码量
|
|
451
|
+
|
|
452
|
+
### 问题 7: Ralph 中途停止
|
|
453
|
+
|
|
454
|
+
**症状:**
|
|
455
|
+
Ralph 在某个迭代后停止,但任务未完成。
|
|
456
|
+
|
|
457
|
+
**解决:**
|
|
458
|
+
```bash
|
|
459
|
+
# 直接再次运行,会从停止处继续
|
|
460
|
+
bash .claude/scripts/ralph.sh
|
|
461
|
+
|
|
462
|
+
# 查看最后完成的故事
|
|
463
|
+
cat prd-progress.txt | tail -20
|
|
464
|
+
|
|
465
|
+
# 检查是否有失败的提交
|
|
466
|
+
git log --oneline -5
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### 问题 8: 故事质量检查失败
|
|
470
|
+
|
|
471
|
+
**症状:**
|
|
472
|
+
Ralph 停止运行,但有未提交的代码。
|
|
473
|
+
|
|
474
|
+
**解决:**
|
|
475
|
+
```bash
|
|
476
|
+
# 查看错误
|
|
477
|
+
cat prd-progress.txt | tail -20
|
|
478
|
+
|
|
479
|
+
# 检查代码
|
|
480
|
+
git status
|
|
481
|
+
git diff
|
|
482
|
+
|
|
483
|
+
# 手动修复后重新运行
|
|
484
|
+
bash .claude/scripts/ralph.sh
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
## 最佳实践
|
|
488
|
+
|
|
489
|
+
### 1. 用户故事大小
|
|
490
|
+
|
|
491
|
+
**每个故事必须在一个迭代内完成。**
|
|
492
|
+
|
|
493
|
+
✅ **正确大小:**
|
|
494
|
+
- 添加数据库列和迁移
|
|
495
|
+
- 向现有页面添加 UI 组件
|
|
496
|
+
- 更新服务器操作
|
|
497
|
+
- 添加过滤下拉菜单
|
|
498
|
+
|
|
499
|
+
❌ **太大(必须拆分):**
|
|
500
|
+
- "构建整个仪表板"
|
|
501
|
+
- "添加认证"
|
|
502
|
+
- "重构 API"
|
|
503
|
+
|
|
504
|
+
**经验法则:** 如果不能用 2-3 句话描述变更,就太大了。
|
|
505
|
+
|
|
506
|
+
### 2. 依赖顺序
|
|
507
|
+
|
|
508
|
+
故事按 `priority` 顺序执行。前面的故事不能依赖后面的。
|
|
509
|
+
|
|
510
|
+
✅ **正确顺序:**
|
|
511
|
+
1. Schema/数据库变更
|
|
512
|
+
2. 服务器操作 / 后端逻辑
|
|
513
|
+
3. UI 组件
|
|
514
|
+
4. 聚合视图
|
|
515
|
+
|
|
516
|
+
❌ **错误顺序:**
|
|
517
|
+
1. UI 组件(依赖 schema)
|
|
518
|
+
2. Schema 变更
|
|
519
|
+
|
|
520
|
+
### 3. 验收标准
|
|
521
|
+
|
|
522
|
+
每个标准必须可验证。
|
|
523
|
+
|
|
524
|
+
✅ **好的标准:**
|
|
525
|
+
- "Add status column to tasks table with default 'pending'"
|
|
526
|
+
- "Typecheck passes"
|
|
527
|
+
- "Tests pass"
|
|
528
|
+
|
|
529
|
+
❌ **差的标准:**
|
|
530
|
+
- "Works correctly"
|
|
531
|
+
- "Good UX"
|
|
532
|
+
|
|
533
|
+
### 4. 干净的 Git 状态
|
|
534
|
+
|
|
535
|
+
始终从干净的 git 状态开始 Ralph:
|
|
536
|
+
|
|
537
|
+
```bash
|
|
538
|
+
# 检查状态
|
|
539
|
+
git status
|
|
540
|
+
|
|
541
|
+
# 清理或提交
|
|
542
|
+
git add .
|
|
543
|
+
git commit -m "Before Ralph run"
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
### 5. 监控进度
|
|
547
|
+
|
|
548
|
+
定期检查:
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
# 每几次迭代后检查
|
|
552
|
+
cat prd-progress.txt
|
|
553
|
+
git log --oneline -5
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### 6. 读取学习内容
|
|
557
|
+
|
|
558
|
+
每次迭代都会在 `prd-progress.txt` 中记录学习内容。新迭代开始前先读取它!
|
|
559
|
+
|
|
560
|
+
## 项目结构
|
|
561
|
+
|
|
562
|
+
```
|
|
563
|
+
.claude/
|
|
564
|
+
├── skills/ # Claude Code skills
|
|
565
|
+
│ ├── prd.md # PRD 生成技能
|
|
566
|
+
│ └── ralph.md # Ralph 执行技能
|
|
567
|
+
├── scripts/ # Ralph 执行脚本
|
|
568
|
+
│ ├── ralph.sh # 主循环脚本(必须有执行权限!)
|
|
569
|
+
│ └── prompt.md # Amp 实例指令模板
|
|
570
|
+
├── templates/ # 模板文件
|
|
571
|
+
│ └── prd.json.example
|
|
572
|
+
├── archive/ # 历史运行归档(自动生成)
|
|
573
|
+
├── ralph-config.json # 配置文件
|
|
574
|
+
└── README.md # 本文档
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
## 生成的文件
|
|
578
|
+
|
|
579
|
+
Ralph 运行时会在项目根目录生成:
|
|
580
|
+
|
|
581
|
+
```
|
|
582
|
+
your-project/
|
|
583
|
+
├── prd.json # 用户故事和状态
|
|
584
|
+
├── prd-progress.txt # 进度日志
|
|
585
|
+
├── tasks/ # PRD 文档目录
|
|
586
|
+
│ └── prd-*.md
|
|
587
|
+
└── .claude/
|
|
588
|
+
├── .last-branch # 上次运行的分支
|
|
589
|
+
└── archive/ # 归档的旧运行记录
|
|
590
|
+
└── YYYY-MM-DD-feature-name/
|
|
591
|
+
├── prd.json
|
|
592
|
+
└── prd-progress.txt
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
## 示例会话
|
|
596
|
+
|
|
597
|
+
```
|
|
598
|
+
User: /prd "添加任务优先级功能"
|
|
599
|
+
|
|
600
|
+
PRD Skill:
|
|
601
|
+
1. 主要目标是什么?
|
|
602
|
+
A. 改善用户引导体验
|
|
603
|
+
B. 提高用户留存率
|
|
604
|
+
C. 减少支持工作量
|
|
605
|
+
D. 其他: [请说明]
|
|
606
|
+
|
|
607
|
+
User: 1D, 让用户专注于重要任务
|
|
608
|
+
|
|
609
|
+
PRD Skill:
|
|
610
|
+
2. 目标用户是谁?
|
|
611
|
+
A. 新用户
|
|
612
|
+
B. 现有用户
|
|
613
|
+
C. 管理员
|
|
614
|
+
D. 所有用户
|
|
615
|
+
|
|
616
|
+
User: 2D
|
|
617
|
+
|
|
618
|
+
PRD Skill:
|
|
619
|
+
[继续询问...]
|
|
620
|
+
|
|
621
|
+
PRD Skill:
|
|
622
|
+
✓ PRD 已生成并保存到 tasks/prd-task-priority.md
|
|
623
|
+
包含 4 个用户故事:
|
|
624
|
+
- US-001: Add priority field to database
|
|
625
|
+
- US-002: Display priority indicator
|
|
626
|
+
- US-003: Add priority selector
|
|
627
|
+
- US-004: Filter by priority
|
|
628
|
+
|
|
629
|
+
User: /ralph tasks/prd-task-priority.md
|
|
630
|
+
|
|
631
|
+
Ralph Skill:
|
|
632
|
+
✓ 正在转换 PRD 到 prd.json...
|
|
633
|
+
✓ 已创建包含 4 个用户故事的 prd.json
|
|
634
|
+
✓ 检查前置条件...
|
|
635
|
+
✓ 创建分支 ralph/task-priority...
|
|
636
|
+
✓ 启动 Ralph 循环...
|
|
637
|
+
|
|
638
|
+
[Ralph 执行迭代...]
|
|
639
|
+
|
|
640
|
+
Iteration 1: US-001 - Add priority field to database ✓
|
|
641
|
+
Iteration 2: US-002 - Display priority indicator on task cards ✓
|
|
642
|
+
Iteration 3: US-003 - Add priority selector to task edit ✓
|
|
643
|
+
Iteration 4: US-004 - Filter tasks by priority ✓
|
|
644
|
+
|
|
645
|
+
<promise>COMPLETE</promise>
|
|
646
|
+
|
|
647
|
+
✓ 所有故事已完成!
|
|
648
|
+
查看详情: cat prd-progress.txt
|
|
649
|
+
查看提交: git log --oneline
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
## 原理
|
|
653
|
+
|
|
654
|
+
Ralph 基于 [Geoffrey Huntley 的 Ralph 模式](https://ghuntley.com/ralph/)。
|
|
655
|
+
|
|
656
|
+
**核心思想:**
|
|
657
|
+
- 每个 AI 实例都有有限的上下文
|
|
658
|
+
- 大型任务需要分解为小故事
|
|
659
|
+
- 每次迭代都是全新的开始
|
|
660
|
+
- 通过 git 和文件持久化状态
|
|
661
|
+
|
|
662
|
+
**迭代间的内存:**
|
|
663
|
+
|
|
664
|
+
每次迭代都是**全新的 Amp 实例**,没有之前工作的记忆。
|
|
665
|
+
|
|
666
|
+
唯一的跨迭代状态:
|
|
667
|
+
- Git 历史(之前迭代的提交)
|
|
668
|
+
- `prd-progress.txt`(学习内容和上下文)
|
|
669
|
+
- `prd.json`(哪些故事已完成)
|
|
670
|
+
|
|
671
|
+
## 许可证
|
|
672
|
+
|
|
673
|
+
与原 Ralph 项目相同。
|
|
674
|
+
|
|
675
|
+
## 更多信息
|
|
676
|
+
|
|
677
|
+
- [Ralph 原始项目](https://github.com/snarktank/ralph)
|
|
678
|
+
- [Amp 文档](https://ampcode.com/manual)
|
|
679
|
+
- [Geoffrey Huntley 的 Ralph 文章](https://ghuntley.com/ralph/)
|
|
680
|
+
- [作者的 Twitter 帖子](https://x.com/ryancarson/status/2008548371712135632)
|