nsq:开源的终端版 NeuroSquad
在一个终端面板里并排运行 Claude Code、Codex、OpenCode 或任意命令,关掉面板也没关系——智能体需要你时,会带着它的问题叫你。免费、MIT、无需账号。
今天我们发布 nsq 0.1.0,这是 NeuroSquad 终端版的预览版。它做的正是桌面应用最首要的那件事——同时运行多个 AI 编程智能体,并告诉你哪一个需要你——但不需要窗口、画布或账号。它以 MIT 许可开源,支持 Windows、macOS 和 Linux,通过 npm 安装:npm i -g neurosquad,然后运行 nsq。
npm i -g neurosquad # 或直接试用:npx neurosquad
nsq run claude "fix the flaky checkout test" --worktree
nsq run codex --name reviewer
nsq run -- npm run dev # 任意命令
nsq # 面板为什么要做终端版
很多使用编程智能体的人整天待在终端里:在 Linux 机器上、通过 SSH 连到服务器、在开发容器里,或者只是更喜欢终端。桌面应用跟不过去。而他们需要的东西和桌面版一样——知道哪个智能体在工作、哪个在等你以及它在问什么、哪个已经完成——就在他们本来所在的地方。
所以 nsq 刻意保持小巧。它不是文字模式的画布,而是 NeuroSquad 中回答“现在有没有智能体需要我?”的那一部分,再加上让同时运行多个智能体变得可行的几样东西:守护进程、worktree、费用统计和通知。
它能做什么
- 智能体归守护进程管理。
nsq会按需启动它。关掉面板甚至整个终端窗口,智能体照样运行;再次打开nsq,一切都在原处。执行nsq down或重启电脑后,nsq up会恢复之前在运行的智能体,并接续它们的会话。 - 实时终端面板。 侧栏列出工作区及其智能体,右侧以网格显示所选工作区中各智能体的实时终端。按 Enter 将某个智能体全屏打开,所有按键都发给它;按 Ctrl+] 回到网格。
- 状态精确,来自各 CLI 自己的钩子。 工作中、需要你(附带 CLI 自己的问题,例如“Would you like to run the following command?”)、已完成——这些由 Claude Code 的钩子、Codex 的钩子和 OpenCode 插件报告,而不是从屏幕上猜测。对于 Claude Code,钩子没有报告的情况(例如中断或 API 错误)会通过会话记录来确认。
- 无需切换即可回答。 在网格中直接按
y、a、n回答所选智能体的权限请求——是、始终、否;i用该 CLI 实际使用的按键中断它;s发送提示词,S则把提示词排队,等当前这一轮结束后再发送。 - 通知与声音。 智能体需要你或完成时弹出系统通知——每个智能体只保留一条,它重新开始工作时自动撤回。无法显示系统通知时(例如通过 SSH),面板会在自己的终端里发出提醒。
- 每个智能体一个 git worktree。 加上
--worktree,智能体就有自己的检出目录和分支,两个智能体永远不会改同一批文件;nsq diff显示它改了什么。 - 按智能体统计费用。
nsq cost读取各 CLI 自己的日志:token 一律是整数;没有价格的模型显示“无价格”,绝不会显示 $0。 - 内置 OpenRouter。
nsq openrouter set-key将密钥存入操作系统的密钥库;--provider openrouter --model <id>让智能体通过它运行。密钥只会进入该智能体的环境变量,请求会带上 NeuroSquad 的 OpenRouter 归属标识。 - 本地语音输入。 按
v(或全局快捷键)开始说话;识别在你的电脑上用一次性下载的开放模型完成。文字会粘贴到智能体的输入框,但绝不会自动发送——由你按 Enter。
Claude Code、Codex 和 OpenCode(1.x 与 2.x 均可)支持完整的状态;此外,任意命令都可以作为智能体运行:开发服务器、测试监视器、其他 CLI。普通命令没有钩子,所以 nsq 只在它输出时显示为工作中、安静下来后显示为已完成,并且从不声称这样的命令需要你。
它怎么知道,以及它从不碰什么
每个智能体都有自己的一层命令行参数、环境变量和文件,放在 nsq 的文件夹里。你的 ~/.claude、~/.codex 和 opencode.json 永远不会被写入。钩子把事件发到回环地址,每个智能体有自己的令牌;这些事实经过与桌面应用相同的状态机:钩子是事实,你在等待中的智能体里按下的键会立即生效,静默只是兜底手段。
这个状态机并不是新的。它连同钩子配置、Claude Code 会话记录读取和用量解析,现在都放在 @neurosquad/core 里——一个开源包,nsq 就构建在它之上。NeuroSquad 桌面应用也使用同一个核心:两者原本相同的模块,如今是同一份以 MIT 发布的代码。我们修正某个 CLI 报告状态的方式时,两边都会得到修复。
自己绘制单元格的面板
每个图块都是由守护进程供给数据的真实终端模拟器,面板只重绘发生变化的单元格——最多每秒约 30 次,而且只在有变化时才绘制。装饰性动画(工作中的旋转图标、“需要你”的脉动)在智能体全屏打开时和终端失去焦点时暂停,设置 NSQ_NO_ANIMATION=1 可完全关闭。在能显示图片的终端(kitty、iTerm2、sixel)里,图块上显示各 CLI 的标志;其他终端里则是小巧的字符徽标。
手机(实验性)
nsq phone on --lan 让同一网络中的手机查看智能体、阅读它们的屏幕、发送提示词、回答权限请求以及中断智能体。nsq phone pair 会输出一个链接和二维码;链接中带有配对令牌,请像对待密码一样保管它,nsq phone rotate 会让所有手机退出。已配对的手机不能启动智能体、修改设置或输入任意按键。手机访问(连同其移动端页面)默认关闭,在这个预览版中标记为实验性。
选 nsq 还是桌面应用
两者解决的是同一个首要问题,用的也是同一个核心,所以按你工作的地方来选。nsq 适合终端、Linux、服务器和 SSH 会话:免费、开源、无需账号、没有遥测。适用于 Windows 和 macOS 的桌面应用则是完整的工作台:画布上的智能体卡片、多得多的智能体 CLI、通过箭头相互协作的智能体、插件卡片、模板和录制。这些功能 nsq 都没有,也不打算加入——nsq 会保持小巧。
“预览版”意味着什么
- 这是 0.1.0 版本:在 1.0 之前,命令、参数和配置文件仍可能变化。
- 需要 Node.js 22.13 或更高版本。原生组件(终端、密钥库、语音输入)以预编译二进制安装,CI 会在 Windows、macOS 和 Linux 上用打包好的 npm 包进行检查;Windows arm64 上暂不提供语音输入。
- 目前有三个 CLI 支持完整状态。更多 CLI 按需求加入——仓库里有专门的表单可以申请。
- 没有遥测,也不需要账号。
nsq login用于可选的 NeuroSquad 账号,nsq 的任何功能都不依赖它。
开源
代码在 GitHub 上:glmn-ai/neurosquad-cli,MIT 许可,包括 CLI 本身、共享核心以及周边的各个包(终端图块、通知、语音输入、手机 API)。欢迎提交问题报告、CLI 支持请求和拉取请求——贡献指南说明了我们的工作方式。关于安装和使用 nsq 的一切,请看它的页面。

