OpenCode 配置完全指南:从入门到精通

220 次阅读

OpenCode 配置完全指南:从入门到精通

作为一款强大的 AI 编程助手,OpenCode 提供了灵活的配置系统,让你能够根据自己的需求定制工作环境。无论你是刚接触 OpenCode 的新手,还是希望深度定制的老用户,这篇指南都会帮你快速上手配置。

配置文件基础

支持的格式

OpenCode 支持两种配置文件格式:

  • JSON:标准的 JSON 格式
  • JSONC:支持注释的 JSON 格式(推荐使用)

一个基本的配置文件看起来是这样的:

jsonc
{
  "$schema": "https://opencode.ai/config.json",
  // 主题配置
  "theme": "opencode",
  "model": "anthropic/claude-sonnet-4-5",
  "autoupdate": true
}

$schema 字段让你的编辑器能够提供自动补全和校验功能,强烈建议保留。

配置文件的位置与优先级

OpenCode 会从多个位置读取配置,这些配置会合并在一起,而不是简单替换。当同一个配置项出现在多个位置时,后加载的配置会覆盖先加载的。

加载顺序(从低到高)

  1. 远程配置:通过 .well-known/opencode 端点获取的组织级默认配置
  2. 全局配置~/.config/opencode/opencode.json,存放个人偏好
  3. 自定义配置:通过 OPENCODE_CONFIG 环境变量指定的配置文件
  4. 项目配置:项目根目录下的 opencode.json,存放项目特定设置
  5. .opencode 目录:存放 agents、commands、plugins 等扩展配置
  6. 内联配置:通过 OPENCODE_CONFIG_CONTENT 环境变量传入的运行时配置

举个例子,假设你的全局配置设置了 theme: "opencode"autoupdate: true,项目配置设置了 model: "anthropic/claude-sonnet-4-5",最终生效的配置会包含这三个设置。

全局配置

全局配置位于 ~/.config/opencode/opencode.json,适合存放用户级别的偏好设置,比如主题、按键绑定等。

项目配置

在项目根目录创建 opencode.json 文件即可。OpenCode 启动时会从当前目录向上查找,直到找到最近的 Git 目录。项目配置可以安全地提交到版本控制系统。

自定义配置路径

如果你需要使用自定义位置的配置文件:

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

也可以指定配置目录:

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

核心配置项详解

模型配置

通过 providermodelsmall_model 配置使用的 AI 模型:

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

small_model 用于标题生成等轻量任务,默认会自动选择较便宜的模型。

Provider 高级选项

json
{
  "provider": {
    "anthropic": {
      "options": {
        "timeout": 600000,
        "setCacheKey": true
      }
    }
  }
}
  • timeout:请求超时时间(毫秒),默认 300000,设为 false 可禁用
  • setCacheKey:确保始终设置缓存键

Amazon Bedrock 配置

如果你使用 AWS Bedrock,可以这样配置:

json
{
  "provider": {
    "amazon-bedrock": {
      "options": {
        "region": "us-east-1",
        "profile": "my-aws-profile",
        "endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
      }
    }
  }
}

工具配置

控制 AI 可以使用哪些工具:

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

这个配置会禁用文件写入和命令执行功能,适合只需要代码审查的场景。

权限配置

默认情况下,OpenCode 允许所有操作。如果你希望某些操作需要确认:

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

设为 "ask" 后,执行这些操作前会先询问用户确认。

主题配置

通过 theme 选项自定义界面外观:

json
{
  "theme": "opencode"
}

你也可以在 ~/.config/opencode/themes/.opencode/themes/ 目录下创建自定义主题。

TUI 界面配置

针对终端界面的配置项:

json
{
  "tui": {
    "scroll_speed": 3,
    "scroll_acceleration": {
      "enabled": true
    },
    "diff_style": "auto"
  }
}
  • scroll_acceleration.enabled:启用 macOS 风格的滚动加速
  • scroll_speed:滚动速度倍数(默认 3,最小 1)
  • diff_style:差异显示风格,"auto" 会根据终端宽度自适应,"stacked" 始终单列显示

服务器配置

配置 opencode serveopencode web 命令的服务器选项:

