本页内容

本页内容

测试和CI

CLI 后端和 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:claudepnpm test:docker:live-cli-backend:claude:cachepnpm test:docker:live-cli-backend:claude-subscriptionpnpm 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)。
  • 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
本页有帮助吗?