context-infra 检查与复盘infra.guiming.net · 全内容自包含呈现 · 生成于 2026-07-21 16:28 UTC

Claude Code 自调用 / 调 Codex / Loop

Z3 全文↑ Z2 条目

术-运行时 · 术层 skill 全文

← 返回术层 skill 索引 · 返回方法论区

本页是 <code>rules/skills/claude_code_self_evoke_call_codex_loop.md</code> 的逐字投影(仅隐私清洗,零改写)。

时点提示:本页是仓内文件 rules/skills/claude_code_self_evoke_call_codex_loop.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。

Skill:Claude Code 自调用 / 调 Codex / Loop

使用时机

Claude Code 需要 Self Evoke、自调用、调用 Codex、或用 Loop 形式持续执行任务时使用。目标可以是另一个非交互 Claude Code 进程,也可以是 Codex CLI,用于独立实现、审查、smoke test、第二意见、judge,或可恢复的多轮任务执行。

本 skill 是 Claude Code 侧唯一调用入口。文件名刻意包含 self_evokecall_codexloop,但这里的 loop 只表示 Claude Code runtime 执行形态。用户泛称“做 Loop”、持续推进、优化并测试 Skill、AAU/AOU 多轮任务、或处理 Skill 非正交问题时,先进入 workflow_controller_loop;只有 Controller 明确选择 Claude runtime、自调用或 Claude Code 调 Codex 时才使用本 skill。它覆盖三类动作:

如果任务已经由 workflow_controller_loop 管理,本文件只提供 Claude Code runtime profile:如何调用 Claude/Codex 子进程、如何保留 durable output、如何处理 quota/fallback、如何恢复进程。需求、任务卡、在线审查和业务 closure 由 Controller 持有。

Codex 自调用、Codex 调 Claude Code、以及 Codex runtime profile 属于 codex_self_evoke_call_claude_code_loop。需要选择 Codex App automation、cron、cloud、resume 等调度面时,再参考 codex_schedule_loop

边界

按运行时归属分 skill,而不是按同类调用/跨工具调用拆 skill。原因是同一运行时共享同一组环境变量、hook、MCP 隔离、quota/fallback、日志、失败处理和 loop 恢复方式。把 Claude Code 自调用、Claude Code 调 Codex、Claude Code Loop 拆成多个 skill 会复制这些不变量,并让 agent 在相邻 trigger 之间摇摆。

只有运行时归属不同的时候才拆 skill。Claude Code 侧自调用、调 Codex 和 Loop 执行放在本文件;Codex 侧自调用、调 Claude Code 和 Loop 执行放在 codex_self_evoke_call_claude_code_loopcodex_schedule_loop 是 Codex 调度面参考,不作为 Claude Code 业务调用入口。若上层存在 workflow_controller_loop,本文件不重新定义需求、review verdict 或 final boundary。

运行时契约

工具路由

生产脚本优先走 cli_agent。它统一处理 token pre-flight、context overflow、quota 文本识别、cooldown、fallback 和 durable result。工具路径查 tools/INDEX.md

Claude Code 调用 Claude Code:

python3 tools/cli_agent/router.py \
  --task-name claude-subtask \
  --primary claude-zai:high \
  --fallback claude-kimi:medium claude:high \
  < prompt.md

Claude Code 调用 Codex:

python3 tools/cli_agent/router.py \
  --task-name codex-subtask \
  --primary codex:xhigh \
  --fallback claude-zai:high claude-kimi:medium claude:high \
  < prompt.md

直接 CLI 只用于 harness 边界测试、CLI 行为验证、或 router 本身不可用的临时诊断。

直接调用 Claude Code

Wrapper 调用方式:

env -u CLAUDECODE claude-zai -p \
  --setting-sources "user,project" --strict-mcp-config \
  --max-turns 20 \
  --output-format json \
  --permission-mode acceptEdits \
  < prompt.md > /tmp/claude_result.json 2> /tmp/claude_stderr.log

Kimi 订阅可换成 claude-kimi -p:前台主 session/Opus 使用 k3(1M),Sonnet、Haiku 与普通 sub-agent 使用 kimi-for-coding(K2.7 Coding,256K)。Native Claude high profile:

env -u CLAUDECODE claude -p \
  --model "$LLM_CLAUDE_HIGH_CLI_MODEL" \
  --setting-sources "user,project" --strict-mcp-config \
  --max-turns 20 \
  --output-format json \
  < prompt.md > /tmp/claude_result.json 2> /tmp/claude_stderr.log

从 Python 等宿主直接设置环境变量时,先加载 llm_runtime 的 provider env,再设置 ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKENANTHROPIC_MODELANTHROPIC_DEFAULT_{SONNET,OPUS,HAIKU}_MODELANTHROPIC_SMALL_FAST_MODEL。Kimi 还需要 ENABLE_TOOL_SEARCH=false

直接调用 Codex

codex exec \
  --model "$LLM_CODEX_XHIGH_MODEL" \
  --config "model_reasoning_effort=\"$LLM_CODEX_XHIGH_REASONING\"" \
  --sandbox workspace-write \
  --cd ~/context-infra \
  --json \
  --output-last-message /tmp/codex_last_message.txt \
  - < prompt.md

