Skip to content

指南

基于 OpenCode 2026 版编写

速查

  • 添加 provider:TUI 输入 /connect,凭据存 ~/.local/share/opencode/auth.json
  • 全局配置:~/.config/opencode/opencode.json,项目配置:<project>/opencode.json
  • 切模型:/modelsprovider/model 格式
  • 切 agent:Tab 在 Plan / Build 主代理切换
  • AGENTS.md:项目根目录,兼容 CLAUDE.md
  • 自定义命令:.opencode/commands/<name>.md/<name> 触发
  • 自定义 agent:.opencode/agents/<name>.mdopencode.jsonagent 字段
  • MCP 配置:opencode.jsonmcp 字段,stdio + 远程都支持
  • 撤销改动:/undo,分享会话:/share
  • 退出:Ctrl+C 两次 / :q

模型与 Provider

OpenCode 通过 Models.dev 注册表接入 75+ provider,是它最大卖点。

添加 provider

bash
# TUI 内
/connect

弹出可选 provider 列表,选一个后引导填 API key。常见组合:

Provider用途
anthropicClaude 全家桶
openaiGPT / o-series
googleGemini
openrouter一个 key 接 100+ 模型(含 Anthropic / OpenAI / 开源)
groq快速推理(Llama / Mixtral)
together开源模型托管
deepseek国内可用 + 便宜
ollama本地推理
lmstudio本地 GGUF
azureAzure OpenAI
bedrockAWS Bedrock
vertexGoogle Vertex AI
opencode-zensst 官方策展(含订阅)

凭据写入 ~/.local/share/opencode/auth.json

json
{
  "anthropic": { "api_key": "sk-ant-..." },
  "openai": { "api_key": "sk-..." },
  "ollama": { "base_url": "http://localhost:11434" }
}

在 opencode.json 配 provider

需要自定义 baseURL / 自建 provider 时直接写配置:

json
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "anthropic": {
      "options": {
        "baseURL": "https://api.anthropic.com/v1"
      }
    },
    "deepseek": {
      "options": {
        "baseURL": "https://api.deepseek.com/v1"
      }
    },
    "my-corp-llm": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "https://llm.mycorp.com/v1",
        "headers": { "X-Org": "team-a" }
      },
      "models": {
        "gpt-4o-equivalent": {
          "name": "Corp Internal Model"
        }
      }
    }
  }
}

OpenAI 兼容 API 通用接法

任何 OpenAI 兼容 API(智谱 / Kimi / 阶跃星辰 / 自建 vLLM 等)都能走 @ai-sdk/openai-compatible,填 baseURL 就接好。

选模型

bash
/models

模型格式 provider/model。在 opencode.json 中可设默认:

json
{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-6",
  "small_model": "anthropic/claude-haiku-4-5"
}
  • model:主模型(处理推理 / 写代码)
  • small_model:轻任务用(生成会话标题、总结、补全等)—— 省钱关键

模型决策直觉

场景推荐
复杂规划 / 重构anthropic/claude-opus-4-7
日常编码(90%)anthropic/claude-sonnet-4-6 / openai/gpt-5.5
国内场景 + 性价比deepseek/deepseek-v3
完全离线ollama/llama-3.3-70b
速度敏感groq/llama-3.3-70b
多供应商对比openrouter/<any>

Plan vs Build:两档主代理

Tab 在两档主代理间切换:

Agent行为
Build全权限——可改文件 / 跑 bash / 调外部工具,默认
Plan只读——能读 / 搜索 / 抓网页,但不动文件
[TUI 顶部状态栏]
agent: plan  →  按 Tab  →  agent: build

典型工作流

1. Plan 模式 + Opus 规划
   > 帮我设计 Phase 2 用户系统
   (OpenCode 产出详细方案,不动文件)

2. Tab 切 Build + Sonnet 实施
   > 按方案改代码
   (OpenCode 按步骤动手)

Plan 模式禁了什么

Plan 把 edit / write / bash(写命令)等工具 deny 掉,但 read / glob / grep / webfetch / websearch 仍可用。所以分析 + 检索 + 提议代码段都没问题,只是不会真的落盘。

