当前位置: 首页 > news >正文

第四章:配置体系详解与优先级

第四章:配置体系详解与优先级

OpenCode 的强大之处在于一切皆可配置,且配置即代码。本章系统讲解配置文件的格式、存放位置、合并与优先级规则、变量替换,以及全部主要配置项。吃透本章是后续所有自定义与「最优化配置」的前提。


4.1 配置文件格式:JSON / JSONC

OpenCode 同时支持 JSONJSONC(带注释的 JSON)。推荐用 .jsonc 写注释,便于团队理解:

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

务必加上 $schema,编辑器即可基于 opencode.ai/config.json 提供校验与自动补全。TUI 专属设置使用另一套 Schema:opencode.ai/tui.json。


4.2 配置文件位置

配置可以放在多个位置,它们各自承担不同角色:

角色 路径 用途
全局配置 ~/.config/opencode/opencode.json 用户级偏好(Provider、模型、权限等)
全局 TUI ~/.config/opencode/tui.json 用户级 TUI 设置(主题、键位等)
项目配置 项目根目录 opencode.json 项目专属设置,可提交进 Git
项目 TUI 项目根 tui.json 项目专属 TUI 设置
自定义路径 OPENCODE_CONFIG 环境变量指向的文件 自定义覆盖
自定义目录 OPENCODE_CONFIG_DIR 指向的目录 存放 agents/commands/plugins 等

.opencode/~/.config/opencode/ 目录下使用复数子目录名:agents/commands/modes/plugins/skills/tools/themes/(单数名也兼容)。

启动时,OpenCode 先在当前目录找配置,再向上回溯到最近的 Git 目录。


4.3 关键机制:配置是「合并」而非「替换」

这是最容易踩坑、也最重要的一点:多个配置文件会被合并,而不是后者整体替换前者。只有发生冲突的键才会被后者覆盖,其余设置全部保留。

例如:全局配置设了 autoupdate: true,项目配置设了 model: "anthropic/claude-sonnet-4-5",最终配置会同时包含这两项。

这意味着你可以:

  • 把通用偏好(Provider、权限、主题)放全局;
  • 把项目专属设置(模型、规则、命令)放项目;
  • 二者自动合并,互不丢失。

4.4 优先级顺序

配置源按以下顺序加载,后者覆盖前者的冲突键

  1. 远程配置(来自组织的 .well-known/opencode)—— 组织默认值
  2. 全局配置~/.config/opencode/opencode.json)—— 用户偏好
  3. 自定义配置OPENCODE_CONFIG 环境变量)—— 自定义覆盖
  4. 项目配置(项目内 opencode.json)—— 项目专属
  5. .opencode 目录(agents / commands / plugins)
  6. 内联配置OPENCODE_CONFIG_CONTENT 环境变量)—— 运行时覆盖
  7. 托管配置文件(如 macOS 的 /Library/Application Support/opencode/)—— 管理员控制
  8. macOS 托管偏好(通过 MDM 下发的 .mobileconfig)—— 最高优先级,用户不可覆盖

简单记:远程 < 全局 < 自定义 < 项目 < 内联 < 托管。托管设置覆盖一切,常用于企业统一管控(详见第十章/官方 policies 文档)。


4.5 远程配置(组织默认值)

组织可以通过 .well-known/opencode 端点提供默认配置,在你认证某个支持该机制的 Provider 时自动拉取。它作为最底层,其它配置都能覆盖它。

典型用法:组织默认提供一批 MCP 服务器但默认禁用,你在本地按需开启:

{"$schema": "https://opencode.ai/config.json","mcp": {"jira": {"type": "remote","url": "https://jira.example.com/mcp","enabled": true}}
}

