初识OpenCode CLI
OpenCode是一款开源的 AI 编程助手(Coding Agent),它不绑定特定模型(支持 Claude、GPT、Ollama 等),主打高性能的终端交互(TUI)和插件化架构,旨在为开发者提供一个比肩 Claude Code 但更自由、可扩展的自动化编程环境。官网地址:https://opencode.aiGithub地址:https://github.com/anomalyco/open
小伙伴们,大家好,我是小溪,见字如面。距离OpenCode爆火有一段时间了,在别人都在夸OpenCode时一直没有使用是因为没有找到切换AI开发工具的契机,最近随着各公益站的接连陨落,每次会话任务还没有结束公益就陨落了,不得不终止终端切换配置再重启激活历史会话,真的很让人心累。我体验了一下OpenCode感觉很好很契合我的使用场景,一次配置多个公益站,陨落一个直接切换到下一个完全不用退出会话,这里记录一下使用方式。对其他CLI使用感兴趣的小伙伴也可以看往期内容:
- Claude Code CLI初体验
- Google百万Token上下文Gemini CLI,离AI自由更近一步
- Codex CLI初体验
- 初识Qwen Code CLI
- 初识iFlow CLI
- 初识Amp Code
优势
- macOS、Windows、Linux全平台支持
- 支持多模型提供商,一键切换模型,无需重启CLI
限制
- 没有独立的Hooks、自定义命令配置,依赖OpenCode插件系统写代码自定义
简介
OpenCode是一款开源的 AI 编程助手(Coding Agent),它不绑定特定模型(支持 Claude、GPT、Ollama 等),主打高性能的终端交互(TUI)和插件化架构,旨在为开发者提供一个比肩 Claude Code 但更自由、可扩展的自动化编程环境。
官网地址:https://opencode.ai

Github地址:https://github.com/anomalyco/opencode

核心亮点
- 全平台自由度:你可以自由切换后端模型,既能连接云端大模型,也支持通过 Local LLM 实现完全离线开发。
- 深耕终端体验:由 Neovim 资深用户打造,提供极速的命令行交互与 LSP 支持,非常适合追求效率的命令行玩家。
- 智能代理模式:内置 build(全功能开发)和 plan(只读分析)两种模式,能够自主执行搜索、编辑代码及运行 Bash 命令。
- 架构灵活:采用客户端/服务器(C/S)架构,支持远程驱动,方便集成到不同的开发工作流中。
OpenCode官网模型
Zen(优化模型集合)
OpenCode Zen是由 OpenCode 团队推出的一个面向 AI 编程智能体(Coding Agents)的经过优化和验证的模型集合。
由于市面上模型众多且不同平台的 API 配置(如提示词过滤、参数限制)各异,导致它们在执行编程任务时的表现参差不齐。Zen的存在就是为了解决“哪个模型写代码最稳”的问题。

1)付费方式
-
按需付费(Pay-as-you-go)
-
充值20刀(会产生+$1.23 银行卡手续费)
2)模型
OpenCode Zen中包含以下模型:
-
免费精选模型 (免费):Big Pickle、MiniMax M2.5 Free、Nemotron 3 Super Free
-
高性能专业模型 (按需付费):Claude 系列、GPT 系列、Gemini 系列
-
其他高效能模型:Kimi、GLM、Minimax、Qwen
Go(低成本模型)
OpenCode Go是 OpenCode 团队为开发者提供的低成本 AI 模型订阅服务。
简单来说就是如果你把 OpenCode 看作一个可以帮你写代码的“机器人壳子”,那么 OpenCode Go 就是为这个机器人提供动力的“廉价且高质量的电池”。

