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