4.6 TUI 专属配置(tui.json

主题、键位、滚动、提醒等 TUI 设置放在独立的 tui.json

{"$schema": "https://opencode.ai/tui.json","theme": "tokyonight","scroll_speed": 3,"diff_style": "auto","mouse": true,"attention": {"enabled": true,"notifications": true,"sound": true,"volume": 0.4}
}

attention.enabled 可开启桌面通知与提示音,适合长任务跑完时提醒你。

opencode.json 里旧的 themekeybindstui 顶层键已废弃,会在可能时自动迁移到 tui.json。新配置请直接写到 tui.json

可用 OPENCODE_TUI_CONFIG 指向自定义 TUI 配置文件。


4.7 主要配置项总览

以下是 opencode.json 中最常用的配置项,后续章节会逐一深入。先建立全局印象:

配置项 作用 相关章节
model / small_model 主模型 / 轻量任务模型 第五、九章
provider Provider 与模型选项(密钥、超时、缓存、推理强度等) 第五章
enabled_providers / disabled_providers 启用 / 禁用 Provider 第五章
agent 自定义 / 覆盖 Agent 第六章
default_agent 默认主智能体 第六章
command 自定义命令 第七章
instructions 额外规则文件(路径 / glob / URL) 第七章
mcp MCP 服务器 第八章
plugin 插件(npm 包) 第八章
tools (旧)工具开关,已并入 permission 第八章
permission 权限系统(allow/ask/deny) 第八章
formatter 代码格式化器 第八章
lsp LSP 服务器 第八章
compaction 上下文压缩与裁剪 第九章
snapshot 文件快照开关 第九、十章
watcher 文件监听忽略规则 第九章
share 分享模式(manual/auto/disabled) 本章
autoupdate 自动更新 本章
shell 交互终端使用的 shell 本章
attachment 图片附件归一化限制 本章
experimental 实验特性(含 policies) 第十章

分享、自动更新、Shell

{"$schema": "https://opencode.ai/config.json","share": "manual",     // manual(默认,需手动 /share)| auto | disabled"autoupdate": true,    // true | false | "notify"(只通知不更新)"shell": "pwsh"        // 不写则按系统自动选择
}

autoupdate: "notify" 仅在非包管理器安装时有效。


4.8 变量替换:{env:...}{file:...}

配置文件支持两类变量替换,非常适合把密钥与大段文本从配置中剥离

环境变量

{env:VARIABLE_NAME} 引用环境变量(未设置时替换为空字符串):

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

文件内容

{file:path/to/file} 把文件内容内联进来:

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

文件路径可相对于配置文件目录,或以 /~ 开头的绝对路径。常见用途:

  • 把 API Key 等敏感信息放到单独文件,避免提交进 Git;
  • 把大段系统提示词从配置里抽离,保持配置整洁;
  • 在多个配置文件间复用同一段配置。

4.9 校验与调试配置

  • Schema 校验:加 $schema 后,VS Code 等编辑器会实时校验并补全。
  • 查看最终合并结果
opencode debug config

它会输出经过所有来源合并、变量替换后的「最终生效配置」,是排查「为什么我的设置没生效」的首选手段——尤其当托管配置或远程配置参与覆盖时。


4.10 小结

本章建立了 OpenCode 配置体系的全局认知:JSONC 格式、多位置存放、合并而非替换、清晰的优先级、tui.json 分离、变量替换与调试方法。接下来三章(模型、Agent、命令/规则/工具)会把这些配置项逐个展开,并在第九章把它们组合成「最省 Token」的最优化方案。

http://www.jsqmd.com/news/947256/

相关文章:

  • 终极Windows 11精简优化:Win11Debloat让你的电脑跑得更快更干净!
  • 效率提升:借助快马AI批量生成头歌算法题解与优化方案
  • 拆解Transformer本源:350行源码吃透Attention底层原理
  • 新手入门Web开发:借助快马AI生成带注释的notepad应用
  • 深耕本土,精准赋能 —— 徐允雯以专业商事服务助力苏州创业生态建设
  • 2026数字化AI除幻技术市场观察:技术创新与服务适配成竞争关键
  • MATLAB零基础用Excel点坐标秒出圆心和半径,不装工具箱也能跑
  • 用快马ai三分钟搭建数据库管理工具原型,告别navicat激活烦恼
  • FPGA配置芯片EPCQ/EPCS深度解析:除了掉电保存,AS模式还能怎么玩?
  • 杭州千岛泵业有限公司2026泵体设备十强精选:水喷射真空机组哪家好/优质机组生产厂家推荐杭州千岛泵业 - 栗子测评
  • Qwen3.6-Plus深度适配嵌入式开发:国产编程模型实战指南
  • 2026论文隐藏级降AIGC工具大曝光:一键压到安全线谁最稳
  • 第五章:模型与 Provider 接入配置
  • 告别盲调!用海德汉PWM21深度解析Endat信号:从位置值、报警到信号质量百分比
  • 利用快马平台快速构建autosar基础软件模块演示原型
  • 2026年AI编程工具深度评测与推荐榜单
  • 长春市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 工序 BOM 协同系统架构多模块组件
  • Dreamweaver CS6里的‘层’到底怎么用?手把手教你用AP Div搞定网页布局(附实战案例)
  • AI工具嵌入智能硬件的最后1公里:从SDK冲突到OTA升级失败的完整攻防推演
  • ECU标定工程师避坑指南:用ASAP2 Studio更新A2L时,这3个细节决定成败
  • 有哪些真正好用的降AIGC软件?能同时搞定知网查重和降低AIGC率的那种
  • STM32 Bootloader跳转App总进HardFault?一个PSP/MSP堆栈指针的坑让我调试了两天
  • 蜘蛛池技术解析:原理、作用与作用点评——专业视角下的网站录入
  • 别再只用map了!Python多进程Pool的apply、starmap实战对比,看完这篇就全懂了
  • 微信AI助手本地生活推荐系统架构设计:从问答入口到小程序转化的技术链路
  • 数据结构:栈(C语言版)
  • 从“亚太2R”到“星链”:卫星天线角度计算的原理、变迁与自动化未来
  • 电子厂用什么管理软件?珠三角中小电子厂主流选择:专业易特电子行业ERP深度测评
  • 告别手动画封装!用Cadence Library Builder 16.6从PDF一键生成STM32原理图库