跳转至

CLI 后端和 APNs 通道

实时:CLI 后端冒烟测试(Claude、Gemini 或其他本地 CLI)

  • 测试:src/gateway/gateway-cli-backend.live.test.ts
  • 目标:使用本地 CLI 后端验证 Gateway + agent 流水线,而不触碰你的默认配置。
  • 后端特定的冒烟测试默认值由所属插件的 cli-backend.ts 定义提供。
  • 启用方式:
  • pnpm test:live(或直接调用 Vitest 时使用 OPENCLAW_LIVE_TEST=1)
  • OPENCLAW_LIVE_CLI_BACKEND=1
  • 默认值:
  • 默认提供商/模型:claude-cli/claude-sonnet-4-6
  • 命令/参数/图片行为来自所属 CLI 后端插件的元数据。
  • 覆盖选项(可选):
  • OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6"
  • OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/claude"
  • OPENCLAW_LIVE_CLI_BACKEND_ARGS='["-p","--output-format","json"]'
  • OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1 用于发送真实图片附件(路径会被注入到 prompt 中)。在 Docker 配方中默认关闭。
  • OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image" 用于将图片文件路径作为 CLI 参数传递,而不是注入到 prompt 中。
  • OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(或 "list")用于在设置了 IMAGE_ARG 时控制图片参数的传递方式。
  • OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1 用于发送第二轮对话并验证恢复流程。
  • OPENCLAW_LIVE_CLI_BACKEND_CACHE_PROBE=1 用于先运行一次全新的 Claude CLI 回合、一次带工具的预热恢复和一次无工具的收尾恢复,然后要求后续的脏工作区恢复至少达到 90% 的 prompt 缓存复用。它还验证思考级别变化会轮换实时会话的 generation(代次),并且下一次稳定恢复会重新达到至少 90% 的复用率。此探测会禁用图片、MCP 和模型切换探测。
  • OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1 用于在所选模型支持切换目标时,选择启用 Claude Sonnet -> Opus 同会话连续性探测。默认关闭,包括 Docker 配方。
  • OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1 用于选择启用 MCP/工具回环探测。在 Docker 配方中默认关闭。

示例:

  OPENCLAW_LIVE_CLI_BACKEND=1 \
  OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6" \
  pnpm test:live src/gateway/gateway-cli-backend.live.test.ts

低成本 Gemini MCP 配置冒烟测试:

OPENCLAW_LIVE_TEST=1 \
  pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.ts

这不会要求 Gemini 生成响应。它会写入 OpenClaw 提供给 Gemini 的相同系统设置,然后运行 gemini --debug mcp list,以证明已保存的 transport: "streamable-http" 服务器会被归一化为 Gemini 的 HTTP MCP 形式,并且可以连接到本地的 streamable-HTTP MCP 服务器。

Docker 配方:

pnpm test:docker:live-cli-backend

单一提供商 Docker 配方:

pnpm test:docker:live-cli-backend:claude
pnpm test:docker:live-cli-backend:claude:cache
pnpm test:docker:live-cli-backend:claude-subscription
pnpm test:docker:live-cli-backend:gemini

注意:

  • Docker 运行器位于 scripts/test-live-cli-backend-docker.sh。
  • pnpm test:docker:live-cli-backend:claude:cache 需要 Anthropic API 密钥认证。它会为每次缓存探测恢复记录标准化的缓存使用量,并要求收尾后的脏工作区恢复以及思考级别变更后的稳定恢复都至少达到 90% 的复用率。
  • 它会在仓库 Docker 镜像中,以非 root 的 node 用户身份运行实时 CLI 后端冒烟测试。
  • 它会从所属插件解析 CLI 冒烟测试元数据,然后将匹配的 Linux CLI 包(@anthropic-ai/claude-code 或 @google/gemini-cli)安装到 OPENCLAW_DOCKER_CLI_TOOLS_DIR(默认:~/.cache/openclaw/docker-cli-tools)下的缓存可写前缀目录中。
  • codex-cli 不再是捆绑的 CLI 后端;请改用带 Codex 应用服务器运行时的 openai/*(参见实时:Codex 应用服务器 harness 冒烟测试)。
  • pnpm test:docker:live-cli-backend:claude-subscription 需要可通过 ~/.claude/.credentials.json 中的 claudeAiOauth.subscriptionType 或来自 claude setup-token 的 CLAUDE_CODE_OAUTH_TOKEN 来使用便携式 Claude Code 订阅 OAuth。它首先在 Docker 中验证直接的 claude -p,然后运行两次 Gateway CLI 后端回合,且不保留 Anthropic API 密钥环境变量。此订阅通道默认禁用 Claude MCP/工具和图片探测,因为它会消耗已登录订阅的使用额度,而且 Anthropic 可能在未发布 OpenClaw 新版本的情况下改变 Claude Agent SDK / claude -p 的计费和限流行为。
  • Claude 和 Gemini 通过上述标志支持相同的探测集合(文本回合、图片分类、MCP automations 工具调用、模型切换连续性),但这些探测默认都不会运行——请根据需要逐个标志选择启用。

实时:APNs HTTP/2 代理可达性

  • 测试:src/infra/push-apns-http2.live.test.ts
  • 目标:通过本地 HTTP CONNECT 代理隧道连接到 Apple 的沙盒 APNs 端点,发送 APNs HTTP/2 校验请求,并断言 Apple 真实返回的 403 InvalidProviderToken 响应会通过代理路径返回。
  • 启用方式:
  • OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
  • 可选超时:
  • OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw