>_OpenCode 教程 官方文档 ↗ GitHub ↗ docs · 2026-08
OpenCode · Visual Guide

把 AI 程序员
装进你的终端

OpenCode 是一个开源的 AI 编程智能体。它能读写文件、执行命令、管理 Git、派出子任务——像一个真正坐在你终端里的工程师。本页用一屏讲清它的全部用法。

开源免费 任意模型 可接入 TUI · Web · IDE MCP · Skills · 子代理
terminal — 30 秒安装
curl -fsSL https://opencode.ai/install | bash
⌨️

TUI 终端界面

主战场。在项目目录输入 opencode 即可开始。

🖥️

桌面应用

图形界面形态,适合不喜欢终端的用户。

🧩

IDE 扩展

在编辑器里直接唤起同一个引擎。opencode web 还能开浏览器界面。

§前置要求

  • 一个现代终端模拟器:WezTerm、Alacritty、Ghostty 或 Kitty(系统自带终端可能渲染异常)
  • 至少一家大模型的 API Key(没有?用官方网关 Zen,见第 03 节,部分模型免费用)

§核心概念一览

概念一句话解释
Session 会话一次完整对话及其全部改动,可恢复、可撤销
Agent 模式Build 干活 / Plan 规划,Tab 键切换
Tools 工具读写文件、跑命令、搜索等内置能力
Permission 权限决定哪些操作自动放行、询问或禁止
Rules 规则AGENTS.md,写给模型看的项目说明书
Skills 技能按需加载的任务知识包(SKILL.md)
Command 命令/xxx 斜杠命令,可自定义
MCP外接第三方工具的通用协议

02 · Install

安装

一条脚本搞定 macOS / Linux。装完在终端敲 opencode 验证。

§各平台方式

平台命令
脚本(推荐)curl -fsSL https://opencode.ai/install | bash
Node.jsnpm install -g opencode-ai(bun / pnpm / yarn 同理)
Homebrewbrew install anomalyco/tap/opencode
Arch Linuxsudo pacman -S opencode · 最新版 paru -S opencode-bin
Windows推荐 WSL;原生用 choco install opencodescoop install opencode
Dockerdocker run -it --rm ghcr.io/anomalyco/opencode

§升级与卸载

terminal
opencode upgrade        # 升级到最新版
opencode uninstall      # 彻底卸载(保留配置加 -c -d)

03 · Configure

配置模型

两条路:用官方网关 Zen(最省事),或自带任何一家 API Key

🧘

路线 A · OpenCode Zen(推荐新手)

TUI 里输入 /connect,选择 opencode,浏览器登录 opencode.ai/auth 充值拿 Key,回来粘贴即可。Zen 是官方测过、验证过的模型清单,按 token 计费,还有限时免费模型(Big Pickle、Ox Alpha Free 等)。

/connect → 选 opencode → 粘贴 Key
🔑

路线 B · 自带 Key

/connect 里选你的 provider,或直接在终端 opencode auth login。支持 Anthropic、OpenAI、Google、DeepSeek 等几乎所有厂商,凭据存在 ~/.local/share/opencode/auth.json

opencode auth login
terminal
opencode auth login     # 交互式配置任意 provider 的 Key
opencode auth list      # 查看已登录的 provider
opencode models         # 列出所有可用模型(格式:provider/model)
opencode models --refresh  # 刷新模型缓存,看到最新上架

04 · Quickstart

快速上手:七步走完第一轮

  1. 进入项目,启动 OpenCode

    它会读取当前目录作为工作区。

    terminal
    cd /path/to/project
    opencode
  2. 初始化项目记忆

    输入 /init,它会分析代码库并在根目录生成 AGENTS.md——以后每次会话都会带上这份「项目说明书」。记得提交到 Git。

  3. @ 引用文件提问

    输入 @ 可模糊搜索文件,文件内容自动进入对话。

    prompt 示例
    这个项目的鉴权是怎么做的?重点看 @packages/functions/src/api/index.ts
  4. Tab 切换 Plan / Build

    Plan 模式只分析不动手,让它先出方案;觉得靠谱再切回 Build 模式让它实施。右下角有当前模式指示。

  5. 给足上下文

    描述要具体,像跟初级同事交代任务;设计稿、截图直接拖进终端即可作为参考图。消息以 ! 开头可以直接跑 shell 命令,输出会进入对话。

    prompt 示例
    用户删除笔记时要软删除标记,再做一个回收站页面,可恢复或彻底删除。
    参考这张设计稿。[拖入图片] 方案确认后就动手改。
  6. 后悔药:/undo/redo

    不满意就 /undo——撤回上一条消息、回复以及所有文件改动,改改说法重来。底层靠 Git 实现,所以项目必须是 Git 仓库。

  7. 分享会话

    /share 生成链接并复制到剪贴板,发给同事复现问题。默认不公开,/unshare 可随时撤下。

