Skip to content

OpenCode TUI 设计

技术栈

OpenCode TUI 使用:

  • Solid.js:响应式 UI 框架
  • @opentui:自研终端 UI 框架(Ink-like,但基于 Solid)
  • Effect:依赖注入和异步管理

架构

packages/tui/src/app.tsx

Solid components (JSX)

@opentui renderer

terminal output

SDK-Driven 模式

这是 OpenCode TUI 最大的特点:TUI 并不直接嵌入 agent,而是通过 SDK 连接 to server:

TUI app

SDK client.connect(serverUrl)

HTTP / event stream

server → SessionV2 → SessionRunner

events 推回 TUI

这允许:

  • TUI 和 server 分离部署
  • 多个 TUI/web 客户端同时连接同一个 session
  • 没有 agent runtime 在 TUI 进程中

视图组件

组件功能
ChatView聊天消息列表
EditorView代码编辑器
FileTreeView文件浏览器
DiffView代码差异对比
ToolProgressView工具执行进度
PermissionView权限确认弹窗
SessionSwitcher切换 session

三种 TUI 对比

维度Pi TUIOpenCode TUIHermes TUI
框架自研Solid + @opentuiReact + Ink
架构内联 agentSDK → servergateway/subprocess
组件模型自研类 ReactSolid JSXReact JSX
功能基础聊天完整 IDE-like聊天 + 工具进度
文件浏览器
Diff 查看✅(基础)✅(高级)❌(文本输出)
Session 切换
多客户端✅(SDK event stream)❌(单 gateway session)

Powered by VitePress