# 任务进行中切换智能体的命令行工具、把模板加入现有工作区，以及 Graphify

> 把卡片从 Claude Code 切换到 OpenCode 再切回来，对话不丢；把模板插入已有的工作区；还有一张实时代码地图，智能体用它代替 grep。

- URL: https://neurosquad.ai/zh/blog/harness-switch-and-graphify/
- Published: 2026-10-03
- Publisher: NeuroSquad (https://neurosquad.ai/)

往画布上添加智能体时，你会选择它的命令行工具：Claude Code、Codex、OpenCode、Gemini CLI 或其他。到目前为止，这个选择对卡片来说是最终的。如果任务做到一半想听听另一个模型的意见，或者某个工具达到了用量上限，就只能新建一张卡片，把来龙去脉重新讲一遍。

NeuroSquad 0.1.253 新增了**切换工具**：同一张卡片、同一个终端、换一个命令行工具，对话也一起带过去。这个版本还可以**把模板插入你已有的工作区**，并新增第六个插件 **Graphify**：一张代码地图，智能体用它代替 grep 提问，每个问题都会在提问的那一刻画在卡片上。这是 Windows 版本；Mac 应用暂时停留在 0.1.230，下一次构建时会获得这些功能。

## 切换工具：一张卡片，换一个命令行工具

打开卡片菜单，选择**“切换工具…”**。对话框列出本机已安装的 AI 工具。选中一个，下方是它的服务商和模型——与卡片的服务商菜单相同的控件。两个开关决定对话如何处理：**“带上对话”**和**“自动发送”**。

![“切换工具”对话框：当前：Claude Code；已安装工具列表中选中 OpenCode；服务商和模型字段；“带上对话”和“自动发送”开关；关于哪些内容不会迁移的说明；“取消”和“切换到 OpenCode”按钮](https://neurosquad.ai/blog/harness-switch-and-graphify/switch-dialog-zh.webp)

*把一张 Claude Code 卡片切换到使用自定义服务商的 OpenCode。底部的说明写明哪些内容不会带过去。*

卡片不会移动。它在画布上的位置、箭头、分组框、名称和备注都保持不变，终端本身也一样：旧工具停止，新工具在同一个 xterm 里启动，上方有一条淡色分隔线，注明由哪个工具接手。

对话不是由模型总结的。NeuroSquad 读取当前会话的对话记录——也就是命令行工具自己写下的文件——把它变成新工具收到的第一条消息：你的提问、回答、修改过的文件和待办列表，最多约 14,000 个字符，完整副本保存在应用的文件夹里。这不产生任何费用。工具调用的内部细节、图片和隐藏的推理不会带过去，对话框也会说明这一点。关闭**“自动发送”**时，消息只会粘贴到输入框，方便你先阅读和修改。

![同一张卡片展开后，现在运行 OpenCode：第一条消息带有 NeuroSquad harness switch 标记，说明卡片是从 Claude Code 切换过来的，包含任务、与 Claude Code 的对话及其计划，以及请它简要总结的要求；OpenCode 回复说已接手计划，下一步是流式接口](https://neurosquad.ai/blog/harness-switch-and-graphify/switch-opencode-zh.webp)

*OpenCode 收到的内容：任务、与 Claude Code 的对话，以及请它总结现状的要求——取自对话记录，而不是由模型撰写。*

切换回去并不是又一次交接。卡片记得自己用过的会话，所以已经在这张卡片上运行过的工具，会在对话框中标记为**“恢复它的会话”**。选择它，这个命令行工具就会继续自己原来的会话，只收到它离开期间发生的内容——这里就是在 OpenCode 中进行的那一轮。

![卡片展开后回到 Claude Code：它之前包含计划的那一轮仍在，接着是一条消息，说明卡片曾运行 OpenCode 一段时间以及期间发生的事——提问 Write the tests for step 3 和 OpenCode 的回答——然后是 Claude Code 的回复：它回来了，接下来做 Download CSV 按钮](https://neurosquad.ai/blog/harness-switch-and-graphify/switch-back-zh.webp)

*回到 Claude Code：它原来的会话继续进行——第一轮仍在上方——只新增了在 OpenCode 中进行的那一轮。*

- **正在执行一轮任务时**，对话框提供**“中断并切换”**——按该工具期望的方式中断，而不是盲目按 Ctrl+C——或**“完成后切换”**。
- **目标工具不支持的模式**会先搁置，之后恢复：没有危险模式的工具照常请求确认，不支持卡片模式的工具使用自己的工具，不能使用卡片服务商的工具用自己的登录运行（除非你另选一个）。切换回来时它们都会恢复。
- **在 WSL 和 SSH 工作区中**目前只能运行 Claude Code，所以那里暂时没有可以切换的目标——对话框会如实说明。

要在原地实现切换，需要改动卡片深处的一个地方。终端组件原本以工具作为 key，换一个工具就意味着换一个新组件——而在 NeuroSquad 中，卸载终端会结束它的进程。现在终端会实时读取当前工具，并在旧工具真正退出之后自己启动新工具。在新工具开始绘制之前，终端还会清理全屏命令行工具留下的状态——备用屏幕、鼠标跟踪、隐藏的光标——让下一个工具在干净的屏幕上启动，而之前的输出仍保留在滚动记录中。

## 把模板加入你已有的工作区

模板在上一个版本中推出，每次导入都会新建一个工作区。很多时候你需要的恰恰相反：智能体已经配置好了，只差一块，比如在它们旁边加一个写文档的智能体。现在导入对话框里有**“新工作区 / 现有工作区”**，而**“画布工具 → 插入模板…”**或添加卡片菜单中的**“模板…”**会直接针对当前工作区打开它。

![模板 Docs Writer with Live Library Docs 的导入对话框，处于“现有工作区”模式：说明卡片会添加在你的卡片旁边，不会重启任何东西；“使用你现有的卡片”一节列出工作区中的 Context7 卡片；提示模板所需的一切都已在本机；首条提示；右侧是预览、工作区 Reports app 和“添加到工作区”按钮](https://neurosquad.ai/blog/harness-switch-and-graphify/insert-dialog-zh.webp)

*模板需要一张 Context7 卡片；这个工作区已经有一张设置相同的，所以模板直接连到它，而不是再添加一张。*

新的部分是复用。有些卡片在一个工作区里只需要一张——团队状态、预算、代码图谱、RTK——如果工作区里已经有了，模板就直接使用它。记忆、Caveman 和 Context7 在设置与模板一致时被复用；MCP 或技能卡片在指向同一服务器或技能时被复用。否则模板会带来自己的一份，因为悄悄改变你现有卡片的行为，比多出一张卡片更糟。模板的箭头只连接它添加的卡片和它复用的卡片；你原有的箭头保持不变。

新卡片会一起出现在画布现有内容的右侧或下方，保持模板自己的布局，并放在以模板命名的分组框里。视图会自动移到它们那里。首条提示只粘贴给新智能体，已经在运行的东西都不会重启。如果结果不是你想要的，提示条里有**“撤销”**：它只移除这次插入添加的卡片，已安装的内容保留不动。

![插入后的 Reports app 画布：上方是原有的团队状态、Lead、Context7 和 Plan 卡片；下方是分组框 Docs Writer with Live Library Docs，里面有 Writer 智能体、Docs preview 浏览器和 Docs brief 笔记，一条箭头从 Writer 指向原有的 Context7 卡片，还有提示条“已添加「Docs Writer with Live Library Docs」，3 张新卡片”和“撤销”按钮](https://neurosquad.ai/blog/harness-switch-and-graphify/insert-result-zh.webp)

*三张新卡片在自己的分组框里；Writer 的箭头指向原本就有的 Context7 卡片。“撤销”只会收回这三张。*

## Graphify：一张实时的代码地图

第六个插件基于 [graphify](https://github.com/Graphify-Labs/graphify)，一个开源项目（Apache-2.0），它把代码库变成知识图谱：文件、函数、类、调用和导入，并按子系统分组。从智能体画一条箭头到 **Graphify** 卡片，智能体就获得用于结构性问题的 `graphify_*` 工具——谁调用了这个函数、这里的改动会影响什么、这两部分如何关联、这个子系统由什么组成。答案一次调用就从图谱中得到，而不是反复搜索、读文件。

![Landing site 工作区中展开的 Graphify 卡片：487 个文件、123 个子系统中的 2,987 个符号；按子系统着色的项目文件地图，查询路径以蓝色点亮，起点处有圆环；右侧是智能体 Lead 的提问 how does the blog feed build post links，访问了 280 个节点，以及带 file:line 的结果文件；底部时间线上有这次提问和更早一次对 blogHref 的邻居查询](https://neurosquad.ai/blog/harness-switch-and-graphify/graphify-zh.webp)

*在查找 blogHref 的用法时，智能体还向图谱询问了博客订阅源如何生成文章链接。在时间线上点击这次查询即可回放：起点泛起波纹，然后搜索逐跳扩散。*

这张卡片的特别之处在于你能看着它工作。它绘制整张图——文件大小取决于其中内容的多少，颜色取决于所属子系统——智能体的每一次查询都会在上面播放：起点泛起波纹，搜索逐跳扩散，结果保持高亮，并附带可在编辑器中打开的 `file:line` 链接。时间线保存最近的查询，点击即可回放。

graphify 是一个 Python 程序，所以卡片会按需把它安装到应用自己的文件夹里：独立的 Python，约 250 MB，每次下载都与固定的校验和比对，每个包都与哈希比对。你自己的 Python 不会被使用。第一次查看卡片时，它会为整个项目绘制地图，并显示进度和预计剩余时间；之后文件变化几秒钟后就会更新。不会向项目或你的主目录写入任何内容，不使用语言模型，也不会向它传递任何 API 密钥。它支持本地和 WSL 工作区；在 SSH 上，卡片会说明不可用。

即使手边有更好的工具，智能体也常常会退回到 grep，所以卡片会提醒它们。工具描述一开头就说明什么时候该用它们代替文本搜索。连上箭头后的第一轮，智能体会收到一条简短说明：图谱已就绪，以及它能回答什么；之后，当提问看起来与结构有关时，会收到一行提醒。Claude Code 在用 grep 搜索看起来像函数名或类名的内容时，还会收到一行提示——以陈述事实的方式，而不是阻止：搜索照常执行。

> **Graphify 还是代码图谱？** 两个代码图谱插件可以并用。Graphify 是地图：用自然语言提问、子系统、一处改动的影响范围，以及把这一切画出来。代码图谱是精确工具：具体符号、深层调用链、不打开文件就能看到函数源码，引擎也能在 SSH 主机上运行。把智能体同时连到两者；每个工具的描述都会说明它适合回答什么问题。

把 graphify 装进应用，需要我们这边做一些调整，都不涉及它的代码。它的命令行入口会更新主目录中的助手技能，所以卡片直接调用构建步骤，并由我们的测试确认主目录保持原样。它每一百个文件才输出一次进度，所以卡片自己统计已处理的文件，显示真实的进度条。它还会拒绝保存比上一次更小的图——这是为它自己的多会话构建设计的保护——这样已删除的文件就会一直留在地图上，所以在卡片的进程里关闭了这项检查。

## 较小的改动

- NeuroSquad 团队制作的模板在模板市场中带有**“官方”**标记，点赞数和下载数为零时不再显示。
- 卡片上卡片模式的提示现在会说明这个命令行工具实际会发生什么：它自带的 shell 和网页工具从下次启动起关闭，Cursor CLI 则会立即被阻止。

## 网站上的更新

- 新的[卡片模式](https://neurosquad.ai/zh/canvas-mode/)页面：在应用自己的界面中展开的交互式故事，从开启卡片模式到智能体通过卡片完成工作。首页也新增了一个简短的卡片模式板块，链接到这个页面。
- [模板市场](https://neurosquad.ai/zh/templates/)上线了 NeuroSquad 团队制作的十个官方模板。
- [Graphify 插件页面](https://neurosquad.ai/zh/plugins/graphify/)：在代码地图上演示实时查询的交互式示例，以及它与代码图谱的比较。
- 面向 AI 助手：网站发布 llms.txt 文件，并以 Markdown 形式提供博客文章；[文档](https://docs.neurosquad.ai/zh/help/ai-assistants)的每个页面也都有纯 Markdown 版本。

文档中有 [Graphify](https://docs.neurosquad.ai/zh/plugins/graphify) 和[插入模板](https://docs.neurosquad.ai/zh/canvas/tools)的使用指南。完整的变更列表见 [0.1.253 更新日志](https://neurosquad.ai/zh/changelog/#v0.1.253)。NeuroSquad 会自动更新；全新安装请从[下载页面](https://neurosquad.ai/zh/download/)开始。
