Ralph CLI Options 完全参考指南:Claude Code 自主开发循环的每一个参数与 `.ralphrc` 配置模式
2026/9/16 0:53:44 网站建设 项目流程

Ralph CLI Options 完全参考指南:Claude Code 自主开发循环的每一个参数与.ralphrc配置模式

【免费下载链接】ralph-claude-codeAutonomous AI development loop for Claude Code with intelligent exit detection项目地址: https://gitcode.com/GitHub_Trending/ra/ralph-claude-code

导读

ralph-claude-code是一个面向 Claude Code 的自主 AI 开发循环工具:它反复调用 Claude Code CLI,在每一次迭代中注入循环上下文、执行工具调用、分析响应、判定任务是否完成,并通过熔断器与速率限制防止失控消耗。本文是 docs/CLI_OPTIONS.md 的深度展开版,覆盖全部ralph命令行参数、底层实现机制以及.ralphrc配置模式。读完你将掌握:每个核心参数如何影响循环行为、--output-format jsontext两种退出检测机制的本质差异、如何为本地工作站 / Docker / 离线 / CI 场景编排配置,以及如何使用--backup/--rollback构建可回滚的自动化工作流。

快速上手:ralph --help可查看全部参数摘要。本文对每个参数都给出深度说明、默认值、对应.ralphrc键、示例与源码依据。所有配置的权威源头见 templates/ralphrc.template,参数解析实现见 ralph_loop.sh(参数解析入口位于ralph_loop.sh第 3032 行起的while循环,帮助文本见第 2915 行的show_help())。


一、核心标志(Core Flags)

1.1-h, --help—— 查看帮助

显示帮助信息并退出。帮助文本由 ralph_loop.sh 的show_help()生成,不仅列出全部标志,还附带了示例工作流(ralph-setup my-projectcd my-projectralph --monitor)与生成的运行产物文件清单。

ralph --help

1.2-c, --calls NUM—— 每小时 API 调用上限

限制每小时最多发起的 Claude API 调用次数,用于速率限制(rate-limiting)。

默认值.ralphrc
100MAX_CALLS_PER_HOUR
ralph --calls 50 # 保守策略——慢速、精细的项目 ralph --calls 200 # 激进策略——大批量任务积压

从源码看,调用计数由ralph_loop.shinit_call_tracking()按小时重置(.ralph/.call_count.ralph/.last_reset),can_make_call()ralph_loop.sh第 801 行起)在每次执行前检查计数是否达到上限,达到后由wait_for_reset()(第 869 行起)显示倒计时并睡眠至整点重置。--calls解析在第 3038 行,未做数值校验,因此建议用合理正整数。

提示:项目初始化阶段应把该值调低,避免.ralph/PROMPT.md尚未调优时循环失控。

1.3-p, --prompt FILE—— 循环驱动提示词文件

指定驱动每一轮循环迭代的提示词文件路径。

默认值.ralphrc
.ralph/PROMPT.mdPROMPT_FILE
ralph --prompt .ralph/PROMPT_experimental.md

PROMPT_FILEralph_loop.sh第 52 行定义,运行时通过build_claude_command()把提示词内容作为-p参数传给 Claude CLI。在--monitor模式下(第 545-547 行),当提示词路径非默认时会自动把--prompt转发给子进程。

1.4-s, --status—— 查看当前循环状态

打印.ralph/status.json中的当前循环状态并退出,不会启动循环。状态文件由update_status()(第 714 行起)写入,包含时间戳、循环计数、本小时已用调用数/Token 数、上限、最近动作、状态、退出原因、沙箱信息与下次重置时间等字段。实现见第 3046-3054 行:存在则cat "$STATUS_FILE" | jq .美化输出,不存在则提示 Ralph 可能未运行。

ralph --status

1.5-m, --monitor—— 集成 tmux 监控会话

启动一个集成的 tmux 会话:左窗格运行循环,右上窗格用tail -f实时查看 Claude 输出(.ralph/live.log),右下窗格运行ralph-monitor状态监控面板。需要本机安装tmux

ralph --monitor ralph --monitor --calls 50 --prompt my_prompt.md

