Crush:你的新编码最佳拍档,随时随地提升开发效率
想象一下,有一个工具能让你的编码工作变得更简单、更高效,无论你在哪里、用什么设备,它都能陪着你,把你的代码、工具和工作流程与强大的语言模型连接起来。这就是Crush——一款专为开发者设计的终端应用。今天,我们就来聊聊Crush是什么、它能做什么,以及如何让它成为你日常开发中的得力助手。所有内容都来自它的技术文档,保证真实、实用、接地气,适合专科及以上毕业生轻松上手。
你的新编码最佳拍档,随时随地为你服务。
将你的工具、代码和工作流程与你选择的LLM连接起来。
Crush是什么?
Crush是一款运行在终端上的应用,它的核心目标是把你的开发工具、代码和工作流程与大型语言模型(LLM)结合起来。你可以把它想象成一个超级助手,能帮你在敲代码时更聪明、更高效。不管你是用macOS、Linux、Windows(支持PowerShell和WSL),还是FreeBSD、OpenBSD、NetBSD,Crush都能完美适配。
那它具体能干啥呢?简单来说,Crush能让你在终端里直接调用语言模型,处理代码相关任务,比如生成代码片段、分析问题,甚至还能通过语言服务器协议(LSP)理解你的项目上下文。它就像一个随时待命的编程伙伴,帮你省时间、少走弯路。
Crush的核心功能有哪些?
为了让你更清楚Crush的能耐,我整理了它的几个亮点:
-
「多模型支持」:你可以从一堆语言模型里挑一个喜欢的,比如OpenAI、Anthropic,或者通过兼容的API加个你自己的模型。 -
「灵活切换」:写代码写到一半,想换个模型试试?没问题,Crush支持随时切换,还能保留之前的上下文。 -
「会话管理」:每个项目可以有多个独立的工作会话,上下文互不干扰,特别适合多任务并行。 -
「LSP增强」:它能用LSP(语言服务器协议)获取项目信息,给你更贴合实际的建议。 -
「可扩展性」:通过MCP(模型上下文协议,支持 http
、stdio
和sse
三种方式),你可以给Crush加新功能。 -
「跨平台」:无论你用什么系统,Crush都能跑得顺畅。
这些功能听起来是不是很实用?接下来,我们看看怎么把它装到你的电脑上。
如何安装Crush?
Crush的安装方式特别多样,不管你是喜欢用包管理器,还是直接下载文件,甚至用Go编译,都能找到适合你的方法。下面我详细介绍一下每种方式的操作步骤。
1. 用包管理器安装
如果你习惯用包管理器,Crush支持以下几种常见工具:
-
「Homebrew(macOS用户)」: brew install charmbracelet/tap/crush
-
「NPM(Node.js爱好者)」: npm install -g @charmland/crush
-
「Arch Linux(yay用户)」: yay -S crush-bin
-
「Nix(跨平台选择)」: nix run github:numtide/nix-ai-tools#crush
针对特定系统的额外选项
-
「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
2. 下载预编译文件
不想折腾包管理器?直接去Crush的GitHub发布页下载现成的文件吧,支持以下格式:
-
「软件包」:Debian(.deb)和RPM格式。 -
「二进制文件」:适用于Linux、macOS、Windows、FreeBSD、OpenBSD和NetBSD。
3. 用Go安装
如果你是Go开发者,可以直接用这一招:
go install github.com/charmbracelet/crush@latest
安装完后,敲个crush
命令试试,看看能不能跑起来。如果顺利的话,你就离高效编码更近一步了!
❝
「小提示」:第一次用Crush可能会让你有点“上头”,效率提升的同时,也可能忍不住多玩一会儿。如果有啥问题,欢迎加入Discord社区,跟大家聊聊你的体验。
❞
快速上手Crush
装好了Crush,接下来怎么用呢?别急,我一步步带你入门。
第一步:准备API密钥
Crush需要连接语言模型,所以你得先弄个API密钥。支持的提供商包括Anthropic、OpenAI、Groq、OpenRouter等。拿到密钥后,启动Crush,它会提示你输入。
不想每次都手动输入?可以直接设置环境变量,这样更省事。以下是常见提供商的环境变量列表:
环境变量 | 提供商 |
---|---|
ANTHROPIC_API_KEY |
Anthropic |
OPENAI_API_KEY |
OpenAI |
GEMINI_API_KEY |
Google Gemini |
GROQ_API_KEY |
Groq |
AWS_ACCESS_KEY_ID |
AWS Bedrock (Claude) |
AWS_SECRET_ACCESS_KEY |
AWS Bedrock (Claude) |
AZURE_OPENAI_API_KEY |
Azure OpenAI |
设置方法很简单,比如在Linux或macOS上:
export OPENAI_API_KEY="你的密钥"
Windows用户可以用PowerShell:
$env:OPENAI_API_KEY = "你的密钥"
第二步:启动Crush
输入crush
命令,回车,Crush就跑起来了。如果设置了环境变量,它会自动识别;如果没有,就按提示输入密钥。之后,你就可以开始用它写代码、调试或者探索功能了。
额外小贴士:想加新模型?
Crush内置了不少模型,但如果你想要更多选择,可以去Catwalk贡献代码。这个社区项目专门管理Crush兼容的模型,欢迎你加入!
如何配置Crush?
Crush默认就能用得很顺手,但如果你想调整一下功能,或者让它更贴合你的习惯,可以加个配置文件。配置文件是JSON格式的,可以放以下几个地方(优先级从高到低):
-
./.crush.json
(项目目录下) -
./crush.json
(项目目录下) -
$HOME/.config/crush/crush.json
(全局配置)
基本结构是这样的:
{
"设置项1": { },
"设置项2": { }
}
下面我介绍几种常见的配置场景,帮你快速上手。
配置LSP:让Crush更聪明
LSP(语言服务器协议)能让Crush理解你的代码上下文。比如你是Go开发者,可以这样配置:
{
"$schema": "https://charm.land/crush.json",
"lsp": {
"go": {
"command": "gopls"
},
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"]
}
}
}
装好对应的语言服务器(比如gopls
),Crush就能根据你的代码给出更精准的建议。
配置MCP:扩展Crush功能
MCP(模型上下文协议)能让Crush连接外部服务,支持三种方式:stdio
、http
和sse
。举个例子:
{
"$schema": "https://charm.land/crush.json",
"mcp": {
"filesystem": {
"type": "stdio",
"command": "node",
"args": ["/path/to/mcp-server.js"]
},
"github": {
"type": "http",
"url": "https://example.com/mcp/"
}
}
}
这样Crush就能从文件系统或GitHub获取额外信息,功能更强大。
设置工具白名单:省去确认步骤
Crush默认会在运行工具前问你能不能执行。如果你信任某些工具,可以加到白名单:
{
"$schema": "https://charm.land/crush.json",
"permissions": {
"allowed_tools": [
"view",
"ls",
"grep"
]
}
}
或者直接用--yolo
命令跳过所有确认,但要小心,别随便乱跑未知工具。
添加自定义提供商
想用自己的语言模型?Crush支持OpenAI和Anthropic兼容的API。比如用Deepseek:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"deepseek": {
"type": "openai",
"base_url": "https://api.deepseek.com/v1",
"api_key": "$DEEPSEEK_API_KEY",
"models": [
{
"id": "deepseek-chat",
"name": "Deepseek V3",
"context_window": 64000
}
]
}
}
}
记得设置DEEPSEEK_API_KEY
环境变量哦。
查看Crush的日志
有时候程序出了问题,或者你想看看Crush在干啥,可以查日志。日志默认存在./.crush/logs/crush.log
。用以下命令查看:
-
「看最近1000行」: crush logs
-
「看最近500行」: crush logs --tail 500
-
「实时跟踪」: crush logs --follow
想要更详细的信息?启动时加--debug
标志,或者在配置里加:
{
"options": {
"debug": true
}
}
开发者须知:如何参与Crush开发?
如果你不仅想用Crush,还想帮它变得更好,这里有些开发指南,来自它的开发文档。
构建和测试
-
「构建」: go build .
或go run .
-
「测试」: task test
或go test ./...
-
「代码检查」: task lint-fix
代码规范
写代码时注意这些:
-
「命名」:导出用 PascalCase
,非导出用camelCase
。 -
「错误处理」:用 fmt.Errorf
包装错误。 -
「格式化」:优先用 gofumpt -w .
,或者goimports
、gofmt
。
测试技巧
测试时可以用mock提供商,避免真调用API:
func TestSomething(t *testing.T) {
config.UseMockProviders = true
defer func() { config.UseMockProviders = false }()
// 测试代码
}
社区与反馈
Crush的开发者很欢迎你的意见。你可以通过以下方式联系他们:
Crush用的是FSL-1.1-MIT许可证,属于Charm项目的一部分。
Charm热爱开源 • Charm loves open source
FAQ:常见问题解答
Crush是啥?
Crush是个终端工具,能把你的代码和工具跟大型语言模型连起来,帮你更高效地开发。
支持哪些系统?
macOS、Linux、Windows(PowerShell和WSL)、FreeBSD、OpenBSD、NetBSD,全都支持。
怎么安装?
可以用Homebrew、NPM、Nix等包管理器,或者下载预编译文件,也可以用Go直接装。
支持哪些语言模型?
Anthropic、OpenAI、Groq、Google Gemini等等,还能加自定义模型。
怎么查看日志?
用crush logs
命令,或者直接看./.crush/logs/crush.log
文件。