把 AI 程序员
装进你的终端
OpenCode 是一个开源的 AI 编程智能体。它能读写文件、执行命令、管理 Git、派出子任务——像一个真正坐在你终端里的工程师。本页用一屏讲清它的全部用法。
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.js | npm install -g opencode-ai(bun / pnpm / yarn 同理) |
| Homebrew | brew install anomalyco/tap/opencode |
| Arch Linux | sudo pacman -S opencode · 最新版 paru -S opencode-bin |
| Windows | 推荐 WSL;原生用 choco install opencode 或 scoop install opencode |
| Docker | docker run -it --rm ghcr.io/anomalyco/opencode |
§升级与卸载
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 等)。
路线 B · 自带 Key
/connect 里选你的 provider,或直接在终端 opencode auth login。支持 Anthropic、OpenAI、Google、DeepSeek 等几乎所有厂商,凭据存在 ~/.local/share/opencode/auth.json。
opencode auth login # 交互式配置任意 provider 的 Key opencode auth list # 查看已登录的 provider opencode models # 列出所有可用模型(格式:provider/model) opencode models --refresh # 刷新模型缓存,看到最新上架
04 · Quickstart
快速上手:七步走完第一轮
-
进入项目,启动 OpenCode
它会读取当前目录作为工作区。
terminal cd /path/to/project opencode
-
初始化项目记忆
输入
/init,它会分析代码库并在根目录生成AGENTS.md——以后每次会话都会带上这份「项目说明书」。记得提交到 Git。 -
@ 引用文件提问
输入
@可模糊搜索文件,文件内容自动进入对话。prompt 示例 这个项目的鉴权是怎么做的?重点看 @packages/functions/src/api/index.ts
-
Tab 切换 Plan / Build
Plan 模式只分析不动手,让它先出方案;觉得靠谱再切回 Build 模式让它实施。右下角有当前模式指示。
-
给足上下文
描述要具体,像跟初级同事交代任务;设计稿、截图直接拖进终端即可作为参考图。消息以
!开头可以直接跑 shell 命令,输出会进入对话。prompt 示例 用户删除笔记时要软删除标记,再做一个回收站页面,可恢复或彻底删除。 参考这张设计稿。[拖入图片] 方案确认后就动手改。
-
后悔药:
/undo与/redo不满意就
/undo——撤回上一条消息、回复以及所有文件改动,改改说法重来。底层靠 Git 实现,所以项目必须是 Git 仓库。 -
分享会话
/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 | 压缩当前会话上下文,省 token | Ctrl+X C |
/models | 查看 / 切换模型 | Ctrl+X M |
/themes | 切换主题 | Ctrl+X T |
/editor | 在外部编辑器里写长 prompt | Ctrl+X E |
/export | 导出会话为 Markdown | Ctrl+X X |
/share / /unshare | 分享 / 取消分享当前会话 | — |
/connect | 添加 provider 和 API Key | — |
/init | 创建 / 更新 AGENTS.md | — |
/details | 展开 / 收起工具执行细节 | — |
/thinking | 显示 / 隐藏思考过程 | — |
/exit | 退出 | Ctrl+X Q |
§让外部编辑器接管长文本
/editor 和 /export 使用 EDITOR 环境变量指定的编辑器。GUI 编辑器记得加 --wait:
export EDITOR="code --wait" # VS Code / Cursor / Windsurf 同理 export EDITOR=nvim # 或终端编辑器
§tui.json:界面微调
TUI 的个性化放在独立的 tui.json 里(与 opencode.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/(全局),文件名即名字:
--- 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 | 干什么、何时用——主控据此决定是否派活(必填) |
mode | primary 主控 / subagent 子代理 / all |
model | 专属模型,规划用便宜快的、实现用强的 |
permission | 工具白名单黑名单,粒度到单条命令 |
steps | 最大迭代步数,控制成本 |
temperature / top_p | 0–0.2 严谨分析,0.6+ 头脑风暴 |
hidden | 不在 @ 补全菜单露出,仅供程序调用 |
disable | true 直接停用该 agent |
懒得手写?终端跑 opencode agent create,问答式帮你生成。
07 · Permissions
权限控制
每个动作三种结局:allow 自动放行 · ask 弹窗询问(once / always / reject)· deny 直接禁止。
{
"$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_loop和external_directory默认 ask,是两道保险丝- 想全自动?启动加
--auto:opencode --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):
{
"$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
--- 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 文件就是一条命令,文件名即命令名。
--- 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
--- 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 数组拉起本地服务,可传环境变量。
Remote 远程服务
填 URL 即用,支持 headers 认证;OAuth 会自动走完授权流程。
type: remote · url: https://...{
"$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…) | 项目资源 |
| 6 | OPENCODE_CONFIG_CONTENT 内联 | 运行时注入 |
| 7 | 企业管控目录 / MDM 描述文件 | 管理员强制,用户不可覆盖 |
§高频配置项
| 键 | 作用 |
|---|---|
model / small_model | 主力模型 / 起标题等杂活的省钱小模型 |
default_agent | 启动时的默认主控(如 "plan") |
share | manual 手动分享 / auto 自动 / disabled 禁用 |
snapshot | 快照支撑 /undo;超大仓库嫌慢可关(关了就不能回滚) |
autoupdate | true 自动更新 / "notify" 仅提醒 |
formatter / lsp | true 开启内置代码格式化 / 语言服务器 |
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 stats | token 用量与花费统计 |
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 年的核心共识是一行公式:
§五个常见名字,其实分属三类
| 名字 | 类别 | 定位 |
|---|---|---|
| Claude Code | 官方 Harness | Anthropic 出品,绑定 Claude;治理与插件生态最强 |
| Codex | 官方 Harness | OpenAI 出品,仅跑 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
常见问题
git init 再开工。opencode --auto 自动批准一切未被显式 deny 的请求。风险自负,deny 规则仍然有效。/compact;少挂不必要的 MCP;配置里开 compaction.prune 清理旧工具输出。opencode models --refresh 强制刷新模型缓存。brew install anomalyco/tap/opencode。permission.read 里对 *.env.example 之类放行。.opencode/ 下对应子目录(commands / agents / skills,注意是复数);个人全局放 ~/.config/opencode/ 同名子目录。