OpenCode 仓库结构
Bun Monorepo
OpenCode 使用 Bun workspaces,是全栈 TypeScript monorepo。比 Pi 大得多,也更像产品级平台。
text
packages/
├── opencode/ # CLI + TUI + 桌面入口
│ └── src/
│ ├── index.ts # 包入口
│ ├── cli/
│ │ ├── cmd/ # tui / run / serve / attach / acp / mcp
│ │ ├── effect-cmd.ts # Effect Runtime glue
│ │ └── ...
│ ├── app/ # 桌面/web app
│ └── config.ts
│
├── core/ # 核心业务逻辑(最重要)
│ └── src/
│ ├── session.ts # SessionV2(核心核心)
│ ├── session/
│ │ ├── runner/ # SessionRunner、llm runner
│ │ ├── execution/ # Local / Remote 执行
│ │ ├── prompt.ts # System prompt
│ │ └── input.ts # User input handling
│ ├── tool/
│ │ ├── registry.ts # ToolRegistry 服务
│ │ └── ...
│ ├── plugin.ts # Plugin 服务
│ ├── agent.ts # Agent 服务
│ ├── event/ # EventV2 事件系统
│ ├── database/ # SQLite 数据库
│ ├── permission/
│ └── config/
│
├── llm/ # LLM 抽象(Schema-driven)
│ └── src/
│ ├── llm.ts # LLM request/stream/client
│ ├── route/ # Route 分解
│ │ ├── protocol.ts # API 协议(OpenAI/Anthropic)
│ │ ├── endpoint.ts # URL 构造
│ │ ├── auth.ts # 认证
│ │ └── framing.ts # 字节流解帧(SSE/AWS event stream)
│ └── providers/ # Provider 实现
│
├── tui/ # 终端 UI(Solid + @opentui)
│ └── src/
│ ├── app.tsx # TUI 入口
│ ├── views/ # Chat、Editor、FileTree 等
│ ├── components/
│ └── hooks/
│
├── server/ # HTTP Server
│ └── src/
│ ├── handler.ts
│ ├── middleware.ts
│ └── routes/
│
├── sdk/ # OpenCode Client SDK
│ └── src/
│ ├── client.ts
│ ├── session.ts
│ └── types.ts
│
├── ui/ # 共享 UI 组件
├── opentui/ # 终端 UI 框架(自研)
├── desktop/ # Electron 桌面应用
└── web/ # Web 界面核心分层
Layer 1: packages/llm ← LLM 抽象(Route decomposition)
Layer 2: packages/core ← SessionV2 + ToolRegistry + Plugin + Agent
Layer 3: packages/server ← HTTP API
Layer 4: packages/sdk ← Client SDK
Layer 5: packages/opencode ← CLI/TUI/app glue
Layer 6: packages/tui ← UI + components
Layer 7: packages/desktop/web ← Electron / Web app重点:packages/core 是心脏,包含 SessionV2、执行引擎、工具系统、插件、权限等所有核心逻辑。
与 Pi/Hermes 对比
| 维度 | Pi | OpenCode | Hermes |
|---|---|---|---|
| Monorepo 管理 | npm workspaces | Bun workspaces | Python project |
| 包数量 | ~6 | ~20+ | monolith + TS apps |
| 核心包 | coding-agent | core | agent/ |
| LLM 包 | ai | llm | agent/transports/ |
| TUI 包 | tui | tui + opentui | ui-tui/ |
| Server | 无 | server | gateway/ |