---
summary: "实时 CLI 后端烟雾(Claude、Gemini、其他本地 CLI)和 APNs HTTP/2 代理可达性检查"
title: "CLI 后端和 APNs 通道"
read_when:
- "您正在根据本地 CLI 后端验证网关"
- "您正在通过 HTTP CONNECT 代理检查 APNs 可达性"
---
## Live: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`
- 默认值:
- 默认provider/model:`claude-cli/claude-sonnet-4-6`
- Command/args/image 行为来自拥有的 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` 用于发送真实图像附件(路径会注入到提示词中)。默认在 Docker 配方中关闭。
- `OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"` 用于将图像文件路径作为 CLI 参数传递,而不是注入到提示词中。
- `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% 的提示缓存重用。它还验证了思维层面的变化会轮换实时会话生成,并且下一个稳定的恢复会恢复至少 90% 的重用。此检查禁用图像、MCP 和模型切换检查。
- 当所选模型支持切换目标时,`OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1` 选择加入 Claude Sonnet -> Opus 同一会话连续性检查。默认关闭,包括在 Docker 配方中。
- `OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1` 选择进入 MCP/tool 环回检查。在 Docker 配方中默认关闭。
示例:
```bash
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 配置冒烟测试:
```bash
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 配方:
```bash
pnpm test:docker:live-cli-backend
```
单提供商 Docker 配方:
```bash
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-key 身份验证。它记录每个缓存检查恢复的规范化缓存使用情况,并要求结算后脏工作空间恢复和思维级别更改后的稳定恢复至少有 90% 的重用。
- 它以非 root `node` 用户身份在存储库 Docker 映像中运行实时 CLI- 后端烟雾。
- 它从所属插件解析 CLI 冒烟元数据,然后将匹配的 Linux CLI 软件包(`@anthropic-ai/claude-code` 或 `@google/gemini-cli`)安装到 `OPENCLAW_DOCKER_CLI_TOOLS_DIR` 指定的可写缓存前缀中(默认:`~/.cache/openclaw/docker-cli-tools`)。
- `codex-cli` 不再是捆绑的 CLI 后端;将 `openai/*` 与 Codex 应用程序服务器运行时结合使用(请参阅 [Live:Codex 应用程序服务器工具 Smoke](/help/testing-live/acp-and-codex#live-codex-app-server-harness-smoke))。
- `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`,然后运行两个网关 CLI- 后端轮次,而不保留 Anthropic API-key 环境变量。默认情况下,此订阅通道会禁用 Claude MCP/tool 和图像检查,因为它会消耗登录订阅的使用限制,并且 Anthropic 可以在不发布 OpenClaw 的情况下更改 Claude 代理 SDK / `claude -p` 计费和速率限制行为。
- Claude 和 Gemini 通过上述标志支持相同的检查集(文本翻转、图像分类、MCP `automations` 工具调用、模型切换连续性),但默认情况下不会运行这些检查 - 根据需要选择每个标志。
## 实时:APNs HTTP/2 代理可达性
- 测试:`src/infra/push-apns-http2.live.test.ts`
- 目标:通过本地 HTTP CONNECT 代理隧道连接到 Apple 的 sandbox 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`