在 Claude 上运行无限量 OpenClaw
OpenClaw 是一个多渠道 AI gateway,可以通过 hub-and-spoke 架构把 Claude 接入 50 多种消息渠道。每个渠道都是一个独立的推理入口:Telegram bot、Discord server、Slack workspace、网页 widget,以及各种自定义集成都可以路由到你自己基础设施上运行的中心 gateway。OpenClaw 会把 skills 注入 system prompt,而这些渠道通常不会关闭,所以它代表的是持续在线、不断消耗 API 的使用模式;调用量会随着活跃渠道数和用户数线性增长。对于这种场景,使用 AI Prime Tech Unlimited 这样的 Claude API gateway,可以把 claude api价格 从按 token 波动变成更可控的固定成本。
OpenClaw 的常驻在线架构
OpenClaw 采用 hub-and-spoke gateway 架构。hub 是一个中心进程,通常运行在 VPS 的 18789 端口,负责管理模型配置、skills 注入、请求路由、上下文拼接和响应分发。spoke 则是各个 channel connector,每个 connector 都会与某个消息平台保持持久连接,并把用户发来的消息转发给 hub 做 inference。换句话说,OpenClaw 不是一个只在开发者手动触发时才工作的 CLI 工具,而是一个长期挂在线上的多渠道 Claude API 服务层。
每一个 channel 都可以理解为一个开放的 inference faucet。只要任意已连接平台上有用户发消息,channel connector 就会把消息交给 hub;hub 会构造完整 prompt,包括 system prompt、已启用的 skills、conversation history 和当前 user message,然后发送给 Claude,再把结果 stream 回原始渠道。这里没有传统意义上的集中排队或批处理逻辑,每条消息都希望得到即时推理,因此延迟、稳定性和 API 可用性会直接影响最终用户体验。
OpenClaw gateway 不会“睡眠”。只要进程在运行,50+ channel 都处于可接收消息的状态,任何 incoming message 都可能触发一次 Claude API call。与 IDE 插件、交互式 coding assistant 这类只有开发者工作时才消耗 token 的工具不同,OpenClaw 的消耗来自所有渠道上的所有用户。一个活跃部署每天产生数百到数千次请求很常见,如果每次都按 token 精细计费,成本会很难预测。对严肃生产部署来说,claude无限使用 或 claude无限额度 不是单纯的便利,而是让服务可持续运营的经济前提。
如果你正在评估购买claude api,OpenClaw 是一个很典型的高频、多入口、长期在线场景。普通 per-token 账单适合低频测试,但当 Telegram、Discord、Slack、web widget 同时接入后,真实成本往往来自不可控的用户消息峰值。通过 AI Prime Tech Unlimited 这种 claude api中转,把请求统一转到 https://claudeapikey.dev,可以让团队更专注于渠道体验、skills 设计和模型策略,而不是每次上线新 channel 都重新计算预算。
openclaw.json 中的 Provider 配置
OpenClaw 的模型配置位于 ~/.openclaw/openclaw.json,核心位置是 models.providers block。每个 provider entry 至少需要包含 name、api field、baseUrl 和 apiKey。对于 Claude,api 必须显式设置为 'anthropic-messages',不要依赖默认值,因为 OpenClaw 不会自动猜到你要使用 Claude Messages API。baseUrl 指向你的 Claude API gateway,apiKey 用于认证,这就是 OpenClaw 发起所有上游请求时使用的 claude api密钥。
baseUrl 应设置为 https://claudeapikey.dev,也就是 root host,不要额外加 /v1。anthropic-messages handler 会自动拼接正确路径;如果你手动加了 /v1,反而可能导致路径重复或请求失败。apiKey 可以直接写入配置,也可以通过环境变量插值使用 ${ENV_VAR} 语法。生产环境更推荐后者,例如把 apiKey 设置为 '${UNLIMITED_API_KEY}',然后在 shell、Docker env 或 systemd unit 中 export 对应变量,这样密钥不会明文落在配置文件里。
Provider 配置还可以传入 custom headers。你可以使用 headers 字段传 anthropic-beta flags,或者传一些自定义 routing headers。比如 headers: {'anthropic-beta': 'max-tokens-3-5-sonnet-2024-07-15'} 可以为支持的模型启用更长输出。通过 Unlimited gateway 时,常规 Anthropic header 行为不需要额外改造;只要上游模型支持,OpenClaw 就可以继续按 anthropic-messages 格式发送请求。
很多开发者会搜索 免费claude api 来做 PoC,但 OpenClaw 这种常驻在线系统不太适合长期依赖免费额度或临时 key。免费测试可以验证连接方式、prompt 拼接和 channel connector 是否工作,但一旦接入真实用户,你更需要稳定、可续费、额度清晰的方案。AI Prime Tech Unlimited 的价值在于把 OpenClaw 的 provider 变成一个可预测的中转层:本地 OpenClaw 仍然按 Claude API 风格调用,上游由 gateway 负责承接。
Model Entries 与 api 字段要求
OpenClaw 配置里最容易踩坑的一点是:每个 Claude model entry 的 api 字段必须显式设置为 'anthropic-messages'。如果遗漏,OpenClaw 可能会回退到通用 completion 格式,而这个格式与 Claude Messages API 不兼容。表现出来的错误经常很迷惑,例如看起来像连接失败、response parsing failed、unexpected 400,或者 API 返回结构不符合预期;实际根因往往只是 request format mismatch。
Model entries 应定义在 openclaw.json 的 models.models 下。每个 entry 引用一个 provider name,并指定对应的 model ID。你可以为不同 Claude 变体建立多个 entry:例如把 claude-sonnet-4-5 作为大多数 channel 的默认模型,把 claude-opus-4-6 分配给需要更强 reasoning 的技术支持或复杂问答渠道,把 claude-haiku-4-5 用在高并发、重速度、轻深度的通知或简单回复场景。
不同 channel 可以绑定不同模型。客户支持 channel 可以使用 Sonnet,以便在质量、速度和稳定性之间取得平衡;技术文档或工程问答 channel 可以使用 Opus,让复杂解释、代码分析和排障建议更可靠;提醒类、欢迎语、简单 FAQ channel 可以使用 Haiku,获得更快响应。在 per-token 模式下,这种模型分层往往会被成本约束影响;在 claude无限额度 或固定费率方案下,你可以更多根据质量需求和用户体验来分配模型。
建议为每个模型 entry 采用清晰、短小、语义明确的名称,例如 sonnet、opus、haiku,而不是把完整 model ID 复制到 channel 配置里。这样后续升级模型版本时,只需要修改 models.models 中的 model 字段,channel 级别的引用可以保持不变。对于团队协作,这也能减少拼写错误和配置漂移。
运行在 18789 端口的 Hub-and-Spoke Gateway
OpenClaw gateway 默认通常运行在 18789 端口,也可以在 openclaw.json 的 server.port 下调整。它会暴露一个 REST API,供 channel connector 提交消息并接收响应。gateway 内部负责 prompt construction、model selection、conversation history management 和 response streaming;channel connector 不需要理解 Claude 的完整消息格式,只需要把平台消息标准化后交给 hub。
部署时建议把 gateway 放在稳定的 VPS 上,并按 24/7 运行来设计。只要 gateway 停止,所有 channel 的响应能力都会受影响。使用 systemd 或 Docker 来保证 crash 后自动 restart 是基本要求。OpenClaw 本身对 CPU 和内存并不重,瓶颈通常是 upstream API call latency,而不是本地处理能力。一个小型 VPS,例如 1 CPU、1 GB RAM,通常就能支撑几十个并发 channel,前提是网络质量稳定。
gateway 会维护 conversation histories,默认可以在内存中管理,也可以配置持久化到磁盘或 Redis。每个活跃 conversation 都有独立且不断增长的 context;当你同时运行 50 个 channel,并且每个 channel 都有多个活跃用户时,系统可能维护数百个并发 conversation states。OpenClaw 会根据 TTL、history length 等配置自动裁剪旧上下文,避免 context 无限增长。
从架构视角看,AI Prime Tech Unlimited 扮演的是 OpenClaw hub 的上游 Claude API gateway。你的 channel connector 和 hub 都部署在自己的基础设施中,所有 Claude 请求集中从 hub 发往 https://claudeapikey.dev。这样的 claude api中转模式让你可以把平台接入、权限控制、日志、skills 和上下文管理留在本地,同时把 Claude 调用统一接入一个稳定的 unlimited endpoint。
Skills 注入与 System Prompt 管理
OpenClaw 的 skills system 会在每次请求中把特定能力指令注入 system prompt。Skills 通常定义为 skills 目录下的文本文件,可以分配给特定 channel,也可以设置为全局生效。每个 skill 都会给 Claude 提供额外上下文,帮助它用符合场景的方式回答,例如客户支持语气、技术文档风格、特定产品知识、合规要求、升级路径或某个社区的沟通规则。
需要注意的是,每个 skill 都会给每个分配到它的请求增加 token。一个启用了五个 active skills 的 channel,可能在加入 conversation history 之前,就已经向 system prompt 增加 2,000 到 5,000 tokens。如果你有 50 个 channel,并且不同 channel 启用了不同组合的 skills,每天的 skill overhead 会相当可观。按 token 计费时,团队往往会被迫压缩 skills 内容;使用 unlimited 方案后,你可以更放心地编写完整、清晰、可维护的 skills,而不是为了省钱牺牲行为一致性。
Skills 还可以通过 template variables 注入动态内容。OpenClaw 支持在 skill text 中插入 user information、channel context、time-of-day 和 custom variables。动态注入发生在 request time,因此 skills 能拿到当前用户、当前 channel、当前时间等最新信息。这种设计允许你实现非常细粒度的 per-channel behavior,而不必写大量复杂 routing logic。
对于中文开发者和运营团队来说,skills 也是把 Claude 适配到本地业务语境的关键位置。你可以在 skills 中定义中文客服规范、内部产品术语、SLA 规则、升级工单格式、代码审查标准或社区管理语气。只要 OpenClaw 通过稳定的 claude api密钥 访问 Unlimited gateway,这些复杂 prompt 不会因为单次请求成本过高而被频繁删减。
Channel 配置与扩展方式
OpenClaw 的每个 channel 可以写在 openclaw.json 的 channels section 中,也可以拆到独立 channel config files。一个 channel entry 通常会指定 platform type,例如 telegram、discord、slack、web 或 custom;同时还包括该平台的 authentication credentials、要使用的 model、分配的 skills,以及 conversation management settings,例如 history length、TTL、persona 等。
扩展是线性的:每增加一个 channel,就多一个开放的 inference endpoint。添加一个 Telegram bot,就是新增一个 channel;添加一个 Discord server,如果监控多个频道,可能一次新增十个 channel。每个被监控的 Discord channel 都是独立 conversation stream,有自己的 context。一个包含 Discord、Telegram、Slack 和 web widgets 的大型 OpenClaw 部署,很容易达到 50 到 100 个活跃 inference endpoints。
在 per-token billing 下,扩展 channel 基本等于直接扩展成本。每个新 channel 都会根据消息量带来成比例的 API expense,尤其是包含较长 conversation history 和多个 skills 时更明显。在 unlimited 模式下,你可以在 fair-use rate limits 范围内更自由地扩展 channel:新增平台、新 bot、新 widget、新内部工具入口,都由固定费率覆盖。真正需要关注的约束通常变成每分钟 rate limit,而这个限制对大多数多渠道部署来说已经足够宽松。
如果你正在比较 claude api价格,不要只看单次请求价格,还要把 channel 数、平均消息长度、system prompt 长度、skills token、history token 和峰值并发放到一起估算。OpenClaw 的成本模型不是“一个用户偶尔问一句”,而是“多个平台随时有人问”。因此,购买claude api 时选择支持长期在线和多渠道高频调用的 gateway,会比单纯追求短期免费额度更实际。
OpenClaw 部署排障
最常见的配置错误,是忘记在 model entries 中设置 api: 'anthropic-messages'。没有这个字段时,OpenClaw 会使用错误请求格式,并从 API 收到难以理解的错误。如果你看到 response parsing failures、unexpected 400 errors、Claude 返回结构异常,或者日志里像是 connection failed,第一步应该检查 api 字段。它必须显式设置;对于 Claude models,不存在一个一定正确的默认 API 格式。
如果某些 channel 失败而其他 channel 正常,问题通常出在 channel-level model assignment。常见情况是 channel 指向了一个不存在的 model entry,或者 model 名称有拼写错误。OpenClaw 启动时不一定会完整验证所有 model references,错误可能直到该 channel 真的发请求时才暴露。排查时要确认每个 channel 的 model reference 与 models.models 中的 entry name 完全一致,包括大小写和连字符。
在多 channel 高负载下遇到 rate limit errors 时,要记住所有 channel 通常共享同一个 API key 和 rate limits。如果 50 个 channel 在高峰期同时活跃,合并后的 request rate 可能超过 fair-use limits。gateway 会通过 queue 和 retry 处理 429 responses,这会增加延迟,但通常不会丢消息。对于非常高流量的生产部署,可以联系 AI Prime Tech 申请更高的 rate allocations。
另一个常见问题是环境变量没有被 OpenClaw 进程读取。你在交互式 shell 中 export 了 UNLIMITED_API_KEY,并不代表 systemd service 或 Docker container 内也能访问它。用 systemd 时应在 unit 文件中配置 Environment 或 EnvironmentFile;用 Docker 时应通过 env_file 或 -e 注入。确认 claude api密钥 是否生效时,可以先查看 OpenClaw 启动日志,再用单个低风险 channel 发送测试消息。
最后,建议把 OpenClaw 的日志、gateway upstream error、channel connector 状态和重启策略一起纳入监控。OpenClaw 是常驻系统,问题经常不是一次性配置错误,而是网络抖动、平台 webhook 变化、上游 rate limit、密钥轮换或单个 channel 消息暴涨导致。稳定的 claude api中转 能减少上游接入复杂度,但本地 hub 和各个 spoke 的运行状态仍然需要持续观测。
// ~/.openclaw/openclaw.json
{
"models": {
"providers": {
"unlimited": {
"api": "anthropic-messages",
"baseUrl": "https://claudeapikey.dev",
"apiKey": "${UNLIMITED_API_KEY}"
}
},
"models": {
"sonnet": { "provider": "unlimited", "model": "claude-sonnet-4-5" },
"opus": { "provider": "unlimited", "model": "claude-opus-4-6" },
"haiku": { "provider": "unlimited", "model": "claude-haiku-4-5" }
}
},
"server": { "port": 18789 }
}
# 重要:必须配置 api: "anthropic-messages"
# 如果缺少它,OpenClaw 会使用错误的请求格式
FAQ
为什么必须显式把 api 设置为 anthropic-messages?
因为 OpenClaw 不会自动默认到某个特定 API 格式。没有 api: 'anthropic-messages' 时,它可能使用与 Claude Messages API 不兼容的通用 completion 格式。结果看起来像连接错误或解析失败,实际是格式不匹配。每个 Claude model entry 都应显式设置该字段。
OpenClaw 在 unlimited 方案下能承载多少 channel?
gateway 侧没有固定的硬性 channel 数限制。实际约束主要是 fair-use rate limit,因为所有 channel 通常共享同一个 API key。大多数 50-100 个 channel 的部署,在正常使用量下都能保持在限制内;遇到流量峰值时,gateway 会排队多余请求,并在 rate window 重置后重试。
每个 channel 都会维护独立 conversation history 吗?
会。每个 channel 以及 channel 内的每个用户都有独立 conversation context。gateway 会在内存中管理这些 histories,并支持配置 TTL。一个 50 个 channel、每个 channel 多个活跃用户的部署,可能同时维护数百个 conversation states。
可以用环境变量插值配置 API key 吗?
可以。在 openclaw.json 中把 apiKey 设置为 '${ENV_VAR_NAME}',OpenClaw 启动时会从进程环境变量中解析它。这样可以避免把 claude api密钥 写进配置文件,尤其适合 Docker、systemd 或 CI/CD 注入 secrets 的部署方式。
如果 gateway 进程崩溃会怎样?
所有 channel 都会断开,直到进程重启前消息可能无法处理。建议使用 systemd 的 Restart=always,或 Docker 的 restart: unless-stopped 来保证自动恢复。如果 conversation histories 只存在内存中,崩溃后会丢失;重要部署应启用磁盘或 Redis 持久化。
Get an API key — no Anthropic account or waitlist required.
Get your API key