小伙伴们,大家好,我是小溪,见字如面。距离OpenCode爆火有一段时间了,在别人都在夸OpenCode时一直没有使用是因为没有找到切换AI开发工具的契机,最近随着各公益站的接连陨落,每次会话任务还没有结束公益就陨落了,不得不终止终端切换配置再重启激活历史会话,真的很让人心累。我体验了一下OpenCode感觉很好很契合我的使用场景,一次配置多个公益站,陨落一个直接切换到下一个完全不用退出会话,这里记录一下使用方式。对其他CLI使用感兴趣的小伙伴也可以看往期内容:

优势

  • macOS、Windows、Linux全平台支持
  • 支持多模型提供商,一键切换模型,无需重启CLI

限制

  • 没有独立的Hooks、自定义命令配置,依赖OpenCode插件系统写代码自定义

简介

OpenCode是一款开源的 AI 编程助手(Coding Agent),它不绑定特定模型(支持 Claude、GPT、Ollama 等),主打高性能的终端交互(TUI)和插件化架构,旨在为开发者提供一个比肩 Claude Code 但更自由、可扩展的自动化编程环境。

官网地址:https://opencode.ai

Image

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

Image

核心亮点

  • 全平台自由度:你可以自由切换后端模型,既能连接云端大模型,也支持通过 Local LLM 实现完全离线开发。
  • 深耕终端体验:由 Neovim 资深用户打造,提供极速的命令行交互与 LSP 支持,非常适合追求效率的命令行玩家。
  • 智能代理模式:内置 build(全功能开发)和 plan(只读分析)两种模式,能够自主执行搜索、编辑代码及运行 Bash 命令。
  • 架构灵活:采用客户端/服务器(C/S)架构,支持远程驱动,方便集成到不同的开发工作流中。

OpenCode官网模型

Zen(优化模型集合)

OpenCode Zen是由 OpenCode 团队推出的一个面向 AI 编程智能体(Coding Agents)的经过优化和验证的模型集合。

由于市面上模型众多且不同平台的 API 配置(如提示词过滤、参数限制)各异,导致它们在执行编程任务时的表现参差不齐。Zen的存在就是为了解决“哪个模型写代码最稳”的问题。

Image

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 就是为这个机器人提供动力的“廉价且高质量的电池”。

Image

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进行安装了,安装完成后可以看到如下界面

Image

基本使用

命令行参数

在命令行终端输入 **opencode -h**查看命令行帮助文档

Image

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提供了终端命令行补全命令,没有添加命令补全之前命令行终端不会给我们任何提示,命令都需要我们手敲

Image

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

Image

我们也可以直接执行下面命令一键将配置写入 .zshrc,写入完成后记得执行 source ~/.zshrc 使配置文件生效

$ opencode completion >> ~/.zshrc
$ source ~/.zshrc

新开命令行终端,输入 opencode 然后按下【Tab】键就可以看到补全提示了

Image

自定义提供商

1)手动配置

1.在 ~/.opencode/opencode.json 与 ~/.config/opencode/opencode.json中配置效果一样
2.配置文件中的模型提供商名称必须与Auth login中输入的Provider ID完全一致

OpenCode中已经内置了非常的模型提供商,如果没有我们需要的也可以自定义模式提供商,但是仍有需要注意的地方。

第一步配置模型提供商ID,在命令行终端输入 opencode auth login,选择【Other】

Image

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

Image

第二步模型提供商配置,打开 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就可以看到我们配置的自定义提供商了

Image

2)快捷配置

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

Image

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

Image

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提供了丰富的内置命令,我们在交互式命令中输入 / 即可唤起

Image

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

Image

1)模型配置与切换

在交互式命令中输入 /models 会弹出模型选择菜单,可以自行查找选择

Image

也可以进行检索筛选

Image

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

Image

2)对话模式

OpenCode中除了显示模式还有很多隐藏的系统代理

OpenCode提供了 Plan和Build 2种显示模式以及 General 和Explore 2种代理模式:

  • Plan (规划模式): 一个专为规划和分析设计的受限代理,使用权限系统提供更多控制权,并防止意外更改

  • Build (构建模式):启用了所有工具的默认主代理,用于需要完全访问文件操作和系统命令的开发工作的标准代理

  • General(subagent):一个用于研究复杂问题和执行多步骤任务的通用代理,拥有完整的工具访问权限(todo 除外),因此可以在需要时修改文件。可用于并行运行多个工作单元

  • Explore(subagent):一个用于探索代码库的快速只读代理,无法修改文件,当需要按模式快速查找文件、搜索代码中的关键字或回答有关代码库的问题时,请使用此代理

默认是 Build模式,在交互式命令中使用【Tab】键可以进行快速切换

Image

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

Image

3)聊天会话

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

Image

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

Image

支持粘贴图片上下文

Image

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

Image

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

Image

权限控制

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

Image

我们也可以在 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后会自行安装依赖

Image

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

Image

插件系统

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
        }
    },
  }
}

当我们触发权限请求的时候就可以看到通知了

Image

MCP

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

Image

第二种方式修改 .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配置列表

Image

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

Image

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

Image

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.

Image

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

Image

参考资料

  • https://linux.do/t/topic/1329050

友情提示

见原文:初识OpenCode CLI

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