1)付费方式
- 订阅10刀(首月5刀)
- 周期使用限制(每5小时重制)
2)模型
-
智谱 (GLM) 系列:glm-5、glm-5.1
-
Kimi (Moonshot) 系列:Kimi K2.5、Kimi K2.6
-
MiMo 系列:MiMo-V2-Pro、MiMo-V2-Omni、MiMo-V2.5、MiMo-V2.5-Pro
-
Qwen 系列:Qwen3.5 Plus、Qwen3.6 Plus
-
MiniMax 系列: MiniMax M2.5、MiniMax M2.7
安装配置
curl
$ curl -fsSL https://opencode.ai/install | bash
npm
$ npm i -g opencode-ai
bun
$ bun add -g opencode-ai
brew
$ brew install anomalyco/tap/opencode
paru
$ paru -S opencode
这里我直接使用curl进行安装了,安装完成后可以看到如下界面

基本使用
命令行参数
在命令行终端输入 **opencode -h**查看命令行帮助文档

OpenCode 命令说明:
-
completion: 生成 Shell 自动补全脚本
-
acp: 启动 ACP (Agent Client Protocol) 服务端
-
mcp: 管理 MCP (Model Context Protocol) 服务端
-
[project]: 启动 OpenCode TUI(终端用户界面),这是默认操作
-
attach: 连接到一个正在运行的 OpenCode 服务端
-
run: 直接运行 OpenCode 并发送指定消息
-
debug: 调试与故障排除工具
-
providers: 管理 AI 服务商及身份凭证(别名:auth)
-
agent: 管理智能体(Agents)
-
upgrade: 升级 OpenCode 至最新版或指定版本
-
uninstall: 卸载 OpenCode 并删除所有相关文件
-
serve: 启动无界面的 OpenCode 后台服务端
-
web: 启动服务端并自动打开浏览器 Web 界面
-
models: 列出指定服务商支持的所有 AI 模型
-
stats: 显示 Token 使用量及产生的费用统计
-
export: 将当前或指定会话数据导出为 JSON 文件
-
import: 从本地 JSON 文件或 URL 导入会话数据
-
github: 管理 GitHub 专用智能体
-
pr: 获取并检出 GitHub PR 分支,随后直接在代码上下文中运行 OpenCode
-
session: 管理历史会话记录
-
plugin: 安装插件并自动更新配置文件(别名:plug)
-
db: 数据库维护与管理工具
快捷键
OpenCode中提供了一系列快捷键:
-
ctrl+a:移动到当前行的开头
-
ctrl+e:移动到当前行的末尾
-
ctrl+b:光标向后移动一个字符
-
ctrl+f:光标向前移动一个字符
-
alt+b:光标向后移动一个单词
-
alt+f:光标向前移动一个单词
-
ctrl+d:删除光标所在位置的字符
-
ctrl+k:删除从光标到行尾的内容
-
ctrl+u:删除从光标到行首的内容
-
ctrl+w:删除前一个单词
-
alt+d:删除后一个单词
-
ctrl+t:交换光标前后的字符
-
ctrl+g:取消弹出窗口或中止正在运行的响应
Shell命令自动补全
OpenCode提供了终端命令行补全命令,没有添加命令补全之前命令行终端不会给我们任何提示,命令都需要我们手敲

在命令终端执行 opencode completion 会输出补全命令

我们也可以直接执行下面命令一键将配置写入 .zshrc,写入完成后记得执行 source ~/.zshrc 使配置文件生效
$ opencode completion >> ~/.zshrc
$ source ~/.zshrc
新开命令行终端,输入 opencode 然后按下【Tab】键就可以看到补全提示了

自定义提供商
1)手动配置
1.在 ~/.opencode/opencode.json 与 ~/.config/opencode/opencode.json中配置效果一样
2.配置文件中的模型提供商名称必须与Auth login中输入的Provider ID完全一致
OpenCode中已经内置了非常的模型提供商,如果没有我们需要的也可以自定义模式提供商,但是仍有需要注意的地方。
第一步配置模型提供商ID,在命令行终端输入 opencode auth login,选择【Other】

输入【自定义提供商ID】(这里只允许输入 【a-z,0-9】),回车输入【API Key】

