OpenCode 入门:理解客户端-服务器架构与安装
Posted on Thu 01 October 2026 in AI 编程 • Sucre Liu
它和常见的 CLI 工具不一样
第一次用 OpenCode,很多人会把它当成"另一个终端里的 AI 助手"。它能用的,但低估了它:终端界面只是一个客户端,背后有一个常驻的后台服务。
默认情况下,OpenCode 会为你的用户账号发现或启动一个共享服务,你打开的每个本地客户端都连到它。会话、配置、集成、权限、工具执行——这些都归服务管。客户端只负责显示和交互。
理解这一点,后面很多东西就顺了:为什么改配置有时候要重启服务、为什么浏览器客户端需要配 CORS、为什么会有 opencode service 这组命令。本文基于 OpenCode 2.0.12(V2)。
装好之后,先跑起来
opencode
它会在当前目录打开全屏终端界面。想在别的项目里工作,把目录传进去:
opencode ~/code/my-project
OpenCode 自己从当前目录向上查找配置,所以"在哪个目录启动"决定了它读到哪套项目设置。用支持真彩色的终端(Ghostty、WezTerm、Kitty、Alacritty 等)主题颜色最准;不支持时会用近似调色。
三个入口,各管一摊
除了全屏 TUI,它还有两个入口,很多人不知道:
# 一次性提交提示,适合脚本和 CI
opencode run "Explain this repository"
# 极简交互界面,比全屏 TUI 轻
opencode mini
opencode run 是自动化的主力:不打开界面,把提示交出去,等结果回到终端。opencode mini 适合"我就想快速问一句",或者网络慢、终端窄的时候。
内置的四个代理
OpenCode 默认带了几个可见的 agent,先用起来,别急着建自己的:
| 代理 | 模式 | 用途 |
|---|---|---|
| Build | primary | 默认编码代理,工具默认放行;读敏感环境文件、访问工作区外会先问 |
| Plan | primary | 只探索、只出方案,不改你的项目文件 |
| General | subagent | 研究类、多步任务,工具权限宽,但不能再派生子代理 |
| Explore | subagent | 搜索和阅读代码或网页,不编辑文件 |
这个分工和很多工具"一个万能代理"的思路不同:Plan 负责想,Build 负责做,General/Explore 负责查。 想让它先别动手,就切到 Plan。
连接模型
OpenCode 自带一份来自 models.dev 的 provider 与模型目录。大多数 provider 需要先连接账号:
/connect
/models
先 /connect 选 provider、填凭据,再 /models 选具体模型。选中的模型只作用于当前会话,不会改配置文件——这一点后面配置篇会展开。
服务:出事第一个看的地方
架构带来的直接后果:很多"客户端看着正常但行为诡异"的问题,根子在服务。三个命令要记住:
opencode service status # 看服务信息和状态
opencode api get /api/info # 验证 API 是否健康
opencode service restart # 服务卡住时重启
需要隔离时,可以不带共享服务运行:
opencode --standalone # 私有服务
opencode --server http://localhost:4096 # 连到指定服务
--standalone 在排查"是共享服务的问题还是客户端的问题"时特别有用。
另外有个方便的小命令,能把内部路径打出来给别的工具用:
opencode debug paths db
sqlite3 "$(opencode debug paths db)"
db、home、data、config、cache、state、tmp、bin、log、repos 都支持。注意:它不会启动服务,也不会打开数据库。
卸载也做得比较克制
opencode uninstall --dry-run # 先看会删掉什么
opencode uninstall # 确认删除
想保留配置或数据:
opencode uninstall --keep-config --keep-data
--keep-config 留配置,--keep-data 留会话数据和快照(缓存和状态仍会清)。这种"先干跑、再确认"的设计,在会动用户全局目录的工具里不多见,值得表扬。
关于终端界面
不展开,但几个默认设置值得先知道(它们是 CLI 设置,存在 ~/.config/opencode/cli.json,和项目配置是两回事):会话标签、diff 视图、系统通知与提示音、键位。这些都属于"个人偏好",不进项目仓库——下一篇讲配置时会讲清这条边界。
小结
- OpenCode 是客户端-服务器架构:TUI 是客户端,后台服务管会话、配置、权限、工具。
- 三个入口:
opencode(全屏)、opencode mini(轻量)、opencode run(自动化)。 - 四个内置代理:Build 做、Plan 想、General/Explore 查。
- 排障先看服务:
service status→api get /api/info→service restart。
下一篇讲配置:opencode.jsonc 和 cli.json 到底该放什么、两者的优先级怎么算,以及为什么"把项目配置和终端偏好混在一起"是个坑。