全部智能体 CLI
NeuroSquad 中的 ZCode

ZCode,外加一整张画布

想运行多少个 ZCode 智能体都行,每张卡片里都是真正的 zcode。ZCode 自己的钩子报告每一轮和每个问题,箭头把终端、笔记和其他智能体交给它,每张卡片都能续上自己的会话,并记下它发出的每一次请求。

官方网站zcode.z.ai
  • 真正的 zcode,用你自己的提供方
  • 你的 ~/.zcode 只会被读取
  • 免费,支持 Windows 和 macOS
生命周期钩子

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

安静的终端可能意味着“已完成”,也可能是“在等你授权”。NeuroSquad 不靠猜:每张卡片的设置里都带着 ZCode 自己的钩子,而且 ZCode 会等待每一个钩子执行完。

UserPromptSubmit钩子
工作中

你按下回车。卡片图标开始旋转,团队状态卡片把它算作工作中,上一个问题的通知随之撤下。

PermissionRequest钩子
等你处理

ZCode 在调用前询问。通知会写明这次调用——ZCode needs your permission: Bash rm -rf dist——并一直保留到你回答;该工具的 PostToolUse 会把卡片切回工作中。

Stop钩子
已完成

这一轮结束了。队列里的下一条提示词发出,日志记下回答,通知告诉你已完成。

提问和计划同样算数

ZCode 通过同一个 PermissionRequest 发送 AskUserQuestion 和 ExitPlanMode,所以通知显示 ZCode is asking: Tabs or spaces?,卡片会等你。

Esc 靠按键判断

Escape 会取消这一轮(“Turn cancelled.”),但不触发任何钩子,所以卡片直接根据按键来判断。空闲时按 Ctrl+C 会退出 ZCode——卡片从不发送它。

子智能体不影响它

子智能体在自己的会话(sess_subagent_…)中运行;它的钩子不会改变卡片状态。

看它工作

用 ZCode 你会做的三件事

应用的复刻演示,一步一步播放。ZCode 提问时,由你来回答。

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

它能得到的一切

ZCode 在 NeuroSquad 中能做的一切