交互式使用首选。无需另开终端即可实时看到循环进度、熔断器状态与 API 调用数。

setup_tmux_session()(第 480-658 行)的实现细节很值得注意:

  • 自动检测用户的base-indexpane-base-index(先启动 tmux server 再查询,避免首次运行时检测失败导致窗格编号错位);
  • 子进程命令会转发所有非默认的 CLI 参数--calls--prompt--output-format--verbose--timeout--allowed-tools--no-continue--session-expiry--auto-reset-circuit--backup,以及 GitHub issue 生命周期、沙箱、同步过滤等参数),保证监控模式与普通运行的配置语义一致;
  • 循环命令以; tmux kill-session串联,循环结束后整个 tmux 会话自动销毁,避免tail -f与监控面板把会话永久挂住(对应 issue #176)。

1.6-v, --verbose—— 详细进度输出

显示执行过程中的详细进度更新(同时写入 stdout 与日志文件.ralph/logs/ralph.log)。解析为VERBOSE_PROGRESS=true(第 3059-3062 行);RALPH_VERBOSE=true环境变量与.ralphrc键效果相同。

ralph --verbose ralph --live --verbose # 实时流 + 详细日志

1.7-l, --live—— 实时流式输出

将 Claude Code 输出实时流式传输到终端。若此前把--output-format设为text,会自动切换为json

ralph --live ralph --live --timeout 30

注意:Live 模式通过流式管道输出(stream-json+jq过滤),输出较为冗长——长时间运行建议用--monitor获得更整洁的视图。

从源码看(第 1897-1920 行),Live 模式把--output-format的值替换为stream-json并追加--verbose --include-partial-messages两个流式必需标志,再用jq过滤text_deltatool_use等事件实时渲染。两个降级保障:缺少jq时回退到后台模式(第 1883-1886 行);text输出格式会被强制覆盖为json(第 1828-1831 行)。对应测试见 tests/unit/test_cli_modern.bats。

1.8-t, --timeout MIN—— 单次调用超时

限制单次 Claude Code 调用允许运行的最大分钟数,超时以退出码 124 终止。

默认值.ralphrc
15CLAUDE_TIMEOUT_MINUTES
ralph --timeout 5 # 快速任务 / 紧密反馈环 ralph --timeout 60 # 长时间重构 / 大型代码库

参数解析(第 3067-3075 行)限定取值范围为 1 到 120 分钟。超时后的处理逻辑(第 2324-2396 行,对应 issue #198)会检查 git 在超时期间是否有变更:

  • 有文件变更→ 记为"生产性超时"(productive timeout):对已有输出继续运行响应分析,循环继续,进度文件写入{"status": "timed_out_productive", ...}
  • 无文件变更→ 记为"空闲超时"(idle timeout):本轮计为失败迭代。

文件变更通过对比循环开始时的git rev-parse HEAD(保存在.ralph/.loop_start_sha,第 1790-1796 行)与当前 HEAD、工作区、暂存区 diff 计算得出。


二、熔断器标志(Circuit Breaker Flags)

熔断器是 ralph 防止 token 失控消耗的核心安全机制,基于 Michael Nygard《Release It!》的经典模式实现,源码见 lib/circuit_breaker.sh。它维护三种状态:CLOSED(正常,检测到进展)、HALF_OPEN(监控模式,试探恢复)、OPEN(故障,执行暂停)。状态持久化在.ralph/.circuit_breaker_state,状态迁移历史在.ralph/.circuit_breaker_history

2.1--reset-circuit—— 手动复位熔断器

将熔断器重置为CLOSED(正常)状态并退出。在解决触发熔断的根本问题后使用。实现(第 3076-3084 行)调用reset_circuit_breaker "Manual reset via command line",该函数把状态文件重置为CLOSED并清零所有连续计数(lib/circuit_breaker.sh),同时会调用reset_session "manual_circuit_reset"清理会话。

ralph --reset-circuit

2.2--circuit-status—— 查看熔断器状态

打印当前熔断器状态(CLOSEDHALF_OPENOPEN)并退出。实现调用show_circuit_status()(lib/circuit_breaker.sh),输出状态、触发原因、距上次进展的循环数、最近进展循环、当前循环与累计打开次数。

ralph --circuit-status

2.3--auto-reset-circuit—— 启动时自动复位

启动时把熔断器直接重置为CLOSED,绕过冷却计时器。仅作用于单次运行,不持久化。

.ralphrc默认值
CB_AUTO_RESETfalse
ralph --auto-reset-circuit # 一次性复位 + 运行

使用时机:完全无人值守的部署(CI、cron 任务)中不会有真人来执行--reset-circuit。交互式使用请优先--reset-circuit,以便先排查触发原因。

对应机制在 lib/circuit_breaker.sh:启动时若状态为OPENCB_AUTO_RESET=true,直接迁移到CLOSED(保留total_opens计数);否则进入冷却逻辑,根据.opened_atCB_COOLDOWN_MINUTES计算是否可过渡到HALF_OPEN(时钟回拨时保持OPEN更安全)。参数解析在ralph_loop.sh第 3128-3131 行,--monitor模式下会转发给子进程。

2.4--reset-session—— 重置会话

清除保存的 Claude 会话 ID 并退出,强制下一轮循环开启全新对话、不带任何历史上下文。

ralph --reset-session

会话漂移或 Claude 陷入低效模式时使用。会话状态保存在.ralph/.claude_session_id

实现(第 3085-3092 行)调用reset_session "manual_reset_flag"并输出成功提示。会话连续性由init_claude_session()/save_claude_session()配合--continue标志实现,过期时间由SESSION_EXPIRY_HOURS控制。

2.5--dry-run—— 模拟运行

模拟循环执行而不发起真实的 Claude API 调用。Ralph 会运行完整的循环脚手架(速率限制检查、退出检测、完整性校验),但跳过 Claude 调用且不递增 API 调用计数

默认值环境变量
falseDRY_RUN
ralph --dry-run # 在消耗 API 配额前验证配置 ralph --dry-run --verbose # 观察每一轮循环会做什么

适合验证新的.ralphrc或提示词配置,也适合做演示。

从源码看(第 1798-1807 行),dry-run 会记录[DRY RUN]日志、打印将要执行的命令与输出格式/超时配置,模拟 2 秒执行延迟后返回,不经过increment_call_counter()。参数解析在第 3132-3135 行。

2.6-n, --notify—— 桌面通知

为关键循环事件启用桌面通知:循环完成、错误、熔断器跳闸、API 限额、项目完成。跨平台实现:macOS 用osascript,Linux 用notify-send,都不存在时回退到终端响铃。

默认值.ralphrc
falseENABLE_NOTIFICATIONS
ralph --notify --monitor # 循环需要关注时收到提醒

实现见send_notification()(第 749-766 行):会剥离双引号防止 AppleScript 字符串破坏,且所有通知错误都被抑制——通知失败绝不影响循环本身。

2.7-b, --backup—— 自动 git 备份

在每一轮循环迭代前创建自动 git 备份分支,命名为ralph-backup-loop-{N}-{timestamp}。提交使用--allow-empty,即使没有暂存变更也保证存在恢复点。要求项目是 git 仓库(否则为 no-op)。

默认值.ralphrc
falseENABLE_BACKUP
ralph --backup # 每轮循环前快照

create_backup()(第 1647-1701 行,对应 issue #23)完整流程:先git stash push -u暂存本地变更 →git checkout -b创建分支 →git add -Agit commit --allow-emptygit checkout -返回原分支并git stash pop恢复。每一步失败都会警告并回滚恢复,不中断循环。

2.8--rollback [BRANCH]—— 回滚到备份

回滚到--backup创建的备份分支。不带参数时列出所有ralph-backup-loop-*分支(按最新优先排序)并退出;带分支名时检出该分支。

ralph --rollback # 列出可用备份 ralph --rollback ralph-backup-loop-3-1775155286 # 恢复到指定备份

实现见rollback_to_backup()(第 1710-1742 行):列表通过git branch --list "ralph-backup-loop-*"并按时间戳字段倒序排序;恢复前校验分支存在,非 git 仓库或分支不存在都会给出明确错误。

2.9--show-tool-args—— 显示工具参数

在实时流式输出中显示工具参数(命令、文件路径、搜索模式)。默认关闭,避免原始命令和路径被记录到日志。

默认值.ralphrc
falseLIVE_SHOW_TOOL_ARGS
ralph --live --show-tool-args # 完整查看每次工具调用

仅与-l, --live配合才有意义。


三、现代 CLI 标志(Modern CLI Flags,Phase 1.1)

这一组标志面向新版 Claude CLI,提供结构化输出、工具权限白名单与会话续接控制。设计评审可参考 docs/code-review/2026-01-08-phase-1.1-modern-cli-review.md,测试覆盖见 tests/unit/test_cli_parsing.bats 与 tests/unit/test_cli_modern.bats。

3.1--output-format FORMAT—— 输出格式

设置 Claude Code 响应的输出格式。

行为
json(默认)结构化 JSON——启用会话续接、退出信号检测与 Token 计数
text遗留纯文本——仅启发式退出检测,误报率更高
默认值.ralphrc
jsonCLAUDE_OUTPUT_FORMAT
ralph --output-format json # 默认;推荐 ralph --output-format text # 遗留回退

强烈推荐 JSON 模式。在 text 模式下,启发式退出检测要求confidence_score >= 70has_completion_signal=true双重条件,以防止文档关键词触发误退出;在 JSON 模式下启发式被完全抑制——只有RALPH_STATUS块中显式的EXIT_SIGNAL: true才能触发退出。

这一区别直接对应响应分析器的两条代码路径:lib/response_analyzer.sh 会从 Claude 响应的.result文本中解析---RALPH_STATUS---/EXIT_SIGNAL: <bool>块(第 263-309 行),只有在 JSON 模式下才会尊重 Claude 显式表达的退出意图;参数解析校验只接受jsontextralph_loop.sh第 3100-3108 行)。

3.2--allowed-tools TOOLS—— 工具白名单

Claude 被允许使用的工具列表(逗号分隔)。覆盖本次运行的.ralphrc默认值。

默认值.ralphrc
见下方ALLOWED_TOOLS

默认值:

Write,Read,Edit,Bash(git add *),Bash(git commit *),Bash(git diff *),Bash(git log *), Bash(git status),Bash(git status *),Bash(git push *),Bash(git pull *),Bash(git fetch *), Bash(git checkout *),Bash(git branch *),Bash(git stash *),Bash(git merge *),Bash(git tag *), Bash(npm *),Bash(pytest)
# 审计运行:限制为只读 ralph --allowed-tools "Read,Grep,Glob" # 允许全部 git 命令(不太安全——包含 git clean、git rm) ralph --allowed-tools "Write,Read,Edit,Bash(git *),Bash(npm *)"

为什么只放行特定 git 子命令?默认白名单刻意省略Bash(git *),以防止git cleangit rmgit reset删除.ralph/配置文件。背景见 CLAUDE.md(文件保护问题)与templates/ralphrc.template中的注释。

排查被拒绝的命令。若命令被拒绝但ALLOWED_TOOLS看起来正确:运行RALPH_VERBOSE=true ralph记录传给 Claude 的精确 argv;或运行tools/inspect-allowed-tools.sh在不调用 Claude 的情况下检查解析结果。对含管道/重定向的复合命令(如mvn clean | tail),当基础命令已在白名单中时,ralph 会自动把拒绝降级为警告继续执行(issue #243);更宽泛的Bash(git *)通配符限制问题跟踪于 issue #154。

从源码看,工具白名单通过--allowedTools参数逐项传给 Claude CLI(build_claude_command()构造参数数组),validate_allowed_tools()用 ralph_loop.sh 中VALID_TOOL_PATTERNS列表校验每个条目,非法条目直接报错退出(第 1148 行)。tools/inspect-allowed-tools.sh 复刻了同样的逗号拆分与去空白解析逻辑,并逐项输出printf %q转义后的 argv——若字面*被展开成文件名即说明存在引用 bug。相关测试见 tests/unit/test_inspect_allowed_tools.bats。

3.3--no-continue—— 关闭会话续接

禁用会话连续性。每一轮循环迭代都从完全全新的 Claude 对话开始,不带任何之前迭代的记忆。

默认值.ralphrc
会话续接开启SESSION_CONTINUITY=true
ralph --no-continue

会话上下文积累过多、Claude 基于过时假设做决策时使用。也适合隔离单次迭代做调试。

实现:CLAUDE_USE_CONTINUE=falseinit_claude_session()不会恢复历史会话 ID,Claude 调用不带--continueload_ralphrc()会把.ralphrc中的SESSION_CONTINUITY映射到内部变量CLAUDE_USE_CONTINUEralph_loop.sh第 304-306 行)。

3.4--session-expiry HOURS—— 会话过期时间

覆盖会话 ID 保留的小时数,超过后自动丢弃并开启新会话。

默认值.ralphrc
24SESSION_EXPIRY_HOURS
ralph --session-expiry 48 # 长周期项目,上下文稳定 ralph --session-expiry 4 # 短生命周期任务,新上下文更佳

参数解析要求正整数小时数(第 3120-3127 行)。会话过期逻辑由 lib/response_analyzer.sh 中的SESSION_EXPIRATION_SECONDS(默认 86400 秒 = 24 小时)驱动:24 小时默认值在"项目连续性"与"上下文新鲜度"之间取得平衡——太短频繁丢上下文,太长则陈旧上下文导致不可预测行为。


四、常见.ralphrc配置模式

.ralphrc文件位于项目根目录,在每一轮循环前被 source(加载函数见 ralph_loop.sh 的load_ralphrc())。环境变量永远优先于.ralphrc。完整的可参考模板在 templates/ralphrc.template。

4.1 本地工作站(默认)

MAX_CALLS_PER_HOUR=100 CLAUDE_TIMEOUT_MINUTES=15 CLAUDE_OUTPUT_FORMAT="json" CLAUDE_AUTO_UPDATE=true SESSION_CONTINUITY=true SESSION_EXPIRY_HOURS=24

4.2 Docker 容器

# 版本在构建镜像时固定——跳过 npm registry 检查 CLAUDE_AUTO_UPDATE=false # 容器是临时的——持久化会话没有意义 SESSION_CONTINUITY=false # 更紧的超时,保证 CI 运行时长可预测 CLAUDE_TIMEOUT_MINUTES=10

4.3 离线 / 隔离网络环境(air-gapped)

# npm registry 不可达——防止超时与警告刷屏 CLAUDE_AUTO_UPDATE=false # 使用本机特定 Claude CLI 路径(不在 PATH 中时) CLAUDE_CODE_CMD="/opt/local/bin/claude"

4.4 无人值守 / cron 运行

# 降低调用速率,避免夜间失控消费 MAX_CALLS_PER_HOUR=50 # 每小时 Token 预算(0 = 禁用)。预算耗尽后阻塞调用。 # 与调用计数器一起在整点重置。 MAX_TOKENS_PER_HOUR=50000 # 批量任务用更长的超时 CLAUDE_TIMEOUT_MINUTES=30 # 无需人工干预即可从熔断器自动恢复 CB_AUTO_RESET=false # false = 使用冷却(更安全) CB_COOLDOWN_MINUTES=30 # OPEN 后等待 30 分钟再重试

MAX_TOKENS_PER_HOUR的实现要点:Token 计数通过extract_token_usage()(第 771-785 行)从 Claude 输出 JSON 的usage/metadata.usage字段提取输入+输出总和,update_token_count()累加到.ralph/.token_countcan_make_call()(第 801-821 行)在调用数与 Token 数任一达到上限时拒绝新调用,wait_for_reset()会同时显示两类限制信息。

4.5 熔断器调优

# 连续 N 轮无文件变更即打开熔断(默认:3) CB_NO_PROGRESS_THRESHOLD=3 # 连续 N 轮重复相同错误即打开熔断(默认:5) CB_SAME_ERROR_THRESHOLD=5 # 输出大小下降超过 N% 即打开熔断(默认:70) CB_OUTPUT_DECLINE_THRESHOLD=70 # 在 OPEN 状态等待多少分钟后过渡到 HALF_OPEN(默认:30) # 设为 0 可立即重试 CB_COOLDOWN_MINUTES=30 # 启动时跳过冷却、直接重置为 CLOSED(默认:false) # 谨慎使用——降低无人值守运行的熔断器安全性 CB_AUTO_RESET=false

这些阈值全部在 lib/circuit_breaker.sh 顶部定义并支持环境变量覆盖。record_loop_result()(第 151-336 行)是状态机的核心:根据 git 文件变更、Claude 完成信号、Claude 报告的已修改文件数、是否在提问等综合判断进展;还有额外机制——连续CB_PERMISSION_DENIAL_THRESHOLD(默认 2)轮权限拒绝也会打开熔断(issue #101),连续 2 轮无进展先进入HALF_OPEN监控。测试见 tests/unit/test_circuit_breaker_recovery.bats。

4.6 限制工具权限

# 宽松(开发):允许全部 git 子命令 ALLOWED_TOOLS="Write,Read,Edit,Bash(git *),Bash(npm *),Bash(pytest)" # 安全(默认):仅放行特定 git 子命令,无破坏性 git 命令 ALLOWED_TOOLS="Write,Read,Edit,Bash(git add *),Bash(git commit *),Bash(git diff *),Bash(git log *),Bash(git status),Bash(git push *),Bash(npm *),Bash(pytest)" # 只读审计 ALLOWED_TOOLS="Read,Grep,Glob"

4.7 模型与努力程度覆盖

# 使用特定 Claude 模型而非 CLI 默认 CLAUDE_MODEL="claude-sonnet-4-6" # 设置努力程度(high = 更彻底,low = 更快/更便宜) CLAUDE_EFFORT="high"

两者也可用环境变量设置,环境变量优先于.ralphrc

CLAUDE_MODEL=claude-opus-4-6 ralph --monitor

从源码看(ralph_loop.sh第 114-115 行),CLAUDE_MODEL/CLAUDE_EFFORT默认为空(即使用 CLI 默认),非空时才作为--model/--effort追加到 Claude 调用参数中。--monitor模式不会转发这两个值,因此以环境变量形式传给ralph --monitor时需确认子进程能继承(环境变量在setup_tmux_session()执行前已捕获,子 shell 可继承)。

4.8 自定义 shell 初始化

# 每轮循环前 source 一个脚本(例如激活 virtualenv 或设置 PATH) RALPH_SHELL_INIT_FILE=".ralph/init.sh"

若文件设置了但不存在,Ralph 会给出警告并跳过 source;存在则每轮调用 Claude 前先 source,可用于激活 Python 虚拟环境、加载密钥、切换 PATH 等。


五、.ralphrc专属键(无 CLI 等价物)

以下键没有对应的 CLI 标志——只能在.ralphrc或环境变量中设置。

默认值说明
CLAUDE_CODE_CMD"claude"Claude Code CLI 命令。非全局安装时覆盖(如"npx @anthropic-ai/claude-code")。
CLAUDE_AUTO_UPDATEtrue启动时自动检查 npm registry 并更新 Claude CLI。Docker / 离线环境设false
CLAUDE_MIN_VERSION"2.0.76"最低要求的 Claude CLI 版本。安装版本过旧时 Ralph 警告并退出。
MAX_TOKENS_PER_HOUR0每小时 Token 预算(input + output)。0= 禁用。耗尽后阻塞后续调用;与调用计数一起在整点重置。
RALPH_VERBOSEfalse启用详细进度日志。等价于--verbose
CB_NO_PROGRESS_THRESHOLD3连续 N 轮无文件变更即打开熔断器。
CB_SAME_ERROR_THRESHOLD5连续 N 轮出现相同错误即打开熔断器。
CB_OUTPUT_DECLINE_THRESHOLD70输出大小下降超过 N% 即打开熔断器。
CB_COOLDOWN_MINUTES30OPEN 状态下等待多少分钟再过渡到 HALF_OPEN 尝试恢复。
CB_AUTO_RESETfalse启动时跳过冷却、直接重置为 CLOSED。降低安全性;仅建议完全无人值守的 CI 运行使用。
PROJECT_NAME"my-project"提示词与日志输出中的项目标识。
PROJECT_TYPE"unknown"项目类型提示:javascripttypescriptpythonrustgounknown

CLAUDE_AUTO_UPDATE的实现要点:为true时启动会检查 npm registry 并尝试npm update -g;Docker 镜像构建时版本已固定、容器是临时的,因此模板注释明确建议容器设false(templates/ralphrc.template)。CLAUDE_CODE_CMD的校验在validate_claude_command()ralph_loop.sh第 374-423 行):npx 形式会先验证 npx 存在,直接命令形式用command -v检查,未找到时给出完整安装指引(全局安装或CLAUDE_CODE_CMD="npx @anthropic-ai/claude-code")。


六、环境变量优先级

环境变量 ← 最高优先级 ↓ .ralphrc 值 ↓ Ralph 默认值 ← 最低优先级

所有.ralphrc键都可以用同名环境变量设置:

MAX_CALLS_PER_HOUR=200 ralph --monitor # 仅本次运行覆盖

该优先级由load_ralphrc()ralph_loop.sh第 291-366 行)精细实现:脚本在设置任何默认值之前就把_env_*环境变量快照下来(第 67-97 行),source.ralphrc后再把快照回写覆盖——这样"用户显式设置的环境变量 >.ralphrc> 脚本默认值"的优先级在任何场景下都成立,包括--monitor模式下子进程的配置转发。


七、延伸:.ralphrc中值得了解的更多键

除了本文档重点讲解的 CLI 相关键,templates/ralphrc.template 还包含面向任务源、GitHub issue 生命周期与沙箱执行的配置,它们同样遵循"环境变量 >.ralphrc> 默认值"的优先级规则,且有对应 CLI 标志(完整清单见ralph --help的 Batch processing 与 Sandbox execution 两节,ralph_loop.sh第 2943-2993 行):

  • 任务源TASK_SOURCES="local"(可选beadsgithub)、GITHUB_TASK_LABEL="ralph-task"BEADS_FILTER="status:open",对应任务导入功能(详见 lib/task_sources.sh 与 docs/QUEUE_MANAGEMENT.md);
  • Docker 沙箱SANDBOX_PROVIDER="docker"SANDBOX_DOCKER_IMAGE="ralph-sandbox:latest"SANDBOX_DOCKER_MEMORY="4g"SANDBOX_DOCKER_CPUS="2"SANDBOX_DOCKER_NETWORK="bridge"none会阻断 Claude API),详见 docs/DOCKER_SANDBOX.md;
  • E2B 云沙箱SANDBOX_E2B_TEMPLATE="base"SANDBOX_E2B_TIMEOUT="3600"SANDBOX_E2B_KEEP_ALIVESANDBOX_E2B_MAX_COST等成本护栏,详见 docs/E2B_SANDBOX.md;
  • 文件同步过滤SYNC_INCLUDE/SYNC_EXCLUDE/SYNC_MAX_FILE_SIZE="10485760"/SYNC_LARGE_FILE_ACTION="warn",仅适用于 E2B 沙箱(Docker 的 bind mount 实时共享整个项目),详见 docs/SANDBOX_SYNC.md。

结语

ralph的命令行与.ralphrc配置共同构成了一个高度可编排的自主开发循环控制面:核心标志(--calls--timeout--prompt)决定循环的节奏与边界;熔断器标志(--reset-circuit--auto-reset-circuit--dry-run)决定故障恢复策略;现代 CLI 标志(--output-format--allowed-tools--no-continue--session-expiry)决定与 Claude CLI 的交互深度;而.ralphrc模式则针对本地、Docker、离线与 CI 四种典型场景给出开箱即用的配置组合。牢记"环境变量 >.ralphrc> 默认值"的优先级,配合--dry-run在消耗 API 配额前验证配置,你就能让 Ralph 在可控成本与安全边界内持续、稳定地推进项目。

【免费下载链接】ralph-claude-codeAutonomous AI development loop for Claude Code with intelligent exit detection项目地址: https://gitcode.com/GitHub_Trending/ra/ralph-claude-code

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询