
Le guide pratique de Ralph
Manuel d'utilisation complet de Snarktank/Ralph – de l'installation à l'utilisation pratique, couvrant l'écriture du PRD, l'exécution du cycle, les contrôles de qualité et les leçons apprises.
##Présentation
Dans article précédent, nous avons compris les principes fondamentaux de Ralph - boucle infinie + nouveau contexte à chaque fois + fichier comme seule source de vérité. Ces trois piliers semblent simples, mais de la compréhension du concept à sa mise en œuvre réelle, de nombreux détails doivent être réglés.
Dans cet article, commençons. Vous apprendrez à utiliser snarktank/ralph pour terminer le processus complet, de l'installation à l'exécution. snarktank/ralph est l'une des implémentations Ralph les plus matures de la communauté (plus de 10 000 étoiles). Il prend en charge deux outils, Claude Code et Amp, ainsi qu'une chaîne d'outils complète pour la génération PRD, la conversion JSON et l'exécution automatisée.
Conditions préalables
Avant de commencer, assurez-vous que votre environnement répond aux exigences suivantes :
| Dépendances | Descriptif |
|---|---|
| Outils de programmation IA | Claude Code (npm install -g @anthropic-ai/claude-code) ou Amp CLI |
| jq | Outil de traitement JSON (macOS : brew install jq) |
| Git | Le projet doit être un dépôt Git |
# 检查依赖
claude --version # Claude Code CLI
jq --version # JSON 处理
git --version # Git##Installation et configuration
snarktank/ralph propose une variété de méthodes d'installation, qui peuvent être sélectionnées en fonction du scénario d'utilisation.
Méthode 1 : Installer directement dans Claude Code (recommandé)
Le moyen le plus simple est de coller le lien GitHub dans la conversation Claude Code et de laisser Claude terminer automatiquement l'installation :
Install this skill for me: https://github.com/snarktank/ralphClaude Code clonera automatiquement le référentiel et copiera les fichiers de compétences au bon emplacement. Les commandes /prd et /ralph sont disponibles après l'installation.
Méthode 2 : Installation du marché Claude Code
Installer via la commande market :
# 添加并安装插件
/plugin marketplace add snarktank/ralph
/plugin install ralph-skills@ralph-marketplaceAprès l'installation, vous pouvez utiliser les deux compétences /prd (générer du PRD) et /ralph (convertir en JSON).
Méthode 3 : Installation manuelle des compétences (Claude Code/Amp)
Copiez manuellement le fichier de compétence dans le répertoire de configuration global de l'outil correspondant :
# 先克隆仓库
git clone https://github.com/snarktank/ralph.git /tmp/ralph
# Claude Code 用户
cp -r /tmp/ralph/skills/prd ~/.claude/skills/
cp -r /tmp/ralph/skills/ralph ~/.claude/skills/
# Amp 用户
cp -r /tmp/ralph/skills/prd ~/.config/amp/skills/
cp -r /tmp/ralph/skills/ralph ~/.config/amp/skills/Les commandes /prd et /ralph sont disponibles après l'installation.
Méthode 4 : Installation au niveau du projet
Copiez le script Ralph directement dans le projet - idéal pour les scénarios où le partage en équipe ou des scripts personnalisés sont requis :
# 克隆 Ralph 仓库
git clone https://github.com/snarktank/ralph.git /tmp/ralph
# 复制核心文件到项目
mkdir -p scripts/ralph
cp /tmp/ralph/ralph.sh scripts/ralph/
cp /tmp/ralph/CLAUDE.md scripts/ralph/ # Claude Code 用户
# 或
cp /tmp/ralph/prompt.md scripts/ralph/ # Amp 用户
# 赋予执行权限
chmod +x scripts/ralph/ralph.shUne fois l'installation terminée, la structure du projet est la suivante :
your-project/
├── scripts/ralph/
│ ├── ralph.sh # 核心循环脚本
│ └── CLAUDE.md # Claude Code 的 Prompt 模板
├── tasks/ # PRD 文件目录(执行时自动创建)
│ └── prd.json # 你的任务定义
└── ...Suggestion : La première méthode est la plus simple : il suffit de lancer le lien GitHub vers Claude Code. Si vous souhaitez contrôler manuellement le processus d'installation, choisissez la méthode 2 (commande de marché) ou la méthode 3 (copie manuelle). Choisissez la méthode 4 lorsque vous devez partager le script avec l'équipe ou le personnaliser.
Structure du fichier de base
La mémoire de Ralph repose entièrement sur le système de fichiers. Comprendre le rôle de chaque fichier est un prérequis pour bien utiliser Ralph.
ralph.sh - moteur de boucle
C'est le cœur de Ralph : un script bash qui génère constamment de nouvelles instances d'IA.
# 基本用法
./scripts/ralph/ralph.sh [max_iterations] # 默认:Amp
./scripts/ralph/ralph.sh --tool claude [iterations] # 使用 Claude CodeÀ chaque itération, ralph.sh effectue les étapes suivantes :
- Créez une branche de fonctionnalités (à partir de
branchNamedans prd.json) - Sélectionnez l'histoire inachevée avec la priorité la plus élevée (
passes: false) - Générez une nouvelle instance d'IA pour mettre en œuvre cette histoire
- Effectuer des contrôles qualité (contrôles de type, tests)
- Vérification réussie → git commit ; échec de la vérification → laisser à l'itération suivante
- Mettez à jour prd.json et marquez l'histoire comme
passes: true - Ajoutez les leçons apprises au progress.txt
- Répétez jusqu'à ce que toutes les histoires soient terminées ou que le nombre maximum d'itérations soit atteint
La limite d'itérations par défaut est de 10. Ajustez en fonction de la complexité du projet :
# 简单项目
./scripts/ralph/ralph.sh --tool claude 10
# 复杂项目
./scripts/ralph/ralph.sh --tool claude 50prd.json - définition de la tâche
C'est le « cerveau » de Ralph, où toutes les tâches sont définies. C'est un fichier JSON plat :
{
"projectName": "Blog i18n Translation",
"branchName": "ralph/i18n-translation",
"userStories": [
{
"id": "US-001",
"title": "Translate homepage metadata",
"description": "Create content/docs/meta.en.json with English translations for all navigation items",
"acceptanceCriteria": [
"meta.en.json file exists with valid JSON format",
"All navigation titles are translated to English",
"pnpm types:check passes"
],
"priority": 1,
"passes": false,
"dependsOn": [],
"notes": "Reference the existing meta.json structure"
},
{
"id": "US-002",
"title": "Translate blog post hello-world",
"description": "Create content/blog/hello-world.en.mdx, translated from Chinese to English",
"acceptanceCriteria": [
"hello-world.en.mdx file exists",
"All QuoteCard components have defaultLang='en'",
"Internal links use /en/ prefix",
"Code blocks remain untranslated",
"pnpm types:check passes"
],
"priority": 2,
"passes": false,
"dependsOn": ["US-001"],
"notes": "Preserve MDX component props format"
}
]
}Description du champ :
| Champ | Descriptif |
|---|---|
projectName | Nom du projet, utilisé pour nommer les journaux et les branches |
branchName | Nom de la branche Git - Ralph créera automatiquement |
id | Identifiant unique de l'histoire, format US-001 recommandé |
title | Titre court |
description | Description détaillée - plus c'est précis, mieux c'est |
acceptanceCriteria | Liste des critères d'acceptation - C'est le domaine le plus critique |
priority | Numéro de priorité - plus le nombre est petit, le premier à exécuter |
passes | Complet ou non - Ralph mettra automatiquement à jour |
dependsOn | Liste d'ID d'histoire dépendante |
notes | Conseils supplémentaires et contexte |
progress.txt - journal d'expérience
C'est la « mémoire à long terme » de Ralph. Après chaque itération, l'IA ajoutera une expérience supplémentaire apprise :
=== Iteration 1 (US-001) ===
- Discovered: typecheck command is `pnpm types:check`, not `pnpm typecheck`
- Discovered: meta.en.json needs to mirror exact structure of meta.json
- Pattern: fumadocs i18n uses `.en.` suffix convention
=== Iteration 2 (US-002) ===
- Discovered: QuoteCard requires both `quote` and `quoteZh` props
- Gotcha: internal links must use /en/ prefix for English pages
- Pattern: code blocks should never be translatedUne toute nouvelle instance de Claude pour la prochaine itération lira ce fichier et obtiendra immédiatement toute l'expérience précédente. C'est pourquoi les exécutions de Ralph s'améliorent de plus en plus : les connaissances s'accumulent entre les itérations, mais le contexte reste propre.
AGENTS.md - Base de connaissances persistante
En plus de progress.txt, Ralph met également à jour le fichier AGENTS.md (ou CLAUDE.md) dans le projet. Claude Code et Amp liront automatiquement ces fichiers au démarrage.
Contrairement à progress.txt, AGENTS.md enregistre des connaissances stables et inter-projets :
# AGENTS.md
## Codebase Conventions
- Use fumadocs for documentation framework
- MDX files use custom components: QuoteCard, BlogImage, GlossaryCard
- i18n files use `.en.mdx` suffix
## Gotchas
- Always run `pnpm types:check` after modifying MDX files
- QuoteCard: set `defaultLang='en'` in English translationsÉcrire PRD
La qualité du PRD (Product Requirements Document) détermine directement les résultats d'exécution de Ralph. Bien écrit, navigation fluide jusqu'au bout, Ralph. Mal écrit, Ralph échouera à plusieurs reprises sur la même histoire.
Utilisez Skill pour générer du PRD
Si la compétence snarktank/ralph est installée, vous pouvez générer du PRD de manière interactive :
# 在 Claude Code 或 Amp 中
/prd I want to add i18n support to the blog, translating all Chinese content to EnglishL'IA vous posera quelques questions de clarification (quels documents sont impliqués, les limites de la pile technologique, les normes de qualité, etc.) puis générera un document PRD structuré.
Après génération, utilisez la commande /ralph pour convertir le PRD au format prd.json :
/ralph # 转换 PRD 为 prd.jsonÉcrivez manuellement le PRD
Vous pouvez également écrire prd.json directement. Voici les principes de conception clés.
Principe 1 : la granularité de l'histoire est modérée
Chaque histoire doit être suffisamment petite pour être complétée en une seule itération et suffisamment grande pour apporter de la valeur de manière indépendante.
// ❌ 太大:一次迭代完不成
{
"id": "US-001",
"title": "Build complete user authentication system",
"description": "Implement registration, login, forgot password, OAuth, permission management..."
}
// ❌ 太小:没有独立价值
{
"id": "US-001",
"title": "Create email field on User table",
"description": "Add email field to User model"
}
// ✅ 刚好:一次迭代能完成,有独立价值
{
"id": "US-001",
"title": "Implement email/password login",
"description": "Create login API and login page with email/password authentication",
"acceptanceCriteria": [
"POST /api/auth/login accepts email + password",
"Returns JWT token",
"Login page form submits successfully",
"All tests pass"
]
}Règle générale : une histoire implique 1 à 3 modifications de fichiers et comporte 3 à 5 critères d'acceptation.
Principe 2 : Les critères d'acceptation doivent être automatiquement vérifiables
Ralph doit déterminer si l'histoire est complète, les critères d'acceptation doivent donc être objectivement évaluables :
// ❌ 模糊的标准
"acceptanceCriteria": [
"Code quality is good",
"Performance is decent",
"User experience is smooth"
]
// ✅ 可验证的标准
"acceptanceCriteria": [
"pnpm types:check passes",
"pnpm test passes",
"API response time < 200ms",
"File src/auth/login.ts exists and exports loginHandler function"
]Principe 3 : Utilisez dependOn pour contrôler l'ordre d'exécution
Certaines histoires ont des dépendances. Le champ dependsOn garantit que Ralph est exécuté dans le bon ordre :
{
"userStories": [
{
"id": "US-001",
"title": "Create database schema",
"dependsOn": []
},
{
"id": "US-002",
"title": "Implement user registration API",
"dependsOn": ["US-001"]
},
{
"id": "US-003",
"title": "Implement login page",
"dependsOn": ["US-002"]
}
]
}Principe 4 : Fournir du contexte dans les notes
Le champ Notes donne à l'IA des indications supplémentaires. Écrivez ici les informations que vous connaissez et que l'IA ne connaît peut-être pas :
{
"notes": "Project uses fumadocs framework, i18n files follow .en.mdx suffix naming. Reference content/docs/notes/speckit/concept.en.mdx for translation style."
}Exécuter la boucle Ralph
Une fois le PRD prêt, il est temps d'exécuter la boucle.
Démarrer l'exécution
# 使用 Claude Code,默认 10 次迭代
./scripts/ralph/ralph.sh --tool claude
# 指定迭代次数
./scripts/ralph/ralph.sh --tool claude 30
# 使用 Amp(默认)
./scripts/ralph/ralph.sh 20Processus d'exécution
Après le démarrage, vous verrez un résultat similaire à celui-ci :
=== Ralph Loop - Iteration 1 ===
Branch: ralph/i18n-translation
Selected story: US-001 - Translate homepage metadata
Spawning fresh Claude instance...
[Claude Code executing...]
Quality check: pnpm types:check ... PASSED
Committing: feat: [US-001] - Translate homepage metadata
Updating prd.json: US-001 passes: true
Appending to progress.txt
=== Ralph Loop - Iteration 2 ===
Selected story: US-002 - Translate blog post hello-world
Spawning fresh Claude instance...Chaque itération est une instance complètement nouvelle de Claude. Il sait quoi faire en lisant prd.json et ce qu'il a appris précédemment en lisant progress.txt.
###Signal complet
Lorsque toutes les histoires sont marquées passes: true, Ralph émet un signal d'achèvement et quitte :
All stories completed!
<promise>COMPLETE</promise>Surveillance et débogage
Pendant que Ralph est en cours d'exécution, vous pouvez utiliser la commande suivante pour afficher la progression :
# 查看每个 story 的完成状态
cat tasks/prd.json | jq '.userStories[] | {id, title, passes}'
# 查看经验日志
cat progress.txt
# 查看最近的 git 提交
git log --oneline -10
# 实时跟踪 Ralph 输出
tail -f progress.txtArchivage automatique
Lorsque vous démarrez une nouvelle fonctionnalité (en utilisant un autre branchName), Ralph archivera automatiquement les fichiers de la dernière exécution dans le répertoire archive/YYYY-MM-DD-feature-name/, gardant ainsi le répertoire de travail propre.
Boucles de rétroaction et contrôle de la qualité
La capacité de Ralph à « s'auto-corriger » dépend entièrement de la qualité de la boucle de rétroaction. Sans boucle de rétroaction, Ralph n'est qu'un script qui boucle aveuglément : il continue de produire du code sans pouvoir dire si le code est correct.
Configurer le contrôle qualité
Définissez les commandes QA dans CLAUDE.md (ou prompt.md) :
## Quality Commands
After implementing each story, run these checks IN ORDER:
1. `pnpm types:check` — TypeScript type checking
2. `pnpm test` — Unit tests
3. `pnpm build` — Full build verification
If any check fails:
- DO NOT commit
- Fix the issue
- Re-run all checks
- Only commit when all checks passNiveau de contrôle d'accès qualité
| Hiérarchie | Outils | Problèmes capturés |
|---|---|---|
| Commentaires instantanés | Compilateur TypeScript | Erreurs de type, erreurs de syntaxe |
| Vérification fonctionnelle | Tests unitaires | Erreurs logiques, cas extrêmes |
| Vérification de l'intégration | Construire des commandes | Problèmes de dépendances, erreurs de configuration |
| Vérification de l'exécution | compétence de navigateur de développement | Problèmes de rendu de l'interface utilisateur (projets front-end) |
Pour les histoires frontales, Ralph recommande d'ajouter ce critère d'acceptation : "Vérifiez dans le navigateur à l'aide de la compétence dev-browser" - laissez l'IA ouvrir réellement le navigateur pour confirmer que la page est rendue correctement.
Lorsque le contrôle qualité échoue
Si une histoire échoue à plusieurs reprises au contrôle qualité, Ralph ne réessaiera pas indéfiniment la même histoire. Il s'arrêtera après avoir atteint la limite supérieure de l'itération et conservera l'état actuel. Vous pouvez :
- Consultez le fichier progress.txt pour comprendre la raison du blocage
- Résolvez manuellement le problème, puis réexécutez
- Ajustez la granularité de l'histoire (peut-être trop grande)
- Ajoutez plus de contexte au champ de notes
Personnalisation rapide
Le modèle d'invite de Ralph (CLAUDE.md ou prompt.md) est votre principal moyen de contrôler le comportement de l'IA. Après l'installation, vous devez le personnaliser en fonction de votre projet.
Éléments de personnalisation clés
1. Commandes qualité spécifiques au projet
## Project-Specific Commands
- Typecheck: `pnpm types:check` (not `tsc` or `pnpm typecheck`)
- Test: `pnpm vitest run`
- Build: `pnpm build`
- Lint: `pnpm lint`2. Contraintes de style de code
## Code Conventions
- Use TypeScript strict mode
- Prefer named exports over default exports
- Use fumadocs components for MDX content
- Follow existing file naming patterns (kebab-case)3. Pièges connus
## Known Gotchas
- MDX files: always import components at the top
- i18n: English files use `.en.mdx` suffix
- Links: English pages must use `/en/` prefix
- QuoteCard: set `defaultLang` to match the file language4. Manipulation en cas de blocage
## When Stuck
If you cannot complete a story after 3 attempts within the same iteration:
1. Document what's blocking in progress.txt
2. Move to the next story if possible
3. Do NOT modify files unrelated to the current storyCas pratique : Traduire des blogs avec Ralph
Pour montrer comment Ralph fonctionne en pratique, voici un exemple concret : utiliser un agent autonome de style Ralph pour traduire un blog entier du chinois vers l'anglais.
Paramètres du projet
Ce projet nécessite la traduction de plus de 22 fichiers de contenu (articles de blog, documents, métadonnées de navigation) du chinois vers l'anglais. Le projet est basé sur le blog Next.js de fumadocs et prend en charge i18n. La tâche est définie dans le fichier prd.json et contient 16 user stories, chacune avec des critères d'acceptation clairs :
scripts/ralph/
├── prd.json # 16 个 user story,带验收标准
└── progress.txt # 经验日志,每个 story 完成后更新Chaque user story suit un modèle cohérent :
- Livrable explicite : "Créer du contenu/blog/xxx.en.mdx"
- Critères vérifiables : "Typecheck réussis", "Les liens internes utilisent le préfixe /en/"
- Contraintes techniques : "Conserver les blocs de code non traduits", "Définir defaultLang='en' sur QuoteCard"
Mode d'exécution
Agent suit les principes fondamentaux de la méthodologie de Ralph :
-
Les documents sont la source de la vérité :
prd.jsonsuit les histoires transmises (passes: true/false).progress.txtAcquérir de l'expérience entre les itérations - par ex. "La commande Typecheck estpnpm types:check, paspnpm typecheck" -
Automated Quality Gate : après chaque traduction,
pnpm types:checkest exécuté pour vérifier que le fichier MDX a été correctement compilé. Si la vérification de type échoue, corrigez-la avant de la soumettre. -
Avancement incrémentiel : chaque histoire est soumise indépendamment, avec des informations de soumission descriptives (
feat: [US-003] - Translate blog/claude-code-quality-control.mdx), et peut être facilement annulée en cas de besoin. -
Exécution parallèle : pour les articles plus longs, plusieurs sous-agents sont traduits simultanément - par exemple, US-010 (concept claude-skills + pratique), US-011 (concept speckit + pratique) et US-012 (claude-architecture + claude-sous-agent) sont exécutés en parallèle.
Leçons clés
| Expérience | Détails |
|---|---|
| Les connaissances accumulées sont importantes | Les modèles découverts dans les premières histoires (QuoteCard defaultLang, règles de préfixe de lien) permettent de terminer plus rapidement les histoires suivantes |
| Typecheck comme boucle de rétroaction | Détectez les importations manquantes ou les MDX mal formés avant que les problèmes ne s'accumulent |
| Parallélisé et évolutif | 6 agents de traduction fonctionnant simultanément, le temps d'exécution est approximativement le même que celui d'1 agent |
| La granularité du PRD est critique | Portée de 1 à 2 fichiers par histoire - suffisamment petits pour être complétés de manière fiable, suffisamment volumineux pour être significatifs |
| Le journal de progression évite les erreurs répétées | La partie "Codebase Patterns" de progress.txt devient une base de connaissances pour éviter que le même problème ne soit redécouvert |
Résultats
Les 16 user stories ont été complétées en une seule session : 8 fichiers de navigation meta.en.json ont été créés, 3 articles de blog ont été traduits, 12 pages de documentation ont été traduites et la construction complète du site a été vérifiée. Chaque traduction maintient une qualité constante car les critères d'acceptation sont clairs et une boucle de rétroaction (vérification de type) détecte immédiatement les problèmes.
Ce projet démontre le modèle de mise en œuvre complet de Ralph : tâches bien définies + critères de réussite clairs + vérification automatisée + livraison incrémentielle via le système de fichiers.
Mise en œuvre communautaire et alternatives
snarktank/ralph n’est pas la seule option. Chacune de ces implémentations possède ses propres forces et faiblesses, en fonction de vos besoins :
| Ressources | Liens | Instructions |
|---|---|---|
| snarktank/ralph | snarktank/ralph | Utilisée dans cet article, la fonction la plus complète |
| Ralph-Orchestre | mikeyobrien/ralph-orchestrator | Développé par Mickey O'Brien, avec plus d'options de personnalisation |
| ralph-loop-agent | vercel-labs/ralph-loop-agent | Implémentation de Vercel basée sur AI SDK |
| Ralph | michaelshimeles/ralphy | Implémentation légère par Michael Shimeles |
Alternative : GSD
GSD n'est pas strictement une "implémentation communautaire" de Ralph - c'est une alternative. Il applique les principes fondamentaux de Ralph (gestion du contexte, tâches atomiques) mais fournit un flux de travail plus complet : discuter → planifier → exécuter → vérifier.
| Ressources | Liens | Instructions |
|---|---|---|
| GSD (Faire les choses) | cowboy pailleté/faire de la merde | Cadre complet de l'idée au PRD jusqu'à l'exécution |
Si vous pensez que Ralph est trop « brut » et a besoin de plus de soutien dans le processus, GSD peut être plus approprié. Voir Analyse approfondie GSD pour plus de détails.
Ressources recommandées
Source officielle :
| Ressources | Liens | Instructions |
|---|---|---|
| Le blog de Geoffrey Huntley | ghuntley.com/ralph | Article original de l'inventeur |
| comment-ralph-wiggum | ghuntley/comment-ralph-wiggum | Guide de l'utilisateur officiel |
Tutoriel vidéo :
| Ressources | Liens | Instructions |
|---|---|---|
| Discussion approfondie avec Ralph Wiggum | Pourquoi l'implémentation de Claude Code n'est-ce pas | Geoffrey Huntley explique les problèmes liés à la mise en œuvre officielle |
| Utilisation correcte de Ralph | Vous utilisez les boucles Ralph Wiggum MAUVAIS | Démonstration d'utilisation de Roman (Mentat) |
| Nous devons parler de Ralph | Nous devons parler de Ralph | L'analyse de la polémique par Théo |
Bonnes pratiques et FAQ
Contrôle des coûts
L'exécution automatisée de Ralph signifie que les frais d'API sont engagés de manière continue. Plusieurs mesures de contrôle :
- Toujours définir
max_iterations: il s'agit du filet de sécurité le plus élémentaire - Gardez une granularité de l'histoire raisonnable : une histoire trop volumineuse consommera plusieurs itérations ; une histoire trop détaillée augmentera les frais de démarrage.
- Tests à petite échelle d'abord : les nouveaux projets seront d'abord exécutés pendant 3 à 5 itérations, puis développés après avoir confirmé que les invites et le contrôle d'accès de qualité fonctionnent correctement.
Pièges courants
Piège 1 : L'histoire est trop grande
Symptômes : Une histoire échoue à plusieurs reprises et le nombre d’itérations est rapidement épuisé.
Solution : Divisez-le en 2 ou 3 histoires plus petites. "Créer un système d'authentification complet" est divisé en "Implémentation de l'API de connexion" + "Création de la page de connexion" + "Ajout du middleware JWT".
Piège 2 : Pas de boucle de rétroaction
Symptôme : Ralph prétend que l'histoire est terminée, mais il y a un problème avec le code lui-même.
Solution : Ajoutez des commandes de vérification exécutables dans les critères d'acceptation. "Le code est écrit" n'est pas un critère d'acceptation - "pnpm test all réussis" l'est.
Piège 3 : progress.txt n'est pas utilisé
Symptômes : la même erreur apparaît à plusieurs reprises dans différentes itérations.
Résolution : assurez-vous que votre modèle d'invite indique explicitement « lire progress.txt et suivre les règles qui y figurent ». Si l'IA n'ajoute pas automatiquement d'expérience, ajoutez « Une fois chaque histoire terminée, ajoutez de l'expérience à progress.txt » dans l'invite.
Piège 4 : Mauvais ordre de dépendance
Symptôme : une histoire repose sur du code qui n'existe pas encore, ce qui entraîne l'échec de l'implémentation.
Résolution : définissez correctement le champ dependsOn. Assurez-vous que l’histoire de l’infrastructure passe en premier.
FAQ
**Q : Quelle est la différence entre Ralph et le plug-in officiel ? **
Différence fondamentale : snarktank/ralph génère de nouveaux processus à chaque itération (vraiment un contexte complètement nouveau), alors que le plugin officiel boucle au sein de la même session (le contexte continue de s'accumuler). Voir analyse de l'article précédent pour plus de détails.
**Q : Prd.json peut-il être modifié manuellement pendant l'exécution ? **
Oui. Ralph relit prd.json au début de chaque itération. Vous pouvez modifier les descriptions d'histoires entre les itérations, ajouter de nouvelles histoires ou marquer manuellement une histoire comme passes: true (l'ignorer).
**Q : Que doit faire Ralph s'il est bloqué sur une histoire qui échoue à plusieurs reprises ? **
- Vérifiez progress.txt pour comprendre la raison de l'échec
- Ajouter plus de contexte dans les notes
- Divisez l'histoire (peut-être trop grande)
- Résolvez manuellement le problème de blocage, puis réexécutez
**Q : Puis-je faire d'autres choses pendant que Ralph court ? **
Oui. Ralph est conçu pour être un « humain en boucle » : vous n'avez pas besoin de le regarder. En mode AFK, commencez avant de quitter le travail et vérifiez les résultats le lendemain matin. Ne modifiez simplement pas le fichier sur lequel Ralph travaille.
**Q : Comment contrôler les coûts ? **
Trois méthodes : définir un max_iterations raisonnable, maintenir la granularité de l'histoire appropriée (pour réduire les itérations inutiles) et effectuer d'abord un essai à petite échelle pour confirmer que le processus est correct. De manière générale, pour les projets de 10 à 20 histoires, les frais de l'API se situent entre 50 et 100 $.
Résumé
Le flux de travail de Ralph peut être divisé en cinq étapes :
安装 → 编写 PRD → 配置质量门禁 → 运行循环 → 检查结果Le concept de base reste le même : Laissez le document être la seule source de vérité, laissez chaque itération repartir de zéro et laissez le contrôle qualité contrôler pour vous.
Maintenant, revenez à votre projet, préparez prd.json, exécutez ./scripts/ralph/ralph.sh --tool claude et allez préparer une tasse de café.
Lectures complémentaires
- Analyse approfondie de Ralph Wiggum - Revisiter les principes fondamentaux de Ralph
- GSD Deep Analysis - Un système complet d'ingénierie de contexte construit sur la base de Ralph
- Que sont les compétences de Claude ——La compétence PRD de Ralph est une compétence de Claude
- Speckit Practical Guide - Un autre workflow de programmation IA structuré