内部模块: CLI (命令行接口)

OpenCode 的命令行实现和 TUI (Terminal UI)。


1. 概览

  • 路径: packages/opencode/src/cli/
  • 定位: 用户与 OpenCode 交互的主要接口
  • 核心职责:
    • 命令解析和路由
    • TUI 渲染和交互
    • Server 启动和管理

2. CLI 架构


3. 核心模块

模块文件职责
bootstrapbootstrap.ts启动流程控制
uiui.tsTUI 渲染
networknetwork.ts网络连接管理
errorerror.ts错误处理
upgradeupgrade.ts版本升级
cmd/cmd/*命令实现

4. 命令列表

基于 src/cli/cmd/ 目录:

命令描述优先级
run启动交互式会话⭐⭐⭐⭐⭐
serve启动 Server 模式⭐⭐⭐⭐
history查看会话历史⭐⭐⭐
config配置管理⭐⭐⭐
model模型管理⭐⭐⭐
session会话操作⭐⭐⭐
agentAgent 管理⭐⭐
plugin插件管理⭐⭐

5. Bootstrap 流程

// src/cli/bootstrap.ts
export async function bootstrap() {
  // 1. 启动 Server
  const server = await startServer({
    port: 0, // 随机端口
    hostname: "127.0.0.1"
  })
  
  // 2. 创建 SDK Client
  const client = createClient({
    baseURL: server.url
  })
  
  // 3. 启动 TUI
  await startTUI(client)
  
  // 4. 等待用户退出
  await waitForExit()
  
  // 5. 清理资源
  await server.close()
}

6. TUI 实现

OpenCode 的 TUI 基于:

  • SolidJS: 响应式 UI 框架
  • OpenTUI: Terminal UI 库
  • 实时同步: 通过 SSE 与 Server 同步状态

7. 相关文档