~/content/config

Config

Using the OpenCode JSON config.

last_updated: "2026-01-20"

你可以使用 JSON 配置文件来配置 OpenCode。


##格式

OpenCode 支持 JSONJSONC (带注释的 JSON) 格式。

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

##位置

你可以将配置文件放置在几个不同的位置,它们具有不同的优先级。

Note

📝 注意

配置文件是合并的,而不是替换。

配置文件是合并的,而不是替换。来自以下配置位置的设置将被合并。只有当键冲突时,后面的配置才会覆盖前面的配置。所有配置中不冲突的设置都会被保留。

例如,如果你的全局配置设置了 theme: "opencode"autoupdate: true,而你的项目配置设置了 model: "anthropic/claude-sonnet-4-5",那么最终的配置将包含所有三个设置。


###优先级顺序

配置源按以下顺序加载(后面的源覆盖前面的源):

  1. 远程配置 (来自 .well-known/opencode) - 组织默认设置
  2. 全局配置 (~/.config/opencode/opencode.json) - 用户偏好
  3. 自定义配置 (OPENCODE_CONFIG 环境变量) - 自定义覆盖
  4. 项目配置 (项目中的 opencode.json) - 项目特定设置
  5. .opencode 目录 - agents, commands, plugins
  6. 内联配置 (OPENCODE_CONFIG_CONTENT 环境变量) - 运行时覆盖

这意味着项目配置可以覆盖全局默认设置,而全局配置可以覆盖远程组织默认设置。

Note

📝 注意

.opencode~/.config/opencode 目录对子目录使用复数名称agents/commands/modes/plugins/skills/tools/themes/。 为了向后兼容,也支持单数名称(例如,agent/)。


###远程

组织可以通过 .well-known/opencode 端点提供默认配置。 当你使用支持它的提供程序进行身份验证时,会自动获取此配置。

远程配置首先加载,作为基础层。 所有其他配置源(全局、项目)都可以覆盖这些默认值。

例如,如果你的组织提供默认禁用的 MCP 服务器:

bash
{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": false
    }
  }
}

你可以在本地配置中启用特定服务器:

bash
{
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

###全局

将你的全局 OpenCode 配置文件放置在 ~/.config/opencode/opencode.json 中。 使用全局配置来设置用户范围内的偏好,例如主题、提供程序或快捷键。

全局配置会覆盖远程组织默认设置。


###每个项目

在你的项目根目录中添加 opencode.json。 项目配置在标准配置文件中具有最高优先级 - 它会覆盖全局配置和远程配置。

Note

💡 提示

将项目特定的配置放置在你的项目根目录中。

当 OpenCode 启动时,它会在当前目录中查找配置文件,或者向上遍历到最近的 Git 目录。

这也可以安全地检入 Git,并使用与全局配置相同的 schema。


###自定义路径

使用 OPENCODE_CONFIG 环境变量指定自定义配置文件路径。

bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"

自定义配置在优先级顺序中加载于全局配置和项目配置之间。


###自定义目录

使用 OPENCODE_CONFIG_DIR 环境变量指定自定义配置目录。 将在此目录中搜索 agents、commands、modes 和 plugins,就像标准 .opencode 目录一样,并且应遵循相同的结构。

bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"

自定义目录在全局配置和 .opencode 目录之后加载,因此它可以覆盖它们的设置。


##Schema

配置文件具有在 opencode.ai/config.json 中定义的 schema。

你的编辑器应该能够根据 schema 进行验证和自动完成。


###TUI

你可以通过 tui 选项配置 TUI 特定的设置。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "tui": {
    "scroll_speed": 3,
    "scroll_acceleration": {
      "enabled": true
    },
    "diff_style": "auto"
  }
}

可用选项:

  • scroll_acceleration.enabled - 启用 macOS 样式的滚动加速。 优先于 scroll_speed
  • scroll_speed - 自定义滚动速度倍数(默认值:3,最小值:1)。 如果 scroll_acceleration.enabledtrue,则忽略。
  • diff_style - 控制 diff 渲染。 "auto" 适应终端宽度,"stacked" 始终显示单列。

在此处了解有关使用 TUI 的更多信息


###Server

你可以通过 server 选项配置 opencode serveopencode web 命令的服务器设置。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "server": {
    "port": 4096,
    "hostname": "0.0.0.0",
    "mdns": true,
    "cors": ["http://localhost:5173"]
  }
}

