macOS OpenCode 指南
OpenCode是一款专为Mac/Linux开发者设计的AI编码工具,具有终端原生、开源、全键盘操作和高度可定制等特点。本文详细介绍了在Mac上安装和使用OpenCode的全流程:从环境准备、多种安装方式选择,到核心目录结构解析和模型配置。重点讲解了OpenCode的「规划-执行」双模式工作流、项目初始化方法,以及通过AGENTS.md文件定制项目专属提示词。进阶部分展示了自定义Agent、权限管
前言
在 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 官方定义的用户级全局配置核心存放地,相当于软件的「设置中心」。所有可自定义的偏好都在这里,修改后重启即可生效,配置优先级仅次于项目级配置。
目录下核心文件/子目录&作用
|
文件/子目录 |
核心作用 |
补充说明 |
|
|
核心主配置文件 |
90%的自定义配置都在这里,包括模型provider配置(你之前配置DeepSeek、限流参数都在此)、默认模型、超时/并发/重试规则、Agent执行逻辑、MCP工具开关、TUI主题、快捷键等,是修改配置的核心文件 |
|
|
配置文件语法校验文件 |
用于编辑器的语法提示、格式合规性校验,避免修改 |
|
|
快捷键自定义配置 |
存放TUI界面全量快捷键映射,比如终止任务、切换面板、调出命令面板等自定义规则 |
|
|
MCP工具全局配置 |
存放第三方MCP工具的连接参数、权限规则、启动配置,和 |
|
|
全局Agent技能存放地 |
这里的自定义Agent技能、规则、模板,会在所有项目中生效,区别于项目目录里仅单项目可用的 |
|
|
自定义TUI主题目录 |
存放终端界面配色、主题文件,可在 |
|
|
全局自定义Agent配置 |
存放你创建的专属Agent角色、系统提示词、执行规则,所有会话均可调用 |
关键说明
- 该目录文件可安全手动修改,重装/迁移OpenCode时,备份此目录可完整保留所有自定义配置,无需重新配置模型、快捷键等;
- 配置优先级:项目级配置 > 此目录全局配置 > 软件内置默认配置。
3.2 /Users/zwy/.local/share/opencode
核心定位
核心持久化数据目录(XDG_DATA_HOME),OpenCode 官方定义的核心数据仓库,存放软件运行产生的、需长期保留的非配置类数据,相当于软件的「数据库+资源库」,不建议手动修改内部文件,避免数据损坏。
目录下核心文件/子目录&作用
|
文件/子目录 |
核心作用 |
补充说明 |
|
|
全量运行日志存放地 |
你之前排查卡顿、限流、任务卡住的核心目录,日志以时间戳命名(如 |
|
|
身份认证与密钥管理核心文件 |
通过 |
|
|
SQLite主数据库 |
OpenCode的核心数据存储,存放所有会话历史、消息记录、任务执行日志、代码片段收藏、项目上下文缓存、终端命令历史、模型调用统计等,TUI界面的历史会话均从此读取 |
|
|
细分持久化数据存储 |
包含项目专属数据、会话快照、Agent执行记录、工具输出缓存、会话diff对比数据等,和主数据库配合实现数据持久化 |
|
|
第三方插件安装目录 |
存放你安装的扩展插件、自定义工具、命令脚本的代码和资源文件,启动时自动加载 |
|
|
MCP工具运行时文件 |
存放MCP工具的二进制安装包、依赖包、运行时缓存、执行日志 |
|
|
版本升级临时目录 |
存放 |
|
|
项目专属数据 |
按项目路径/仓库名分类存放每个项目的会话数据、上下文缓存,避免不同项目数据混淆 |
关键说明
- 重装软件时,备份此目录可完整保留所有会话历史、登录状态、插件、日志数据;
- 日志文件占用空间过大时,可手动删除老旧日志,不影响软件核心运行。
3.3 /Users/zwy/.local/state/opencode
核心定位
运行时状态目录(XDG_STATE_HOME),存放软件运行中产生的、非必须长期保留的临时状态数据,相当于软件的「临时记忆+运行快照」,用于恢复上次的运行状态,不建议手动修改。
目录下核心文件/子目录&作用
|
文件/子目录 |
核心作用 |
补充说明 |
|
|
TUI命令历史文件 |
存放你在OpenCode交互界面输入过的所有指令、Prompt,按时间顺序存储,相当于终端的 |
|
|
会话状态快照 |
存放上次退出时的会话状态,比如打开的会话ID、工作目录、未完成的任务快照,下次启动时自动恢复工作状态 |
|
|
进程锁文件 |
防止同时启动多个OpenCode进程,避免数据库冲突、数据错乱。启动时创建,正常退出时删除;异常崩溃后残留会导致无法启动,删除即可修复 |
|
|
崩溃日志与转储文件 |
存放软件异常崩溃时的堆栈信息、内存转储、运行状态,是排查闪退、异常退出的核心依据 |
|
|
终端窗口状态文件 |
记录上次退出时的窗口大小、面板布局、UI折叠状态,下次启动时自动恢复界面布局 |
|
|
运行时临时文件 |
存放PID文件、进程通信socket、临时上下文缓存,正常退出时自动清理 |
关键说明
- 该目录所有文件均为运行时自动生成,即使全部删除,也不会影响软件核心功能,仅丢失上次的会话状态、命令历史,重启后会自动重建;
- 遇到OpenCode启动异常、界面错乱、无法打开会话时,删除此目录是官方推荐的快速修复方法。
3.4 /Users/zwy/.local/share/opentui
核心定位
OpenTUI框架共享数据目录。OpenTUI是OpenCode底层依赖的终端UI开发框架,OpenCode的整个交互界面、组件、渲染逻辑均基于OpenTUI构建。此目录是OpenTUI的全局共享数据目录,所有基于OpenTUI开发的应用(包括OpenCode),都会共享这里的通用配置和资源。
目录下核心文件/子目录&作用
|
文件/子目录 |
核心作用 |
补充说明 |
|
|
OpenTUI全局主题库 |
存放所有基于OpenTUI的应用通用的终端配色、主题预设、渲染样式,OpenCode的主题继承自此 |
|
|
UI组件缓存与配置 |
存放OpenTUI通用UI组件(输入框、弹窗、进度条等)的渲染配置、样式预设,所有基于OpenTUI的应用都会复用这些组件 |
|
|
OpenTUI全局配置 |
存放终端渲染规则、字体适配、快捷键全局映射、兼容性配置,用于适配iTerm2、Warp等不同终端软件 |
|
|
OpenTUI框架运行日志 |
存放UI渲染、终端交互、快捷键响应的日志,用于排查界面卡顿、渲染错乱、快捷键失效等问题 |
|
|
UI渲染缓存 |
存放终端界面的渲染缓存、字体光栅化缓存,加快界面启动和渲染速度,删除后重启会自动重建 |
关键说明
- 该目录和OpenCode解耦,即使卸载OpenCode,此目录也会保留(无其他基于OpenTUI的应用可直接删除);
- 遇到OpenCode界面渲染错乱、快捷键失效、启动后界面空白时,删除此目录,重启会自动重建默认配置,快速解决问题。
3.5 /Users/zwy/.opencode
核心定位
旧版本兼容目录+全局扩展目录。此目录是OpenCode早期v0.1.x版本的主配置/数据目录,后来软件全面重构后,迁移到了符合XDG规范的.config/.local/share目录,现在仅用于兼容和扩展,新版本不会写入核心配置/数据。
目录下常见文件/子目录&作用
|
文件/子目录 |
核心作用 |
补充说明 |
|
|
旧版本配置备份 |
从旧版本升级时自动生成,用于配置迁移和回滚,升级完成后不会被新版本读取 |
|
|
旧版本二进制文件目录 |
早期curl安装时,会把opencode二进制文件放在这里,新版本默认安装到 |
|
|
全局项目模板 |
存放项目模板、代码片段模板、Agent模板,执行 |
|
|
全局自定义脚本 |
存放全局shell/Python脚本,可在OpenCode的终端命令、Agent执行中直接调用,跨项目通用 |
|
|
全局环境变量文件 |
存放API Key、代理配置等敏感信息,OpenCode启动时会自动加载,优先级高于系统环境变量 |
关键说明
- 新安装的最新版OpenCode,此目录大概率为空,或仅有少量兼容文件;
- 注意区分:用户根目录的
~/.opencode和 项目根目录的.opencode文件夹,后者是项目级配置目录,仅在当前项目启动OpenCode时生效,优先级高于全局配置。
实用补充指南
- 重装/迁移备份方案:仅需备份2个目录,即可完整保留所有数据和配置:
-
- 配置备份:
~/.config/opencode - 数据备份:
~/.local/share/opencode
- 配置备份:
- 常见故障快速修复:
-
- 配置不生效/启动报错:删除
~/.config/opencode/opencode.json,重启自动生成默认配置; - 启动异常/界面错乱:删除
~/.local/state/opencode和~/.local/share/opentui目录,重启自动重建; - 任务卡住/限流报错:优先查看
~/.local/share/opencode/log/下的最新日志定位问题。
- 配置不生效/启动报错:删除
- 隐藏目录显示:macOS访达中按快捷键
Shift+Command+.可一键显示/隐藏以.开头的隐藏目录。
四、核心配置:从一键接入到自定义多模型
安装完成后,第一步就是完成 LLM 模型的配置,这是 OpenCode 能正常工作的核心。我们提供从「新手一键配置」到「多模型自定义配置」的全方案。
4.1 新手首选:OpenCode Zen 一键接入
如果你是第一次使用,不想折腾复杂配置,直接用官方提供的一键接入方式:
- 终端执行
opencode启动程序 - 在 TUI 界面输入
/connect命令,选择opencode - 浏览器会自动打开
opencode.ai/auth页面,完成登录并添加账单信息 - 复制页面生成的 API 密钥,粘贴回终端,回车确认
- 配置完成,直接即可使用官方精选的模型,无需额外配置。
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"
}
核心配置字段说明
|
字段 |
核心作用 |
注意事项 |
|
|
配置文件的 JSON 校验规则 |
固定保留,编辑器会自动提供补全提示 |
|
|
自定义 LLM 提供商配置 |
可同时添加多个提供商,互不冲突 |
|
|
对接模型使用的 SDK |
国内厂商通用 |
|
|
模型 API 接口地址 |
必须和厂商提供的地址完全一致,结尾不要多余斜杠 |
|
|
该提供商下的模型列表 |
外层 key 是自定义简称, |
|
|
模型的上下文窗口大小 |
单位为 tokens,决定 AI 能记住的最大内容长度 |
|
|
模型单次最大输出长度 |
单位为 tokens,决定 AI 一次能生成的最大代码/文本长度 |
|
|
全局默认模型 |
格式为 |
第三步:配置生效
配置文件保存后,完全退出 OpenCode(Ctrl+D),关闭终端重新打开,执行 opencode 启动,输入 /models 命令,即可看到你配置的所有模型,选择即可一键切换。
4.3 全局配置 vs 项目级配置
很多人会混淆两个核心目录,这里明确说明:
- 全局配置:
~/.config/opencode/opencode.json
所有项目通用的配置,所有目录启动 OpenCode 都会默认加载,适合存放通用的模型、快捷键、权限配置。 - 项目级配置:
你的项目目录/.opencode/opencode.json
仅当前项目生效,会合并覆盖全局配置的同名字段,适合为不同项目设置专属模型、代码规范、工具权限。 ~/.opencode目录:curl 安装脚本自动创建,仅存放 OpenCode 的二进制可执行文件,和配置无关,不要修改里面的内容。
五、基础使用:从项目初始化到核心工作流
配置完成后,我们以一个真实的前端项目为例,带你走通 OpenCode 的完整基础工作流。
5.1 项目初始化
- 进入你的项目目录,启动 OpenCode:
cd /path/to/your/react-project
opencode
- 执行初始化命令,让 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 高频核心命令与交互技巧
常用命令(/ 开头,回车执行)
|
命令 |
核心功能 |
|
|
初始化/更新项目上下文,生成 AGENTS.md |
|
|
查看/切换当前使用的 AI 模型 |
|
|
撤销上一次 AI 对代码的修改,支持多次撤销 |
|
|
重做上一次撤销的修改 |
|
|
新建会话,清空当前上下文 |
|
|
查看/切换历史会话 |
|
|
生成当前对话的分享链接,自动复制到剪贴板 |
|
|
查看所有命令帮助 |
|
|
退出 OpenCode |
高频交互技巧
- 文件引用:用
@符号快速引用项目中的文件,无需手动写路径,支持模糊搜索:
帮我优化 @src/components/table.tsx 这个组件的性能
解释 @src/utils/request.ts 里的请求拦截逻辑
- 直接执行 Shell 命令:用
!前缀直接在 OpenCode 里执行终端命令,无需切换窗口:
!npm install antd
!git status
!npm run dev
- 中断执行:如果 AI 正在执行错误的操作,按
Esc键即可立即中断。
六、进阶实战:解锁 OpenCode 的高阶能力
掌握基础用法后,我们通过3个实战场景,解锁 OpenCode 的高阶能力,让它真正成为你的「终端研发副驾」。
实战一:React 项目新功能全流程开发
我们以「给中后台系统新增一个用户管理模块」为例,走通完整的「规划-执行-验证」全流程:
- 进入项目,切换到 Plan 模式
启动 OpenCode,按Tab键切换到 Plan 模式,输入需求:
给系统新增一个用户管理模块,需求如下:
1. 页面包含用户列表,支持分页、模糊搜索、按状态筛选
2. 支持新增、编辑、删除用户,重置用户密码
3. 用户字段包含:用户名、手机号、邮箱、角色、状态、创建时间
4. 接口已在 @src/api/user.ts 中定义,直接调用即可
5. 遵循项目现有的代码规范,用 Ant Design 5 实现
请给出完整的实现方案和开发步骤
- 对齐方案,迭代优化
AI 会输出完整的技术方案、文件结构、实现步骤,你可以补充需求、调整方案,比如:
给用户列表增加批量删除功能,同时增加行内编辑能力
- 切换到 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 组件
- 在
opencode.json中添加 MCP 配置:
{
"mcp": {
"shadcn": {
"type": "local",
"command": ["npx", "-y", "@mcp-marketplace/shadcn-ui"],
"enabled": true
}
}
}
- 重启 OpenCode,AI 会自动加载 shadcn/ui 的工具,你可以直接输入指令:
给我添加一个 shadcn 的数据表格组件,带分页、排序、筛选功能
AI 会自动调用 MCP 工具,安装组件、写入代码,无需你手动操作。
除此之外,你还可以接入 PostgreSQL、MySQL、GitHub、飞书、钉钉等各种 MCP 服务器,让 OpenCode 从「编码工具」变成「全流程研发助手」。
更多推荐

所有评论(0)