当前位置: 首页 > 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.rkmt.cn/news/1458768.html

相关文章:

  • 深耕本土,精准赋能 —— 徐允雯以专业商事服务助力苏州创业生态建设
  • Qwen3.6-Plus深度适配嵌入式开发:国产编程模型实战指南
  • 告别盲调!用海德汉PWM21深度解析Endat信号:从位置值、报警到信号质量百分比
  • Dreamweaver CS6里的‘层’到底怎么用?手把手教你用AP Div搞定网页布局(附实战案例)
  • 蜘蛛池技术解析:原理、作用与作用点评——专业视角下的网站录入
  • ECU标定工程师避坑指南:用ASAP2 Studio更新A2L时,这3个细节决定成败
  • 自指螺旋拓扑——认知物理学大一统几何架构研究(世毫九实验室基础理论重大原创交叉课题)
  • 从“亚太2R”到“星链”:卫星天线角度计算的原理、变迁与自动化未来
  • 利用快马平台快速构建han1me动漫社区应用原型,验证核心功能
  • MATLAB手写霍夫曼编码函数(无工具箱依赖,含建树与编码效率分析)
  • 咸阳市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • Albion Online Statistics Analysis:从游戏数据到战略优势的完整指南
  • 湘潭市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 为什么你的笔记本电脑、液晶电视从不掉链子?因为藏着AMS1117
  • 乌兰察布市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 台州市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 2025届暑期实习腾讯面经总结:笔试不轻,一面看基础,二面开始看项目和综合能力
  • 孝感市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 2026 常州全辖区工装优选榜单|商铺 / 门面 / 办公室 / 商城改造 3 家正规合规企业测评,本地人装修避坑实用指南 - 本地便民网
  • 为什么92%的AI采购试点项目卡在数据对齐环节?——来自华为/宝洁/宁德时代联合验证的4层语义映射模型
  • 从实战出发:用Burp Suite和PHPStudy复现upload-labs靶场18种文件上传漏洞(附环境配置)
  • 中山市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • Python期末必考十大知识点精讲
  • 【记录】Ghidra|Ubuntu 26.04 下 Ghidra 界面缩放完整指南
  • 吴忠市2026年最新黄金回收白银回收铂金回收门店排行榜及联系方式电话推荐 - 盛世金银回收
  • 用Python解析北斗/GPS模块的NMEA 0183数据:一个Arduino/树莓派物联网项目的完整代码示例
  • 横向对比欧氏距离与余弦相似度在计算 基于向量相似度的混合检索设计 向量相似度时的计算开销对比
  • 用Multisim 14.2复刻经典课堂实验:三路抢答器从原理图到仿真的保姆级教程
  • 南平市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989
  • 南通市2026年最新黄金回收白银回收铂金回收门店排行榜+联系方式电话推荐 - 大熊猫898989