可用选项:

  • port - 监听端口。
  • hostname - 监听主机名。 启用 mdns 且未设置主机名时,默认为 0.0.0.0
  • mdns - 启用 mDNS 服务发现。 这允许网络上的其他设备发现你的 OpenCode 服务器。
  • cors - 使用基于浏览器的客户端通过 HTTP 服务器使用时,允许 CORS 的其他来源。 值必须是完整的来源(方案 + 主机 + 可选端口),例如 https://app.example.com

在此处了解有关服务器的更多信息


###Tools

你可以通过 tools 选项管理 LLM 可以使用的工具。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "tools": {
    "write": false,
    "bash": false
  }
}

在此处了解有关工具的更多信息


###Models

你可以通过 providermodelsmall_model 选项在 OpenCode 配置中配置要使用的提供程序和模型。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {},
  "model": "anthropic/claude-sonnet-4-5",
  "small_model": "anthropic/claude-haiku-4-5"
}

small_model 选项为轻量级任务(如标题生成)配置单独的模型。 默认情况下,如果你的提供程序提供了更便宜的模型,OpenCode 会尝试使用它,否则会回退到你的主模型。

提供程序选项可以包括 timeoutsetCacheKey

bash
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "anthropic": {
      "options": {
        "timeout": 600000,
        "setCacheKey": true
      }
    }
  }
}
  • timeout - 请求超时时间(以毫秒为单位)(默认值:300000)。 设置为 false 以禁用。
  • setCacheKey - 确保始终为指定的提供程序设置缓存键。

你还可以配置 本地模型了解更多


提供程序特定选项

某些提供程序支持除通用 timeoutapiKey 设置之外的其他配置选项。

Amazon Bedrock

Amazon Bedrock 支持 AWS 特定的配置:

bash
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "amazon-bedrock": {
      "options": {
        "region": "us-east-1",
        "profile": "my-aws-profile",
        "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
      }
    }
  }
}
  • region - Bedrock 的 AWS 区域(默认为 AWS_REGION 环境变量或 us-east-1
  • profile - 来自 ~/.aws/credentials 的 AWS 命名配置文件(默认为 AWS_PROFILE 环境变量)
  • endpoint - VPC 端点的自定义端点 URL。 这是使用 AWS 特定术语的通用 baseURL 选项的别名。 如果两者都指定,则 endpoint 优先。
Note

📝 注意

Bearer tokens(AWS_BEARER_TOKEN_BEDROCK/connect)优先于基于配置文件的身份验证。 有关详细信息,请参阅 身份验证优先级

了解有关 Amazon Bedrock 配置的更多信息


###Themes

你可以通过 theme 选项在 OpenCode 配置中配置要使用的主题。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "theme": ""
}

在此处了解更多信息


###Agents

你可以通过 agent 选项为特定任务配置专门的 agents。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "agent": {
    "code-reviewer": {
      "description": "Reviews code for best practices and potential issues",
      "model": "anthropic/claude-sonnet-4-5",
      "prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
      "tools": {
        // Disable file modification tools for review-only agent
        "write": false,
        "edit": false,
      },
    },
  },
}

你还可以使用 ~/.config/opencode/agents/.opencode/agents/ 中的 markdown 文件定义 agents。 在此处了解更多信息


###Default agent

你可以使用 default_agent 选项设置默认 agent。 这决定了在未明确指定 agent 时使用哪个 agent。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "default_agent": "plan"
}

默认 agent 必须是主 agent(而不是子 agent)。 这可以是内置 agent(如 "build""plan"),也可以是你定义的 自定义 agent。 如果指定的 agent 不存在或是一个子 agent,OpenCode 将回退到 "build" 并发出警告。

此设置适用于所有界面:TUI、CLI (opencode run)、桌面应用程序和 GitHub Action。


###Sharing

你可以通过 share 选项配置 share 功能。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "share": "manual"
}

这需要:

  • "manual" - 允许通过 commands 手动共享(默认)
  • "auto" - 自动共享新对话
  • "disabled" - 完全禁用共享

默认情况下,共享设置为手动模式,你需要使用 /share command 显式共享对话。


###Commands

你可以通过 command 选项为重复性任务配置自定义 commands。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "command": {
    "test": {
      "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
      "description": "Run tests with coverage",
      "agent": "build",
      "model": "anthropic/claude-haiku-4-5",
    },
    "component": {
      "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
      "description": "Create a new component",
    },
  },
}

你还可以使用 ~/.config/opencode/commands/.opencode/commands/ 中的 markdown 文件定义 commands。 在此处了解更多信息


###Keybinds

你可以通过 keybinds 选项自定义你的快捷键。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "keybinds": {}
}

在此处了解更多信息


###Autoupdate

OpenCode 将在启动时自动下载任何新更新。 你可以使用 autoupdate 选项禁用此功能。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "autoupdate": false
}

