白泽图

  • 文章
    • Unity渲染
    • Unity项目开发
    • 工具
    • 数学
    • 算法
    • 网站搭建
    • 网络&操作系统
个人知识库
互联网技术研究与经验总结
  1. 首页
  2. AI
  3. 正文

OpenCode 2.0 架构与使用说明

2026-10-13 31点热度 0人点赞 0条评论

版本:2.0.27 · 发布日期:2026-10-12(公测 2026-07-10)· 文档定位:架构说明 + 关键操作参考


速查:关键结论

项目 结论
架构 客户端 / 服务端(C/S)。后台服务持有会话、配置、插件、权限、工具执行
服务本体 一个本地 HTTP 服务器,默认 127.0.0.1:49374
服务提供 Web UI + REST API(/api/...)+ 事件流(SSE)+ OpenAPI(/openapi.json)
客户端 TUI、网页、桌面、脚本、自研客户端,全部连接同一服务
鉴权 密码保护。即使本机访问也需先登录
配对链接 一次性、5 分钟有效。浏览器打开后获得 30 天会话
登录会话 30 天。修改服务器密码会使全部会话登出
旧会话位置 保存在本地数据库,升级后仍可访问
旧会话访问 TUI 中按 Ctrl+O(最近会话与项目),或 Ctrl+X → L,或 /sessions
设备管理 无"按设备撤销"功能,只能改密码全体登出

一、架构

1.1 从单进程改为客户端 / 服务端

V1 V2
运行形态 单个进程(TUI 自带全部功能) 一个后台服务 + 多个客户端
状态归属 终端进程 后台服务
多端共享 不支持 支持,多客户端共享同一批会话
服务生命周期 随终端 独立,自动启动、可单独管理

V2 中,后台服务持有一切核心状态与能力:

  • 会话(sessions)
  • 配置(configuration)
  • 插件(plugins)
  • 权限(permissions)
  • 工具执行(tool execution)

客户端只负责界面渲染与输入,属于"瘦客户端"。

1.2 进程拓扑

     TUI(终端)        ─┐
     桌面 App           ─┤
     网页浏览器          ─┼── HTTP / SSE ──►  后台服务(本地 HTTP 服务器)
     程序化客户端        ─┤                     ├─ 会话 / 配置 / 插件 / 权限 / 工具执行
     自研客户端          ─┘                     ├─ REST API + OpenAPI
                                                └─ Web UI

1.3 后台服务的形态

后台服务本质是一个 HTTP 服务器:

  • 默认监听地址:127.0.0.1(仅本机)
  • 默认端口:49374(可修改)
  • 同时对外提供:Web UI、REST API、SSE 事件流、OpenAPI 规范

即:网页版界面不是额外的前端工程,而是由同一个服务在本机原生提供。

1.4 相关包(V2 新增)

包 作用
@opencode/client 编程客户端,脚本可自动发现本地服务
@opencode/codemode 将 MCP 服务器与 OpenAPI 端点转换为脚本可调用的函数
@opencode/sdk 将同一引擎作为库嵌入到宿主应用中

三者的详细介绍、对比与使用示例见《OpenCode 2.0 新增开发包:client / codemode / sdk》。


二、数据与文件位置

内容 路径
数据库(会话等持久数据) ~/.local/share/opencode/opencode.db(可用 OPENCODE_DB 覆盖)
日志 ~/.local/share/opencode/log/opencode.log
服务注册信息 ~/.local/state/opencode/service.json
服务私有配置 ~/.config/opencode/service.json
终端客户端配置 ~/.config/opencode/cli.json

说明:

  • 会话、项目等持久数据都存放在数据库中,不随客户端关闭而消失。
  • 请勿在排障时直接删除或编辑服务文件与数据库,使用 opencode service 系列命令进行管理;如需查看,请先备份。

三、升级后原有会话的位置

结论:升级到 V2 后,原有会话仍然保留在本地数据库中,可直接访问。

访问方式(TUI):

操作 说明
Ctrl+O 打开"最近会话与项目"
Ctrl+X 然后 L 列出全部会话
/sessions 命令方式列出会话

相关迁移说明:

  • 终端客户端配置由 V1 的分层 tui.json(c) 迁移为单一全局 cli.json(首次启动自动迁移,V1 文件保留)。
  • 配置、agents、commands、skills 等受支持的 V1 功能在 V2 中仍可使用。
  • 旧会话数据存放在同一数据库中,可在新版本中继续打开。

四、接入方式

方式 配置 适用场景
本机 默认 浏览器访问 http://127.0.0.1:49374
局域网 opencode service set hostname 0.0.0.0 + service start 同 Wi-Fi 设备直连,不经公网
远程 opencode pair --remote 经 OpenTunnel 公网隧道,端到端加密

远程方式补充:

  • 首次执行 opencode pair --remote 会提示"是否将服务器暴露到公网",需确认。
  • 非交互环境需附加 --yes。
  • 接受后保持开启,后续执行仅生成新的配对链接。
  • 关闭远程:opencode service set remote false + opencode service start。

五、鉴权与配对

服务默认受密码保护,任何客户端(含本机浏览器)首次访问都需要登录。

5.1 两种登录方式

方式 凭证 有效期 复用
配对链接 .../auth/connect/<token> 链接 5 分钟 一次性,用后作废
地址 + 密码 服务器密码 长期 可反复使用

5.2 配对链接的兑换结果

打开 .../auth/connect/<code> 时,按请求类型返回不同结果:

