全部智能体 CLI
NeuroSquad 中的 Crush

Crush,拥有自己的画布

想开多少张卡片运行 Crush 都行,每张都是真正的 `crush` TUI,运行在自己的终端里。Crush 会把自己的状态——工作中、受阻、空闲——直接报告给卡片;箭头为它连接浏览器、终端和笔记;重启后每张卡片都会继续自己的会话。

官方网站github.com/charmbracelet/crush
  • 真正的 crush TUI,用你自己的提供商
  • 不会改写你的 Crush 配置
  • 免费,支持 Windows 10 和 11
状态通道

它知道 Crush 何时完成——何时在提问

Crush 的钩子只有一个事件:工具运行之前。但 Crush 还会把智能体状态报告给终端复用器 herdr——而 NeuroSquad 为每张 Crush 卡片扮演 herdr。

working状态
工作中

一次运行出现第一段输出时报告 working。卡片图标开始旋转,“团队状态”卡片把它计为工作中。只统计协调者的运行,子智能体不会改变状态。

blocked状态
等你处理

请求授权时报告 blocked。卡片从 Crush 的数据库读取待处理的调用,通知写着 Crush needs your permission: bash — rm -rf dist。

idle状态
已完成

运行完成、被取消或失败时报告 idle。队列里的下一条提示发出,回答写入工作日志,通知告诉你已完成。

它的提问也算

Crush 的 question 工具不是 herdr 状态,所以在一轮进行中,卡片每秒查看一次 Crush 的数据库:未回答的问题显示为 Crush is asking: Tabs or spaces?。

无法伪造

每张卡片的窗格 id 都带有本次应用运行的签名;没有签名的报告会被丢弃。

Windows 上也可以

Crush 通过 Unix 套接字发送报告,而 Windows 下的 Node 无法监听它——所以由一个小型 PowerShell 监听器来接收。没有它时,卡片会退回到观察终端的方式。

看看实际效果

Crush 在 NeuroSquad 中做的三件事

应用界面的逐步回放。Crush 请求授权时,由你来回答。

Crush 通过连接的终端修复一个失败的测试,删除文件夹前停在它的授权对话框上,然后完成——工作日志自动写好。

它能得到的一切

Crush 在 NeuroSquad 中的全部能力

