前言

在 AI 编码工具百花齐放的今天,OpenCode 凭借「终端原生、100% 开源、全键盘操作、高度可定制」的特性,成为了 Mac 终端开发者的心头好。它不像 IDE 插件那样占用大量资源,也无需切换窗口,在你日常开发的终端里,就能完成代码分析、功能开发、重构调试、项目规划全流程,完美契合 Mac/Linux 开发者的终端工作流。

本文将带你从零开始,在 Mac 上完成 OpenCode 的落地,从最基础的安装,到多模型配置,再到企业级项目的实战玩法,全程可复制、可落地。

一、Mac 环境前置准备

在安装 OpenCode 之前,我们先完成基础环境的准备,确保后续流程全程顺畅:

1. 终端模拟器选择

OpenCode 对现代终端有良好适配,Mac 自带的「终端.app」可直接运行,但更推荐以下几款终端,获得更丝滑的体验:

  • WezTerm:跨平台、开源、性能拉满,完美兼容 OpenCode 的图片拖拽、全键盘快捷键
  • Alacritty:轻量极速,GPU 加速渲染,资源占用极低
  • Kitty/Ghostty:macOS 专属,对快捷键、分屏支持更友好,适配 Mac 键盘布局

2. 系统依赖安装

Mac 环境需要基础的 Xcode 命令行工具,避免后续安装/运行出现权限/依赖缺失问题:

# 安装 Xcode 命令行工具(仅需执行一次)
xcode-select --install

如果已安装会提示「已安装」,直接跳过即可。

3. 提前准备 LLM API 密钥

OpenCode 本身是 AI 编码代理框架,不自带大模型,需要对接 LLM 提供商,提前准备好以下任意一种密钥即可:

  • OpenCode Zen:官方精选模型,一键接入,无需复杂配置(新手首选)
  • 火山引擎豆包:国内网络直连,代码模型能力强,无境外访问限制
  • Google Gemini:免费额度充足,长上下文能力优秀,适合大项目分析
  • Anthropic Claude、OpenAI:主流商用模型,编码能力顶尖,需境外网络环境

二、Mac 端 OpenCode 全方式安装

OpenCode 为 Mac 提供了多种安装方式,你可以根据自己的环境选择,优先推荐官方 curl 一键安装,更新最及时、适配最完善。

方式一:官方 curl 一键安装(首推)

这是 OpenCode 官方首推的安装方式,一行命令完成安装,自动适配 Mac 的 Intel/M 系列芯片,自动配置环境变量:

curl -fsSL https://opencode.ai/install | bash

安装完成后,关闭当前终端窗口,重新打开,执行以下命令验证安装是否成功:

# 查看版本号,输出版本信息即安装成功
opencode --version

方式二:Homebrew 安装(Mac 开发者首选)

如果你是 Homebrew 用户,推荐使用官方 Tap 源安装,后续更新更方便:

# 官方 Tap 源(更新最快,优先选择)
brew install anomalyco/tap/opencode

注意:不要直接使用 brew install opencode,该包由 Homebrew 社区维护,更新频率远低于官方源。

方式三:Node.js 生态安装

如果你的 Mac 已配置 Node.js 18+ 环境,可通过 npm/pnpm/bun 全局安装:

# npm 安装
npm install -g opencode-ai

# pnpm 安装
pnpm add -g opencode-ai

# bun 安装
bun install -g opencode-ai

方式四:Docker 容器化安装

适合不想污染本地环境,或需要在隔离环境中运行的场景:

docker run -it --rm ghcr.io/anomalyco/opencode

版本升级

opencode upgrade

opencode --version
# 或
opencode -v

三、macOS OpenCode 全目录详解(curl安装版)

OpenCode 在 macOS 下完全遵循 XDG Base Directory 规范,将配置、数据、状态、运行时文件拆分到不同目录,符合 Unix 设计哲学,所有目录均为当前用户级(仅zwy用户可访问),不会污染系统目录。

3.1 /Users/zwy/.config/opencode

核心定位

全局配置文件目录(XDG_CONFIG_HOME),OpenCode 官方定义的用户级全局配置核心存放地,相当于软件的「设置中心」。所有可自定义的偏好都在这里,修改后重启即可生效,配置优先级仅次于项目级配置。