第二步模型提供商配置,打开 OpenCode 配置目录(路径因系统而异):
-
macOS / Linux: ~/.config/opencode/opencode.json
-
Windows: Users\***\.config\opencode/opencode.json
模型提供商配置格式如下:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"localquotio": { // 这里必须和上一步的提供商 ID 完全一致!
"npm": "@ai-sdk/openai-compatible",
"name": "Quotio provider", // 在 UI 中显示的名称,可自定义
"options": {
"baseURL": "http://localhost:8317/v1" // API 地址(必须以 /v1 结尾或符合 OpenAI 格式)
// "apiKey": "{cred:myproxy}" // 可选:自动引用上一步存储的密钥(推荐,不用明文key)
// 如果中转站需要自定义 headers,可添加:
// "headers": {
// "X-Custom-Header": "your-value"
// }
},
"models": {
"claude-opus-4.6": { // 模型ID
"name": "Claude Opus 4.6"
},
"claude-sonnet-4.6": {
"name": "Claude Sonnet 4.6"
},
"claude-haiku-4.5": {
"name": "Claude haiku 4.5"
}
}
}
}
}
配置完成后,重启OpenCode就可以看到我们配置的自定义提供商了

2)快捷配置
使用CC Switch配置自定义模型提供商最为简单,直接选择【OpenCode】新建一个配置,对CC Switch还不了解的小伙伴可以看往期内容:一键切换Cluade、Codex供应商配置,CC Switch你值得一试

填写 供应商标识、Base URL、API Key 和 模型ID 配置即可

LSP
将环境变量 OPENCODE_DISABLE_LSP_DOWNLOAD 设置为 true 来禁用 LSP 服务器的自动下载
OpenCode天然支持LSP,目前已经内置 30多种 语言服务器。OpenCode也支持自定义LSP服务器,需要自定义配置的直接在 opencode.json 文件中配置即可
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
交互式命令
OpenCode提供了丰富的内置命令,我们在交互式命令中输入 / 即可唤起

使用快捷键【Ctrl+P】可以唤起内置命令

1)模型配置与切换
在交互式命令中输入 /models 会弹出模型选择菜单,可以自行查找选择

也可以进行检索筛选

在交互式命令中输入 /connect 会弹出模型提供商选择菜单,可以对模型提供商进行配置

2)对话模式
OpenCode中除了显示模式还有很多隐藏的系统代理
OpenCode提供了 Plan和Build 2种显示模式以及 General 和Explore 2种代理模式:
-
Plan (规划模式): 一个专为规划和分析设计的受限代理,使用权限系统提供更多控制权,并防止意外更改
-
Build (构建模式):启用了所有工具的默认主代理,用于需要完全访问文件操作和系统命令的开发工作的标准代理
-
General(subagent):一个用于研究复杂问题和执行多步骤任务的通用代理,拥有完整的工具访问权限(todo 除外),因此可以在需要时修改文件。可用于并行运行多个工作单元
-
Explore(subagent):一个用于探索代码库的快速只读代理,无法修改文件,当需要按模式快速查找文件、搜索代码中的关键字或回答有关代码库的问题时,请使用此代理
默认是 Build模式,在交互式命令中使用【Tab】键可以进行快速切换

使用 @ 可以快速唤起 General 和 Explore 代理

3)聊天会话
输入【!】可以进入Shell模式,快速执行Shell命令,使用【ESC】键可以退出Shell模式

使用【@】可以添加工作区文件到会话中

支持粘贴图片上下文

任务执行过程中,可以实时查看上下文窗口信息、LSP信息、文件修改列表及代码Diff

多任务执行可以在右侧看到任务列表和任务完成情况

权限控制
OpenCode不会过度询问工作区内部文件的读、写等权限,但是对于工作区外部文件的读取等操作仍然会请求询问权限。