Subagents:子代理

OpenCode 除主代理(Plan / Build),还有可由主代理调用的子代理

子代理工具用途
general全工具多步任务(替主代理跑独立子任务)
explore只读(read/glob/grep)大范围搜索 / 找代码
scout只读 + webfetch依赖 / 文档调研

用法(主代理对话里):

> 用 @explore 帮我找出所有 useUser 调用点
> 然后 @scout 看看 react-query v5 的迁移指南

主代理调子代理 = spawn 独立上下文,子代理跑完返回总结,不污染主线程。

自定义子代理

.opencode/agents/<name>.md~/.config/opencode/agents/<name>.md

md
---
description: TypeScript bug hunter for type narrowing issues
tools:
  read: allow
  grep: allow
  glob: allow
  edit: deny
  bash: deny
model: anthropic/claude-opus-4-7
temperature: 0.2
---

You are an expert TypeScript bug hunter. Focus on:

- Type narrowing issues
- Generic constraint problems
- Missing `as const` / `satisfies`
- Discriminated union exhaustiveness

Output format: { file, line, issue, suggested fix }

字段:

字段说明
description何时调用(主代理据此判断)
tools工具权限(allow / ask / deny)
model模型覆盖(如主线程 Sonnet,子代理 Opus)
temperature创意度(0.0-1.0)
max_steps最多步数(防失控)
prompt系统提示词(也可写在 markdown body)

也可在 opencode.json 内联:

json
{
  "agent": {
    "bug-hunter": {
      "description": "...",
      "model": "anthropic/claude-opus-4-7",
      "tools": { "edit": "deny", "bash": "deny" },
      "prompt": "You are..."
    }
  }
}

调用:@bug-hunter 帮我...

权限系统

OpenCode 的权限粒度比 Claude Code 更细——每个工具单独配。

配置位置

json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "*": "ask",
    "read": "allow",
    "glob": "allow",
    "grep": "allow",
    "edit": "ask",
    "bash": {
      "*": "ask",
      "git status*": "allow",
      "git diff*": "allow",
      "pnpm *": "allow",
      "rm -rf*": "deny",
      "git push --force*": "deny"
    },
    "webfetch": "allow",
    "websearch": "allow"
  }
}

三档值:

行为
allow自动执行
ask询问用户
deny拒绝(OpenCode 不能调)

匹配规则

bash 用 glob 模式匹配命令:

json
{
  "bash": {
    "*": "ask",
    "git *": "allow",
    "rm *": "deny"
  }
}

最后匹配获胜——把通配规则放前面,特定规则放后面。

默认权限

工具默认
read / glob / grepallow
edit / write / bashallow(信任本地仓库)
webfetch / websearchallow
.env 读取deny(安全默认)
doom_loop(self-loop)ask
external_directory(项目外路径)ask

信任模型

OpenCode 默认更激进——bash 默认 allow。生产 / 共享机器建议显式改 "*": "ask" 全询问,再 allow 几个白名单。

Per-agent 权限

子代理可单独配权限,覆盖全局:

json
{
  "agent": {
    "code-reviewer": {
      "tools": {
        "edit": "deny",
        "write": "deny",
        "bash": "deny"
      }
    }
  }
}

code-reviewer agent 永远只读,即使主代理 Build 模式启动它。

内置工具

工具用途
read读文件(支持 offset / limit)
write写整个文件(覆盖)
edit精确 string replace
apply_patch应用 patch 文件
bash跑 shell(支持后台)
glob文件名模式匹配
grep全文搜索(ripgrep)
lsp语言服务集成(experimental)
webfetch抓 URL(markdown 转换)
websearchWeb 搜索(Exa AI)
todowrite任务清单
question交互式问用户
skill加载 skill 文档

lsp 工具

lsp 是 OpenCode 的特色——自动启动语言服务器(tsserver / gopls / rust-analyzer),LLM 可调用「找引用」「跳定义」「重命名」等。比 grep 精准但启动慢,experimental flag 控制是否开启。

自定义命令

.opencode/commands/<name>.md~/.config/opencode/commands/<name>.md

