# 为什么做 NeuroSquad：把智能体放上画布，而不是排成一排标签页

> NeuroSquad 首个公开版本：为什么每个智能体 CLI 都是画布上的一张卡片，应用如何分辨智能体是做完了还是在等你，以及为什么箭头就是工具。

- URL: https://neurosquad.ai/zh/blog/why-neurosquad/
- Published: 2026-09-23
- Publisher: NeuroSquad (https://neurosquad.ai/)

今天，NeuroSquad 0.1.91 正式公开——一个 Windows 安装程序、十个智能体 CLI，外加一块画布。第一次提交是在 9 月 3 日，开发过程中，运行在 NeuroSquad 自家卡片里的智能体也帮着一起写了它。这篇文章讲的是：它为什么长成现在这个样子。

## 问题：一排需要你一直盯着的标签页

智能体 CLI 已经好用到这种程度：只开一个，瓶颈就不在它身上了。于是你再开一个去写测试，第三个去补文档，也许第四个去处理另一个仓库。接下来，工作就变成了“盯梢”：哪个标签页已经做完了，哪个卡在“我可以运行这条命令吗？”这种问题上已经十分钟，哪个还在跑。

标签页天生不适合这件事。它把眼前这一个之外的一切都藏起来，不告诉你任何状态，彼此之间也一无所知。第三个标签页里的智能体看不到第五个标签页里的浏览器——哪怕那正是它需要的。

所以 NeuroSquad 押了三个注。每个智能体都是画布上的一张**带真实终端的卡片**，整块画布一眼尽收。智能体做完一轮或需要你时，应用会**主动告诉你**，你不用再挨个去看。两张卡片之间的一支**箭头**，让智能体可以使用箭头指向的东西。

![NeuroSquad 中的演示工作区：中间是一张智能体卡片，箭头分别连向终端、笔记和待办清单](https://neurosquad.ai/blog/why-neurosquad/canvas-zh.webp)

*每次全新安装后打开的工作区：一张真实的 Claude Code 卡片、一个真实的 Shell、一篇笔记、一份待办清单和一块看板。那些箭头就是智能体的工具。*

## 卡片就是真实的终端，而且绝不能死

卡片不是一个假装成智能体的聊天窗口。它就是你本来就在用的 CLI——Claude Code、Codex CLI、OpenCode、Qwen Code，以及另外六个——运行在真实的伪终端里，有它自己的界面、自己的快捷键和自己的小脾气。CLI 明天更新，卡片明天就用上新版本。

这个选择定下了整个代码库的第一条铁律：**只要智能体还活着，终端组件就绝不能卸载**，因为一卸载，进程就被杀掉了。听上去理所当然，结果它几乎决定了画布上的每一个功能：

- 切换工作区不会替换画布。本次会话中打开过的每个工作区都保留着自己已挂载的画布，不活跃的只是被隐藏起来。
- 放大到一组卡片，是把镜头移到这个分组的框上，而不是做筛选——筛选会把分组外的卡片卸载掉。
- 把卡片展开到全屏，是一个 1:1 的视口加上一份保存下来的几何信息，而不是换一个组件。
- 画布库在按下 Delete 键时会删除选中的节点。在这里，这等于按一下键就杀掉一个会话，所以画布库根本无权删除节点：由我们自己的监听器收集选中项，并在一个对话框里统一问你一次。

同一个赌注下面还压着一大堆 Windows 的“管道活”。CLI 要通过系统自身的查找机制解析成绝对路径，因为桌面应用看到的 PATH 和你终端里的不一样。路径要用正斜杠传递，因为伪终端库会把反斜杠搞乱——`cmd.exe` 除外，它会把 `C:/…` 当成一串命令开关。父智能体留在环境里的变量要在子智能体启动前清掉，否则子智能体会悄悄停止保存会话记录。这些都看不见，而且全都是靠把真东西跑起来才发现的。

## “已完成”和“等你处理”是两件不同的事

画布的全部意义在于：你可以把目光移开。所以应用必须知道什么时候该把你叫回来——而原因有两种，截然不同。*已完成*意味着智能体结束了这一轮，你想什么时候看回答都行。*等你处理*意味着智能体此刻被卡住了，在你批准某件事之前寸步难行。

第一个版本分不清这两者。它盯着终端看：窗口标题 1.2 秒不再变化、输出安静 2.5 秒，就算这一轮结束了。对“已完成”来说这是个不错的猜测，可它和一个正在等权限确认的智能体，是完全相同的沉默。

办法是直接问智能体本身。Claude Code 有生命周期钩子，所以每张卡片启动它时，都会在你自己的设置之上叠加一个小小的设置文件：你提交提示词时，它报告*工作中*；它发出通知时，报告*等你处理*；它停下时，报告*已完成*。每个钩子都只是一行 `curl`，发往应用在本地回环接口上运行的服务器，卡片的令牌放在 URL 里而不是请求头里——这样无论在哪种 Shell 里执行，这条命令都能原样生效。

> **两条看似不起眼、却很要紧的规则** “等你处理”的通知会带上智能体自己的原话——比如 `Claude needs your permission to use Bash`——因为一条分不清是在问 `rm -rf` 还是在问读个文件的通知，只是噪音。而且它永远不会自动消失：被卡住的智能体不会在五秒后自己解开。

通过钩子上报状态的智能体，会为自己关掉旧的猜测式检测器，否则你会收到两次提醒，而且猜出来的“已完成”会覆盖真实的“等你处理”。没有钩子的 CLI 仍然使用启发式判断。点击通知，画布镜头会飞到那张卡片上，卡片闪起绿光，而且会一直闪到镜头飞到为止。

## 箭头就是工具

第三个赌注是大家问得最多的。NeuroSquad 在 `127.0.0.1` 上运行自己的 MCP 服务器，每个支持 MCP 的智能体都会在上面拿到一个会话。会话里有什么，由画布上的箭头决定。

- 一支指向浏览器卡片的箭头，给智能体 `browser_*` 工具：一个真实的 Chrome，就显示在卡片里，你看着智能体在里面点击和输入。
- 一支指向终端卡片的箭头，给它 `terminal_*`：在*那个* Shell 里运行命令，并读取它的屏幕。
- 指向笔记的箭头给它 `note_*`，指向待办清单的给它 `todo_*`。
- 指向另一个智能体的箭头给它 `agent_*`——而这支箭头是有方向的。它从负责人指向助手；助手不能把活儿反推回去。

箭头就是权限。没有箭头，就没有工具——于是画布如实地画出了每个智能体能触及的范围。每一次调用都会在发生的那一刻画在对应的箭头上，你能亲眼看到负责人把任务交给助手，而不必去日志里翻。

*在本页运行的画布复刻：一个负责人智能体沿着箭头把任务分给三个助手，每个助手在看板上移动自己的卡片。* (interactive: https://neurosquad.ai/zh/blog/why-neurosquad/)

![一张智能体卡片的特写，箭头连向终端、笔记和待办清单](https://neurosquad.ai/blog/why-neurosquad/arrows-zh.webp)

*真实应用中的同一套连线。每支箭头都是智能体手里的一组工具；画布上的其余部分，它够不着。*

## 默认本地

这里没有账号，中间也没有我们的服务器。工作区、卡片和箭头都是应用数据文件夹里的 JSON 文件。听写在你的电脑上完成识别，用的是 Parakeet 或 Whisper。“用量”页面从智能体自己的日志里读取 token 和费用，而不是在它们前面架一个代理。删除卡片永远不会碰你的项目文件夹。

> **2026 年 9 月更新** 此后，NeuroSquad 需要你用免费的 NeuroSquad 账号登录，应用会发送使用统计——只有计数，绝不包含代码、文件、提示词、名称或路径。你的代码和文件仍然留在你的电脑上。详见[隐私说明](https://neurosquad.ai/zh/privacy/)。

这个版本里还有不少这篇文章没能展开的内容：能在手机浏览器里运行整个应用的[远程访问](https://neurosquad.ai/zh/remote/)，每个智能体各自隔离的 git worktree，以及预算刹车——工作区花费达到上限时，它会中断其中的每一个智能体，用的是 Ctrl+C 而不是强杀，所以不会丢失任何会话。

## 接下来

第一个版本的安装程序有 550 MB，其中大部分是一个语音模型，只有用听写的人才会加载它。这是第一件要解决的事。再往后：一个会明确告诉你是什么挡了路的安装程序，以及能自己安装的更新。

0.1.91 的完整内容见[更新日志](https://neurosquad.ai/zh/changelog/#v0.1.91)。