请求类型 返回
浏览器(HTML) 302 重定向到 Web UI,并写入会话 Cookie
接口请求(JSON) 返回会话 token,可当作密码使用
  • 会话 Cookie 名称形如 opencode_session_49374,有效期 30 天。
  • 配对链接 5 分钟内有效,且只能使用一次;重复使用返回 401(提示已过期或已使用)。

5.3 使用要点

  • 配对链接仅用于首次登录;登录成功后应直接访问基础地址,无需再次输入链接。
  • 浏览器会保留 30 天会话 Cookie,关闭浏览器不影响登录状态。
  • Cookie 按来源主机区分:127.0.0.1 与远程域名的 Cookie 相互独立,应固定使用同一入口。
  • 查看服务器密码:opencode service get password
  • 设置服务器密码:opencode service set password "新密码"

六、服务管理命令

命令 作用
opencode service status 查看服务状态与地址
opencode service start 启动后台服务
opencode service stop 停止后台服务
opencode service restart 重启后台服务
opencode service get [key] 读取配置
opencode service set <key> <value> 修改配置
opencode service unset <key> 删除配置项
opencode service set disabled true 禁止自动启动共享服务
opencode --standalone 客户端使用自带私有服务,不依赖共享服务
opencode --server <url> 连接指定的服务器

常用配置项:

# 监听所有网络接口(供局域网接入)
opencode service set hostname 0.0.0.0

# 固定端口
opencode service set port 49374

# 修改服务器密码(会使所有会话登出)
opencode service set password "a-long-secret"

# 关闭远程访问
opencode service set remote false

注意:修改任意配置都会停止后台服务,需再执行 opencode service start 生效;重启会断开当前所有客户端,但会话数据不会丢失。


七、设备与会话管理

  • V2 当前不提供"按设备撤销"功能:设置中只有"Pair device(添加设备)"入口,没有已连接设备列表或单独撤销项,接口层面亦无对应接口。
  • 唯一的一键吊销方式是修改服务器密码:修改密码会使全部已登录会话登出。
  • 登录会话有效期为 30 天,到期需重新登录。
  • 配对链接为一次性且 5 分钟有效,不会长期滞留。

八、自研客户端要点

服务对外暴露标准 HTTP 接口,且项目开源,可据此开发自有客户端。

事项 说明
获取凭证 请求 /auth/connect/{code} 并接受 JSON,返回 token(当密码使用)
实时事件 GET /api/event,SSE 流(text/event-stream)
接口契约 GET /openapi.json(需鉴权),可用 codegen 生成客户端骨架
终端接入 /api/pty/{ptyID}/connect + connect-token

注意事项:

  • 事件流为"尽力而为":慢消费者会导致流中断,断线期间事件会丢失。客户端必须实现断线重连,并在重连后全量重新拉取状态;事件仅作增量提示,状态以 REST 为准。
  • 带 /api/experimental/* 前缀的接口属实验性,可能变更,不宜重度依赖。
  • 版本迭代较快,接口契约可能调整。
  • 鉴权 Cookie 名称包含端口(如 opencode_session_49374),修改端口后名称随之变化。

九、破坏性变更与升级

升级命令:

opencode upgrade --major

V2 有三处明确的破坏性变更:

  1. 插件不兼容:1.0 插件无法在 2.0 运行,需按新的插件 API 重写。
  2. 服务器 API 重写:调用旧服务器 API 的集成需迁移到 @opencode/client。
  3. 配置文件迁移:tui.json 迁移为全局 cli.json(首次启动自动迁移)。

其他需要注意的变更:

  • V2 仅读取 AGENTS.md,不再回退到 CLAUDE.md。
  • compaction.prune 被忽略,并产生告警。

十、常用 TUI 快捷键

以下 leader 键为 Ctrl+X。

快捷键 作用
Ctrl+O 打开最近会话与项目
Ctrl+X 然后 N 新建会话
Ctrl+X 然后 L 列出全部会话
Ctrl+X 然后 M 选择模型
Ctrl+X 然后 A 选择 agent
Ctrl+X 然后 U 撤销上一条消息及其后续操作
Ctrl+X 然后 Enter 将提示排队、稍后执行
Ctrl+Tab / Ctrl+Shift+Tab 切换会话标签
Ctrl+X 然后 W 关闭当前标签
Ctrl+Shift+T 重新打开最近关闭的标签
Ctrl+I 会话标签历史前进
Ctrl+P 打开命令面板
F2 / Shift+F2 循环切换最近使用的模型
Shift+Tab 循环切换 agent
Ctrl+B 将前台任务移至后台

参考

  • 官方发布说明:OpenCode 2.0 launch note(Anomaly,2026-10-12)
  • 更新日志:opencode.ai/changelog(v2.0.27,2026-10-12)
  • V2 文档:opencode.ai/v2/docs/

标签: 暂无
最后更新:2026-10-13

蒋程

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

您需要 登录 之后才可以评论
目录Toggle Table of ContentToggle
  • 速查:关键结论
  • 一、架构
    • 1.1 从单进程改为客户端 / 服务端
    • 1.2 进程拓扑
    • 1.3 后台服务的形态
    • 1.4 相关包(V2 新增)
  • 二、数据与文件位置
  • 三、升级后原有会话的位置
  • 四、接入方式
  • 五、鉴权与配对
    • 5.1 两种登录方式
    • 5.2 配对链接的兑换结果
    • 5.3 使用要点
  • 六、服务管理命令
  • 七、设备与会话管理
  • 八、自研客户端要点
  • 九、破坏性变更与升级
  • 十、常用 TUI 快捷键
  • 参考

COPYRIGHT © 2026 白泽图. ALL RIGHTS RESERVED.

京ICP备2026064017号-1

京公网安备11010102000001号

登录
注册|忘记密码?