基于 zcode-app-cli 的 zcode 命令、ZCode 运行时 0.16.9 实测。大部分是 ZCode 自带的——钩子、MCP、会话、用量账本。凡是 NeuroSquad 额外实现的,或无法实现的,卡片上都会注明。

  • 01

    清楚自己的状态

    ZCode 自己的钩子报告每一轮、每次授权和每个问题,不靠猜测。

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

    每张卡片的设置里都有 ZCode 的 process 钩子——SessionStart、UserPromptSubmit、PermissionRequest、Stop——ZCode 会等待每一个,所以卡片能即时得知每一轮。

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

    通知会写明这次调用——ZCode needs your permission: Write notes.md——或 ZCode 提出的问题。每个智能体一条;等待中的通知会保留到你回答。

    文档: 通知写明它需要什么
  • 由 NeuroSquad 实现

    用 Esc,不用 Ctrl+C

    Escape 取消正在进行的一轮;ZCode 对此没有钩子,所以卡片根据按键判断。空闲时 Ctrl+C 会退出 ZCode,因此预算刹车和手机按键行都不会发送它。

    文档: 用 Esc,不用 Ctrl+C
  • 重启后会话依旧

    ZCode 在第一条提示词时创建会话,没有指定 id 的参数;SessionStart 会报告 id,于是下次启动就是 zcode --resume <id>。会话被删除时会自动换成新会话。

    文档: 重启后会话依旧
  • 团队状态卡片

    工作区里所有 AI 智能体都在一张卡片上,附带状态、模型和本轮用时。

    文档: 团队状态卡片
  • 02

    通过画布工作

    从卡片引出的箭头就是一组工具,经由 ZCode 自己的 MCP 客户端。

  • 箭头就是工具

    卡片的设置会加入 NeuroSquad 的 MCP 服务器,令牌以占位符形式出现。画一条箭头连到终端、笔记、浏览器或智能体,ZCode 就能使用它们的工具。

    文档: 箭头就是工具
  • NeuroSquad 自己的工具不弹窗

    所有 mcp__neurosquad__* 工具都在卡片的 permission.allowedTools 里,所以运行时不会弹出对话框。其他调用照常按 ZCode 的方式询问。

    文档: NeuroSquad 自己的工具不弹窗
  • 无法实现

    工具列表不会实时更新

    ZCode 只读取一次服务器的工具,之后不再刷新。所以卡片一开始就拿到 NeuroSquad 的全部能力,由箭头在调用时决定。

    文档: 工具列表不会实时更新
  • 稳得住的卡片模式

    --disallowedTools 把 Bash、它的后台 shell 和网络工具从模型可见的列表中移除——yolo 模式也一样——另有一个 PreToolUse 钩子拒绝它们。

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

    已安装的服务器作为第二个服务器接入,不预先批准:每次调用前 ZCode 都会弹出自己的对话框。

    文档: 来自注册表的 MCP 服务器
  • 03

    为长时间运行而生

    上下文、压缩、提示词队列和日志——都在卡片上处理。

  • 上下文仪表

    最近一次请求的令牌数对比模型的上下文窗口,窗口按 ZCode 自己对该模型的规则计算。超过 80% 圆环变为琥珀色。

    文档: 上下文仪表
  • 压缩

    卡片上的 Compact 按钮会发送 ZCode 自己的 /compact;这次调用也会出现在用量里。

    文档: 压缩
  • 提示词队列

    排好接下来的消息:每条都在 Stop 之后作为一次粘贴发出——无论短的、多行的还是长的。

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

    最后的回答从卡片自己的会话数据库读取:写进连接的笔记、放进新智能体的第一条提示词、交给在 agent_wait 中等待的主智能体。

    文档: 日志与交接
  • 子智能体单独统计

    ZCode 的 Agent 工具在子会话中运行子智能体。它的请求计入该卡片,并在用量、Run Stats 和 Agent Pulse 中标记为子智能体的请求。

    文档: 子智能体单独统计
  • 04

    团队协作

    每张卡片都有自己的 ZCode 文件夹,所以多个智能体可以共用一个项目,却不共用会话列表。

  • 由 NeuroSquad 实现

    每张卡片一个 ZCode 文件夹

    ZCode 从你的主目录读取设置,且没有开关可以改,所以一个小小的预加载脚本让 ZCode——也只有 ZCode——改读卡片的副本:你的设置加上 NeuroSquad 的设置。磁盘上的密钥始终是占位符。

    文档: 每张卡片一个 ZCode 文件夹
  • 由 NeuroSquad 实现

    说明

    ZCode 不读取 MCP 服务器的说明,所以卡片的 SessionStart 钩子把它们作为额外上下文交给它。你自己的 AGENTS.md 照常读取。

    文档: 说明
  • 隔离的 worktree

    给智能体一个独立的 git worktree,让并行的智能体永远不会改同一批文件。卡片的 ZCode 文件夹跟随卡片。

    文档: 隔离的 worktree
  • 危险模式,按卡片开启

    --mode yolo:不再弹出授权对话框。切换时卡片会用同一个会话重启;关闭后以你平常的模式续上。卡片模式依然有效。

    文档: 危险模式,按卡片开启
  • 切换模型和 CLI

    为每张卡片选择模型,让主智能体通过 agent_set_model 更换,或者把对话迁到 Claude Code 再迁回来——会话会一起带上。

    文档: 切换模型和 CLI
  • 05

    费用、控制与访问

    它花了多少、最多能花多少、用的是哪个模型,以及你怎样联系到它。

  • 精确用量,逐次请求

    从 ZCode 自己的用量账本读取:每次请求一行,包括标题、压缩和子智能体,缓存读写分开计算。没有已知价格的模型显示“无价格”,绝不显示 $0。

    文档: 精确用量,逐次请求
  • 预算刹车

    超过工作区上限时,每个 ZCode 都会收到 Escape——这一轮停止,ZCode 继续运行——自动提示词会一直等到你提高上限。

    文档: 预算刹车
  • OpenRouter 和你自己的服务器

    卡片专属的提供方,可指向 OpenRouter(附带 NeuroSquad 的归属请求头),也可指向你自己的服务器(Chat Completions 或 Anthropic Messages)。密钥来自卡片的环境变量,绝不来自磁盘。

    文档: OpenRouter 和你自己的服务器
  • 在手机上操作

    扫一下二维码,整张画布就在手机浏览器里打开:查看 ZCode 的终端、回答它的对话框、发送下一条提示词。

    文档: 在手机上操作
  • 暂不支持 WSL 和 SSH

    预加载脚本和 Node 启动器都得放进目标环境里,所以目前 ZCode 卡片只在本机运行。

    文档: 暂不支持 WSL 和 SSH
