全部文章
博客版本发布安装程序集成

NeuroSquad 登陆 Mac,画布旁的网格模式,以及在 WSL 和 SSH 中运行的智能体

迄今最大的一次发布:原生 macOS 应用、团队专心干活时用的网格模式、位于 WSL 或远程机器上的工作区,以及你一回答就会消失的“需要关注”提醒。

阅读约 7 分钟0.1.213 带来了什么

此前 NeuroSquad 只是一款 Windows 应用。我们听到最多的问题很简单:Mac 版什么时候出?现在它来了。这次发布还改变了你查看工作中团队的方式、智能体可以运行的位置,以及那枚橙色“需要关注”徽标的可信程度。下面是改了什么,以及我们一路上发现了什么。

NeuroSquad macOS 版

NeuroSquad 支持 macOS 12 Monterey 及更新版本,Apple 芯片和 Intel 各有独立的构建。这不是把 Windows 窗口搬到 Mac 上:窗口的原生红绿灯按钮位于侧边栏顶行,应用有真正的 macOS 菜单(“设置…”对应 Cmd+逗号、“检查更新…”、全屏),快捷键使用 Cmd,在 Mac 键盘上用 Backspace 删除选中的卡片。关闭窗口只是把它隐藏,点击程序坞图标即可找回,Cmd+Q 退出。

在 Mac 上,语音输入需要两项权限:麦克风用于录音,辅助功能用于全局快捷键。“设置 → 语音输入”会显示 macOS 还有哪些没有允许,并提供按钮来请求授权或打开系统设置中对应的页面。

更新后权限依然有效

在 macOS 上应用同样会自动更新:新版本在后台下载,按 SHA-256 校验和校验,并在下次启动时替换应用。这个更新机制是我们自己写的,没有使用常见的框架——那个框架只接受用 Apple 开发者证书签名的应用。

问题的另一半是签名。macOS 会把麦克风、辅助功能等权限记在特定的应用签名上。每次签名都不一样的构建,在 macOS 看来就是一个新应用,每次更新后都会重新请求所有权限。所以 NeuroSquad 的每个构建都用同一个证书签名,你授予的权限会一直有效。

三种安装方式

这一行命令会为你的 Mac 选择合适的构建,核对 SHA-256 校验和,把 NeuroSquad 放进“应用程序”并打开它:

curl -fsSL https://neurosquad.ai/install.sh | bash

使用 Homebrew,从我们自己的 tap 安装:

brew install --cask glmn-ai/neurosquad/neurosquad

或者在下载页面下载适用于 Apple 芯片或 Intel 的 .dmg。不确定你的 Mac 是哪种?苹果菜单 → “关于本机”:“芯片:Apple M…”是 Apple 芯片,“处理器:Intel”是 Intel。

每次发布前都在真实的 Mac 上测试

每次发布前,一套端到端测试都会像真人一样在真实的 macOS 电脑上操作应用:用脚本安装、登录、启动智能体、发送提示、把箭头连到 MCP 服务器、技能和插件、语音输入。它发现了两个任何单元测试都发现不了的问题。

第一个:Claude Code 打开新文件夹时会问你是否信任其中的文件,NeuroSquad 会替你回答——你已经把这个文件夹选作工作区了。在 macOS 上,这个提问的绘制方式所用的光标移动和 Windows 上不同,识别它的扫描漏掉了它。现在每次光标移动都被当作间隔,两个系统上都能自动回答。

第二个是退出时崩溃。每个终端都有一个原生线程在监视,进程退出时由它报告。如果某个 CLI 没有立刻退出——Claude Code 在收到挂断信号后大约需要两秒——这个报告可能在应用已经关闭时才到达,进程随之异常终止:“NeuroSquad 意外退出”。现在退出会等到每个终端进程都报告了退出,对忽略信号的进程则强制结束。另有一项测试会带着运行中的终端反复启动和退出应用,并在每个阶段之后检查是否出现崩溃报告。

网格模式:工作中的团队

画布是组建团队的地方:卡片随处摆放,之间连上箭头,再分组。当团队只是在干活时,你通常想要的恰恰相反——所有智能体的终端同时出现在屏幕上,整整齐齐。这就是网格模式:标题栏里的一个开关,或 Ctrl+Shift+G(Mac 上为 Cmd+Shift+G)。

  • 布局:全部磁贴、单个、左右两个、2 × 2、3 × 2,或一个大的智能体加旁边最多三个堆叠。放不下的智能体在网格下方的栏里等待,点击即可放入网格。
  • 排列:拖动磁贴之间的分隔线调整大小,按住标题把磁贴拖到另一个上交换位置,最大化某个磁贴,用键盘在磁贴之间切换。网格有自己的撤销。
  • 连接了什么:每个磁贴下的标签显示它的箭头——它领导或向其汇报的智能体,以及它使用的笔记、浏览器、MCP 服务器、技能或插件。鼠标悬停在磁贴上,与它相连的磁贴会亮起。
  • 筛选:“仅智能体”只留下 AI 智能体;卡片栏让笔记、待办和其他卡片一眼可见;“团队”面板一键打开。