md
---
description: Run tests with coverage
agent: build
model: anthropic/claude-sonnet-4-6
---

跑完整测试并显示覆盖率报告,列出所有失败。

TUI 内 /test 触发。

动态内容

命令支持占位符与注入:

md
---
description: Lint a specific file
---

对 $ARGUMENTS 跑 lint,并修复可自动修复的问题。
bash
/lint src/utils/format.ts

$ARGUMENTS(全部参数)/ $1 $2 $3(位置参数)/ !\bash 命令`(注入 bash 输出)/ @文件名`(引用文件内容)都可用。

项目级 vs 用户级

  • .opencode/commands/<name>.md → 进仓库,团队共享
  • ~/.config/opencode/commands/<name>.md → 个人偏好

MCP(Model Context Protocol)

OpenCode 一类支持 MCP,配置在 opencode.jsonmcp 字段。

本地 MCP server

json
{
  "mcp": {
    "context7": {
      "type": "local",
      "command": ["npx", "-y", "@upstash/context7-mcp"]
    },
    "github": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-github"],
      "environment": {
        "GITHUB_TOKEN": "{env:GITHUB_TOKEN}"
      }
    }
  }
}

远程 MCP server

json
{
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/sse",
      "headers": {
        "Authorization": "Bearer {env:SENTRY_TOKEN}"
      }
    },
    "grep-vercel": {
      "type": "remote",
      "url": "https://mcp.grep.app"
    }
  }
}

OAuth 自动处理

某些远程 MCP server 用 OAuth(如 Sentry),OpenCode 通过 Dynamic Client Registration 自动走流程,不用手贴 token。

Per-agent MCP

json
{
  "agent": {
    "research-agent": {
      "mcp": ["context7", "scout"]
    }
  }
}

只把指定的 MCP server 给某个 agent——避免无关 tool 污染上下文。

MCP 加进上下文要谨慎

@modelcontextprotocol/server-github 暴露 100+ tool,token 消耗大。原则:「装少而精」+ 按需开。

变量插值

opencode.json 支持环境变量与文件内容插值:

json
{
  "provider": {
    "anthropic": {
      "options": { "apiKey": "{env:ANTHROPIC_API_KEY}" }
    }
  },
  "instructions": [
    "{file:docs/team-rules.md}",
    "packages/*/AGENTS.md"
  ]
}
  • {env:VAR} → 环境变量
  • {file:path/to/file} → 文件内容
  • instructions 字段还支持 glob(自动展开)

适合管理多人共享凭据与团队规则。

主题与键位

主题

bash
/theme

内置:opencode(默认)/ tokyonight / everforest / catppuccin / gruvbox / nord / system 等。

tui.json 中:

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

system 主题用终端 ANSI 调色板——跟随系统暗 / 亮色。

自定义主题

~/.config/opencode/themes/<name>.json

json
{
  "defs": {
    "bg": "#1a1b26",
    "fg": "#a9b1d6"
  },
  "background": "@bg",
  "foreground": "@fg"
}

支持 hex / ANSI / defs 复用 / "none" 继承终端。

键位

tui.jsonkeybinds

json
{
  "leader": "ctrl+x",
  "leader_timeout": 2000,
  "keybinds": {
    "session_new": "ctrl+x n",
    "session_list": "ctrl+x s",
    "model_select": "ctrl+x m"
  }
}

OpenCode 用 leader key 避免与终端冲突(默认 Ctrl+X)。先按 leader 再按操作键。

Session 管理

列出 / 恢复

bash
opencode session list
opencode session show <session-id>
opencode session export <session-id> > out.json
opencode session import < out.json

# CLI 继续上次
opencode --continue
opencode --continue "再补一段例子"

Share

(TUI 内)
/share

生成可读链接(含完整对话历史 + tool 调用),方便:

  • 让队友看你做了啥
  • 给作者复现 bug
  • 教学 / Demo

多 session 并行

OpenCode 支持同项目多个 session 同时跑——TUI 顶栏切换或新开终端再 opencode,互不干扰。Build 一个写代码,Plan 一个想方案是典型组合。

opencode.json 与 tui.json