Claude Code 能得到的,Crush 几乎都有。以下是全部内容——包括 Crush 工作方式不同的地方,以及做不到的事。

  • 01

    清楚自己的状态

    Crush 自己的状态报告告诉卡片每一轮,无需猜测。

  • “已完成”和“在等你”是两回事

    设置了 HERDR_ENV 后,Crush 会报告 working、blocked 和 idle,每次都附带会话 id。NeuroSquad 为每张卡片监听——精确的开始、等待授权和结束。

    文档: “已完成”和“在等你”是两回事
  • 通知说清楚它需要什么

    通知写明待处理的调用——Crush needs your permission: bash — rm -rf dist——或 Crush 提出的问题。每个智能体一条;等你的通知会一直保留到你回答。

    文档: 通知说清楚它需要什么
  • 取消和失败的运行也会结束

    在 Crush 中按两次 Escape 会取消运行;随后报告 idle,卡片将其标记为已完成,而 Crush 仍在运行。失败的运行也以同样方式结束。

    文档: 取消和失败的运行也会结束
  • 从上次停下的地方继续

    Crush 自己生成会话 id——卡片无法指定。每份报告都带有 id,所以下次启动是 crush --session <id>。

    文档: 从上次停下的地方继续
  • “团队状态”卡片

    工作区里所有 AI 智能体都在一张卡片上,并显示模型——第一轮之前显示你的 Crush 配置中的 large 模型。

    文档: “团队状态”卡片
  • 02

    通过画布工作

    从卡片引出的箭头就是一组工具,经由 NeuroSquad 的 MCP 服务器提供。

  • 箭头就是工具

    画一条箭头连到浏览器、终端、笔记或另一个智能体,Crush 就能使用 mcp_neurosquad_browser_*、terminal_*、note_* 或 agent_*——由 PreToolUse 钩子预先放行,NeuroSquad 自己的工具从不弹出询问。

    文档: 箭头就是工具
  • 新箭头:工具一开始就列出

    Crush 0.92 不会得知服务器的工具列表已变化。所以所有内置工具从一开始就全部列出,由箭头在调用时决定。新的技能和已安装服务器的箭头在卡片下次启动时生效。

    文档: 新箭头:工具一开始就列出
  • 卡片模式

    bash、job_output、job_kill、download、fetch、agentic_fetch 和 sourcegraph 会从 Crush 的工具中完全移除——不是被拒绝,而是不存在——所以 --yolo 也无法让它们回来。

    文档: 卡片模式
  • 来自注册表的 MCP 服务器

    已安装的服务器作为第二个服务器提供,不预先放行:每次调用前 Crush 都会显示自己的授权对话框。

    文档: 来自注册表的 MCP 服务器
  • 来自 skills.sh 的技能

    箭头连到技能卡片后,Crush 会获得 skill_load,其中列出每个技能及其适用场景——从卡片下次启动起生效。

    文档: 来自 skills.sh 的技能
  • 03

    为长时间运行而生

    上下文、Summarize Session、速率限制和实时工作日志——都在卡片上处理。

  • 上下文指示器

    最近一次请求的提示令牌来自 Crush 的数据库;窗口大小来自卡片的配置、你的配置或 Crush 的提供商列表。超过 80% 圆环变为琥珀色。

    文档: 上下文指示器
  • “压缩”就是 Summarize Session

    卡片上的“压缩”按钮会打开 Crush 的命令面板,替你运行 Summarize Session。

    文档: “压缩”就是 Summarize Session
  • 速率限制后自动继续

    一轮若以配额或速率限制错误结束,卡片会显示该限制;如果提供商给出了重置时间,卡片会倒计时并发送“continue”。

    文档: 速率限制后自动继续
  • 提示队列

    排好接下来的消息:每条都在 Crush 报告 idle 时发出——绝不会在思考中的停顿里发出。

    文档: 提示队列
  • 工作日志与交接

    Crush 的最后一条回答读取自卡片的 crush.db:工作日志笔记、交接给新智能体、agent_wait、自定义卡片和 Telegram 都能拿到 Crush 真正的回答。

    文档: 工作日志与交接
  • 04

    团队协作

    每张卡片都有自己的 Crush 数据文件夹,因此任意多张卡片可以共用一个项目。

  • 每张卡片一个数据文件夹

    Crush 会锁定自己的数据文件夹,所以同一项目里的两张卡片无法同时使用 .crush/。每张卡片都有自己的文件夹,存放它的配置层和会话——不会改写你的任何 Crush 文件。

    文档: 每张卡片一个数据文件夹
  • 隔离的 worktree

    给智能体分配独立的 git worktree,并行的智能体就不会改到同一批文件。数据文件夹跟随卡片,而不是项目文件夹。

    文档: 隔离的 worktree
  • 添加审查者

    一键在同一个 worktree 里启动另一款 CLI 的智能体,带着“只审查、不修改”的提示。Crush 也可以担任审查者。

    文档: 添加审查者
  • 危险模式,按卡片开启

    对于你信任的运行,卡片会用 --yolo 启动 Crush:不再弹出授权对话框。默认关闭;卡片模式依然有效。

    文档: 危险模式,按卡片开启
  • 指令

    Crush 自己读取 AGENTS.md、CRUSH.md 和 CLAUDE.md,NeuroSquad 的会话指令则由 MCP 服务器送进它的系统提示。

    文档: 指令
  • 05

    费用、控制与访问

    它花了多少、最多能花多少、运行在哪个模型上,以及你如何找到它。

  • 费用和请求数——没有令牌

    每张卡片的费用是 Crush 自己的总计,包括子智能体,每次模型请求都会计入。Crush 每次请求都会覆盖令牌计数器,所以无法得知每次请求的令牌——该列显示短横线,而不是猜测值。

    文档: 费用和请求数——没有令牌
  • 预算刹车

    为每个工作区设定上限。超出后每个 Crush 收到两次 Escape——运行被取消,Crush 仍在运行(Ctrl+C 会打开它的退出对话框)——自动提示停止。

    文档: 预算刹车
  • OpenRouter 模型

    在卡片自己的配置中使用 Crush 内置的 openrouter 提供商,密钥来自只有这张卡片可见的变量,并附带 NeuroSquad 的归属标头。

    文档: OpenRouter 模型
  • 用手机访问

    扫描二维码,整块画布就在手机浏览器里打开:查看 Crush 的 TUI、在它的对话框中作答、发送下一条提示。

    文档: 用手机访问
  • 由安装向导安装

    安装向导可以替你安装 Crush(npm install -g @charmland/crush)。NeuroSquad 直接运行它的 crush.exe,不经过 npm 垫片。

    文档: 由安装向导安装