目录下核心文件/子目录&作用

文件/子目录

核心作用

补充说明

opencode.json

核心主配置文件

90%的自定义配置都在这里,包括模型provider配置(你之前配置DeepSeek、限流参数都在此)、默认模型、超时/并发/重试规则、Agent执行逻辑、MCP工具开关、TUI主题、快捷键等,是修改配置的核心文件

config.schema.json

配置文件语法校验文件

用于编辑器的语法提示、格式合规性校验,避免修改opencode.json时出现语法错误,启动时自动生成

keybindings.json

快捷键自定义配置

存放TUI界面全量快捷键映射,比如终止任务、切换面板、调出命令面板等自定义规则

mcp/ 子目录

MCP工具全局配置

存放第三方MCP工具的连接参数、权限规则、启动配置,和.local/share里的MCP运行文件一一对应(这里是配置,那里是工具本体)

scales/ 子目录

全局Agent技能存放地

这里的自定义Agent技能、规则、模板,会在所有项目中生效,区别于项目目录里仅单项目可用的.scales

themes/ 子目录

自定义TUI主题目录

存放终端界面配色、主题文件,可在opencode.json中指定启用

agents/ 子目录

全局自定义Agent配置

存放你创建的专属Agent角色、系统提示词、执行规则,所有会话均可调用

关键说明

  • 该目录文件可安全手动修改,重装/迁移OpenCode时,备份此目录可完整保留所有自定义配置,无需重新配置模型、快捷键等;
  • 配置优先级:项目级配置 > 此目录全局配置 > 软件内置默认配置

3.2 /Users/zwy/.local/share/opencode

核心定位

核心持久化数据目录(XDG_DATA_HOME),OpenCode 官方定义的核心数据仓库,存放软件运行产生的、需长期保留的非配置类数据,相当于软件的「数据库+资源库」,不建议手动修改内部文件,避免数据损坏

目录下核心文件/子目录&作用

文件/子目录

核心作用

补充说明

log/ 子目录

全量运行日志存放地

你之前排查卡顿、限流、任务卡住的核心目录,日志以时间戳命名(如2026-04-08T123456.log),默认保留最近10个文件,记录启动、API请求、工具调用、报错的全量链路信息

auth.json

身份认证与密钥管理核心文件

通过/connect命令配置的所有模型API Key、OpenCode Zen账号的OAuth Token、登录凭证、设备指纹等敏感信息都存在这里,默认权限600(仅当前用户可读可写),官方推荐用/connect命令管理,而非手动修改

opencode.db 及配套文件

SQLite主数据库

OpenCode的核心数据存储,存放所有会话历史、消息记录、任务执行日志、代码片段收藏、项目上下文缓存、终端命令历史、模型调用统计等,TUI界面的历史会话均从此读取

storage/ 子目录

细分持久化数据存储

包含项目专属数据、会话快照、Agent执行记录、工具输出缓存、会话diff对比数据等,和主数据库配合实现数据持久化

plugins/ 子目录

第三方插件安装目录

存放你安装的扩展插件、自定义工具、命令脚本的代码和资源文件,启动时自动加载

mcp/ 子目录

MCP工具运行时文件

存放MCP工具的二进制安装包、依赖包、运行时缓存、执行日志

upgrades/ 子目录

版本升级临时目录

存放opencode upgrade命令下载的新版本二进制包、升级脚本,升级完成后自动清理

project/ 子目录

项目专属数据

按项目路径/仓库名分类存放每个项目的会话数据、上下文缓存,避免不同项目数据混淆

关键说明

  • 重装软件时,备份此目录可完整保留所有会话历史、登录状态、插件、日志数据;
  • 日志文件占用空间过大时,可手动删除老旧日志,不影响软件核心运行。

3.3 /Users/zwy/.local/state/opencode

核心定位

运行时状态目录(XDG_STATE_HOME),存放软件运行中产生的、非必须长期保留的临时状态数据,相当于软件的「临时记忆+运行快照」,用于恢复上次的运行状态,不建议手动修改

目录下核心文件/子目录&作用

文件/子目录

核心作用

补充说明

history

TUI命令历史文件

