让OpenClaw用上gpt-5.3-codex-spark
Codex Spark 别吃灰,OpenClaw 来续杯
五一期间,笔者把 pro 订阅套餐的周常规额度用完,只剩下
codex-spark的额度,试用下来的效果不怎么理想,一边啃一边想着 spark 套餐有什么使用场景,转头看向了 OpenClaw 的常规 agent,正好可以给 gpt-5.5 减负。

说做就做,我把 gpt-5.3-codex-spark 写进了 OpenClaw 配置,保存后看起来一切正常。可过一会儿再看,它不见了,像是 OpenClaw 自己把我的改动“回滚”了。
一开始我以为是配置写错,或者命令没生效。后来翻了一圈源码和相关 PR,才发现不是这么回事。
开源代码好自查
在本机安装的 OpenClaw 里,找到了这样一段 suppression:
1 2 3 provider: openai-codexmodel: gpt-5.3-codex-sparkreason: gpt-5.3-codex-spark is no longer exposed by the OpenAI or Codex catalogs. Use openai/gpt-5.5.
位置在:
1 /opt/homebrew/lib/node_modules/openclaw/dist/extensions/openai/openclaw.plugin.json
所以不是 OpenClaw 不认识 gpt-5.3-codex-spark ,而是它被主动隐藏了。
一条 PR 见分岔
早在3月份就有 OpenClaw issue 46734[1] 讨论 Spark、failover 和 OAuth profile cooldown 的问题。
近期也有相关 OpenClaw PR 73694[2] 来实现 Restore Codex OAuth model routes 。
作者的意思是:public OpenAI API 和 Azure 路由可以继续隐藏,但 Codex OAuth 这条路应该恢复。
因为在他的环境里,Codex CLI 还能直接跑:
1 codex exec -m gpt-5.3-codex-spark --sandbox read-only --ephemeral "Reply with exactly OK."
返回:
1 OK
为啥还要关掉它
维护者 steipete 的态度比较保守,他的 suppression 是有意为之,不是误伤,理由主要有三个:
第一,OpenAI public API 不暴露 gpt-5.3-codex-spark。因为 GET /v1/models/gpt-5.3-codex-spark 返回的是 404 model_not_found。
第二,OpenAI API 模型文档[3] 里有 gpt-5.3-codex,但没有 gpt-5.3-codex-spark。
第三,Spark 官方介绍[4] 和 Codex rate card[5] 的措辞,更像 limited research preview / may be available,而不是稳定的 catalog model。
他最关键的一句话是:
The Codex CLI may still accept the model string for some account/session preview routes, but that is not enough for OpenClaw to publish a static
openai-codex/gpt-5.3-codex-sparkroute again.
也就是说维护者更担心:“一旦放进默认列表,就等于告诉所有人它稳定可用。”
就笔者这次遇到的场景看,它更像是只对 Pro 订阅用户开放。
开源补丁自己打
OpenClaw 是开源代码,并且还有前人提供的 PR,完全可以临时 patch。当前版本的 manifest 把模型目录放在 modelCatalog.providers 下面,下面这段脚本会先校验结构,再备份 manifest,把 Spark 加回 openai-codex.models,并移除 openai-codex/gpt-5.3-codex-spark 这一条 suppression。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 python3 - <<'PY'import json, os, shutilfrom datetime import datetimefrom pathlib import PathPROVIDER = 'openai-codex'MODEL = 'gpt-5.3-codex-spark'DEFAULT = '/opt/homebrew/lib/node_modules/openclaw/dist/extensions/openai/openclaw.plugin.json'def need(obj, key, typ): val = obj.get(key) if not isinstance(val, typ): raise SystemExit(f'unsupported manifest schema: {key}') return valpath = Path(os.getenv('OPENCLAW_PLUGIN_MANIFEST') or DEFAULT)if not path.exists(): raise SystemExit(f'manifest not found: {path}')data = json.loads(path.read_text(encoding='utf-8'))catalog = need(data, 'modelCatalog', dict)provider = need(need(catalog, 'providers', dict), PROVIDER, dict)models = provider.setdefault('models', [])suppressions = need(catalog, 'suppressions', list)if not isinstance(models, list): raise SystemExit(f'unsupported manifest schema: {PROVIDER}.models')changed = Falseif not any(isinstance(m, dict) and m.get('id') == MODEL for m in models): models.append({ 'id': MODEL, 'name': MODEL, 'reasoning': True, 'input': ['text'], 'contextWindow': 128000, 'contextTokens': 128000, 'maxTokens': 128000, 'cost': {'input': 0, 'output': 0, 'cacheRead': 0, 'cacheWrite': 0}, }) changed = Truekept = [ s for s in suppressions if not (isinstance(s, dict) and s.get('provider') == PROVIDER and s.get('model') == MODEL)]if len(kept) != len(suppressions): catalog['suppressions'] = kept changed = Trueif not changed: print(f'already patched: {path}') raise SystemExit(0)backup = path.with_name(path.name + '.bak-' + datetime.now().strftime('%Y%m%d%H%M%S'))shutil.copy2(path, backup)path.write_text(json.dumps(data, indent=2, ensure_ascii=False) + '\n', encoding='utf-8')print(f'patched: {path}')print(f'backup: {backup}')PY
然后验证:
1 2 openclaw models list --all --provider openai-codex --plain | grep gpt-5.3-codex-sparkopenclaw config validate
如果能看到:
1 openai-codex/gpt-5.3-codex-spark
就可以把它加进 fallback:
1 openclaw models fallbacks add openai-codex/gpt-5.3-codex-spark
或设成默认模型:
1 openclaw models set openai-codex/gpt-5.3-codex-spark
了解事项不麻爪
这个方法有两个注意事项:
-
1. 升级版本会覆盖,我们改的是 OpenClaw 安装包里的 dist 文件。使用 openclaw update、brew upgrade、npm reinstall,或者重新安装 OpenClaw,都可能把补丁冲掉; -
2. 能出现在模型列表里,不等于一定能真实调用成功。
这次 patch 只是让 OpenClaw 不再隐藏:
1 openai-codex/gpt-5.3-codex-spark
能不能跑,取决于你的 Codex OAuth 账号。
总结还要叨一下
这件事最有意思的地方,其实不是那段 patch 脚本,它暴露的只是 AI 工具生态里的一个断层。
产品页可能显示你有 Spark 额度,Codex CLI 也能真的跑,usage 里还能看到记录。
但 public API catalog 不一定承认它,第三方工具维护者也不一定愿意默认暴露它,gpt-5.3-codex-spark 就卡在这里。
所以我的建议很简单:想尝鲜,可以本机 patch 一下,最好只放 fallback。
想长期稳定,就等官方 catalog、OpenClaw upstream,或者自己维护 fork。
对了,使用 ccs 的小伙伴还可以将 spark 因地制宜地配置在 Haiku 上。

引用链接
[1] OpenClaw issue 46734: https://github.com/openclaw/openclaw/issues/46734[2] OpenClaw PR 73694 – Restore Codex OAuth model routes: https://github.com/openclaw/openclaw/pull/73694[3] OpenAI API docs – gpt-5.3-codex: https://developers.openai.com/api/docs/models/gpt-5.3-codex[4] Introducing GPT-5.3 Codex Spark: https://openai.com/index/introducing-gpt-5-3-codex-spark/[5] Codex rate card: https://help.openai.com/en/articles/20001106-codex-rate-card
夜雨聆风