一目了然

谁在等你,花了多少

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

团队状态卡片

工作区里每个智能体的状态、模型和本轮用时。等你处理的排在最前,附带 ZCode 的问题。点一下状态即可筛选。

  • coupon-fixZCodeGLM-5.3ZCode needs your permission: Bash rm -rf dist等你处理2:34
  • api-migrationZCodeGLM-5.3把路由迁到新客户端工作中14:58
  • lint-setupZCodeGLM-5.3-FlashZCode is asking: Tabs or spaces?等你处理3:51
  • docs-passZCodez-ai/glm-4.6更新 README已完成7分钟前

用量与费用

从每张卡片自己的 ZCode 数据库中的用量账本读取,所以每次请求只属于一张卡片。令牌和费用精确加总到合计。

智能体令牌费用
coupon-fix1,184,310US$0.96
api-migration802,554US$0.64
docs-pass196,402US$0.11
总计2,183,266US$1.71
精确到皮美元,仅在显示时四舍五入。每一行都包括 ZCode 为这张卡片发出的附带调用——标题、压缩、子智能体。
幕后

真正的 ZCode,拥有自己的文件夹

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

NeuroSquad 为命令添加的参数
❯ zcode
node --require <userData>/zcode/neurosquad-zcode-shim.cjs <zcode.js>每次启动ZCode 自己的启动器,外加一个让它改读卡片设置的预加载脚本
setting.json: yours + hooks, mcp.servers.neurosquad, permission.allowedTools每次启动你的设置,加上 NeuroSquad 的钩子、MCP 服务器和预先批准的工具
ZCODE_SESSION_DB_PATH=<userData>/zcode/<card>/db.sqlite每次启动卡片自己的会话和用量账本
ZCODE_PERSONAL_PROVIDER_CONFIG_FILE=<card>/provider_config.json每次启动你的提供方,以及卡片的 OpenRouter 或自定义提供方(如果有)
ZCODE_DISABLE_UPDATE_CHECK=1每次启动卡片里不显示更新提示
--resume <sess_…>之后的启动SessionStart 钩子最近报告的会话
--disallowedTools Bash BashOutput KillShell WebFetch WebSearch web_search mcp__node_repl__js卡片模式shell 和网络工具从模型列表中移除;改用画布上的卡片
--mode yolo危险模式跳过授权对话框

你的 ~/.zcode 只会被读取

预加载只在 ZCode 自己的进程里生效:读取你的设置文件,写入的是卡片的副本。用户 setting.json 中的一个标记在每次测试运行后都逐字节保持不变。

磁盘上没有密钥

卡片文件里的令牌和密钥都是 ${NAME} 占位符,在内存中填入,并从 ZCode 的环境中移除——所以它执行的 shell 命令看不到它们。

是哪个 ZCode

ZCode 的源代码由 Z.ai 公开;npm 上的 zcode 命令来自 zcode-app-cli,它原样附带 Z.ai 的运行时。设置向导安装的就是它;Z.ai 自己的构建版本也以同样方式运行。

常见问题

关于 NeuroSquad 中的 ZCode

给 ZCode 一张画布

免费,支持 Windows 和 macOS。你的代码、提供方和费用都留在你的电脑上。

Windows 10 / 11 · macOS 12 及更新(Apple 芯片和 Intel)全部 22 款智能体 CLI