我们也可以在 opencode.json 配置文件中手动配置权限控制
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
规则文件
OpenCode中规则文件包含 项目级 和 全局级 2种类型:
-
项目级:仅对工作区生效,路径为 ./AGENTS.md
-
全局级:对所有用户生效,路径为 ~/.config/opencode/AGENTS.md
在OpenCode中可以通过创建 AGENTS.md 文件来为OpenCode提供自定义指令。创建新的 AGENTS.md 文件,可以在交互式命令中运行 /init 命令。
AGENTS.md 文件的格式和其他AI Agent一样可以使用Markdown语法来写
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`
OpenCode支持与Claude Code的兼容性,当项目级或全局级目录中没有 AGENTS.md 文件时使用 CLAUDE.md
自定义工具
在项目目录下新建 .opencode 目录,创建 tools/math.ts 文件
import { tool } from "@opencode-ai/plugin"
export const add = tool({
description: "Add two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return String(args.a + args.b)
},
})
export const multiply = tool({
description: "Multiply two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return String(args.a * args.b)
},
})
创建 index.ts 入口
import { add, multiply } from "./tools/math.js"
export const server = async () => {
return {
tool: {
math_add: add,
math_multiply: multiply,
},
}
}
如果代码有缺少依赖的报错不用担心,重启OpenCode后会自行安装依赖

重启完成后,直接输入提示词,OpenCode就会调用对应的工具执行

插件系统
OpenCode支持插件,目前已经有了插件生态系统:https://opencode.ai/docs/ecosystem#plugins,包含之前很火的 oh-my-opencode
OpenCode使用插件有 从本地文件加载 和 从npm加载2种插件加载方式。
1)从本地文件加载
将 JavaScript 或 TypeScript 文件放置在插件目录中。
-
项目级插件:针对当前项目生效,路径在: .opencode/plugins/
-
全局插件:针对当前用户生效,路径在:~/.config/opencode/plugins/
2)从 npm 加载
修改 .opencode/opencode.json或者 ~/.config/opencode/opencode.json 配置文件,填写插件配置
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}
Hooks(自定义插件)
OpenCode中没有像Claude Code CLI一样有独立的Hooks配置,在OpenCode中Hooks都是以插件形式配置的,通用自定义插件模版如下
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
// Type-safe hook implementations
}
}
以通知为例,创建 .opencode/plugins/notification.ts,配置以下内容
|
注意:osascript脚本中不能使用中文,使用中文通知无法显示(不知道是不是使用技巧的问题) |
import type { Plugin } from "@opencode-ai/plugin"
export const NotificationPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
event: async ({ event }) => {
// 会话结束
if (event.type === "session.idle") {
await $`osascript -e 'display notification "Session completed!" with title "OpenCode"'`
return
}
// 请求权限更新
if (event.type === ("permission.asked" as "permission.updated")) {
await $`osascript -e 'display notification "Permission updated for tool ${event.type}" with title "OpenCode"'`
return
}
},
}
}
当我们触发权限请求的时候就可以看到通知了

MCP
OpenCode提供了交互式方式配置MCP,在命令行终端执行 opencode mcp add,根据提示进行配置

第二种方式修改 .opencode/opencode.json或者 ~/.config/opencode/opencode.json 配置文件,以 Playwright MCP为例配置如下:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
在终端命令行输入 opencode mcp list 查看MCP配置列表

启动OpenCode CLI,在交互式命令中输入 /mcp 也可以查看MCP信息

还有一个简单的方式就是使用 CC Switch的MCP管理工具,一次配置只需要勾选即可启动,对CC Switch还不了解的小伙伴可以看往期内容:一键切换Cluade、Codex供应商配置,CC Switch你值得一试

Skills
OpenCode配置Skills也很简单,只需要将SKills文件目录放置到 .opencode/skills 目录下即可,以 git release skill 为例,添加 git-release/SKILL.md
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## 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 you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.

重启OpenCode,在交互式命令中输入 /skills 即可看到刚刚配置的Skills

参考资料
- https://linux.do/t/topic/1329050
友情提示
见原文:初识OpenCode CLI
更多推荐


所有评论(0)