OpenCode 不只是一个终端里的 AI 助手——它同时提供了 TUI、CLI、Web 界面、IDE 扩展和 ACP 协议五种交互方式。不同场景下,最趁手的入口可能完全不同。这篇指南把五种方式的核心操作和配置要点梳理清楚,帮你快速选到合适的界面。
终端交互:TUI 核心操作
TUI 是 OpenCode 最常用的交互界面。在项目目录下运行 opencode 就会进入终端用户界面。
文件引用、Bash 命令与斜杠命令
TUI 里有三个高频操作前缀:
@文件引用:输入@触发模糊文件搜索,选中文件后内容自动注入对话。比如@packages/functions/src/api/index.ts。!Bash 命令:以!开头的消息作为 shell 命令执行,输出自动加入对话。例如!ls -la。/斜杠命令:输入/后跟命令名快速执行操作。大多数命令有快捷键,默认前导键ctrl+x。
常用斜杠命令:
| 命令 | 功能 | 快捷键 |
|---|---|---|
/compact |
压缩会话(别名 /summarize) |
ctrl+x c |
/editor |
打开外部编辑器编写消息 | ctrl+x e |
/exit |
退出(别名 /quit、/q) |
ctrl+x q |
/export |
导出对话为 Markdown | ctrl+x x |
/help |
显示帮助 | ctrl+x h |
/init |
创建/更新 AGENTS.md | ctrl+x i |
/models |
列出可用模型 | ctrl+x m |
/new |
新会话(别名 /clear) |
ctrl+x n |
/sessions |
列出并切换会话 | ctrl+x l |
/share |
分享当前会话 | ctrl+x s |
/themes |
列出可用主题 | ctrl+x t |
/thinking |
切换思考块显示 | — |
/undo |
撤销最后消息及文件更改 | ctrl+x u |
/redo |
重做已撤销操作 | ctrl+x r |
/undo 和 /redo 底层依赖 Git 管理文件变更,项目必须是 Git 仓库才能用。/thinking 只控制思考块是否显示,不改变推理能力——切换推理模式用 ctrl+t。
编辑器设置与 TUI 配置
/editor 和 /export 都依赖 EDITOR 环境变量。GUI 编辑器需加 --wait:
export EDITOR=vim
export EDITOR="code --wait" # GUI 编辑器必须加 --wait
常用选项:code、cursor、windsurf、nvim、vim、nano、subl。永久生效写进 ~/.bashrc 或 ~/.zshrc。
TUI 本身也支持配置:
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": { "enabled": true }
}
}
scroll_speed 默认 3(最小 1),启用 scroll_acceleration 后会覆盖它,实现自然滚动加速。
命令行工具:CLI 命令全览
CLI 适合脚本化、自动化和无需交互的场景。所有命令以 opencode 开头。
核心命令
- agent:管理代理。
opencode agent list列出所有代理,opencode agent create引导创建自定义代理。 - attach:将 TUI 连接到已运行的 OpenCode 后端。比如服务器上跑着
opencode web,另一台机器用opencode attach http://10.20.30.40:4096接入同一后端。支持--dir和--session(-s)标志。 - auth:管理提供商凭据。
opencode auth login交互式配置 API 密钥,密钥存于~/.local/share/opencode/auth.json。opencode auth list(简写ls)查看已认证提供商,opencode auth logout清除凭据。 - github:管理 GitHub 代理。
opencode github install在仓库中安装 GitHub Actions 工作流,opencode github run在 Actions 中运行代理。 - mcp:管理 MCP 服务器。
opencode mcp add引导添加本地或远程 MCP 服务器,opencode mcp list(简写ls)查看连接状态,opencode mcp auth对支持 OAuth 的服务器认证,opencode mcp debug调试连接问题。 - models:列出可用模型,格式为
provider/model。可按提供商筛选(如opencode models anthropic),--refresh更新缓存,--verbose显示详情。 - run:非交互模式,直接传入提示词。适合脚本和自动化。支持
--model(-m)、--agent、--file(-f)、--format、--share、--attach等标志。配合opencode serve使用可避免 MCP 冷启动。 - serve:启动无界面 HTTP 服务器,提供 API 访问。不打开浏览器。设置
OPENCODE_SERVER_PASSWORD启用 HTTP 基本认证。 - session:管理会话。
opencode session list列出所有会话,支持--max-count(-n)和--format。 - stats:显示 Token 用量和费用统计。支持
--days、--tools、--models、--project标志。 - export / import:
opencode export [sessionID]导出会话为 JSON,opencode import <file>从 JSON 文件或分享链接导入。 - web:启动带 Web 界面的服务器,自动打开浏览器。配置与 serve 类似。
- acp:启动 ACP 服务器,通过 stdin/stdout 使用 nd-JSON 通信。
全局标志与环境变量
CLI 接受的全局标志:--help(-h)、--version(-v)、--print-logs、--log-level。
关键环境变量:
| 变量 | 用途 |
|---|---|
OPENCODE_SERVER_PASSWORD |
serve/web 的 HTTP 基本认证密码 |
OPENCODE_SERVER_USERNAME |
认证用户名,默认 opencode |
OPENCODE_CONFIG |
指定配置文件路径 |
OPENCODE_CONFIG_DIR |
指定配置目录 |
OPENCODE_PERMISSION |
权限控制 |
OPENCODE_DISABLE_AUTOUPDATE |
禁用自动更新 |
OPENCODE_DISABLE_AUTOCOMPACT |
禁用自动压缩 |
OPENCODE_ENABLE_EXPERIMENTAL_MODELS |
启用实验性模型 |
实验性功能通过 OPENCODE_EXPERIMENTAL 全局启用,也可单独控制:OPENCODE_EXPERIMENTAL_PLAN_MODE(计划模式)、OPENCODE_EXPERIMENTAL_LSP_TOOL(LSP 工具)、OPENCODE_EXPERIMENTAL_FILEWATCHER(文件监听)等。这些功能可能会变更或移除。
浏览器访问:Web 界面配置与使用
运行 opencode web 就能在浏览器中使用 OpenCode。它会在 127.0.0.1 上启动本地服务器,选一个随机可用端口,并自动打开默认浏览器。
端口、主机名与网络访问
默认情况下服务器只监听本地。如果需要局域网或远程访问,调整主机名:
# 指定端口
opencode web --port 4096
# 允许网络访问
opencode web --hostname 0.0.0.0
使用 0.0.0.0 时,OpenCode 会同时显示本地地址和网络地址,方便你从其他设备连接。
mDNS 发现
启用 mDNS 可以让服务器在局域网内被自动发现:
opencode web --mdns
这会自动将主机名设为 0.0.0.0,并将服务广播为 opencode.local。如果同一网络跑多个实例,可以自定义域名:
opencode web --mdns --mdns-domain myproject.local
CORS 与认证
自定义前端需要跨域访问时,添加 CORS 允许域名:
opencode web --cors https://example.com
安全方面,未设置密码时服务器没有任何保护,本地使用没问题,但对外暴露时务必设置密码:
OPENCODE_SERVER_PASSWORD=secret opencode web
用户名默认为 opencode,可通过 OPENCODE_SERVER_USERNAME 修改。
会话管理与连接终端
Web 界面主页可以查看和管理会话,点击 "See Servers" 能看到已连接的服务器状态。
更有意思的是,Web 和 TUI 可以同时使用。在一个终端启动 Web 服务器,另一个终端用 opencode attach 连接,两者共享会话和状态:
# 终端 1:启动 Web 服务器
opencode web --port 4096
# 终端 2:连接 TUI
opencode attach http://localhost:4096
服务器选项也可以写在 opencode.json 中,命令行标志优先级更高:
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"cors": ["https://example.com"]
}
}
Windows 用户建议从 WSL 而非 PowerShell 运行 opencode web,以确保文件系统访问和终端集成正常工作。
IDE 集成:VS Code 与 Cursor
OpenCode 提供了 VS Code 及其分支的扩展,支持 VS Code、Cursor、Windsurf 和 VSCodium。
安装与使用
安装方式非常简单:打开 VS Code 的集成终端,运行 opencode,扩展会自动安装。也可以在扩展商店搜索 "OpenCode" 手动安装。
安装后几个快捷键值得记住:
| 操作 | Mac | Windows/Linux |
|---|---|---|
| 打开/聚焦 OpenCode | Cmd+Esc | Ctrl+Esc |
| 新建会话 | Cmd+Shift+Esc | Ctrl+Shift+Esc |
| 插入文件引用 | Cmd+Option+K | Alt+Ctrl+K |
文件引用快捷键会插入类似 @File#L37-42 的格式,精确到行范围。同时,扩展会自动将当前选中内容或标签页共享给 OpenCode,省去手动粘贴的步骤。
如果希望在 TUI 中用 /editor 或 /export 时调用自己的 IDE,需要设置 EDITOR 环境变量:
export EDITOR="code --wait"
故障排除
扩展未能自动安装时,检查以下几点:
- 确保是在集成终端中运行的
opencode,不是外部终端。 - 确认 IDE 对应的 CLI 命令已安装:VS Code 需要
code,Cursor 需要cursor,Windsurf 需要windsurf,VSCodium 需要codium。如果命令不在 PATH 中,按 Cmd+Shift+P(Mac)或 Ctrl+Shift+P(Windows/Linux),搜索 "Shell Command: Install 'code' command in PATH"(或对应 IDE 的命令)。 - 确保 VS Code 有权限安装扩展。
ACP 生态:Zed、JetBrains 与 Neovim
ACP(Agent Client Protocol)让 OpenCode 可以作为子进程嵌入任何兼容 ACP 的编辑器。运行 opencode acp 会启动一个通过 stdio 上的 nd-JSON 进行 JSON-RPC 通信的服务。配置好后,OpenCode 在编辑器里的体验和在终端中基本一致——内置工具、自定义工具、MCP 服务器、AGENTS.md 规则、代理和权限系统都正常工作。不过 /undo 和 /redo 在 ACP 模式下暂不支持。
Zed
在 ~/.config/zed/settings.json 中添加:
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
打开方式:命令面板执行 agent: new thread。也可以在 keymap.json 中绑定快捷键,比如 cmd-alt-o。
JetBrains IDEs
在 JetBrains IDE 的 acp.json 中添加。注意这里必须使用 opencode 的绝对路径:
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
打开方式:在 AI Chat 代理选择器中选择 "OpenCode"。
Avante.nvim
在 Avante.nvim 配置中添加:
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
如果需要传递环境变量,在 env 字段中设置。
CodeCompanion.nvim
在 Neovim 配置中:
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
这会将 CodeCompanion 设置为使用 OpenCode 作为聊天的 ACP 代理。环境变量配置可参考 CodeCompanion.nvim 文档。
五种界面对比与选择建议
| 特性 | TUI | CLI | Web | IDE | ACP |
|---|---|---|---|---|---|
| 交互方式 | 终端对话 | 命令行参数 | 浏览器 | 编辑器内嵌 | 编辑器协议 |
| 适合场景 | 日常编码 | 脚本/自动化 | 远程/移动 | 写代码时随时提问 | 非 VS Code 编辑器用户 |
| 会话管理 | 完整 | 有限 | 完整 | 完整 | 完整 |
| 文件引用 | @ 语法 | --file 标志 | 界面操作 | 快捷键 Cmd+Option+K | 编辑器原生 |
| /undo /redo | 支持 | — | — | — | 暂不支持 |
| 远程访问 | attach | run --attach | 浏览器 | — | — |
选择建议很直接:
- 日常编码用 TUI,功能最完整,快捷键操作效率高。
- CI/CD 或脚本用 CLI 的
opencode run,一条命令拿到结果。 - 远程或移动设备用 Web,浏览器打开就能用,配合 attach 还能和 TUI 共享会话。
- VS Code / Cursor 用户装 IDE 扩展,编辑器里随时唤出 OpenCode,上下文自动共享。
- Zed / JetBrains / Neovim 用户走 ACP 路线,配置一次就能在熟悉的编辑器里用上 OpenCode 的全部能力。
五种界面不是互斥的——你可以同时用 Web 做远程访问、TUI 做本地操作、IDE 扩展做编辑器集成,它们共享同一个后端和会话数据。