Agents(子智能体)
CrabCode 在跑复杂任务时会自动派子智能体并行调研。/agents 管子智能体配置、/tasks 看后台任务、CRABCODE_MAX_CONCURRENT_AGENTS 调并发上限。
是什么
CrabCode 主循环跑你给的任务时,遇到"需要先把整片代码摸一遍才能动手"这种活,会**派一个子智能体(subagent)**出去并行调研——它有自己的上下文、自己的工具,干完事回报一份简报给主循环。复杂任务可能同时派好几个,分别去搜代码、跑测试、查文档。
子智能体是 CrabCode 处理大型任务的核心机制。你不需要手动开它——主模型判断该派就派。但有几个开关你能调:选用哪种子智能体(专精类型)、写自己的子智能体(项目级 / 用户级)、限制最大并发。
何时会看到子智能体
- 主循环在对话里输出 "Spawning subagent: …" 之类提示
- 同时弹出多个 Agent 工具调用块
/agents命令列出可用类型/tasks命令列出正在跑的后台任务
内置子智能体类型
CrabCode 自带 6 个内置类型(src/tools/AgentTool/built-in/):
subagent_type | 适合 |
|---|---|
general-purpose | 通用调研:开放式搜代码、多步任务、不确定要找啥时的兜底 |
Explore | 大范围摸底——读取大批文件后把要点回报给主循环 |
Plan | 只读规划——禁止改文件,专门设计实施方案 |
verification | 任务收尾时跑验证(测试真的过了吗、变更真的合预期吗) |
statusline-setup | 引导用户配 statusline |
crabcode-guide | CrabCode 使用指南助手 |
主模型会按 whenToUse 描述自动选;不指定 subagent_type 就走 general-purpose。
自定义子智能体
你能写自己的子智能体类型。文件放在两个位置:
| 位置 | 作用域 |
|---|---|
~/.crabcode/agents/<name>.md | 用户级(所有项目可见) |
<repo>/.crabcode/agents/<name>.md | 项目级(可提交 git) |
文件格式(markdown 加 frontmatter):
---
name: db-migration-reviewer
description: 审查数据库迁移脚本是否安全
tools: [Read, Grep, Bash]
model: deepseek-v4-flash
---
You are a database migration safety reviewer.
When invoked, read the migration files passed in, check for:
- Missing rollback statements
- Locking risks on large tables
- Foreign-key constraint violations
Report findings concisely.---
name: db-migration-reviewer
description: 审查数据库迁移脚本是否安全
tools: [Read, Grep, Bash]
model: deepseek-v4-flash
---
You are a database migration safety reviewer.
When invoked, read the migration files passed in, check for:
- Missing rollback statements
- Locking risks on large tables
- Foreign-key constraint violations
Report findings concisely.字段说明:
name— 子智能体类型名(必填)description— 何时该派这个子智能体(必填,给主模型当选择依据)tools— 子智能体能用的工具列表,省略或["*"]= 全开model— 单独指定模型,省略 = 跟主循环走默认子智能体模型color— 在 TUI 里的颜色标识- 正文是子智能体的 system prompt
写完保存,下次启动 CrabCode 就生效。/agents 命令也能看到。
/agents 命令
/agents 打开子智能体管理菜单:
- 看全部可用子智能体(内置 + 用户级 + 项目级)
- 看每个子智能体的描述、工具集、所在文件
- 跳到编辑
它不直接派子智能体——派由主模型自动做。这个命令只是配置面板。
/tasks 命令
/tasks(别名 /bashes)打开后台任务对话框。"后台任务"指你用 Bash 工具开的常驻进程(run_in_background: true),比如本地服务器、tail -f 之类——它们继续在跑,输出会缓存。
界面里可以:
- 看每个后台任务的最新输出
- kill 掉某个不再需要的
- 把任务输出注回到对话里继续问
注意 /tasks 看的是 Bash 后台任务,不是子智能体。子智能体没有独立列表 UI——它们的状态在对话流里以工具调用块的形式呈现。
并发上限
为避免一次派几十个子智能体把网关打挂,CrabCode 给子智能体派发设了客户端并发预算(src/services/tools/StreamingToolExecutor.ts:24-34):
- 默认上限:3 个同时在跑
- 超出的会排队,不会失败
- 环境变量覆盖:
CRABCODE_MAX_CONCURRENT_AGENTS=5把上限提到 5
这个上限只管 Agent 工具,不限制 Read / Bash / Grep 等其他工具的并发。改大可能加快复杂任务,但容易撞网关限流;改小让任务更线性、错误更可读。
hook 钩子
子智能体的生命周期有 4 个 hook 事件(详见 hooks):
| 事件 | 何时触发 |
|---|---|
SubagentStart | 子智能体被派出去前一刻 |
SubagentStop | 子智能体回报结束 |
TaskCreated | 多智能体协作场景下新任务被建 |
TaskCompleted | 任务完成 |
可以挂日志、审计、或者在子智能体启动前注入额外上下文。
排错
| 现象 | 检查 |
|---|---|
| 自定义子智能体不出现 | name / description 是否齐 + 文件后缀 .md + 路径在 .crabcode/agents/ |
| 子智能体卡住 | /tasks 看后台任务、用 Esc 中断主循环 |
| 子智能体反复撞 429 | 调低 CRABCODE_MAX_CONCURRENT_AGENTS 或拆任务 |
| 子智能体没工具 | frontmatter tools 列表写漏了;用 ["*"] 放开 |