切换从不会重启任何东西。同样的终端在画布和网格之间移动,每个工作区都会记住自己的模式。

WSL 和 SSH 中的工作区

以前,工作区就是这台电脑上的一个文件夹。现在工作区对话框会问它在哪里:这台电脑、Windows 上的某个 WSL 发行版,或者通过 SSH 连接的远程主机。卡片会运行安装在那里的 CLI,而应用这一侧的一切照常工作:状态和通知、按箭头提供的 MCP 工具、提示队列、用于日志和交接的会话记录。

对于 WSL,选择发行版和 Linux 文件夹,检查会启动发行版、确认文件夹存在,并列出在那里找到的智能体 CLI。对于 SSH,在“设置 → SSH 主机”中手动添加主机或从你的 ~/.ssh/config 导入,然后浏览到主机上的项目文件夹。

SSH 内置在应用中,而不是为每张卡片调用系统的 ssh。这样每台主机只有一个连接,由它上面的所有卡片共用,而不是每张卡片、每次读取会话记录都重新登录。主机密钥会与你的 known_hosts 核对;遇到未知密钥时,应用会显示其指纹,只有在你确认信任后才连接,密钥发生变化则拒绝连接。应用使用你自己的密钥和 SSH agent,密码在应用内询问,只有勾选“记住”时才会保存。网络断开后,连接会自动恢复;卡片会重启,Claude Code 会继续它的会话。

远程主机上的智能体仍然需要连回应用——它的状态和 MCP 工具正是靠这个工作的。它通过同一个 SSH 连接、经由远程主机回环地址上的一个端口连回来,每个请求都带着该智能体自己的令牌,和在这台电脑上一样。

值得信赖的“需要关注”

一张说“智能体需要你”的卡片,只有在它说对的时候才有用。以前它常常不对:你在终端里回答了问题,徽标却还在;按了 Escape,却听到一声“已完成”,而那一轮根本没有完成。

我们测量了各个 CLI 实际上报告了什么。以 Claude Code 为例,当你按 Escape 或对权限请求回答“否”时,它不发送任何事件——这一轮就这么停了。所以应用不再等 CLI 告诉它。你在等待中的卡片上按下的键才算数:回车、菜单编号或 y/n 会立即让它回到工作状态;Escape 或 Ctrl+C 让它变为空闲。粘贴的文字不算,应用自己输入的内容也不算。如果之后终端保持安静,说明智能体已回到提示符。

现在,每个 CLI 的每个信号在到达卡片、手机、Telegram 或“团队”面板之前,都要经过同一个状态机。重复的信号会被丢弃,你刚关闭提醒后迟到的“已完成”也会被丢弃,重启后的智能体从零开始,不会带着旧提醒。

一些小改进,以及一次审计

  • 上下文指示器显示 CLI 实际使用的窗口——第二个 Claude 账号现在显示 1M,而不是以前的 200K。
  • 在画布上移动和调整卡片大小可以撤销和重做。
  • 工作区、卡片和设置以原子方式保存:保存过程中崩溃不会留下写了一半的文件。
  • 低于百万分之一美元的费用不再显示为 $0,使用自有提供方的 OpenCode 显示“无价格”,而不是 $0。
  • 在 Windows 上,退出的瞬间托盘图标就会消失,看门狗确保不会留下没有窗口的进程。

我们还对整个代码库做了一次安全和稳定性审查,并逐条修复了发现的问题。最重要的几条:“在编辑器中打开”曾可能被终端输出中精心构造的路径诱导执行命令,现在不会了;一个可以被绕过的路径检查已经堵上;OpenRouter 中继只与它自己的主机通信;已连接手机可以触达的密钥通道已被移除。

接下来

让更多智能体 CLI 能在 WSL 和 SSH 中运行,以及推出 Linux 版应用。如果你在用 Mac,我们特别想知道它用起来怎么样——请使用账号菜单中的“报告问题”,或来我们的 Discord。

在下载页面获取应用;在 Mac 上安装的每一步都写在文档里,所有变更见更新日志。