05 · TUI

TUI 界面与命令

所有内置命令都是斜杠开头;多数还有快捷键,前导键是 Ctrl+X,命令面板是 Ctrl+P

命令作用快捷键
/new开新会话(别名 /clear)Ctrl+X N
/sessions列出 / 切换历史会话(别名 /resume)Ctrl+X L
/undo / /redo撤销 / 重做上一轮(含文件改动)Ctrl+X U / R
/compact压缩当前会话上下文,省 tokenCtrl+X C
/models查看 / 切换模型Ctrl+X M
/themes切换主题Ctrl+X T
/editor在外部编辑器里写长 promptCtrl+X E
/export导出会话为 MarkdownCtrl+X X
/share / /unshare分享 / 取消分享当前会话
/connect添加 provider 和 API Key
/init创建 / 更新 AGENTS.md
/details展开 / 收起工具执行细节
/thinking显示 / 隐藏思考过程
/exit退出Ctrl+X Q

§让外部编辑器接管长文本

/editor/export 使用 EDITOR 环境变量指定的编辑器。GUI 编辑器记得加 --wait

~/.zshrc
export EDITOR="code --wait"   # VS Code / Cursor / Windsurf 同理
export EDITOR=nvim            # 或终端编辑器

§tui.json:界面微调

TUI 的个性化放在独立的 tui.json 里(与 opencode.json 分工不同):

~/.config/opencode/tui.json
{
  "$schema": "https://opencode.ai/tui.json",
  "theme": "opencode",
  "diff_style": "auto",
  "cursor": { "style": "block", "blinking": true },
  "mouse": true,
  "attention": { "enabled": true, "sound": true, "volume": 0.4 }
}

06 · Agents

Agent 模式:主控与子代理

OpenCode 的 agent 分两类:Primary 是你直接对话的主控(Tab 循环切换),Subagent 是被主控派活或你 @mention 的专职助手。

🔨

Build 主控

默认模式,全工具开放,正经干活的。

📐

Plan 主控

只分析和出方案;编辑与命令默认都要询问。

🛰️

General 子代理

万能研究员,可多步执行、可改文件,支持并行。

🔍

Explore 子代理

只读快速探索:找文件、搜关键字、答架构问题。

📚

Scout 子代理

只读调研外部文档和依赖源码,不碰工作区。

👻

系统隐藏代理

compaction / title / summary,自动运行,无需理会。

§自定义 Agent:一个 Markdown 文件的事

放到 .opencode/agents/(项目级)或 ~/.config/opencode/agents/(全局),文件名即名字:

.opencode/agents/review.md
---
description: Reviews code for quality and best practices
mode: subagent
model: anthropic/claude-sonnet-4-5
temperature: 0.1
permission:
  edit: deny
  bash: deny
---
You are in code review mode. Focus on quality, bugs,
performance and security. Provide feedback without editing.
选项说明
description干什么、何时用——主控据此决定是否派活(必填)
modeprimary 主控 / subagent 子代理 / all
model专属模型,规划用便宜快的、实现用强的
permission工具白名单黑名单,粒度到单条命令
steps最大迭代步数,控制成本
temperature / top_p0–0.2 严谨分析,0.6+ 头脑风暴
hidden不在 @ 补全菜单露出,仅供程序调用
disabletrue 直接停用该 agent

懒得手写?终端跑 opencode agent create,问答式帮你生成。

07 · Permissions

权限控制

每个动作三种结局:allow 自动放行 · ask 弹窗询问(once / always / reject)· deny 直接禁止。

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "*": "ask",            // 默认都问
    "read": "allow",
    "grep": "allow",
    "bash": {
      "*": "ask",
      "git *": "allow",    // 通配符匹配命令前缀
      "rm *": "deny"
    }
  }
}

§可以管住哪些动作

read edit glob grep bash task(派子代理) skill lsp question webfetch websearch external_directory(越出项目目录时) doom_loop(同一调用重复 3 次时触发)

  • 默认策略很宽松:大多数 allow;但 .env 文件默认禁止读取,防泄密
  • doom_loopexternal_directory 默认 ask,是两道保险丝
  • 想全自动?启动加 --autoopencode --auto——deny 规则依然生效
  • 权限可以在单个 agent 上覆盖,比如给 review 代理全面禁写

08 · Rules

规则:AGENTS.md

