Crush
综合介绍
Crush 是一个在终端(Terminal)里运行的人工智能编程助手。 它由 Charmbracelet 团队开发,这个团队擅长制作美观且实用的命令行工具。 Crush 的核心设计理念是让开发者不需要离开终端环境,就能获得人工智能的编码支持。 它像一个内置在命令行里的智能体,可以直接与它对话,让它帮忙编写代码、调试程序或者执行一些工作流。
这个工具的一大特点是支持多种不同公司的大语言模型(LLM),比如 OpenAI 的 GPT 系列、Anthropic 的 Claude 系列以及 Google 的 Gemini 等。 用户可以根据自己的需求和偏好,在同一个对话中随时切换模型,并且对话的上下文信息会得到保留。 为了让 AI 更理解项目代码,Crush 整合了语言服务器协议(LSP),这和很多代码编辑器(如 VS Code)用的是同一种技术,能让 AI 获取更准确的代码结构信息。 同时,它还具备很强的扩展性,可以通过插件来增加新功能。
功能列表
- 支持多种模型: 可以在 OpenAI、Anthropic、Google、Groq 等多种大语言模型之间自由选择和切换,也可以通过配置添加自定义的兼容模型。
- 会话式工作流: 可以在一个项目里维持多个独立的工作会话,每个会话都有自己的上下文,避免信息混淆。
- 语言服务器(LSP)增强: 集成语言服务器协议(LSP),能像代码编辑器一样理解代码的结构和上下文,为 AI 提供更精确的信息。
- 可扩展: 支持模型上下文协议(MCP),允许通过插件扩展 Crush 的能力,例如与文件系统、HTTP 服务等进行交互。
- 跨平台运行: 全面支持 macOS、Linux、Windows (包括 PowerShell 和 WSL)、FreeBSD 等多种操作系统。
- 高度可配置: 用户可以通过项目本地或全局的
crush.json
文件进行详细配置,例如设置默认模型、添加 LSP、管理工具权限等。 - 工具使用与权限管理: AI 在执行如读写文件、运行命令等操作前会请求用户许可。用户也可以预先设置一个“白名单”来允许某些工具被自动执行,以提高效率。
- 详细的日志记录: Crush 会记录运行日志,方便用户查看具体执行过程或进行调试。
使用帮助
Crush 是一个命令行工具,所以安装和使用都在终端里完成。
安装流程
Crush 提供了多种便捷的安装方式,你可以根据自己的操作系统和偏好来选择。
通过包管理器安装(推荐):
- macOS (使用 Homebrew):
brew install charmbracelet/tap/crush
- Windows/Linux (使用 npm):
npm install -g @charmland/crush
- Arch Linux:
yay -S crush-bin
- Debian/Ubuntu:
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list sudo apt update && sudo apt install crush
- Fedora/RHEL:
echo '[charm] name=Charm baseurl=https://repo.charm.sh/yum/ enabled=1 gpgcheck=1 gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo sudo yum install crush
通过 Go 直接安装:
如果你的电脑里安装了 Go 语言环境,也可以直接用 go install
命令安装。
go install github.com/charmbracelet/crush@latest
首次运行和配置
- 准备 API 密钥:Crush 需要连接大语言模型服务才能工作,所以你首先需要一个 AI 服务提供商的 API 密钥。例如,你可以去 OpenAI、Anthropic 或 OpenRouter 等网站注册并获取你的密钥。
- 启动 Crush:打开终端,进入你的项目文件夹,然后输入命令:
crush
- 输入密钥:第一次运行时,Crush 会提示你选择一个 AI 服务提供商,并输入对应的 API 密钥。 输入后,Crush 会把密钥保存起来,下次就不用再输了。你也可以通过设置环境变量来指定密钥,例如:
OPENAI_API_KEY
ANTHROPIC_API_KEY
GROQ_API_KEY
OPENROUTER_API_KEY
如何操作
启动 Crush 后,你会进入一个交互式的对话界面。在这里,你可以像聊天一样向 AI 提出你的编程需求。
- 提出需求: 直接用自然语言描述你想做什么。例如:
“请帮我写一个 Python 脚本,用来下载一个网页的全部图片。”
- AI 执行工具: 当 AI 需要读取文件、查看目录结构或执行命令时,它会生成一个“工具调用”的请求。默认情况下,Crush 会把这个请求展示给你,并等待你批准。你可以输入
y
(yes) 来允许执行,或n
(no) 来拒绝。 - 危险操作警告: 如果你想让 Crush 自动执行所有工具调用,可以加上
--yolo
参数启动,但这非常危险,请谨慎使用。crush --yolo
- 切换模型: 在对话过程中,你可以输入
/set model
命令来切换使用的大语言模型。Crush 会列出可用的模型供你选择,切换后对话的上下文会保留。 - 管理会话: 你可以为同一个项目开启多个不同的会話,每个会話的上下文是独立的,适合同时处理不同任务。
- 自定义配置 (
crush.json
):你可以在项目根目录创建一个.crush.json
或crush.json
文件来自定义 Crush 的行为。例如,你可以配置语言服务器(LSP)来让 AI 更懂你的代码。一个配置了 Go 和 TypeScript 语言服务器的例子:{ "$schema": "https://charm.land/crush.json", "lsp": { "go": { "command": "gopls" }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } }
你也可以在这个文件里设置工具白名单,让某些安全的命令(如
ls
,grep
)可以无需确认直接执行。 - 忽略文件 (
.crushignore
):如果你不希望 AI 读取项目中的某些文件或文件夹(比如包含敏感信息的文件),可以创建一个.crushignore
文件,它的语法和.gitignore
完全一样。 - 查看日志:Crush 会把详细的运行日志保存在项目目录下的
./.crush/logs/crush.log
文件中。你也可以使用命令来快速查看日志:# 查看最近 1000 行日志 crush logs # 实时跟踪日志 crush logs --follow
应用场景
- 快速原型开发当你有一个新想法时,可以直接在终端里告诉 Crush,让它生成初始的项目结构、基础代码和配置文件。比如,你可以说:“创建一个使用 React 和 antd 的简单待办事项应用”,Crush 会帮你完成基础工作。
- 代码调试与问题修复当遇到一个 Bug 时,你可以让 Crush 查看相关代码文件,并向它描述问题。Crush 会利用 LSP 分析代码上下文,并提出修复建议,甚至可以直接帮你修改代码。
- 脚本编写与自动化对于需要编写一次性脚本的场景,比如处理数据、备份文件或调用 API,你可以直接用自然语言描述需求,让 Crush 生成对应的 Shell、Python 或其他语言的脚本,省去手动编写的时间。
- 学习新技术或库在学习一个新的编程语言、框架或库时,你可以让 Crush 生成示例代码,或者向它请教某个函数或概念的用法。这就像有一个不知疲倦的编程导师随时陪在你身边。
QA
- Crush 和其他 AI 编程工具有什么不同?Crush 最大的不同在于它完全运行在终端里,并且拥有一个由 Charmbracelet 打造的美观、交互式的文本用户界面(TUI)。 它强调与终端工作流的深度融合,通过 LSP 等技术来更好地理解本地项目上下文,而不只是一个简单的问答机器人。
- 使用 Crush 需要付费吗?Crush 本身是开源免费的软件。 但是,它需要调用第三方大语言模型服务(如 OpenAI、Claude 等),这些服务通常是收费的。你需要支付你所使用的 AI 模型产生的费用。
- 我的代码会上传到哪里,安全吗?Crush 在工作时,会把你项目中的部分代码作为上下文发送给你选择的大语言模型服务商。所以,你的代码会被发送到例如 OpenAI、Google 或 Anthropic 的服务器。默认情况下,Crush 在执行任何本地文件操作或命令前都会请求你的许可,以确保安全。 你也可以通过
.crushignore
文件来精确控制哪些文件不被 AI 读取。 - 什么是 LSP 和 MCP?它们有什么用?LSP (Language Server Protocol) 是一种让编辑器或工具能够理解代码的协议。Crush 通过它来获取代码的定义、引用等信息,从而为 AI 提供更丰富的上下文。 MCP (Model Context Protocol) 是 Crush 的一种插件协议,它允许开发者扩展 Crush 的能力,让 AI 可以和更多的外部工具(如文件系统、API 服务)进行交互。