opencode
终端里的多模型 AI 编程助手,用 Go 构建,支持 Claude/GPT/Gemini 接入,TUI 交互,SQLite 本地持久化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
终端里的多模型 AI 编程助手,用 Go 构建,支持 Claude/GPT/Gemini 接入,TUI 交互,SQLite 本地持久化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:OpenCode 运行效果 — 在终端中直接与 AI 对话进行编程任务
想象一下这个场景:你正在 terminal 里写代码,突然卡住了——不是语法问题,而是不知道该用什么设计模式,或者某个 API 怎么调用最优雅。传统做法是切出编辑器,打开浏览器搜索,翻三四页文档,再切回来接着写。OpenCode 解决的就是这个「上下文切换」痛点:它把 AI 编程助手直接搬进了你的终端,让你在写代码的地方就能提问、对话、执行命令。
OpenCode 最早由独立开发者 Ayush Singh 创建,GitHub 账号 opencode-ai,定位是「为终端而生的 AI 编程智能体」(A powerful AI coding agent, built for the terminal)。项目基于 Go 语言开发,使用 Bubble Tea 框架构建 TUI(终端用户界面),架构清晰、代码模块化,一经发布便受到开源社区的关注,GitHub 星标数迅速攀升至 12,000+。
值得注意的是,在 2025 年中,项目原作者选择将项目交接给 Charm 团队——这是 Terminal 相关工具领域非常活跃的知名社区,曾开发过 Bubbles、Lipgloss、Glamour 等多个 Go 语言 TUI 生态中的标杆库。交接后项目改名为 Crush 继续开发,原 opencode-ai/opencode 仓库已归档并标注了迁移说明。因此当前分析基于归档版本,但核心技术和使用体验具有长期参考价值。
OpenCode 不绑定单一 AI 提供商,而是通过统一抽象层,支持接入多种模型:
这种「插拔式」设计让用户可以随时切换性价比最高的模型——比如日常简单任务用 GPT-4o-mini,复杂推理切 Claude 3 Opus,不需要换工具。
AI 不只是「给建议」,OpenCode 赋予了 AI 实际执行命令的能力:
用户可以在配置文件中精细控制 AI 的权限级别——允许它执行哪些命令、访问哪些目录,避免「AI 失控」风险。
OpenCode 的界面基于 Bubble Tea 构建,这是一种声明式的 TUI 框架,开发者用 Go 编写响应式 UI。体验上接近现代 IDE 的聊天面板风格:左侧是 AI 对话区,右侧可以嵌入代码块预览、diff 视图。
Vim 用户会特别感兴趣的是,OpenCode 内置了 Vim-like 编辑器模式,可以直接在终端内进行多行文本编辑,而不是受制于终端单行输入的局限。
OpenCode 解决了长对话的「上下文窗口耗尽」问题:内置 Auto Compact 机制,当对话接近模型的上下文窗口上限(默认 95%)时,会自动触发对话摘要,将历史聊天压缩为语义摘要,生成新的会话继续工作。这一过程对用户透明,不会丢失关键上下文。
对话数据通过 SQLite 数据库持久化存储在本地($HOME/.opencode/),支持随时回溯历史会话。
OpenCode 支持 Language Server Protocol,可以与 gopls(Go)、pyright(Python)等 IDE 级语言服务器联动。这意味着 AI 不仅能读代码,还能借助 LSP 获取精确的语法树、类型信息、跳转到定义等能力。
项目 100% 使用 Go 1.24 编写,无 Python/Rust 等其他语言依赖。核心依赖:
charmbracelet/bubbletea:TUI 框架charmbracelet/bubbles:TUI 组件库(textinput、spinner、table 等)charmbracelet/lipgloss:终端样式系统charmbracelet/glamour:Markdown 渲染anthropics/anthropic-sdk-go:Claude SDKopenai/openai-go:OpenAI SDKncruces/go-sqlite3:SQLite 数据库spf13/cobra:CLI 框架pressly/goose:数据库迁移工具alecthomas/chroma:代码语法高亮整体依赖生态非常健康,均来自成熟的开源项目。
opencode/
├── cmd/ # CLI 入口(root 命令)
├── internal/
│ ├── app/ # 应用核心逻辑
│ ├── config/ # 配置加载
│ ├── db/ # SQLite 数据库
│ ├── diff/ # diff 分析
│ ├── fileutil/ # 文件操作工具
│ ├── llm/ # AI 模型抽象层(核心)
│ ├── lsp/ # LSP 客户端
│ ├── message/ # 消息处理
│ ├── session/ # 会话管理
│ ├── tui/ # TUI 渲染层
│ └── ...
├── go.mod / go.sum
└── opencode-schema.json # 配置 schema
核心架构是经典的 分层设计:TUI 层(tui/)负责渲染 → 会话层(session/)管理上下文 → LLM 层(llm/)负责与 AI 模型通信 → DB 层(db/)持久化。整个链路清晰,便于二次开发和插件扩展。
代码中 llm/ 模块是整个系统的核心,它通过统一接口封装了不同 AI 厂商的 SDK(Anthropic、OpenAI、Google),对外暴露统一的 LLM 接口。这种设计使得:
OpenCode 提供了 4 种安装途径,覆盖主流场景:
方式一(推荐):Install 脚本
curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | bash
方式二:Homebrew(macOS / Linux)
brew install opencode-ai/tap/opencode
方式三:AUR(Arch Linux)
yay -S opencode-ai-bin
方式四:Go 语言安装
go install github.com/opencode-ai/opencode@latest
所有安装方式全程不需要 Docker,部署难度极低。安装脚本会自动检测操作系统和 CPU 架构,下载对应预编译二进制,展开到 $HOME/.opencode/bin,并自动修改 Shell 配置文件(bashrc / zshrc / fishrc)将路径加入 PATH。
OpenCode 通过 JSON 配置文件(~/.opencode.json 或项目本地 .opencode.json)管理配置,JSON Schema 有完整文档。首次使用只需设置 API Key 环境变量:
export ANTHROPIC_API_KEY=sk-xxx
export OPENAI_API_KEY=sk-xxx
不支持 Web UI,仅限终端内使用。
OpenCode 本身是纯计算逻辑的 CLI 工具,不需要 GPU。
所有 AI 推理均由远程 API(Claude / GPT / Gemini)完成,本地只负责构建 Prompt、渲染界面。
当前分析的仓库(opencode-ai/opencode)已被归档,后续由 Charm 团队以 Crush 名称继续开发。如果你是新用户,建议直接使用 Crush: 👉 https://github.com/charmbracelet/crush
OpenCode 是纯 TUI 工具,不提供 Web 界面。对于不熟悉终端的用户有一定学习门槛。另外,企业内多人共享使用场景下,TUI 工具的协作能力受限。
OpenCode 本身免费,但使用 Claude/GPT 等模型会产生 API 调用费用。需要关注用量控制,建议在配置文件中设置每日/每会话的最大 token 消耗。
允许 AI 执行任意 Shell 命令存在潜在风险,建议在生产环境中仔细配置工具白名单(通过配置文件限制 AI 可执行的命令范围)。
OpenCode 代表了「AI 编程工具终端化」的一个方向。2024-2025 年,随着 Claude Code、GitHub Copilot CLI 等产品的推出,终端内 AI 编程成为一个明确趋势。相比 Web IDE 插件,终端工具的优势在于:
OpenCode 被 Charm 团队收购并更名为 Crush,说明这类工具的市场价值得到了社区认可,预计未来会出现更多类似的「轻量级 AI 编程助手」产品。