OpenCode 技术文档
开源 AI 编程助手 —— 无供应商锁定的 Claude Code 替代方案,支持 75+ LLM 提供商
一、项目概览
1.1 项目定位
OpenCode 是一款开源的 AI 编程助手,定位为 Claude Code 的开源替代品。它专为开发者设计,提供自主代码生成、修改和项目管理能力,同时避免供应商锁定。
目标场景
终端环境下的智能编程辅助,支持代码分析、生成、重构和调试
目标用户
偏好终端工作流的开发者,特别是 Neovim/Vim 用户群体
核心理念
开源透明、无供应商绑定、可扩展、以终端为中心
1.2 核心价值
- 供应商无关:支持 Claude、OpenAI、Google、Azure、AWS Bedrock 以及本地模型(Ollama、LM Studio)
- 完全透明:MIT 协议开源,代码可审计,无隐藏遥测
- 原生 LSP 支持:开箱即用的语言服务器协议集成,提供代码定义、引用、悬停信息
- Client/Server 架构:支持远程操作,可在服务器运行 OpenCode 并从本地连接
- 高度可定制:自定义命令、工具、技能、Agent、主题
1.3 社区数据
1.4 技术栈
核心依赖:Bun(包管理器)、Turbo(Monorepo)、Nix(配置)、SST(基础设施)
二、快速开始
2.1 系统要求
| 要求 | 说明 |
|---|---|
| 操作系统 | macOS、Linux、Windows |
| 终端 | 支持 Truecolor 的现代终端(WezTerm、Alacritty、Ghostty、Kitty、iTerm2) |
| LLM API Key | 至少一个 LLM 提供商的 API 密钥(或使用 OpenCode Zen) |
2.2 安装方式
# 官方一键安装脚本(推荐)
curl -fsSL https://opencode.ai/install | bash
安装目录优先级:$OPENCODE_INSTALL_DIR → $XDG_BIN_DIR → $HOME/bin → $HOME/.opencode/bin
# 使用 npm
npm install -g opencode-ai@latest
# 使用 Bun
bun install -g opencode-ai@latest
# 使用 pnpm
pnpm add -g opencode-ai@latest
# macOS / Linux
brew install opencode
# 安装桌面应用(Beta)
brew install --cask opencode-desktop
# Windows - Scoop
scoop bucket add extras
scoop install extras/opencode
# Windows - Chocolatey
choco install opencode
# Arch Linux
paru -S opencode-bin
# Nix
nix run nixpkgs#opencode
# Mise
mise use -g github:sst/opencode
2.3 首次运行
cd your-project
opencode
在 TUI 中输入 /connect 命令,选择 LLM 提供商并完成认证
新手可选择 OpenCode Zen,无需单独申请 API Key
运行 /init 命令,自动分析代码库并生成 AGENTS.md 配置文件
使用 @ 符号引用文件,按 Tab 切换 Agent 模式
三、核心概念
3.1 Agent 体系
OpenCode 采用双 Agent 架构,通过 Tab 键在不同模式间切换:
Build Agent
默认模式。拥有完整的文件系统访问和命令执行权限,用于实际的代码修改和开发任务。
Plan Agent
只读模式。用于代码分析和方案规划,不会修改任何文件,适合在执行前预览实施策略。
Subagent(子代理)
- General:通过
@general调用,处理复杂的多步骤搜索和研究任务 - Explore:专门用于代码库探索和结构分析
3.2 Provider 支持
OpenCode 通过 AI SDK 和 Models.dev 支持 75+ LLM 提供商:
| 类型 | 支持的提供商 |
|---|---|
| 云服务 | OpenAI、Anthropic (Claude)、Google (Gemini)、Azure OpenAI、AWS Bedrock |
| 本地模型 | Ollama、LM Studio、llama.cpp |
| 其他 | Groq、Together AI、Fireworks、Mistral、Cohere 等 |
3.3 配置层级
配置按以下优先级覆盖(后者覆盖前者):
- 全局配置:
~/.config/opencode/ - 项目配置:
.opencode/(项目根目录) - 工作目录配置:
.opencode/(当前工作目录)
3.4 主题系统
内置 10+ 预设主题,支持自定义:
// opencode.json
{
"theme": "tokyonight"
}
四、配置详解
4.1 配置文件结构
主配置文件为 opencode.json,可放置于全局或项目目录:
{
// 主题设置
"theme": "tokyonight",
// Provider 配置
"provider": {
"anthropic": {
"options": {
"baseURL": "https://api.anthropic.com/v1"
}
}
},
// 权限控制
"permission": {
"edit": "ask",
"bash": "ask"
},
// 工具配置
"tools": {
"lsp": true,
"webfetch": true
}
}
4.2 Provider 配置
认证方式
API 密钥存储于 ~/.local/share/opencode/auth.json,通过 /connect 命令配置
自定义 Provider 示例
{
"provider": {
"my-provider": {
"npm": "@ai-sdk/openai-compatible",
"name": "My Custom Provider",
"options": {
"baseURL": "https://api.myprovider.com/v1",
"apiKey": "{env:MY_API_KEY}"
},
"models": {
"my-model": {
"name": "My Model"
}
}
}
}
}
使用 {env:VARIABLE_NAME} 引用环境变量,避免在配置文件中硬编码密钥
4.3 权限系统
OpenCode 提供细粒度的权限控制,每个工具支持三种权限级别:
| 级别 | 说明 |
|---|---|
allow |
允许操作,无需用户确认 |
ask |
每次操作前询问用户确认 |
deny |
禁止该操作 |
Bash 命令粒度控制
{
"permission": {
"bash": {
"git *": "allow",
"npm test": "allow",
"rm *": "ask",
"terraform *": "deny"
}
}
}
特殊权限项
doom_loop:防止无限循环,当相同工具调用连续重复 3+ 次时触发确认external_directory:保护工作目录外的文件修改
五、内置工具
OpenCode 提供 13 个内置工具,LLM 可调用这些工具与代码库交互:
| 工具 | 功能 | 说明 |
|---|---|---|
bash |
执行 Shell 命令 | 运行终端操作如 npm install、git status |
edit |
修改文件 | 通过精确文本匹配进行文件编辑 |
write |
创建/覆写文件 | 创建新文件或完全覆写现有文件 |
read |
读取文件 | 支持指定行范围读取大文件 |
grep |
正则搜索 | 在代码库中快速搜索内容 |
glob |
文件模式匹配 | 使用 glob 模式查找文件如 **/*.js |
list |
目录列表 | 列出目录内容,支持 glob 过滤 |
lsp |
代码智能 | 提供定义跳转、引用查找、悬停信息(实验性) |
patch |
应用补丁 | 应用 diff/patch 文件到代码 |
skill |
加载技能 | 加载 SKILL.md 文件内容 |
todowrite |
创建任务 | 在复杂操作中管理进度跟踪 |
todoread |
读取任务 | 读取当前任务列表状态 |
webfetch |
网页抓取 | 获取并读取网页内容 |
工具配置
可在 opencode.json 中全局或按 Agent 配置工具启用状态:
{
"tools": {
"lsp": true,
"webfetch": false,
"mymcp_*": false // 通配符批量控制
}
}
六、Agent 系统
6.1 Agent 配置选项
| 选项 | 说明 |
|---|---|
description |
Agent 描述(必填) |
mode |
primary / subagent / all |
model |
覆盖默认模型,格式:provider/model-id |
prompt |
自定义系统提示词,支持 {file:./path} 引用 |
temperature |
创造性控制(0.0-1.0),越低越确定性 |
maxSteps |
限制代理迭代次数 |
tools |
启用/禁用特定工具 |
permission |
设置工具访问级别 |
6.2 创建自定义 Agent
方式一:JSON 配置
{
"agent": {
"reviewer": {
"description": "Code review specialist",
"mode": "subagent",
"model": "anthropic/claude-3-opus",
"temperature": 0.2,
"tools": {
"edit": false,
"write": false
}
}
}
}
方式二:Markdown 文件(~/.config/opencode/agent/reviewer.md)
6.3 Temperature 指南
- 0.0 - 0.2:分析任务,需要精确和一致性
- 0.3 - 0.5:常规开发,平衡创造性和准确性
- 0.6 - 1.0:头脑风暴,需要多样化输出
七、自定义扩展
7.1 自定义命令
创建方式:在 .opencode/command/ 目录下添加 Markdown 文件,或在 opencode.json 中定义
// opencode.json
{
"command": {
"test": {
"template": "Run all tests for $ARGUMENTS and report failures",
"description": "Run tests for specified module"
}
}
}
命令特性
- 参数替换:
$ARGUMENTS、$1、$2等 - Shell 输出注入:
!`command`语法 - 文件引用:
@filename表示法 - 可覆盖内置命令
7.2 自定义工具
使用 TypeScript/JavaScript 定义自定义工具:
// .opencode/tool/database.ts
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Execute database queries",
args: {
query: tool.schema.string().describe("SQL query to execute")
},
async execute(args) {
// 实现逻辑
return { result: "Query executed" }
}
})
7.3 Skills(技能)
Skills 是可复用的指令集,存放于 .opencode/skill/<name>/SKILL.md
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
---
## Instructions
When creating a release:
1. Update CHANGELOG.md
2. Bump version in package.json
3. Create git tag
...
命名规则
- 1-64 字符
- 仅小写字母、数字、连字符
- 不能以连字符开头或结尾
- 目录名必须与
name字段匹配
八、完整实战教程
本教程将引导你从零开始,完成 OpenCode 的完整工作流程。
使用 OpenCode 为一个 Node.js 项目添加用户认证功能
curl -fsSL https://opencode.ai/install | bash
预期结果:终端显示安装成功,opencode --version 返回版本号
# 启动 OpenCode
cd your-project
opencode
# 在 TUI 中执行
/connect
选择 Provider(如 OpenAI),输入 API Key 完成认证
预期结果:显示 "Connected to OpenAI" 或类似提示
/init
预期结果:生成 AGENTS.md 文件,包含代码库分析结果
按 Tab 切换到 Plan 模式,输入:
分析当前项目结构,规划添加 JWT 用户认证功能的实现方案
需要包括:用户模型、注册/登录接口、中间件
预期结果:获得详细的实施计划,但不会修改任何文件
按 Tab 切换回 Build 模式,批准计划并开始实施:
按照上述计划,实现用户认证功能
每个文件修改前会请求确认
@src/routes/auth.js 添加密码重置端点
使用 @ 语法精确指定要修改的文件
# 撤销上一次修改
/undo
# 重做被撤销的修改
/redo
创建 .opencode/command/auth-test.md:
---
description: Run authentication tests
---
Run all tests in src/__tests__/auth/ and report failures with suggestions
使用 /auth-test 调用
/theme catppuccin
预期结果:TUI 界面切换为 Catppuccin 配色
/share
预期结果:生成可分享的对话链接
你已掌握 OpenCode 的核心工作流程!可继续探索自定义工具、远程模式等高级功能。
九、最佳实践
9.1 工作流程建议
- 先 Plan 后 Build:复杂任务先用 Plan Agent 分析,确认方案后再切换到 Build
- 精确引用:使用
@filepath明确指定目标文件,减少误操作 - 分步执行:大型重构分解为小步骤,每步验证后再继续
- 善用 /undo:出错时立即撤销,避免错误累积
9.2 性能优化
- 合理配置
maxSteps限制迭代次数 - 对大型代码库,使用
glob和grep工具而非全量读取 - 启用 LSP 获得更精确的代码智能,减少不必要的搜索
9.3 安全注意事项
- 生产环境 API Key 使用环境变量,不硬编码
- 敏感命令(如
rm、数据库操作)设置为ask权限 - 启用
external_directory保护,防止修改工作目录外文件 - 定期审计
.opencode/中的自定义工具代码
9.4 故障排除
| 问题 | 解决方案 |
|---|---|
| 主题颜色异常 | 确认终端支持 Truecolor:echo $COLORTERM 应返回 truecolor |
| Provider 连接失败 | 检查 API Key 和网络代理设置,尝试配置 baseURL |
| LSP 不工作 | 确认对应语言的 Language Server 已安装并在 PATH 中 |
| Skill 不显示 | 验证 SKILL.md 大小写、frontmatter 格式、命名规则 |
十、资源与参考
10.1 官方资源
- 官网:opencode.ai
- 文档:opencode.ai/docs
- GitHub:github.com/sst/opencode
- NPM:npmjs.com/package/opencode-ai
10.2 社区渠道
- Discord:opencode.ai/discord
- Twitter/X:@opencode
- GitHub Discussions:项目 Issues 和 Discussions 板块
10.3 相关项目对比
| 特性 | OpenCode | Claude Code |
|---|---|---|
| 开源 | ✅ MIT | ❌ 闭源 |
| Provider 支持 | 75+ 提供商 | 仅 Anthropic |
| LSP 支持 | ✅ 原生 | ❌ |
| 远程操作 | ✅ Client/Server | ❌ |
| 界面 | Terminal TUI | Terminal TUI |
| 可定制性 | 高(命令/工具/技能/Agent) | 中 |
10.4 贡献指南
如需贡献代码,请参阅: