在同一台 macOS 机器上使用 opencode(GitHub Copilot provider),希望在自动化执行(OpenClaw 的 exec)里调用:
opencode run -m github-copilot/claude-sonnet-4.6 'Reply with OK'
目标是让 opencode 在自动化任务中稳定使用 Claude Sonnet 4.6。
- 在本机终端(交互环境)运行同一条命令:返回
OK,模型显示为claude-sonnet-4.6。 - 在 OpenClaw 的
exec环境运行同一条命令:报错:
Error: The requested model is not supported.
code: model_not_supported
param: model
model: claude-sonnet-4.6
同时,在 TUI 会话中可以看到模型显示为 Claude Sonnet 4.6 · GitHub Copilot。
- 对齐命令本身
确认两边调用的都是:
opencode run -m github-copilot/claude-sonnet-4.6 'Reply with OK'
- 打印 run 模式日志
在exec环境中开启日志后可以确认请求被拒绝发生在 Copilot API 层(HTTP 400,model_not_supported)。 - 识别执行环境差异
OpenClaw 的exec由后台进程启动,常见特征是:
- 非交互 shell(non-interactive)
- 非登录 shell(non-login)
- 不会加载用户终端中的
~/.zprofile/~/.zshrc(取决于系统与启动方式)
因此 exec 环境的 PATH/环境变量与本机终端可能不一致,进而导致 opencode 在运行时出现行为差异。
(在本次机器上,openclaw gateway status 也提示 Gateway service PATH 缺少多处目录,符合“服务进程环境更干净”的特征。)
问题不是 Copilot 套餐不支持该模型,而是 OpenClaw exec 的非 login / 非交互环境 与本机终端环境不一致,导致 opencode 在该环境下无法正常使用 claude-sonnet-4.6(表现为 model_not_supported)。
在自动化执行时,将 opencode 调用包裹在 zsh login + interactive 环境中:
zsh -lic "cd <repo> && opencode run -m github-copilot/claude-sonnet-4.6 'Reply with OK'"
说明:
-l:login shell(加载登录相关配置)-i:interactive(加载交互相关配置)-c:执行命令
采用该方式后,在 exec 环境中同样能得到 OK,并使用 claude-sonnet-4.6。