一目了然

谁在等你,花了多少

同时运行多个 Crush 智能体时,这两张卡片回答你最常问的问题。

“团队状态”卡片

工作区里每个智能体的状态、模型和本轮用时。在等你的排在最前面,并显示 Crush 在问什么。

  • coupon-fixCrushclaude-sonnet-4.5Crush needs your permission: bash — rm -rf dist等你处理2:34
  • api-migrationCrushclaude-sonnet-4.5把路由迁移到新客户端工作中9:33
  • lint-setupCrushopenrouter/autoCrush is asking: Tabs or spaces?等你处理1:17
  • docs-passCrushopenrouter/auto更新 README已完成5分钟前

用量与费用

读取自每张卡片自己的 `crush.db`。费用和请求数精确,各行之和等于总计——不显示令牌,因为 Crush 不按请求保存令牌。

智能体令牌费用
coupon-fix—US$2.33
api-migration—US$1.41
docs-pass—US$0.18
总计—US$3.92
精确到皮美元,仅在显示时四舍五入。每一行都包含该会话启动的子智能体。
幕后

真正的 Crush,外加它自己的文件夹

NeuroSquad 启动的就是你自己运行的那个 `crush`,运行在卡片内的真实终端中。它添加的全部内容如下:

NeuroSquad 为命令添加的参数
❯ crush
--data-dir <this card’s folder>每次启动卡片自己的数据文件夹:它的配置层和会话
--session <its session id>之后的启动重启后继续同一段对话
HERDR_ENV=1 HERDR_SOCKET_PATH=… HERDR_PANE_ID=<card>.<signature>每次启动Crush 的状态,只报告给这张卡片
<data dir>/crush.json → mcp.neurosquad, mcp.ns-connected每次启动NeuroSquad 的 MCP 服务器,最后合并在你的配置之上
hooks.PreToolUse ^mcp_neurosquad_ → {"decision":"allow"}每次启动NeuroSquad 自己的工具预先放行;已安装的服务器仍会询问
CRUSH_CLIENT_SERVER=每次启动绝不经过共享的 Crush 服务器
options.disabled_tools: bash, job_output, job_kill, download, fetch, agentic_fetch, sourcegraph卡片模式移除 shell 和网络工具,改用画布上的卡片
--yolo危险模式跳过授权对话框

磁盘上没有密钥

配置中写的是 $NEUROSQUAD_MCP_TOKEN;Crush 从卡片的环境变量中展开它。

直接打开到输入框

全新的数据文件夹会先打开 Crush 的“初始化此项目?”界面并吞掉第一条提示,所以预先作答。AGENTS.md 无论如何都会被读取。

装在哪里都能找到

优先使用发布版 crush.exe(winget、scoop、go install),其次是 npm 包里的二进制文件,直接运行。

常见问题

关于 NeuroSquad 中的 Crush

给 Crush 一块画布

免费支持 Windows 10 和 11。你的代码、提供商和费用都留在你的电脑上。