GPT-5.6 的 exact wire efforts 是 low / medium / high / xhigh / max / ultra(Luna 当前到 max)。OpenAI 原生默认是 Sol + medium;本仓库 no-special-request policy 是 xhigh。对外可写 x-high,但 CLI 必须传 xhigh。Max 是最大单-agent推理,Ultra 还会自动委派 subagent。

Codex 不接收 Claude Code 的隐藏推理。跨工具交接只通过 prompt 文件、输入文件列表、结果文件和 git diff。

Claude Code Runtime Loop 契约

Loop 是可恢复的任务执行形态,不是简单地重复调用 agent。已有 Claude Code loop 任务的共同模式是:每一轮只推进一个明确目标,轮末把证据和下一步写回磁盘;下一轮必须能只靠文件状态恢复,不依赖上一轮对话还在上下文里。

Claude Code Loop 必须满足:

  1. 为任务建立稳定目录,优先使用已有任务目录;ad-hoc 任务放在 adhoc_jobs/<slug>_<YYYYMMDD>/。创建新的顶层 adhoc_jobs/ 目录前,遵守 rules/WORKSPACE.md 的 adhoc job 自检和复用判断。
  2. 维护 PROGRESS.md 记录当前 loop 状态、已完成项、阻塞点和证据路径。
  3. 维护 HANDOFF.md 记录下一轮启动条件、下一步动作、停止条件和是否需要 ScheduleWakeup。
  4. 每轮执行顺序固定为:读状态文件 -> 选一个 bounded objective -> 用本 skill 的 Self Evoke 或 Call Codex 执行 -> 写 artifact/log/evidence -> 更新 PROGRESS.mdHANDOFF.md -> 写 runtime proposal/receipt。若上层有 workflow_controller_loop,业务 stop / schedule / wait user 由 Controller 决定;若没有 Controller,才由本 runtime loop 决定。
  5. 需要自动继续且条件明确时,使用 Claude Code 的 ScheduleWakeup / Monitor 表达下一轮;如果等待用户判断或外部输入,只写 HANDOFF.md,不创建自动 wakeup。
  6. Loop 结果必须有 durable evidence,例如报告、diff、测试日志、JSON 结果或引用路径;不能只把“已完成”留在聊天里。

现有任务中的可复用模式:

调用模式

模式Claude Code 设置工具成功检查
调研--max-turns 20+--output-format jsonBash,Read,Glob,Grep,WebSearch,WebFetch结论引用文件或 URL,重要发现落盘
编辑--permission-mode acceptEdits--max-turns 10+Read,Edit,Write,Bash,Glob,Grepgit diff 只含目标改动,产出可验证
E2E/测试可用 medium/low tier,显式 --allowedTools目标 MCP 或本地测试工具有命令输出、日志、失败原因
Judge/Eval--max-turns 5、通常 medium tier一般不给工具,证据放 prompt输出 PASS/FAIL JSON,evidence 引用 appendix
Loop每轮独立 prompt,必要时 ScheduleWakeup本 skill 的自调用 / 调 Codex 路由PROGRESS.mdHANDOFF.md 和 evidence 全部更新

Judge 必须和 Execute 分离。Execute 负责产出 artifact,Judge 读取 rubric 和 evidence 做二元判定。Rubric 要写 PASS 条件、FAIL 条件、critical check,避免只给主观评分。

提示词与结果交接

失败处理

失败必需处理
请求成功但返回 quota 文本当作 provider quota failure,记录 quota scope 后 fallback
Claude Code 子进程继承 CLAUDECODEenv -u CLAUDECODE
静默挂死或 MCP 初始化卡住使用 --setting-sources "user,project" --strict-mcp-config
Claude wrapper context 溢出先交给 router;直接调用时降低注入或换更大 context tier
permission_denials 非空补齐 --allowedTools 或缩小任务
error_max_turns增加 --max-turns,或拆任务
Codex --output-last-message 为空当作 empty result,进入 fallback
模型升级只改 llm_runtime 配置

验收标准

一次调用算完成,必须同时满足:

  1. 选择的执行面与运行时归属匹配:Claude Code 侧 Self Evoke、Call Codex、Loop 用本 skill;Codex 侧自调用、调 Claude Code 或 Loop 执行转 codex_self_evoke_call_claude_code_loop
  2. 使用 tier alias 和 llm_runtime,没有在业务代码里硬编码新模型 ID。
  3. Claude Code 子进程清掉 CLAUDECODE,真实任务加载 user/project settings 并启用 strict MCP config。
  4. Codex 直接调用已用当前 codex exec --help 校验 flags,并写入 --output-last-message;不复制 stale --ask-for-approval 写法。
  5. 每个 Claude/Codex agent run 都确认保存了 session/chat 记录;没有使用 --no-session-persistence--ephemeral
  6. 结果有 durable output、stderr 或日志;失败能进入 fallback 或给出可复查原因。
  7. Loop 任务更新 PROGRESS.md / HANDOFF.md / evidence,并明确下一轮的 runtime proposal;Controller 管理下的任务不由 runtime skill 单独裁决业务 closure。

← 返回术层 skill 索引 · 返回方法论区