Skip to content

OpenCode 提供十余种内置主题(tokyonight、catppuccin、gruvbox 等),还支持 system 自适应主题和完全自定义 JSON 主题。通过 /theme 命令快速切换,或在 tui.json 中写死主题名。自定义主题支持 hex、ANSI 色值和深色/浅色双模式。

OpenCode 内置多套配色方案,也支持通过 JSON 文件创建完全自定义的主题。默认使用 opencode 主题,可以随时切换。


终端颜色支持要求

主题要正确显示完整配色,终端需要支持 truecolor(24 位色)

  • 检测:运行 echo $COLORTERM,输出应为 truecolor24bit
  • 开启:在 shell 配置文件中添加 export COLORTERM=truecolor
  • 兼容终端:iTerm2、Alacritty、Kitty、Windows Terminal、新版 GNOME Terminal 均已支持

不支持 truecolor 的终端会降级到 256 色近似显示,颜色可能略有偏差。


内置主题列表

名称说明
system自动适配终端背景色
tokyonight基于 Tokyonight 配色
everforest基于 Everforest 配色
ayu基于 Ayu 深色主题
catppuccin基于 Catppuccin 配色
catppuccin-macchiatoCatppuccin Macchiato 变体
gruvbox基于 Gruvbox 配色
kanagawa基于 Kanagawa 配色
nord基于 Nord 配色
matrix黑底绿字极客风
one-dark基于 Atom One Dark

团队持续在增加新主题。


system 自适应主题

system 主题会根据你的终端配色方案自动调整,适合日常使用多种终端配色的开发者:

  • 根据终端背景色生成灰阶色板,确保最优对比度
  • 使用标准 ANSI 色(0-15)进行语法高亮
  • 文字和背景色使用 none,保持终端原生外观

适合人群:

  • 希望 OpenCode 跟终端整体风格统一的用户
  • 使用自定义终端配色方案的用户
  • 追求跨应用界面一致性的用户

切换主题

/theme 命令调出主题选择器,或在 tui.json 中直接指定:

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

自定义主题

OpenCode 支持 JSON 格式的自定义主题,可以为 diff 视图、Markdown 渲染、语法高亮等各个细节自定义颜色。

主题加载优先级

后面的目录优先级更高,会覆盖前面的同名主题:

  1. 内置主题(写入二进制)
  2. 用户配置目录:~/.config/opencode/themes/*.json
  3. 项目根目录:<project-root>/.opencode/themes/*.json
  4. 当前工作目录:./.opencode/themes/*.json

创建主题文件

用户级主题(所有项目生效):

bash
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json

项目级主题(仅当前项目生效):

bash
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.json

JSON 格式说明

主题文件支持以下颜色格式:

  • 十六进制"#ffffff"
  • ANSI 色号3(范围 0-255)
  • 颜色引用"primary"defs 中自定义的名称
  • 深色/浅色双模式{"dark": "#000", "light": "#fff"}
  • 透明/终端默认"none"(继承终端前景/背景色)

完整示例(Nord 风格)

json
{
  "$schema": "https://opencode.ai/theme.json",
  "defs": {
    "nord0": "#2E3440",
    "nord1": "#3B4252",
    "nord4": "#D8DEE9",
    "nord8": "#88C0D0",
    "nord9": "#81A1C1",
    "nord11": "#BF616A",
    "nord14": "#A3BE8C"
  },
  "theme": {
    "primary": { "dark": "nord8", "light": "nord9" },
    "text": { "dark": "nord4", "light": "nord0" },
    "background": { "dark": "nord0", "light": "#ECEFF4" },
    "error": { "dark": "nord11", "light": "nord11" },
    "success": { "dark": "nord14", "light": "nord14" }
  }
}

defs 部分是可选的,用于定义可复用的颜色别名,让主题文件更易维护。


常见问题

Q: 切换主题后没有立即生效怎么办?

A: 确认终端支持 truecolor,并检查 tui.json 中主题名拼写是否正确。可以先用 /theme 命令选择,确认效果后再写入配置文件。

Q: 自定义主题只能影响当前项目吗?

A: 取决于你把主题文件放在哪里。放在 ~/.config/opencode/themes/ 的主题全局生效;放在 .opencode/themes/ 的主题只对当前项目生效。

Q: 内置主题太多了,有没有快速预览的方式?

A: 在 TUI 中运行 /theme 会显示主题列表,选择后立即预览,不满意可以继续切换,不需要修改配置文件。