Crush 终端编程助手
在终端中连接模型、代码与开发工具的多模型编程助手。
按维度查看评分与理由
证据显示默认要求权限确认(permissions allow 需显式配置),但存在 --yolo 跳过所有提示,且 crushrc 作为可信代码可执行任意命令,未提供最小权限隔离。数据流透明度有限,未详细说明哪些数据发送给 LLM 或第三方。敏感数据处理方面,API 密钥通过环境变量或配置存储,但未说明加密存储。依赖安全方面,go.mod 中依赖众多,但未提供漏洞扫描或安全审计证据。外部影响方面,工具可执行 shell 命令、修改文件、创建提交,但默认需确认。回滚机制未提及。来源归属方面,有 attribution 设置,但未验证。
自一致性方面,README 描述的功能与配置示例基本一致,但部分细节(如 JSON 配置弃用)未完全展开。依赖可用性方面,依赖众多且版本固定,但未提供依赖可用性保证。失败消息方面,未提供错误处理或用户提示的示例。
受众与场景明确,面向开发者,支持多种平台和 LLM。能力边界清晰,支持 LSP、MCP、技能等,但未明确限制。触发精度方面,技能可配置 user-invocable 和 disable-model-invocation,但默认行为未详细说明。环境适配方面,支持多平台,但未提供特定环境配置的详细说明。
信息架构清晰,README 结构良好,有配置、安装、使用等章节。安装说明详细,覆盖多种包管理器。命名稳定性方面,项目名和命令名稳定,但未提供 API 稳定性保证。示例和 FAQ 丰富,但缺少 FAQ 部分。已知限制方面,未明确列出。许可证为 FSL-1.1-MIT,但元数据为 NOASSERTION,且许可证文本包含 MIT 未来许可,但未明确版本化。版本化变更日志未提供。维护责任方面,有 CLA 和 CI,但未明确维护者。
输出可用性方面,提供 TUI 和多种输出格式,但未详细说明。边际价值方面,提供多模型、LSP、MCP 等特性,但未与现有工具对比。成本效益方面,免费开源,但未提供性能或资源消耗数据。
声明可追溯性方面,README 中的特性声明未提供具体实现证据。跨来源佐证方面,未提供第三方验证。事实与推断分离方面,未明确区分事实和推断。
- --yolo 模式会跳过所有权限确认,存在高风险,需谨慎使用。
- crushrc 和 crush.json 被视为可信代码,可执行任意命令,需确保来源可信。
- 许可证元数据为 NOASSERTION,实际为 FSL-1.1-MIT,需确认是否符合使用场景。
- 未提供回滚机制,操作可能不可逆。
- 依赖众多,未提供安全审计证据。
这个 Agent 能做什么,适合哪些场景?
Crush 是 Charm 开发的终端式编程助手,以交互式终端界面连接项目代码、LLM 和开发工作流。它支持在同一会话中切换模型,并为每个项目保留多个工作会话与上下文。Crush 可通过 LSP 获取额外代码上下文,并可连接 stdio、HTTP 与 SSE 三种 MCP 服务器。它以本地 CLI 形式安装和运行,支持 macOS、Linux、Windows、Android 及多种 BSD 系统;模型调用则通过 Hyper、API 密钥或自定义兼容接口完成。默认情况下,工具调用需要用户许可,项目配置还能限制、隐藏或完全跳过工具权限提示。
启动 crush 后,用户可用 ctrl+l 打开模型选择器并认证提供商。程序读取 .crush.json、crush.json 或全局 crush.json,加载提供商、LSP、MCP、工具许可和技能设置;也会读取项目及全局上下文文件。它可调用已配置的 LSP,为代码任务补充上下文,并连接 stdio、http 或 sse MCP 服务执行其可用能力。会话、消息历史、权限队列、LSP 与 MCP 状态可在相同 --cwd 的多个客户端之间共享;日志写入 ./.crush/logs/crush.log,可用 crush logs 查看。
- 使用 OpenAI、Anthropic、Gemini 或其他已配置模型的开发者,希望在同一终端编程会话中切换模型而不丢失上下文。
- 维护多项目代码库的工程师,需要为每个项目保留多个独立会话,并在另一个终端客户端中继续查看同一工作区。
- 依赖
gopls、typescript-language-server或nil的开发者,希望让编程助手获得语言服务器提供的额外上下文。 - 已部署内部 MCP 服务的团队,需要通过 stdio、HTTP 或 SSE 将文件系统、GitHub 等能力接入终端助手。
- 需要使用 Ollama、llama.cpp、LM Studio、LiteLLM 或其他自定义兼容端点的用户,希望自动发现或手动定义本地模型。
这个 Agent 有哪些优点和局限?
- 可在会话中切换 LLM,同时保留上下文,而非绑定单一模型。
- 同时支持 LSP 和三种 MCP 传输方式,可将语言服务与外部工具接入同一终端工作流。
- 支持项目级、全局及自定义提供商配置,并明确支持 OpenAI 兼容、Anthropic 兼容和多种本地模型服务。
- 相同
--cwd的多个客户端可共享会话、消息历史、权限队列、LSP 与 MCP 状态。
- 需要自行选择和认证模型提供商;除 Hyper 外,外部提供商的费用与账户条件并不由项目说明统一覆盖。
crush.json中的$(...)会在加载时以当前 shell 权限执行,因此不可信目录中的配置存在明确安全风险。- 默认权限机制与 MCP、LSP、模型服务配置增加了部署和治理工作;
--yolo会跳过所有工具许可提示。 - 仓库元数据标示为
NOASSERTION,而 README 指向 FSL-1.1-MIT,采用前应核实适用许可。
如何安装或部署这个 Agent?
任选一种受支持方式安装,例如 macOS/Linux 可运行 brew install charmbracelet/tap/crush,或运行 npm install -g @charmland/crush;也可运行 go install github.com/charmbracelet/crush@latest。首次启动运行 crush,按 ctrl+l 打开模型选择器并完成所选提供商的认证。若使用环境变量配置 OpenAI,可先设置 OPENAI_API_KEY;使用 Anthropic 则设置 ANTHROPIC_API_KEY。
如何使用这个 Agent?
在项目目录运行 crush。若需项目配置,创建 .crush.json,例如配置 LSP:{"$schema":"https://charm.land/crush.json","lsp":{"go":{"command":"gopls"}}}。要接入 HTTP MCP,可在 mcp 中配置名称、"type":"http" 和 url;静态凭据可放在 headers。默认工具调用会请求许可;可通过 permissions.allowed_tools 只放行指定工具,或谨慎使用 crush --yolo 跳过全部提示。
常见问题
能否使用自己的模型或本地模型?
工具会未经确认直接执行吗?
permissions.allowed_tools 配置允许的工具;--yolo 会跳过所有权限提示,文档明确建议谨慎使用。MCP 支持哪些连接方式?
stdio 命令行服务器、http 端点和 sse Server-Sent Events 服务;HTTP 和 SSE 服务还可配置 OAuth。Crush 会收集我的提示词和回复吗?
CRUSH_DISABLE_METRICS=1 或配置 disable_metrics 退出。