跳转到内容

当key输入为limit时,输入框内容会被自动清空 OpenCode

Quick fix

由于 cc-switch 界面将 limit 设为保留字,需直接编辑 opencode.json 文件来手动配置模型的上下文和输出限制。

报错原文
当key输入为limit时,输入框内容会被自动清空,且界面没有给出明确错误提示

在 cc-switch 中编辑 OpenCode 供应商时,由于源码 opencodeFormUtils.ts 将 limit 列入了保留 key,且在 OpenCodeFormFields.tsx 中遇到 limit 会直接 return,导致 GUI 界面不允许用户将其作为模型属性 key 保存。此外,部分用户在编辑供应商时还会遇到“读取OpenCode运行时模型失败,已仅展示已配置供应商模型”的弹窗,这通常也是因为底层模型配置格式异常导致解析失败。

OpenCode 1.4.0 版本加强了对 maxOutputTokens 字段的校验,若自定义模型未配置 limit(包含 context 和 output)则会报错。由于 cc-switch 目前不支持在 GUI 中配置该字段,用户只能通过绕过界面直接修改配置文件来解决。

  1. 关闭 cc-switch 和 OpenCode 以避免配置被覆盖。

  2. 找到并打开 OpenCode 的配置文件 opencode.json。

  3. 在对应的模型配置下,手动添加 limit 属性并设置 context 和 output 的值。

    // opencode.json
    "models": {
    "gpt-5.4": {
    "name": "GPT-5.4",
    "limit": {
    "context": 256000,
    "output": 64000
    }
    }
    }
ToolOpenCode
Version1.4.0
PlatformsLinuxWindowsmacOS
为什么要给模型配置 limit?
OpenCode 在 1.4.0 版本加强了对 maxOutputTokens 字段的校验,如果自定义模型没有配置上下文和输出限制(即 limit 字段),运行时就会报错。
为什么 cc-switch 当前不允许设置 limit?
因为 cc-switch 的源码将 limit 设为了保留 key,在界面输入时会被拦截并清空,目前只能通过直接编辑 JSON 配置文件来绕过此限制。
关于界面显示的 OpenCode 版本号为什么和实际不一致?
这是预期行为。cc-switch 的本地环境检查读取的是 OpenCode CLI 的版本,而不是 OpenCode Desktop 应用程序的版本。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。