crush
终端AI编程搭档,支持20+LLM无缝切换,LSP深度代码理解,MCP全协议扩展
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
终端AI编程搭档,支持20+LLM无缝切换,LSP深度代码理解,MCP全协议扩展
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你在 terminal 里敲命令,旁边坐着一个永远精力充沛、不知疲倦的结对编程搭档——它能读懂你的代码、帮你写新功能、调试疑难 Bug,甚至还能在你喝水休息时自己把 Git 提交消息都想好。这就是 Charm Crush 给你带来的编程体验。
图1:Charm Crush 项目 Logo
Charm 是一个专注于终端工具生态的开源团队,此前已经打造了 Bubble Tea(Go TUI 框架)、Glamour(Markdown 渲染库)、Lipgloss(终端样式库)等一系列被开发者广泛使用的明星项目,全球已有超过 25000 个应用构建于 Charm 生态之上。Crush 是 Charm 在 AI 编程助手领域的最新尝试,定位与 GitHub Copilot 的命令行版本和 Claude Code 类似,但更强调跨平台兼容和可扩展性。
与 Claude Code 需要 Node.js 环境不同,Crush 原生由 Go 语言编写,天然具备跨平台能力——Linux、macOS、Windows(PowerShell 和 WSL)、Android、FreeBSD、OpenBSD、NetBSD 均可直接运行。Charm 团队在终端 UI 领域积累了近十年,Crush 的交互体验明显比早期 AI 编程工具更加成熟。
如果把 Claude Code 看作一个刚从编程训练营毕业的实习生,Crush 则更像一个在你工位旁边蹲守多年的老鸟——它熟悉你的项目结构、你的 .gitignore 规则、你的 LSP 配置,甚至知道你在哪个目录下写什么语言。Crush 通过集成 Language Server Protocol(LSP),能像 IDE 一样理解代码语义,为 LLM 提供精确的上下文信息,这是很多传统 AI 编程工具做不到的。
同时,Crush 的 MCP(Model Context Protocol)支持意味着它不只是一个封闭的编程助手——你可以接入任何符合 MCP 标准的工具,比如接入 GitHub API 来自动创建 PR,或者接入数据库工具来帮你写 SQL。Crush 本身是基础设施,扩展什么能力由你决定。
多模型自由切换:Crush 支持 20+ LLM 提供商,包括 Anthropic Claude、OpenAI GPT、Google Gemini、AWS Bedrock、Vercel AI Gateway、Groq、OpenRouter 等。切换模型不需要重启会话,上下文完整保留。你可以针对不同任务选不同模型——比如用 Claude 4 写核心算法,用 Gemini Flash 做快速解释。
会话管理:Crush 基于 SQLite 持久化会话,每个项目可以有多个工作上下文(session)。你可以随时 crush sessions 查看历史会话、恢复中断的工作流。相比之下,很多竞品只支持单会话,无法在多个并行任务间切换。
内置工具集:Crush 自带一组精心设计的内置工具:bash(执行命令)、edit(修改文件)、view(查看代码)、grep(搜索)、glob(文件匹配)。这些工具都经过 Bubble Tea 框架的 UI 增强,命令输出有语法高亮、文件 diff 有彩色渲染,阅读体验远优于原始终端输出。
Agent 技能(Skills):Crush 支持 Agent Skills 开放标准,这是一个类似于 Anthropic Skills 的可复用技能包机制。Skills 以包含 SKILL.md 文件的文件夹形式存在,Crush 会自动从 $HOME/.config/crush/skills、$HOME/.agents/skills 等路径加载。你可以从 anthropics/skills 获取现成的技能包,也可以自己编写。
Hook 钩子机制:Crush 提供细粒度的事件钩子。你可以在 crush.json 中配置:每当 AI 执行 bash 工具之前/之后,自动运行你指定的 shell 命令。比如配置 PreToolUse 钩子,在每次执行命令前自动 git status,或者在提交后自动运行测试。
推荐路线(3 分钟搞定):如果你用 macOS,直接 brew install charmbracelet/tap/crush;Ubuntu/Debian 用户通过官方 APT 源安装;Windows 用户用 winget 或 scoop 也只需一条命令。安装完成后运行 crush,输入 API Key 即可开始。
NPM 路线:对于前端开发者,npm install -g @charmland/crush 可能是最自然的选择,NPM 的全局包管理对前端同学来说更熟悉。
源码路线:Go 开发者可以直接 go install github.com/charmbracelet/crush@latest,前提是本机装了 Go 1.26+。
首次启动后,Crush 会引导你配置 API Key——它支持环境变量(如 ANTHROPIC_API_KEY、OPENAI_API_KEY)和交互式输入两种方式。模型列表由 Catwalk 统一管理,这是一个社区驱动的开放模型注册表,任何人都可以贡献新的模型配置。
Crush 的代码库完全用 Go 编写,主模块路径为 github.com/charmbracelet/crush。核心技术栈包括:Bubble Tea v2(Charm 自研的 TUI 框架,负责终端 UI 渲染)、SQLite(通过 sqlc 管理数据库,支持会话持久化)、Cobra(CLI 参数解析)、Go Git(集成 go-git 库处理 Git 操作)。
架构上,Crush 采用模块化设计,核心组件包括:internal/agent(会话 Agent 和协调器)、internal/lsp(LSP 客户端管理器)、internal/mcp(MCP 协议客户端)、internal/hooks(钩子引擎)、internal/session(会话管理)、internal/ui(Bubble Tea 渲染层)。各组件通过 pub/sub 机制通信,解耦程度高,便于独立测试和维护。
代码质量方面,Crush 包含完整的测试套件(CI/CD 集成在 GitHub Actions)、golangci-lint 静态分析、go vet 安全检查,以及自动化的 gofumpt 代码格式化。配置通过 JSON Schema(schema.json)完整约束,有 IDE 自动补全支持。
无 Web UI:Crush 是纯终端应用,没有浏览器界面。对于不熟悉命令行操作的开发者,或者习惯在 IDE 插件中调用 AI 的用户,上手门槛略高。
安全注意事项:crush.json 中的 $(command) 展开机制在加载时就会执行任意 shell 命令——如果从不可信来源复制配置,可能存在安全风险。官方文档也专门提到了这一点,要求用户只加载自己审查过的配置文件。
API Key 管理:Crush 目前没有内置的 Key 管理服务,所有 API Key 都以明文或环境变量形式存储。如果团队共用一台开发机,需要自行做好密钥隔离。
相对年轻:Crush 相比 Claude Code、Copilot CLI 等竞品,生态还在快速建设阶段。MCP 服务器生态、第三方 Skills 数量还不算丰富,部分细节功能(如 Hook 钩子机制)标注为 preliminary support,未来可能还有调整。
Charm Crush 的出现代表了一个趋势:AI 编程工具正在从云服务形态向本地化、去中心化的方向演进。Crush 不依赖特定的云平台,API Key 由用户自己管理,数据不经过第三方服务器——对于重视隐私或受限于数据合规要求的团队,这是一个有吸引力的选择。
同时,Charm 团队在 TUI 领域的技术积累让 Crush 的交互体验明显优于同类开源项目。彩色终端输出、文件 diff 渲染、Markdown 格式化……这些看似小的体验细节,实际上决定了开发者是否愿意长期使用一个 CLI 工具。Crush 证明了开源项目也能做出不逊于商业产品的终端体验。