存放你在OpenCode交互界面输入过的所有指令、Prompt,按时间顺序存储,相当于终端的.zsh_history,用于上下键快速调取过往输入

session/ 子目录

会话状态快照

存放上次退出时的会话状态,比如打开的会话ID、工作目录、未完成的任务快照,下次启动时自动恢复工作状态

lock

进程锁文件

防止同时启动多个OpenCode进程,避免数据库冲突、数据错乱。启动时创建,正常退出时删除;异常崩溃后残留会导致无法启动,删除即可修复

crash/ 子目录

崩溃日志与转储文件

存放软件异常崩溃时的堆栈信息、内存转储、运行状态,是排查闪退、异常退出的核心依据

window_state.json

终端窗口状态文件

记录上次退出时的窗口大小、面板布局、UI折叠状态,下次启动时自动恢复界面布局

runtime/ 子目录

运行时临时文件

存放PID文件、进程通信socket、临时上下文缓存,正常退出时自动清理

关键说明

  • 该目录所有文件均为运行时自动生成,即使全部删除,也不会影响软件核心功能,仅丢失上次的会话状态、命令历史,重启后会自动重建;
  • 遇到OpenCode启动异常、界面错乱、无法打开会话时,删除此目录是官方推荐的快速修复方法。

3.4 /Users/zwy/.local/share/opentui

核心定位

OpenTUI框架共享数据目录。OpenTUI是OpenCode底层依赖的终端UI开发框架,OpenCode的整个交互界面、组件、渲染逻辑均基于OpenTUI构建。此目录是OpenTUI的全局共享数据目录,所有基于OpenTUI开发的应用(包括OpenCode),都会共享这里的通用配置和资源。

目录下核心文件/子目录&作用

文件/子目录

核心作用

补充说明

themes/ 子目录

OpenTUI全局主题库

存放所有基于OpenTUI的应用通用的终端配色、主题预设、渲染样式,OpenCode的主题继承自此

components/ 子目录

UI组件缓存与配置

存放OpenTUI通用UI组件(输入框、弹窗、进度条等)的渲染配置、样式预设,所有基于OpenTUI的应用都会复用这些组件

config/ 子目录

OpenTUI全局配置

存放终端渲染规则、字体适配、快捷键全局映射、兼容性配置,用于适配iTerm2、Warp等不同终端软件

log/ 子目录

OpenTUI框架运行日志

存放UI渲染、终端交互、快捷键响应的日志,用于排查界面卡顿、渲染错乱、快捷键失效等问题

cache/ 子目录

UI渲染缓存

存放终端界面的渲染缓存、字体光栅化缓存,加快界面启动和渲染速度,删除后重启会自动重建

关键说明

  • 该目录和OpenCode解耦,即使卸载OpenCode,此目录也会保留(无其他基于OpenTUI的应用可直接删除);
  • 遇到OpenCode界面渲染错乱、快捷键失效、启动后界面空白时,删除此目录,重启会自动重建默认配置,快速解决问题。

3.5 /Users/zwy/.opencode

核心定位

旧版本兼容目录+全局扩展目录。此目录是OpenCode早期v0.1.x版本的主配置/数据目录,后来软件全面重构后,迁移到了符合XDG规范的.config/.local/share目录,现在仅用于兼容和扩展,新版本不会写入核心配置/数据

目录下常见文件/子目录&作用

文件/子目录

核心作用

补充说明

legacy_config.json

旧版本配置备份

从旧版本升级时自动生成,用于配置迁移和回滚,升级完成后不会被新版本读取

bin/ 子目录

旧版本二进制文件目录

早期curl安装时,会把opencode二进制文件放在这里,新版本默认安装到~/.local/bin/,这里仅作为旧版本兼容的回退路径

templates/ 子目录

全局项目模板

存放项目模板、代码片段模板、Agent模板,执行opencode init初始化项目时,会自动复制到当前项目目录

scripts/ 子目录

全局自定义脚本

存放全局shell/Python脚本,可在OpenCode的终端命令、Agent执行中直接调用,跨项目通用

.env

全局环境变量文件

存放API Key、代理配置等敏感信息,OpenCode启动时会自动加载,优先级高于系统环境变量