如果你不想要更新,但希望在新版本可用时收到通知,请将 autoupdate 设置为 "notify"。 请注意,这仅在未使用 Homebrew 等软件包管理器安装时才有效。


###Formatters

你可以通过 formatter 选项配置代码格式化程序。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "formatter": {
    "prettier": {
      "disabled": true
    },
    "custom-prettier": {
      "command": ["npx", "prettier", "--write", "$FILE"],
      "environment": {
        "NODE_ENV": "development"
      },
      "extensions": [".js", ".ts", ".jsx", ".tsx"]
    }
  }
}

在此处了解有关格式化程序的更多信息


###Permissions

默认情况下,opencode 允许所有操作,而无需显式批准。 你可以使用 permission 选项更改此设置。

例如,要确保 editbash 工具需要用户批准:

bash
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "ask",
    "bash": "ask"
  }
}

在此处了解有关权限的更多信息


###Compaction

你可以通过 compaction 选项控制上下文压缩行为。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "compaction": {
    "auto": true,
    "prune": true
  }
}
  • auto - 当上下文已满时自动压缩会话(默认值:true)。
  • prune - 删除旧的工具输出以节省 token(默认值:true)。

###Watcher

您可以通过 watcher 选项配置文件监视器忽略模式。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "watcher": {
    "ignore": ["node_modules/**", "dist/**", ".git/**"]
  }
}

模式遵循 glob 语法。使用此选项可从文件监视中排除嘈杂的目录。


###MCP servers

您可以通过 mcp 选项配置您想要使用的 MCP servers。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {}
}

在此处了解更多信息


###Plugins

Plugins 使用自定义工具、hooks 和集成扩展 OpenCode。

将插件文件放置在 .opencode/plugins/~/.config/opencode/plugins/ 中。您还可以通过 plugin 选项从 npm 加载插件。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}

在此处了解更多信息


###Instructions

您可以通过 instructions 选项配置您正在使用的模型的指令。

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

这需要一个指向指令文件的路径和 glob 模式的数组。在此处了解更多关于规则的信息


###Disabled providers

您可以通过 disabled_providers 选项禁用自动加载的 providers。当您想要阻止某些 providers 被加载(即使它们的凭据可用)时,这非常有用。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "disabled_providers": ["openai", "gemini"]
}
Note

📝 注意

disabled_providers 优先于 enabled_providers

disabled_providers 选项接受一个 provider IDs 数组。当一个 provider 被禁用时:

  • 即使设置了环境变量,它也不会被加载。
  • 即使通过 /connect 命令配置了 API keys,它也不会被加载。
  • 该 provider 的模型不会出现在模型选择列表中。

###Enabled providers

您可以通过 enabled_providers 选项指定一个 providers 的允许列表。设置后,只会启用指定的 providers,所有其他 providers 将被忽略。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "enabled_providers": ["anthropic", "openai"]
}

当您想要限制 OpenCode 仅使用特定的 providers,而不是逐个禁用它们时,这非常有用。

Note

📝 注意

disabled_providers 优先于 enabled_providers

如果一个 provider 同时出现在 enabled_providersdisabled_providers 中,为了向后兼容,disabled_providers 优先。


###Experimental

experimental 键包含正在积极开发中的选项。

bash
{
  "$schema": "https://opencode.ai/config.json",
  "experimental": {}
}

:::caution 实验性选项不稳定。它们可能会更改或删除,恕不另行通知。 :::


##Variables

您可以在配置文件中使用变量替换来引用环境变量和文件内容。


###Env vars

使用 {env:VARIABLE_NAME} 替换环境变量:

bash
{
  "$schema": "https://opencode.ai/config.json",
  "model": "{env:OPENCODE_MODEL}",
  "provider": {
    "anthropic": {
      "models": {},
      "options": {
        "apiKey": "{env:ANTHROPIC_API_KEY}"
      }
    }
  }
}

如果未设置环境变量,它将被替换为空字符串。


###Files

使用 {file:path/to/file} 替换文件的内容:

bash
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": ["./custom-instructions.md"],
  "provider": {
    "openai": {
      "options": {
        "apiKey": "{file:~/.secrets/openai-key}"
      }
    }
  }
}

文件路径可以是:

  • 相对于配置文件目录
  • 或者以 /~ 开头的绝对路径

这些对于以下情况非常有用:

  • 将 API keys 等敏感数据保存在单独的文件中。
  • 包含大型指令文件,而不会使您的配置混乱。
  • 在多个配置文件之间共享通用配置片段。
Comments (Coming Soon)

Configure Giscus in environment variables to enable comments.