智能体、CLI 与状态
支持的 CLI
| CLI | nsq run … | 状态来源 |
|---|---|---|
| Claude Code | claude | Claude Code 的钩子,并与其会话记录核对 |
| Codex CLI | codex | Codex 钩子 |
| OpenCode 1.x 和 2.x | opencode | 一个 OpenCode 插件(nsq 会自行区分两个版本) |
| 任意命令 | -- <command…> | 命令的输出(没有钩子) |
按常规方式安装并登录每个 CLI——nsq 会以你自己的登录启动 PATH 中的那个副本。更多 CLI 会按需求陆续支持:提出需求 。
nsq 如何知道智能体在做什么
nsq 不靠猜屏幕。每个 CLI 都通过钩子(OpenCode 通过插件)把自己的生命周期上报给本机上的 nsq(127.0.0.1,每个智能体有自己的密钥):
- working(工作中)——一个回合开始了;
- needs you(需要你)——CLI 卡在等你:权限请求(“Claude wants to run: npm test”)、问题、待批准的计划。你看到的是 CLI 自己的原文;
- finished(已完成)——回合结束,答案已在屏幕上;
- idle(空闲)——回到提示符,没有新内容(你关闭了问题、中断了回合,或它重启了)。
你自己的按键也会被计入:在智能体终端里回答一个正在等待的智能体,它会立即变为「工作中」。对 Claude Code,nsq 还会读取会话记录的末尾,从而捕捉到不触发钩子的中断、API 错误和排队中的提示词。
普通命令(nsq run -- …)没有钩子:有输出即为「工作中」,安静几秒即为「已完成」,并且永远不会显示「需要你」。
绝不改写你的配置
nsq 需要的一切都按智能体单独传入——命令行参数、环境变量,以及 ~/.neurosquad-cli/layers/ 中的文件。你的 ~/.claude、~/.codex 和 opencode.json 永远不会被改动。
会话与继续
每个智能体都保留自己的 CLI 会话。nsq restart、nsq start 以及守护进程自身的重启(nsq down 后 nsq up)都会继续原会话,而不是从头开始。如果 CLI 那边已经没有这个会话,则开启一个新会话。
中断
仪表盘里的 i 或 nsq interrupt <agent> 会发送该 CLI 真正用来停止回合的按键——Claude Code 和 Codex 是 Escape,OpenCode 是连按两次 Escape——而不是 Ctrl+C,因为 Ctrl+C 会让其中一些 CLI 直接退出。
危险模式
--dangerous(或仪表盘里的 d,或 nsq set <agent> --dangerous on)让智能体无需请求权限即可执行操作。对 Claude Code,它会即时切换;对其他 CLI,它从下次启动起生效,需要重启时 nsq 会提示你。
在危险模式下,智能体可以运行任何命令、修改它能访问的任何文件。请在 worktree 或可以丢弃的文件夹里使用。