Skip to content

配置

OpenCode 使用 JSON 配置文件进行自定义。本页面介绍配置格式、文件位置和关键选项。

格式

OpenCode 支持 JSONJSONC(带注释的 JSON)两种格式:

jsonc
// opencode.jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "autoupdate": true,
  "server": {
    "port": 4096
  }
}

$schema 字段启用 IDE 自动补全和验证。

配置文件位置

配置文件按以下顺序加载,后来者覆盖前者

优先级位置用途
1(最低)远程(.well-known/opencode组织默认配置
2全局(~/.config/opencode/opencode.json用户偏好
3自定义(OPENCODE_CONFIG 环境变量)自定义覆盖
4(最高)项目(项目根目录的 opencode.json项目特定设置

此外,.opencode 目录和 OPENCODE_CONFIG_CONTENT(内联配置)可以提供运行时覆盖。

TIP

配置文件是合并的,不是替换的。所有位置的非冲突设置都会被保留。冲突的键按优先级解析。

全局配置

将用户级偏好放在 ~/.config/opencode/opencode.json

json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-5",
  "autoupdate": true
}

项目配置

在项目根目录添加 opencode.json。可以安全地提交到 Git:

json
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md"]
}

关键选项

模型选择

json
{
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5"
}
  • model — 编码任务的主要模型
  • small_model — 用于标题生成等轻量任务的较便宜模型

供应商配置

json
{
  "provider": {
    "anthropic": {
      "options": {
        "timeout": 600000,
        "chunkTimeout": 30000
      }
    }
  }
}
  • timeout — 请求超时时间(毫秒,默认:300000)
  • chunkTimeout — 流式响应块之间的超时时间

工具

启用或禁用 LLM 可以使用的工具:

json
{
  "tools": {
    "write": false,
    "bash": false
  }
}

权限

控制工具行为 — 允许、拒绝或需要审批:

json
{
  "permission": {
    "edit": "ask",
    "bash": "ask",
    "webfetch": "allow"
  }
}

支持通配符批量配置:

json
{
  "permission": {
    "mymcp_*": "ask"
  }
}

指令(规则)

指向引导 AI 的指令文件:

json
{
  "instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}

代理

定义用于特定任务的专业代理:

jsonc
{
  "agent": {
    "code-reviewer": {
      "description": "审查代码的最佳实践和潜在问题",
      "model": "anthropic/claude-sonnet-4-5",
      "prompt": "你是一个代码审查员。关注安全性、性能和可维护性。",
      "tools": {
        "write": false,
        "edit": false
      }
    }
  }
}

自定义命令

创建可复用的命令:

jsonc
{
  "command": {
    "test": {
      "template": "运行完整的测试套件并生成覆盖率报告,显示所有失败项。",
      "description": "运行测试并生成覆盖率",
      "agent": "build"
    }
  }
}

分享

json
{
  "share": "manual"
}

选项:"manual"(默认)、"auto""disabled"

上下文压缩

控制对话过长时的上下文压缩行为:

json
{
  "compaction": {
    "auto": true,
    "prune": true,
    "reserved": 10000
  }
}

快照

OpenCode 使用快照跟踪文件变更,支持撤销/重做。对大型仓库可禁用:

json
{
  "snapshot": false
}

自动更新

json
{
  "autoupdate": false
}

设为 "notify" 可在有新版本时收到通知但不自动下载。

MCP 服务器

json
{
  "mcp": {
    "my-server": {
      "type": "remote",
      "url": "https://example.com/mcp",
      "enabled": true
    }
  }
}

插件

从 npm 或本地文件加载插件:

json
{
  "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}

变量替换

环境变量

使用 {env:VARIABLE_NAME} 引用环境变量:

json
{
  "model": "{env:OPENCODE_MODEL}",
  "provider": {
    "anthropic": {
      "options": {
        "apiKey": "{env:ANTHROPIC_API_KEY}"
      }
    }
  }
}

文件内容

使用 {file:path/to/file} 包含文件内容:

json
{
  "provider": {
    "openai": {
      "options": {
        "apiKey": "{file:~/.secrets/openai-key}"
      }
    }
  }
}

TUI 配置

TUI 专用设置使用单独的 tui.json 文件:

json
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "tokyonight",
  "scroll_speed": 3,
  "diff_style": "auto"
}

放在 opencode.json 旁边(全局或项目级别)。

延伸阅读

Released under the GPLv3 License.