关键说明

  • 新安装的最新版OpenCode,此目录大概率为空,或仅有少量兼容文件;
  • 注意区分:用户根目录的~/.opencode项目根目录的.opencode文件夹,后者是项目级配置目录,仅在当前项目启动OpenCode时生效,优先级高于全局配置。

实用补充指南

  1. 重装/迁移备份方案:仅需备份2个目录,即可完整保留所有数据和配置:
    • 配置备份:~/.config/opencode
    • 数据备份:~/.local/share/opencode
  1. 常见故障快速修复
    • 配置不生效/启动报错:删除~/.config/opencode/opencode.json,重启自动生成默认配置;
    • 启动异常/界面错乱:删除~/.local/state/opencode~/.local/share/opentui目录,重启自动重建;
    • 任务卡住/限流报错:优先查看~/.local/share/opencode/log/下的最新日志定位问题。
  1. 隐藏目录显示:macOS访达中按快捷键 Shift+Command+. 可一键显示/隐藏以.开头的隐藏目录。

四、核心配置:从一键接入到自定义多模型

安装完成后,第一步就是完成 LLM 模型的配置,这是 OpenCode 能正常工作的核心。我们提供从「新手一键配置」到「多模型自定义配置」的全方案。

4.1 新手首选:OpenCode Zen 一键接入

如果你是第一次使用,不想折腾复杂配置,直接用官方提供的一键接入方式:

  1. 终端执行 opencode 启动程序
  2. 在 TUI 界面输入 /connect 命令,选择 opencode
  3. 浏览器会自动打开 opencode.ai/auth 页面,完成登录并添加账单信息
  4. 复制页面生成的 API 密钥,粘贴回终端,回车确认
  5. 配置完成,直接即可使用官方精选的模型,无需额外配置。

4.2 进阶配置:自定义 LLM 提供商

如果你想使用火山引擎、谷歌 Gemini 等自定义模型,需要编辑 OpenCode 的全局配置文件。

第一步:找到配置文件路径

OpenCode 的全局配置文件固定路径为:

~/.config/opencode/opencode.json

如果该文件/目录不存在,直接手动创建即可:

# 创建目录和配置文件
mkdir -p ~/.config/opencode && touch ~/.config/opencode/opencode.json
第二步:完整配置模板(可直接复制)

以下配置同时兼容火山引擎豆包谷歌 Gemini,替换成你自己的 API Key 即可直接使用:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "volcengine": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "火山引擎豆包",
      "options": {
        "baseURL": "https://ark.cn-beijing.volces.com/api/v3",
        "apiKey": "替换为你的火山引擎API Key"
      },
      "models": {
        "doubao-code-pro": {
          "id": "doubao-seed-2-0-pro-260215",
          "name": "豆包代码2.0 Pro",
          "limit": {
            "context": 65536,
            "output": 8192
          }
        }
      }
    },
    "google": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Google Gemini",
      "options": {
        "baseURL": "https://generativelanguage.googleapis.com/v1beta/openai/",
        "apiKey": "替换为你的Gemini API Key"
      },
      "models": {
        "gemini-2.5-flash": {
          "name": "Gemini 2.5 Flash",
          "limit": {
            "context": 1048576,
            "output": 8192
          }
        },
        "gemini-2.5-pro": {
          "name": "Gemini 2.5 Pro",
          "limit": {
            "context": 1048576,
            "output": 8192
          }
        }
      }
    }
  },
  "model": "volcengine/doubao-code-pro",
  "autoupdate": "notify"
}
核心配置字段说明

字段

核心作用

注意事项

$schema

配置文件的 JSON 校验规则

固定保留,编辑器会自动提供补全提示

provider

自定义 LLM 提供商配置

可同时添加多个提供商,互不冲突

npm

对接模型使用的 SDK

国内厂商通用 @ai-sdk/openai-compatible

baseURL

模型 API 接口地址

必须和厂商提供的地址完全一致,结尾不要多余斜杠

models

该提供商下的模型列表

外层 key 是自定义简称,id 必须和厂商的模型 ID 完全一致

limit.context

模型的上下文窗口大小

单位为 tokens,决定 AI 能记住的最大内容长度

limit.output

模型单次最大输出长度