json
{
  "server": {
    "port": 4096,
    "hostname": "0.0.0.0",
    "mdns": true,
    "mdnsDomain": "myproject.local",
    "cors": ["http://localhost:5173"]
  }
}
  • port:监听端口
  • hostname:监听主机名
  • mdns:启用 mDNS 服务发现,方便局域网内其他设备访问
  • mdnsDomain:自定义 mDNS 域名
  • cors:配置 CORS 允许的来源

自定义 Agent

通过配置创建专门用途的 Agent:

jsonc
{
  "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": {
        // 禁用文件修改工具,只做审查
        "write": false,
        "edit": false
      }
    }
  }
}

也可以在 ~/.config/opencode/agents/.opencode/agents/ 目录下用 Markdown 文件定义 Agent。

设置默认 Agent

json
{
  "default_agent": "plan"
}

默认 Agent 必须是主 Agent(非子 Agent),可以是内置的 "build""plan",或你自定义的 Agent。

自定义命令

为重复性任务创建快捷命令:

jsonc
{
  "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"
    }
  }
}

命令也可以通过 Markdown 文件定义。

MCP 服务器配置

集成 MCP(Model Context Protocol)服务器:

json
{
  "mcp": {}
}

组织可以通过远程配置提供默认禁用的 MCP 服务器,你可以在本地配置中启用:

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

代码格式化配置

配置代码格式化工具:

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

上下文压缩配置

控制会话上下文的压缩行为:

json
{
  "compaction": {
    "auto": true,
    "prune": true
  }
}
  • auto:上下文满时自动压缩(默认 true)
  • prune:移除旧的工具输出以节省 token(默认 true)

文件监视器配置

配置需要忽略的文件路径:

json
{
  "watcher": {
    "ignore": [
      "node_modules/**",
      "dist/**",
      ".git/**"
    ]
  }
}

分享功能配置

json
{
  "share": "manual"
}

可选值:

  • "manual":手动通过 /share 命令分享(默认)
  • "auto":自动分享新对话
  • "disabled":完全禁用分享

插件配置

从 npm 加载插件:

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

也可以在 .opencode/plugins/~/.config/opencode/plugins/ 目录下放置插件文件。

指令文件配置

指定额外的指令文件:

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

支持 glob 模式匹配多个文件。

Provider 管理

禁用特定 Provider

json
{
  "disabled_providers": ["openai", "gemini"]
}

被禁用的 Provider 即使设置了环境变量或 API Key 也不会加载。

启用特定 Provider

json
{
  "enabled_providers": ["anthropic", "openai"]
}

只启用指定的 Provider,其他全部忽略。

需要注意的是,disabled_providers 的优先级高于 enabled_providers

自动更新配置

json
{
  "autoupdate": false
}

设为 false 禁用自动更新,设为 "notify" 只通知有新版本但不自动下载。

变量替换

配置文件支持变量替换,让配置更灵活。

环境变量

使用 {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}"
      }
    }
  }
}

文件路径可以是相对路径(相对于配置文件)或绝对路径(以 /~ 开头)。

这个功能特别适合:

  • 将敏感信息(如 API Key)保存在单独文件中
  • 在多个配置文件间共享配置片段
  • 引入大型指令文件而不让配置文件变得臃肿

目录结构说明

.opencode~/.config/opencode 目录使用复数名称作为子目录:

  • agents/ - Agent 定义
  • commands/ - 命令定义
  • modes/ - 模式定义
  • plugins/ - 插件
  • skills/ - 技能
  • tools/ - 工具
  • themes/ - 主题

为了向后兼容,单数名称(如 agent/)也是支持的。

小结

OpenCode 的配置系统设计得相当灵活,通过合理配置,你可以打造出完全符合个人或团队需求的 AI 编程助手。建议从简单配置开始,随着使用深入逐步添加更多定制项。

配置文件的 Schema 定义在 opencode.ai/config.json,支持自动补全的编辑器会大大提升配置效率。如果你在配置过程中遇到问题,可以访问 OpenCode 官方文档或加入 Discord 社区获取帮助。

感谢阅读,如果觉得有用欢迎分享
返回 AI工具配置