目标:了解 OpenCode 的多种使用界面
概述
OpenCode 提供三种界面形态,适应不同场景:TUI(终端)、Web(浏览器)、IDE 插件。理解各自特点,能帮助你在正确场景选择最高效的工具。
三种界面架构对比图
特性对比矩阵
| 特性 | TUI | Web | IDE 插件 |
|---|---|---|---|
| 启动速度 | ⚡ 最快 | 🐢 较慢(需启动服务器) | ⚡ 快 |
| 资源占用 | 最低 | 中等 | 中等 |
| 交互方式 | 纯键盘 | 鼠标 + 键盘 | 鼠标 + 键盘 |
| 远程访问 | ❌ SSH tunnel | ✅ 直接访问 | ❌ 需配合远程开发 |
| 代码 Diff | 文本对比 | 图形化 Diff | 原生 Diff 视图 |
| 文件编辑 | 命令式 | 点击编辑 | 直接编辑 |
| 团队协作 | ❌ 单人 | ✅ 支持 | ❌ 单人 |
| 演示分享 | ❌ 不便 | ✅ 屏幕共享即可 | ❌ 不便 |
| 自定义主题 | 有限 | 丰富 | 继承 IDE 主题 |
| 适用场景 | 日常编码 | 协作/远程/演示 | 深度开发 |
TUI(终端界面)
默认界面,已在前面教程详细介绍。
opencode特点:
- 键盘驱动,效率最高
- 占用资源最少
- 适合长时间编码
- 与 tmux、zsh 等工具链无缝配合
TUI 常用快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl + N | 新建会话 |
Ctrl + / | 查看命令列表 |
/ | 进入命令模式 |
Esc | 取消/返回 |
Tab | 自动补全 |
真实场景案例 ①:服务器运维
运维工程师通过 SSH 连接到远程服务器,直接在终端运行
opencode,让 AI 分析日志、排查故障。无需图形界面,在纯终端环境中完成所有操作。
Web 界面
通过浏览器访问 OpenCode。
启动
# 默认启动
opencode web
# 指定端口
opencode web --port 8080
# 后台运行
opencode web --detachWeb 服务器配置
在 opencode.json 中配置:
{
"server": {
"port": 4096,
"host": "0.0.0.0", // 允许远程访问
"cors": true, // 启用 CORS
"auth": { // 基础认证(可选)
"type": "basic",
"username": "${WEB_USER}",
"password": "${WEB_PASS}"
}
}
}Nginx 反向代理配置
# /etc/nginx/sites-available/opencode
server {
listen 80;
server_name opencode.yourdomain.com;
location / {
proxy_pass http://localhost:4096;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}启用配置:
sudo ln -s /etc/nginx/sites-available/opencode /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxHTTPS 配置(Let's Encrypt)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d opencode.yourdomain.com访问
http://localhost:4096
Web 界面特点
- 图形界面,更直观
- 支持鼠标操作
- 适合演示和协作
- 可远程访问
Docker 部署 Web 界面
# Dockerfile
FROM node:20-alpine
RUN npm install -g opencode
EXPOSE 4096
CMD ["opencode", "web", "--port", "4096", "--host", "0.0.0.0"]# docker-compose.yml
version: '3.8'
services:
opencode:
build: .
ports:
- "4096:4096"
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- OPENCODE_CONFIG=/config/opencode.json
volumes:
- ./config:/config
- ./projects:/projects
restart: unless-stopped真实场景案例 ②:团队共享开发环境
某团队在内部服务器部署 OpenCode Web 界面,通过 Nginx + 公司 SSO 认证。设计师、产品经理等非技术人员也能通过浏览器使用 AI 辅助,查询文档、生成 SQL、分析数据,无需安装任何软件。
IDE 扩展
VS Code 插件安装步骤
方式一:官方市场(推荐)
- 打开 VS Code
- 点击左侧扩展图标(或按
Ctrl+Shift+X) - 搜索 "OpenCode"
- 点击 安装
- 安装完成后,点击左侧 OpenCode 图标
- 按提示配置 API 密钥或登录
方式二:手动安装(开发版)
# 克隆插件仓库
git clone https://github.com/opencode-ai/vscode-opencode.git
cd vscode-opencode
# 安装依赖
npm install
# 打包
npx vsce package
# 在 VS Code 中安装 .vsix 文件
# Ctrl+Shift+P -> Extensions: Install from VSIXVS Code 配置
// .vscode/settings.json
{
"opencode.model": "anthropic/claude-sonnet-4-5",
"opencode.autoComplete": true,
"opencode.inlineEdit": true,
"opencode.diffView": true
}VS Code 常用功能
| 功能 | 命令面板 | 快捷键 |
|---|---|---|
| 打开侧边栏 | OpenCode: Open Panel | Ctrl+Shift+A |
| 内联编辑 | OpenCode: Inline Edit | Ctrl+K Ctrl+I |
| 解释代码 | OpenCode: Explain | - |
| 生成注释 | OpenCode: Generate Docs | - |
| 审查文件 | OpenCode: Review File | - |
JetBrains 插件
目前 JetBrains 插件处于开发阶段。临时方案:
- 使用 File Watcher 配合 OpenCode CLI
- 通过 External Tools 配置快捷命令
# 配置为 External Tool
opencode edit --file $FilePath$ --prompt "$SelectedText$"Vim / Neovim
Neovim 用户可通过以下方式集成:
-- lazy.nvim 配置
{
'opencode-ai/opencode.nvim',
dependencies = { 'nvim-lua/plenary.nvim' },
config = function()
require('opencode').setup({
model = 'anthropic/claude-sonnet-4-5'
})
end
}真实场景案例 ③:IDE 内联编辑提效
前端开发者在使用 VS Code 插件时,选中一段冗长的 JSX 组件,按
Ctrl+K Ctrl+I呼出 OpenCode 内联编辑,输入"提取为独立组件并添加 Props 类型",AI 直接在编辑器中生成新组件文件并替换原代码,无需切换窗口。
远程开发场景
场景一:SSH 远程服务器 + TUI
# 本地
ssh user@remote-server
# 远程服务器上
opencode适合:服务器运维、远程容器调试
场景二:Web 界面远程访问
# 远程服务器
opencode web --host 0.0.0.0 --port 4096
# 本地浏览器
open http://remote-server:4096配合 SSH 隧道更安全:
ssh -L 4096:localhost:4096 user@remote-server
# 本地访问 http://localhost:4096场景三:VS Code Remote SSH + 插件
- 安装 VS Code Remote - SSH 扩展
- 连接到远程服务器
- 在远程服务器上安装 OpenCode VS Code 插件
- 像在本地一样使用
场景四:Docker 开发容器
// .devcontainer/devcontainer.json
{
"name": "OpenCode Dev",
"image": "mcr.microsoft.com/devcontainers/typescript-node:20",
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
"postCreateCommand": "npm install -g opencode",
"forwardPorts": [4096],
"customizations": {
"vscode": {
"extensions": ["opencode-ai.opencode"]
}
}
}真实场景案例 ④:跨平台团队协作
某分布式团队中,Mac 用户用 VS Code 插件,Linux 用户用 TUI,Windows 用户用 Web 界面。所有成员通过 Git 共享
opencode.json和规则,AI 输出风格一致,协作无障碍。
界面选择建议
| 场景 | 推荐界面 | 原因 |
|---|---|---|
| 日常编码 | TUI | 速度快、资源少、键盘驱动 |
| 代码审查 | IDE 插件 | 原生 Diff、内联编辑 |
| 团队协作 | Web | 无需安装、远程访问 |
| 演示分享 | Web | 屏幕共享直观 |
| 远程服务器 | TUI / Web | SSH 或浏览器即可 |
| 复杂重构 | IDE 插件 | 符号跳转、全局搜索配合 |
| 快速查询 | TUI | 打开即聊 |
| 非技术人员使用 | Web | 零学习成本 |
FAQ
Q: Web 界面和 TUI 功能完全一致吗?
A: 核心功能一致,但部分高级功能(如某些快捷键)可能仅在 TUI 中可用。Web 界面更注重视觉体验和易用性。
Q: 可以同时运行 TUI 和 Web 吗?
A: 可以。它们共享同一份配置,但会话独立。注意 API 用量会分别计费。
Q: VS Code 插件支持哪些模型?
A: 支持与 OpenCode CLI 相同的所有模型,通过
opencode.model设置切换。
Q: Web 界面如何设置密码保护?
A: 可通过
server.auth配置基础认证,或在前端使用 Nginx/Traefik 等反向代理统一认证。
避坑清单 ⚠️
| 坑 | 后果 | 正确做法 |
|---|---|---|
Web 界面 host: 0.0.0.0 无认证 | 任何人可访问你的 AI 会话 | 添加认证或限制内网访问 |
| 在公共 WiFi 使用 Web 界面 | 通信被窃听 | 使用 HTTPS + VPN |
| VS Code 插件与 CLI 配置不同步 | 行为不一致 | 统一使用项目级 opencode.json |
| 远程服务器暴露 OpenCode 端口 | 安全隐患 | 使用 SSH 隧道或 VPN |
| Web 界面长期后台运行 | 浪费 API 用量 | 不用时停止服务 |
| IDE 插件版本与 CLI 不匹配 | 功能异常 | 保持两者同步更新 |
练习
- 尝试启动 Web 界面,对比与 TUI 的使用体验
- 安装 VS Code 插件,体验内联编辑功能
- 配置 Nginx 反向代理,为 Web 界面添加域名访问
- 在远程服务器上通过 SSH 隧道使用 OpenCode Web
下一篇:15. 代理技能