单位为 tokens,决定 AI 一次能生成的最大代码/文本长度

model

全局默认模型

格式为 提供商/模型简称,启动后默认使用

第三步:配置生效

配置文件保存后,完全退出 OpenCode(Ctrl+D),关闭终端重新打开,执行 opencode 启动,输入 /models 命令,即可看到你配置的所有模型,选择即可一键切换。

4.3 全局配置 vs 项目级配置

很多人会混淆两个核心目录,这里明确说明:

  • 全局配置~/.config/opencode/opencode.json
    所有项目通用的配置,所有目录启动 OpenCode 都会默认加载,适合存放通用的模型、快捷键、权限配置。
  • 项目级配置你的项目目录/.opencode/opencode.json
    仅当前项目生效,会合并覆盖全局配置的同名字段,适合为不同项目设置专属模型、代码规范、工具权限。
  • ~/.opencode 目录:curl 安装脚本自动创建,仅存放 OpenCode 的二进制可执行文件,和配置无关,不要修改里面的内容。

五、基础使用:从项目初始化到核心工作流

配置完成后,我们以一个真实的前端项目为例,带你走通 OpenCode 的完整基础工作流。

5.1 项目初始化

  1. 进入你的项目目录,启动 OpenCode:
cd /path/to/your/react-project
opencode
  1. 执行初始化命令,让 OpenCode 认识你的项目:
/init

执行后,OpenCode 会自动分析你的项目结构,在项目根目录生成 .opencode/AGENTS.md 文件。

5.2 核心文件 AGENTS.md 深度使用

AGENTS.md 是 OpenCode 的「项目专属提示词文件」,也是让 AI 精准理解你的项目的核心,强烈建议提交到 Git 仓库,团队所有成员都能获得一致的 AI 辅助体验。

你可以手动编辑这个文件,填入项目的核心信息,示例如下:

# 项目说明
这是一个基于 React 19 + TypeScript + Vite 的企业级中后台管理系统。

## 技术栈
- 前端框架:React 19 + TypeScript 5 + Vite 6
- 状态管理:Zustand
- UI 组件库:Ant Design 5
- 路由:React Router v7
- 请求库:Axios
- 代码规范:ESLint + Prettier + Husky

## 代码规范
- 组件名使用 PascalCase,文件名使用 kebab-case
- 2 空格缩进,禁止使用 Tab
- 接口请求统一封装在 `src/api/` 目录下,按模块划分
- 提交信息必须遵循 Conventional Commits 规范(feat/fix/docs/chore)

## 关键目录说明
- `src/pages/`:页面组件,按路由模块划分
- `src/components/`:通用公共组件
- `src/store/`:Zustand 状态管理
- `src/utils/`:通用工具函数
- `src/hooks/`:自定义 React Hooks

编辑完成后,OpenCode 会自动读取这个文件,后续生成的代码会严格遵循你的项目规范,不会出现「瞎写代码、风格不符」的问题。

5.3 两大核心模式:Plan 与 Build

OpenCode 最核心的设计就是「规划-执行」分离的双模式,通过 Tab 键一键切换,右下角会显示当前模式。

模式

核心作用

适用场景

Build 模式(默认)

AI 可直接读写文件、执行终端命令、修改代码

简单需求修改、bug 修复、已确认方案的功能实现

Plan 模式

AI 只读不写,仅输出方案规划、技术选型、实现步骤,不修改任何文件

新功能开发、复杂重构、不确定需求的方案讨论

最佳实践:所有新功能开发,先用 Plan 模式和 AI 对齐方案,确认无误后,再切换到 Build 模式执行,避免 AI 瞎改代码,大幅降低返工率。

5.4 高频核心命令与交互技巧

常用命令(/ 开头,回车执行)

命令

核心功能

/init

初始化/更新项目上下文,生成 AGENTS.md

/models

查看/切换当前使用的 AI 模型

/undo

撤销上一次 AI 对代码的修改,支持多次撤销

/redo

重做上一次撤销的修改

/new

新建会话,清空当前上下文

/sessions

查看/切换历史会话

/share

生成当前对话的分享链接,自动复制到剪贴板

/help

查看所有命令帮助

/exit

退出 OpenCode

