OpenClaw + GitHub Copilot GPT-5.4 技术修复指南
概述
本文档记录了如何在 OpenClaw 中使 github-copilot/gpt-5.4 正常工作,当该模型在 OpenCode 中可用但在 OpenClaw 中失败时。
最终解决方案需要:
- 修改
~/.openclaw/openclaw.json配置文件 - 修补已安装的 OpenClaw 运行时包
这是因为问题不仅涉及模型注册,还涉及 OpenClaw 对 GitHub Copilot Responses API 流量的传输路由问题。
症状
调试过程中可能出现以下错误:
症状 1:模型被拒绝
github-copilot/gpt-5.4 ... not allowed
症状 2:IDE 认证头缺失
HTTP 400: bad request: missing Editor-Version header for IDE auth
症状 3:不支持的提供者模式
No API provider registered for api: github-copilot
症状 4:端点错误
HTTP 400: model "gpt-5.4" is not accessible via the /chat/completions endpoint
症状 5:网关不稳定
gateway disconnected: closed | idle
根本原因分析
存在四个独立的问题。
1. 模型配置与白名单不匹配
OpenClaw 可以看到提供者,但 github-copilot/gpt-5.4 未完全连接到智能体默认使用的活动模型配置路径。
2. 缺少 GitHub Copilot IDE 头
GitHub Copilot 需要 IDE 风格的头进行认证。OpenClaw 通过通用的 OpenAI 兼容路径发送请求,因此未包含所需的头。
所需头:
User-Agent: GitHubCopilotChat/0.35.0
Editor-Version: vscode/1.107.0
Editor-Plugin-Version: copilot-chat/0.35.0
Copilot-Integration-Id: vscode-chat
没有这些头,Copilot 返回:
missing Editor-Version header for IDE auth
3. GPT-5.4 不是 Chat Completions 模型
gpt-5.4 必须使用 Responses API,而不是 /chat/completions。
因此对于 gpt-5.4 以下配置是错误的:
{"api":"openai-completions"}
必须改为:
{"api":"openai-responses"}
4. OpenClaw 传输路由仅处理 openai,未处理 github-copilot
即使将 gpt-5.4 更改为 openai-responses,OpenClaw 仍回退到通用流路径,因为其嵌入式运行器仅为 openai 提供者激活了 Responses 传输。
这导致 OpenClaw 继续向 GitHub Copilot GPT-5.4 发送 /chat/completions 请求。
涉及文件
配置文件
~/.openclaw/openclaw.json
已安装的 OpenClaw 运行时包
~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/reply-DhtejUNZ.js
重新应用脚本
~/.openclaw/workspace/ken-patchs/reapply-openclaw-copilot-gpt54-patches.mjs
步骤 1:修复 OpenClaw 配置
更新 ~/.openclaw/openclaw.json 中的 GitHub Copilot 提供者块。
提供者级别要求
使用:
{"baseUrl":"https://api.individual.githubcopilot.com","api":"openai-completions"}
为什么保持提供者 API 为 openai-completions?
- OpenClaw 运行时期望提供者保持在支持的通用适配器路径上
- 将整个提供者切换到
github-copilot会导致运行时/提供者注册失败
GPT-5.4 的模型级别要求
设置 gpt-5.4 模型条目为:
{"id":"gpt-5.4","name":"GPT-5.4","api":"openai-responses","reasoning":true,"input":["text","image"],"cost":{"input":0,"output":0,"cacheRead":0,"cacheWrite":0},"contextWindow":128000,"maxTokens":64000}
智能体模型注册
确保存在以下内容:
{"agents":{"defaults":{"models":{"github-copilot/gpt-5.4":{}}}}}
步骤 2:修补 OpenClaw 以注入 Copilot IDE 头
OpenClaw 需要在发送提供者请求之前附加 Copilot IDE 头。
在 ~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/reply-DhtejUNZ.js 中,在其他提供者包装器附近添加如下包装器:
const GITHUB_COPILOT_IDE_HEADERS = {
"User-Agent": "GitHubCopilotChat/0.35.0",
"Editor-Version": "vscode/1.107.0",
"Editor-Plugin-Version": "copilot-chat/0.35.0",
"Copilot-Integration-Id": "vscode-chat"
};
function createGitHubCopilotHeadersWrapper(baseStreamFn) {
const underlying = baseStreamFn ?? streamSimple;
return (model, context, options) => {
return underlying(model, context, {
...options,
headers: { ...GITHUB_COPILOT_IDE_HEADERS, ...options?.headers }
});
};
}
然后在提供者包装器逻辑中应用它:
if(provider === "github-copilot") agent.streamFn = createGitHubCopilotHeadersWrapper(agent.streamFn);
步骤 3:修补 OpenClaw 以正确路由 GitHub Copilot Responses
找到决定使用哪个流传输的分支。
原始行为:
} else if(params.model.api === "openai-responses" && params.provider === "openai") {
将其替换为:
} else if(params.model.api === "openai-responses" && (params.provider === "openai" || params.provider === "github-copilot")) {
为什么这很重要:
- 修补前,
github-copilot从未进入 Responses 传输分支 - OpenClaw 回退到
streamSimple streamSimple击中/chat/completions- GPT-5.4 拒绝该端点
修补后:
github-copilot+openai-responses使用正确的 Responses 传输- GPT-5.4 不再回退到 Chat Completions
步骤 4:验证并重启
验证配置 JSON
node -e "JSON.parse(require('fs').readFileSync('/home/water/.openclaw/openclaw.json','utf8')); console.log('OK')"
验证修补后的包语法
node --check "~/.nvm/versions/node/v22.22.0/lib/node_modules/openclaw/dist/reply-DhtejUNZ.js"
重启网关
openclaw gateway restart
验证流程
- 将模型设置为
github-copilot/gpt-5.4 - 发送简单提示如
hi - 确认网关保持连接
- 确认以下错误未再次出现:
missing Editor-Version header for IDE auth
model "gpt-5.4" is not accessible via the /chat/completions endpoint
No API provider registered for api: github-copilot
OpenClaw 更新后重新应用
由于运行时修补会覆盖已安装的 OpenClaw 包,升级或重新安装可能会清除它。
使用重新应用脚本:
node ~/.openclaw/workspace/ken-patchs/reapply-openclaw-copilot-gpt54-patches.mjs openclaw gateway restart
设计说明
为什么不将整个提供者切换到 api: "github-copilot"?
这看起来很诱人,但 OpenClaw 的运行时路径在此设置中没有兼容的已注册流式提供者,导致运行时/提供者注册失败。
为什么不保持 GPT-5.4 在 openai-completions 上?
因为 GitHub Copilot GPT-5.4 无法通过 /chat/completions 访问。它必须通过 Responses API。
为什么 OpenCode 之前可以工作?
OpenCode 已经正确处理了 GitHub Copilot 传输路径,包括所需的 Copilot 头和正确的 API 模式,而 OpenClaw 需要配置和运行时修复。
推荐维护说明
- 将此指南与重新应用脚本路径一起保存在附近
- 任何 OpenClaw 升级后,重新运行修补脚本
- 如果 OpenClaw 更改其包文件名,相应更新脚本路径目标
- 如果 GitHub Copilot 更改所需的 IDE 头版本,更新运行时修补和重新应用脚本
快速恢复命令
node ~/.openclaw/workspace/ken-patchs/reapply-openclaw-copilot-gpt54-patches.mjs openclaw gateway restart openclaw status
最终状态
配置修复和运行时修补到位后,github-copilot/gpt-5.4 可在 OpenClaw 中工作且网关保持稳定。