一份写给模型看的项目说明书,每次会话自动注入上下文。相当于团队的「新人手册」。

  • /init 自动扫描仓库生成,已有则原地改进;务必提交进 Git
  • 写什么:构建 / lint / 测试命令、目录结构、代码规范、坑与约定——约 100 行以内,像目录页而不是百科全书
  • 两级生效:项目根 AGENTS.md(团队共享)+ 全局 ~/.config/opencode/AGENTS.md(个人偏好,比如「回复用中文」)
  • 从 Claude Code 迁来?项目里的 CLAUDE.md 会自动兜底读取,无缝过渡
  • 已有规范文件不必搬运,instructions 数组直接引入(支持 glob 和远程 URL):
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "instructions": [
    "CONTRIBUTING.md",
    "docs/guidelines.md",
    "packages/*/AGENTS.md",
    "https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"
  ]
}

09 · Skills

Skills 技能

技能是按需加载的任务知识包:平时只在上下文里留一行简介,模型判断相关时才加载全文——比塞进 AGENTS.md 更省 token。

§结构:一个文件夹 + 一个 SKILL.md

.opencode/skills/git-release/SKILL.md
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable gh release create command

## When to use me
Use this when preparing a tagged release.
  • name 必填:小写字母数字加连字符,且必须与目录名一致
  • description 必填(≤1024 字符):写得越准,模型选得越对
  • 放置位置:.opencode/skills/(项目)、~/.config/opencode/skills/(全局);也兼容 .claude/skills/.agents/skills/,跨客户端通用
  • permission.skill 控制谁能加载哪些技能,支持通配符(如 "internal-*": "deny"

10 · Commands

自定义命令

把重复的 prompt 固化成斜杠命令。一个 Markdown 文件就是一条命令,文件名即命令名。

.opencode/commands/component.md
---
description: Create a new React component
agent: build
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.

之后在 TUI 输入 /component Button 即可,$ARGUMENTS 自动替换;也可以用 $1 $2 取位置参数。

§两个杀手锏

  • !`command`:把 shell 命令输出注入 prompt——比如先跑测试再让模型分析
  • @file:把文件内容附进 prompt
.opencode/commands/review-changes.md
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`

Review these changes and suggest improvements.

11 · MCP

MCP 外接工具

通过 Model Context Protocol 给 OpenCode 接上第三方能力:查 Sentry、搜文档、连数据库……配好后工具自动出现在模型面前。

⚙️

Local 本地进程

command 数组拉起本地服务,可传环境变量。

type: local · command: ["npx", "-y", "..."]
☁️

Remote 远程服务

填 URL 即用,支持 headers 认证;OAuth 会自动走完授权流程。

type: remote · url: https://...
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sentry":   { "type": "remote", "url": "https://mcp.sentry.dev/mcp", "oauth": {} },
    "context7": { "type": "remote", "url": "https://mcp.context7.com/mcp" },
    "everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
    }
  }
}
  • 远程 OAuth 服务器首次使用会自动弹授权;手动管理用 opencode mcp auth / list / logout / debug
  • 临时停用某服务器:"enabled": false;批量禁用其工具:"tools": { "my-mcp*": false }
  • 想让模型主动用它:prompt 里加一句 use context7,或在 AGENTS.md 里写明触发条件

12 · Config

配置文件

两个文件分工明确:opencode.json 管行为(模型、权限、MCP……),tui.json 管界面。都支持 JSONC 写注释。

§配置从哪来(低 → 高优先级)

#来源典型用途
1组织远程配置 .well-known/opencode公司统一下发默认值
2全局 ~/.config/opencode/opencode.json个人偏好
3环境变量 OPENCODE_CONFIG 指定文件临时覆盖
4项目根 opencode.json项目专属设置(可入 Git)
5.opencode/ 目录(agents、commands…)项目资源
6OPENCODE_CONFIG_CONTENT 内联运行时注入
7企业管控目录 / MDM 描述文件管理员强制,用户不可覆盖

§高频配置项

作用
model / small_model主力模型 / 起标题等杂活的省钱小模型
default_agent启动时的默认主控(如 "plan")
sharemanual 手动分享 / auto 自动 / disabled 禁用
snapshot快照支撑 /undo;超大仓库嫌慢可关(关了就不能回滚)
autoupdatetrue 自动更新 / "notify" 仅提醒
formatter / lsptrue 开启内置代码格式化 / 语言服务器
compaction上下文压缩:auto / prune(清旧工具输出)/ reserved
subagent_depth子代理嵌套层数,默认 1 层
{env:VAR} / {file:path}引用环境变量 / 文件内容,Key 不用硬编码

13 · CLI

CLI 速查

不带参数就是 TUI;带命令就是脚本化入口。挑最常用的记。

命令用途
opencode启动 TUI(可跟项目路径)
opencode run "..."一次性非交互执行;-c 接上次会话,-m 指定模型,--auto 全自动
opencode serve无头 HTTP 服务,供 SDK / 远程调用
opencode web无头服务 + 浏览器界面,局域网可用
opencode attach <url>把本地 TUI 接到远端后端
opencode auth …login / list / logout 管理 Key
opencode models列模型;--refresh 刷新缓存
opencode agent create问答式创建自定义 agent
opencode session list会话管理(delete 按 ID 删)
opencode statstoken 用量与花费统计
opencode export / import会话导出 JSON / 从文件或分享链接导入
opencode github install在仓库装 GitHub agent(CI 里自动干活)
opencode pr <n>拉取并检出某个 PR 分支开搞
opencode mcp …add / list / auth / debug MCP 服务

§值得记住的环境变量

变量作用
OPENCODE_CONFIG自定义配置文件路径
OPENCODE_TUI_CONFIG自定义 TUI 配置路径
OPENCODE_AUTO_SHARE会话自动分享
OPENCODE_DISABLE_AUTOUPDATE关闭自动更新检查
OPENCODE_SERVER_PASSWORD给 serve / web 加 HTTP 基础认证
OPENCODE_ENABLE_EXA启用 Exa 联网搜索工具

14 · Landscape

延伸:AI 编程工具横评

理解 OpenCode 的最好方式,是把它放进整个赛道看。2026 年的核心共识是一行公式:

Agent = Model + Harness
模型是引擎,Harness 是整辆车——工具执行、权限治理、上下文管理、状态恢复,全是 Harness 的事

§五个常见名字,其实分属三类

名字类别定位
Claude Code官方 HarnessAnthropic 出品,绑定 Claude;治理与插件生态最强
Codex官方 HarnessOpenAI 出品,仅跑 GPT-Codex 系;沙箱与多代理调度最强
opencode开源多模型 Harness引擎随便换(Claude / GPT / DeepSeek / Zen),形态最全
DeepSeek模型厂商只有引擎没有车:官方无第一方 Agent,社区套壳众多
Harness概念词不是产品,是品类:Agent = Model + Harness 里的后半句

§Claude Code vs Codex:框架哲学之别

  • 技术栈:TypeScript + Ink ↔ Rust 核心,单二进制
  • 安全观:Claude Code 以「权限中心」著称(allow/ask/deny + Hooks 硬拦截);Codex 以「沙箱中心」著称(macOS Seatbelt / Linux Landlock 系统级隔离 + 审批分级)
  • 上下文工程:Claude Code 靠动态 Prompt 组装和 subagent 防火墙;Codex 发明了 AGENTS.md 规范,用 git worktree 物理隔离每个任务
  • 商业绑定:前者随 Anthropic 订阅,后者随 ChatGPT 订阅;桌面端都已做出并行会话、可视化 diff、定时任务(Claude 还有实时预览、屏幕控制和手机 Dispatch)

§裸 API 直连 vs Agent 工具

像 Cherry Studio 那样不设系统提示词、直连模型 API,得到的是裸引擎

维度裸 API 聊天窗Agent 工具
工具循环❌ 无✅ 调用 → 结果回灌 → 再推理
动手能力只能贴代码给你自己改文件、跑测试、看报错、再修
验证闭环❌ 对错靠肉眼✅ 跑完 lint / test 才交付
上下文手动粘贴,长了就爆自动组装仓库地图并压缩
权限与回滚allow/ask/deny · undo · worktree 隔离

「不设系统提示词」并不等于更纯净——那只是放弃了角色定义与工具协议。模型还是那个模型,缺的是让能力落地的整套运行时。

15 · FAQ

常见问题

/undo 报错或不生效?
撤销依赖 Git 快照——项目必须先是 Git 仓库。新项目先 git init 再开工。
想让它全程自动干完不要问我?
opencode --auto 自动批准一切未被显式 deny 的请求。风险自负,deny 规则仍然有效。
上下文越来越大、越来越贵怎么办?
长会话随手 /compact;少挂不必要的 MCP;配置里开 compaction.prune 清理旧工具输出。
Windows 用户怎么获得最佳体验?
官方推荐 WSL。原生方案(choco / scoop)能用,但 WSL 性能与兼容性更好。
看不到刚发布的新模型?
opencode models --refresh 强制刷新模型缓存。
brew 装的版本总是旧的?
官方 formula 由 Homebrew 维护、更新滞后。卸载后改用 brew install anomalyco/tap/opencode
它说读不了我的 .env,是 bug 吗?
是安全特性:.env 默认禁止读取,防止密钥泄漏。确有需要可在 permission.read 里对 *.env.example 之类放行。
自定义命令 / agent / skill 到底放哪?
项目相关放 .opencode/ 下对应子目录(commands / agents / skills,注意是复数);个人全局放 ~/.config/opencode/ 同名子目录。