规划器配置#
RPent 通过一个 CLI 参数选择 Agentic Planner 的后端:
--planner {api,claude_code,codex,flash}
三种在线规划器(api、claude_code 和 codex)接收相同的系统提示词和用户提示词,也使用同一套 RPent 工具定义。它们的区别在于如何将这些工具接入模型、如何组织工具调用循环,以及使用哪个模型 SDK。
|
它是什么 |
什么时候选它 |
|---|---|---|
|
基于 Pydantic AI 的工具调用循环,支持多种模型 API。对话较长时,会减少发送给模型的早期消息。 |
直接调用 Anthropic、OpenAI 或兼容的模型服务。 |
|
Claude Agent SDK。把 RPent 的 toolkit 暴露为进程内 MCP 服务,由 Claude Agent SDK 驱动循环。 |
通过 Claude Agent SDK 运行工具调用循环。 |
|
OpenAI Codex Python SDK。RPent 在进程内启动 Streamable HTTP MCP 服务,把 toolkit 接入 Codex。 |
通过 Codex SDK 运行任务,复用已有的 Codex 认证或配置独立 API。 |
|
Flash Mode,仅用于评测。重放 memory 中保存的成功执行计划,并对每个路点 的锚点重新定位,使方案能跟随移动过的物体。参见 使用 Flash Mode。 |
想在新布局上低成本地重跑一个已知可行的方案,无需 LLM 在线规划;仍需要感知和 VLA 服务。 |
直接执行动作#
使用 LIBERO、RoboCasa 或 RoboTwin 时,在启动命令中添加
--enable-direct-action,即可让 planner 调用
execute_action(values=[...])。planner 传入一组控制数值,环境将其作为
一个动作执行,RPent 随后记录执行后的状态。
具体需要传入哪些数值,取决于机器人和控制器。planner 收到的工具说明会列出 数值的个数及各自允许的范围。启用后,planner 仍可使用 VLA 和脚本工具。
api 规划器(直接调用模型 API)#
--planner api 是默认选项。它使用 Pydantic AI 原生工具调用循环,并要求 --model 带有模型提供商前缀。当前项目安装的依赖包含 Anthropic 和 OpenAI 集成,因此可以直接使用 Anthropic Messages API、OpenAI Responses API,以及 OpenAI 兼容的 Chat Completions API。
通过 --model 前缀选择模型提供商:
# Anthropic Claude
rpent --planner api --model anthropic:claude-opus-4-8 ...
# OpenAI Responses (例如 GPT-5.5)
rpent --planner api --model openai:gpt-5.5 ...
# OpenAI 兼容的 Chat Completions(例如 GLM 5.2,纯文本)
rpent --planner api --model openai-chat:glm-5.2 --no-images ...
它读取以下环境变量;需要覆盖 API 地址时使用 --base-url:
anthropic:*→ANTHROPIC_BASE_URL/ANTHROPIC_API_KEYopenai:*/openai-chat:*→OPENAI_BASE_URL/OPENAI_API_KEY
api 规划器的相关参数:
--max-tokens—— 单次 LLM 回复的 token 上限(默认8192)。--no-images—— 不向模型发送图片字节;纯文本模型必须加此参数。此时智能体只依赖文本状态推理,任务表现可能不够理想。
终端交互方式见 终端交互。
claude_code 规划器#
--planner claude_code 将工具调用循环交给 Claude Agent SDK。 RPent 通过 SDK 创建进程内 MCP 服务,并把 toolkit 的工具注册到 mcp__rpent__<name> 命名空间。
RPent 为 Claude 规划会话关闭文件系统配置来源,因此不会自动加载项目的 CLAUDE.md 和开发 skills。工作目录仍为仓库根目录。
rpent --robot libero --planner claude_code \
--model claude-opus-4-8 \
--suite libero_object_swap --task 2 --seed 0
注意事项:
--model不要 加模型提供商前缀;省略时默认使用sonnet。非交互运行受
--planner-timeout-s限制;默认读取CELL_TIMEOUT_S,未设置时为1200秒。--interactive模式不应用这一时限。通过
--claude-code-max-budget-usd设置美元预算(默认取MAX_BUDGET_USD环境变量或10)。RPent 的依赖中已包含 Claude Agent SDK;该 SDK 自带 Claude Code 二进制文件,无需单独安装 CLI。认证通常使用
ANTHROPIC_API_KEY,详见 Claude Agent SDK 文档。
通过 Claude Code 使用本地模型#
Claude Code 可以连接兼容 Anthropic Messages API 的本地模型服务。假设服务将 Qwen3.6-27B 注册为 Qwen/Qwen3.6-27B,可以这样配置:
export ANTHROPIC_BASE_URL=http://127.0.0.1:8000
export ANTHROPIC_API_KEY=EMPTY
rpent --robot libero --planner claude_code \
--model Qwen/Qwen3.6-27B \
--suite libero_goal_task --task 1 --seed 0
对于无法识别的本地模型名称,Claude Code 默认按 200,000 token 的上下文窗口管理会话。如果本地服务使用其他长度,请参考 Claude Code 环境变量文档 配置它的上下文和自动压缩参数。
codex planner#
--planner codex 使用 OpenAI Codex Python SDK。每次运行时,RPent 会在当前进程的后台线程中启动本地 Streamable HTTP MCP 服务,Codex 通过该服务调用同一个 toolkit;无需预先启动 scripts/codex_proxy/。
Codex 规划会话不会自动加载仓库的 AGENTS.md 和 .agents/skills/ 中的开发 skills。工作目录仍为仓库根目录,机器人指南和 memory 仍可通过已有工具读取。
rpent --robot libero --planner codex \
--model gpt-5.5 \
--suite libero_goal_task --task 1 --seed 0
注意事项:
设置
CODEX_SERVICE_TIER=fast可向 Codex 后端传入 fast 服务档位,不改变--reasoning-effort。未设置时 RPent 不覆盖服务档位。--model会覆盖CODEX_MODEL;两者都未设置时使用 Codex SDK 配置的默认模型。--planner-timeout-s限制 Codex 运行时间。默认依次读取CODEX_TIMEOUT_S、CELL_TIMEOUT_S,均未设置时为1200秒。默认情况下,Codex SDK 会复用已有的 Codex 认证。若要接入自定义的 Responses API 兼容端点,请设置
CODEX_BASE_URL和CODEX_API_KEY;这里不读取OPENAI_BASE_URL或OPENAI_API_KEY。
通过 Codex 使用本地模型#
Codex 可以连接兼容 OpenAI Responses API 的本地模型服务。下面以通过 vLLM 启动 Qwen3.6-27B 为例:
vllm serve /path/to/Qwen3.6-27B \
--served-model-name Qwen/Qwen3.6-27B \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
然后让 Codex 连接本地服务,并填写该服务实际开放的上下文限制:
export CODEX_BASE_URL=http://127.0.0.1:8000
export CODEX_API_KEY=EMPTY
export CODEX_MODEL_CONTEXT_WINDOW=262144
export CODEX_AUTO_COMPACT_TOKEN_LIMIT=230000
rpent --robot libero --planner codex \
--model Qwen/Qwen3.6-27B \
--suite libero_goal_task --task 1 --seed 0
vLLM 在兼容 OpenAI 的 /v1/models 响应中用 max_model_len 表示该上限,而 Codex 使用的模型目录格式要求 context_window 字段。因此,Codex 无法识别 vLLM 返回的模型元数据时会使用备用配置。请将 CODEX_MODEL_CONTEXT_WINDOW 设置为当前 vLLM 服务的 --max-model-len。这是服务实际接受的上限;为了适应可用显存,它可以低于 checkpoint 配置中标注的最大长度。
CODEX_AUTO_COMPACT_TOKEN_LIMIT 用于设置 Codex 自动压缩会话历史的触发点。该值应小于 CODEX_MODEL_CONTEXT_WINDOW,为下一次回复预留空间;当服务窗口为 262144 token 时,230000 是一个示例值。这两个变量都是可选的;如果未设置,Codex 将使用自身的默认值。
RPent 的 --model 必须与 vLLM 的 --served-model-name 保持一致。使用其他模型时,请按照对应的 vLLM 部署说明设置解析参数。
验证你的配置#
在启动完整任务前,先用 rpent-check-llm 检查模型服务的连接与认证配置。它会向所选后端发送其支持的最小真实请求,不携带工具或图像,也不启动机器人运行环境:
rpent-check-llm --planner api --model anthropic:claude-opus-4-8
rpent-check-llm --planner claude_code
rpent-check-llm --planner codex --json
成功时退出码为 0,任何失败为 1,并将失败归类为 missing_config、unsupported_provider、missing_api_key、 auth_failed、network_error、provider_error、sdk_error 之一。脚本与 CI 建议使用 --json。--base-url 覆盖后端端点, --timeout-s 覆盖诊断超时(api 为 30 秒,两个 SDK 后端为 90 秒;运行时的 1200 秒默认值不会被复用)。
使用 Dashboard 时,也请先在终端运行上述检查,并使用准备运行任务的规划器与模型配置。Dashboard 从命令行接收配置,打开后直接显示运行监控页面。启动方法见 交互使用。
检查通过只能证明认证与网络可达。它并不能证明模型会接受图像块(参见 --no-images)、你的工具 schema,或你的上下文长度。
添加规划器#
自定义规划器的接口、接入步骤和验证要求见 添加规划器。
设置规划器的运行限制#
--max-turns N 设置规划轮数上限,默认 100。一轮不是一次机器人动作:模型的一次回复可以要求调用多个工具。各后端的计数规则不同:
API: 整段对话中,每次模型请求算一轮,包含重试和用户后续输入产生的请求。Pydantic AI 负责执行这个上限,RPent 将请求次数记为
turns_used。达到上限时正常停止,不记为规划器错误,也不代表任务成功。探索模式仍可继续下一会话,并在满足其他条件时合并记忆。Codex: 模型每回复一次算一轮。只有推理或工具调用、没有文字的回复也计数;同一次回复中的多个工具调用不会分别计数。RPent 负责执行这个上限。
Claude Code: 一轮是“模型请求工具 → 工具执行 → 结果返回模型”。最后不调用工具的文字答复不占用这一预算。RPent 把上限交给 Claude Code 执行,达到上限时返回
error_max_turns。
例如,没有重试时,模型先在一次回复中要求读取两个文件,拿到结果后再给出文字总结:API 发送两次请求,Codex 计两次回复,Claude 消耗一轮工具预算。三者都报告 turns_used=2;Claude 报告的回复次数与工具预算的计数不同。
Claude 交互模式下,每次新增用户输入都会获得新的轮数预算,turns_used 则继续累计。详见 Claude 的轮数限制说明。
flash 直接重放计划,不运行 LLM 循环,因此不使用这一预算,报告的 turns_used 为 0。
其他限制的作用范围不同:
--max-tokens仅限制api每次回复的 token 数,默认8192。LIBERO 类任务通常使用这个默认值即可;RoboCasa 的长时序任务可以在模型支持的范围内调大。--planner-timeout-s限制规划器的运行时间;各后端的默认值及交互模式行为见上文。
模型调用 finish 后,规划器会记录结束状态。达到轮数上限时,当前循环停止;Claude 交互会话仍可接收下一次 query。运行结束时,主程序会保存对话记录。超时或 SDK 异常会写入规划器结果,并输出到日志。