OpenCode 把配置拆成两个文件:

文件作用位置
opencode.json模型 / 权限 / agent / MCP / 命令项目根 + 全局
tui.json主题 / 键位 / 滚动 / 通知全局

合并优先级(低 → 高)

  1. 远程 config(.well-known/opencode 组织默认)
  2. 用户全局(~/.config/opencode/opencode.json
  3. OPENCODE_CONFIG 环境变量指定的路径
  4. 项目配置(<project>/opencode.json
  5. Managed settings(管理员强制,最高)

后者覆盖前者,配置是 合并 而非替换。

与 Codex / Gemini CLI / Claude Code 对比

维度OpenCodeCodex CLIGemini CLIClaude Code
模型75+ providerOpenAI 主 + 少数其他Google GeminiAnthropic Claude
开源✓ MIT✓ Apache-2.0部分
私有部署任意仅 OpenAI 服务VertexBedrock / Vertex
中国可用极友好(DeepSeek / Ollama)需自备网络需自备网络需自备网络
ModesPlan / Build / 自定义Plan + sandbox 矩阵受限default / accept / bypass / plan
Skills 体系✗(用 prompt)
Hooks简化受限
MCP✓(一类)✓(部分)✓(一类)
Subagents✓(内置 + 自定义)
LSP 内置
Session 分享✓ /share
TUI 颜值极高(多主题)一般一般一般

怎么选

  • 想用任意模型(含本地)+ 中国大陆OpenCode
  • 重度 Anthropic 用户 + 要 Skill / Hook / Memory → Claude Code
  • 重度 OpenAI 用户 + 要 sandbox 细粒度 → Codex CLI
  • 重度 Google 用户 + 要 1M Gemini → Gemini CLI

大陆访问优势

OpenCode 在大陆是最容易跑起来的 Agent CLI,因为不绑模型:

bash
# 1. DeepSeek 直连(国内可用,便宜)
/connect
> deepseek
> [填 API key]
/models
> deepseek/deepseek-v3

# 2. Ollama 本地(完全离线,无需网络)
ollama pull llama-3.3-70b
/connect
> ollama
> baseURL: http://localhost:11434
/models
> ollama/llama-3.3-70b

# 3. 自家公司的 OpenAI 兼容代理
/connect
> Other
> baseURL: https://llm.mycorp.com/v1
> model: gpt-4o

混搭最香

日常 deepseek/deepseek-v3(便宜快速),复杂规划临时切 anthropic/claude-opus-4-7(走 OpenRouter 接 Anthropic 也行),离线时切 ollama/llama-3.3-70b——一份 auth.json 都装上,/models 随时切。

调试 OpenCode 自身

bash
# 详细日志
opencode --debug

# dump 配置
opencode --print-config

# 临时禁用 LSP
opencode --no-lsp

# 不读 file watcher
OPENCODE_EXPERIMENTAL_DISABLE_WATCHER=1 opencode

# 强制走自定义配置
OPENCODE_CONFIG=./profiles/ci.json opencode

日志位置:~/.local/share/opencode/logs/

性能优化

故障排查

现象排查
/connect 后没出现 provider检查 ~/.local/share/opencode/auth.json 写入了吗
模型选不到/models 看具体 provider 是否连通,可能 baseURL 错
MCP server 红色未连接终端跑 command + args 看 stderr
AGENTS.md 不生效路径在项目根吗 + 重启 opencode
自定义 agent 不识别.opencode/agents/<name>.md 文件名对吗
TUI 渲染乱码换主题(/theme system)或换 terminal emulator
Plan 模式仍在改文件确认顶栏 agent 显示 plan 而非 build
大陆连不上 OpenAI换 provider 走 OpenRouter / DeepSeek / Ollama

安全考量

版本里程碑

版本时间主要变化
0.x2025 初sst 团队启动,TUI 雏形
1.02025 中TypeScript 重写 / Models.dev 接入
1.52025 末MCP 一类支持 / Plan-Build agent
2.02026 初Subagents 内置 / OpenCode Zen 上线
2.x2026Session 分享 / 桌面 App beta / Web UI