Skip to content

OpenCode 架构总览 ​

一句话 ​

OpenCode 是一个产品级 coding agent 平台。 不只是 CLI agent,还包含 server、SDK、web/desktop、plugin system。

本地源码 ​

text
路径: /home/ubuntu/work/opencode
HEAD: 379adee35 revert: back out experimental codemode
语言: TypeScript/Bun
管理: Bun monorepo

核心包结构 ​

包路径作用
cli/apppackages/opencode命令入口、TUI、run、serve、session glue
corepackages/coreV2 session、tool registry、plugin、agent、permission、database、event
llmpackages/llmSchema-first LLM route/runtime 抽象
tuipackages/tui基于 @opentui + Solid 的终端 UI
serverpackages/serverserver handler/middleware
sdkpackages/sdkOpenCode API client

核心设计:Route Decomposition ​

OpenCode LLM 层的核心创新:

层作用
Protocolprovider API 语义协议(OpenAI Chat、Anthropic Messages 等)
EndpointURL 构造
Authper-request auth
Framingbytes → frames(SSE / AWS event stream)

DeepSeek/TogetherAI/Cerebras 复用同一个 OpenAIChat.protocol,只需 5-15 行 Route.make() 调用。

调用链 ​

opencode CLI
  ↓
packages/opencode/src/index.ts
  ↓
TuiThreadCommand / RunCommand / ServeCommand
  ↓
Effect AppRuntime + InstanceStore
  ↓
local server or remote server
  ↓
SDK client / HTTP API / event stream
  ↓
SessionV2.prompt()
  ↓
durable session_input
  ↓
SessionExecution.wake/resume()
  ↓
SessionRunCoordinator
  ↓
SessionRunner.run()
  ↓
LLM.request() → LLMClient.stream()
  ↓
ToolRegistry.materialize / settle
  ↓
EventV2 durable events → projector / TUI

架构亮点 ​

  1. Event-sourced session:SQLite + 投影,durable execution
  2. Server-first:server/API 是一等公民
  3. Route decomposition:Protocol + Endpoint + Auth + Framing
  4. Effect-TS:全栈 Effect/Schema-driven
  5. SDK-driven TUI:TUI 通过 SDK/event source 访问 server

Powered by VitePress