高频交互技巧
  1. 文件引用:用 @ 符号快速引用项目中的文件,无需手动写路径,支持模糊搜索:
帮我优化 @src/components/table.tsx 这个组件的性能
解释 @src/utils/request.ts 里的请求拦截逻辑
  1. 直接执行 Shell 命令:用 ! 前缀直接在 OpenCode 里执行终端命令,无需切换窗口:
!npm install antd
!git status
!npm run dev
  1. 中断执行:如果 AI 正在执行错误的操作,按 Esc 键即可立即中断。

六、进阶实战:解锁 OpenCode 的高阶能力

掌握基础用法后,我们通过3个实战场景,解锁 OpenCode 的高阶能力,让它真正成为你的「终端研发副驾」。

实战一:React 项目新功能全流程开发

我们以「给中后台系统新增一个用户管理模块」为例,走通完整的「规划-执行-验证」全流程:

  1. 进入项目,切换到 Plan 模式
    启动 OpenCode,按 Tab 键切换到 Plan 模式,输入需求:
给系统新增一个用户管理模块,需求如下:
1. 页面包含用户列表,支持分页、模糊搜索、按状态筛选
2. 支持新增、编辑、删除用户,重置用户密码
3. 用户字段包含:用户名、手机号、邮箱、角色、状态、创建时间
4. 接口已在 @src/api/user.ts 中定义,直接调用即可
5. 遵循项目现有的代码规范,用 Ant Design 5 实现
请给出完整的实现方案和开发步骤
  1. 对齐方案,迭代优化
    AI 会输出完整的技术方案、文件结构、实现步骤,你可以补充需求、调整方案,比如:
给用户列表增加批量删除功能,同时增加行内编辑能力
  1. 切换到 Build 模式,执行开发
    方案确认无误后,按 Tab 键切换回 Build 模式,输入指令:
方案没问题,按照上面的规划,完整实现这个用户管理模块

AI 会自动创建文件、编写代码、引入依赖,全程无需你手动操作,完成后会给你输出验证步骤。

实战二:自定义 Agent 与权限管控

OpenCode 支持自定义 Agent,为不同场景配置专属的模型、提示词、工具权限,避免通用 Agent 出现权限越界、能力不符的问题。

opencode.json 中添加以下配置,即可创建一个「只读分析专用 Agent」,只能分析代码,不能修改文件、执行命令:

{
  "agent": {
    "code-review": {
      "name": "代码审查专家",
      "model": "google/gemini-2.5-pro",
      "mode": "primary",
      "description": "专门用于代码审查、性能优化、安全漏洞检测,只读不写",
      "permission": {
        "read": "allow",
        "edit": "deny",
        "bash": "deny",
        "websearch": "allow",
        "codesearch": "allow"
      },
      "prompt": "你是一名资深前端架构师,专注于代码审查,需要从代码规范、性能、安全性、可维护性四个维度,给出详细的审查报告和优化建议,不修改代码,只输出分析结果。"
    }
  }
}

配置完成后,重启 OpenCode,输入 /agent code-review 即可一键切换到这个专属 Agent,专门用于代码审查。

实战三:通过 MCP 协议扩展无限能力

MCP(模型上下文协议)是 OpenCode 的核心扩展能力,你可以把它理解成「AI 的万能插座」,通过它可以给 OpenCode 接入数据库、第三方 API、UI 组件库、云服务等外部工具,打破能力边界。

示例:接入 shadcn/ui MCP 服务器,一键添加 UI 组件
  1. opencode.json 中添加 MCP 配置:
{
  "mcp": {
    "shadcn": {
      "type": "local",
      "command": ["npx", "-y", "@mcp-marketplace/shadcn-ui"],
      "enabled": true
    }
  }
}
  1. 重启 OpenCode,AI 会自动加载 shadcn/ui 的工具,你可以直接输入指令:
给我添加一个 shadcn 的数据表格组件,带分页、排序、筛选功能

AI 会自动调用 MCP 工具,安装组件、写入代码,无需你手动操作。

除此之外,你还可以接入 PostgreSQL、MySQL、GitHub、飞书、钉钉等各种 MCP 服务器,让 OpenCode 从「编码工具」变成「全流程研发助手」。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