1. 从「一个 Agent 干所有活」到「分工协作」:subAgents 到底解决什么问题
如果你用 Cursor 写过稍微复杂一点的功能,大概率遇到过这种场景:让它加一个用户注册接口,结果代码写了一半、测试没补、文档忘了更新,回头还得自己一项项检查。问题不在于模型不够强,而在于你只给了它一个模糊的身份——「你是个程序员」,然后指望它同时扮演架构师、测试工程师、文档写手。
Cursor 的 subAgents(子代理)就是来解决这个分工问题的。简单说,它允许你定义多个专门的 AI Agent,每个 Agent 有自己的角色提示词、可用工具和职责范围,主 Agent 在需要时自动调用对应的子代理。你可以把它理解成给 AI 组了一个小团队:一个负责写业务代码,一个专门补单元测试,一个做代码审查,还有一个专门查文档或生成 SQL。
这套机制适合谁?适合已经用了一段时间 Cursor、手上攒了一堆 Rules 和 Commands 但感觉「零散、不好复用」的开发者。尤其是多步骤开发任务——比如「新增一个接口 + 补测试 + 更新 API 文档」这种链路,单 Agent 很容易顾此失彼,而 subAgents 能把每一步交给专门的角色,输出稳定性明显不一样。
我自己的体会是:Rules 管「全局约束」,Commands 管「快捷触发」,Skill 管「可复用的能力封装」,而 subAgents 管「任务分工与编排」。四者串起来,才是一套真正可复用的工作流。这篇就按这个思路,从配置到验证完整走一遍。
2. 前置准备:在 TaoToken 上拿到可用的 API Key 与模型接入信息
subAgents 本身是 Cursor 的能力,但它背后调用的模型需要一个稳定的接入点。我这边习惯用 TaoToken 来做模型接入层,原因是它同时兼容 Anthropic 和 OpenAI 风格的接口,Cursor 里配置 Base URL 就能直接用,不用来回切换。
先到官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册账号,然后进控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 创建 API Key。创建时建议按用途命名,比如cursor-subagents-dev,方便后面区分。
拿到 Key 之后,你需要记住三个核心信息,后面配置 subAgents 会反复用到:
| 配置项 | 值 | 说明 |
|---|---|---|
| Base URL | https://taotoken.net/api | 不加任何 UTM 参数,直接填这个 |
| API Key | sk-xxxxxxxx | 控制台生成,只显示一次 |
| Model ID | 如claude-sonnet-4-5/gpt-4o | 按你订阅的模型填 |
这里有个坑要提前说:Cursor 的模型配置和 subAgents 的模型字段是两套东西。Cursor 设置里的 Base URL 决定「请求发到哪」,而 subAgents 文件里的model:字段决定「这个子代理用哪个模型」。两者要对应上,否则会出现子代理调用失败但主 Agent 正常的情况。
如果你还没在 Cursor 里配过自定义模型,路径是:Settings → Models → OpenAI API Key,把 Base URL 覆盖成https://taotoken.net/api,Key 填进去。配完可以先在模型对话 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 里发一条消息验证连通性,确认没问题再往下做 subAgents。
3. 可复制配置:subAgents 文件、Rules 绑定与 Commands 触发写法
这一节是核心,我直接把可复制的片段给你。Cursor 的 subAgents 文件放在项目根目录的.cursor/agents/下,每个 Agent 一个.md文件,用 YAML frontmatter 定义元信息。
先建目录结构:
mkdir -p .cursor/agents mkdir -p .cursor/rules mkdir -p .cursor/commands然后是三个子代理文件。第一个是写代码的code-agent.md:
--- name: code-agent description: 负责实现功能代码,遵循项目现有模式 tools: codebase, terminal model: claude-sonnet-4-5 --- 你是资深软件工程师。 职责: - 实现功能,保持最小改动 - 遵循项目现有代码风格与目录结构 - 改动前先检索 codebase 里是否有类似实现 - 不写测试,测试交给 test-agent 输出要求:给出改动文件列表 + 每个文件的关键 diff 说明。第二个是测试代理test-agent.md:
--- name: test-agent description: 专门编写单元测试,覆盖边界情况 tools: codebase model: claude-sonnet-4-5 --- 你是测试工程师。 职责: - 为指定模块编写单元测试 - 覆盖正常路径、边界值、异常分支 - 使用项目已有的测试框架与断言风格 - 不修改业务代码,只新增测试文件 输出要求:测试文件路径 + 覆盖的场景清单。第三个是审查代理review-agent.md:
--- name: review-agent description: 代码审查,关注 bug、安全、性能、可读性 tools: codebase model: claude-sonnet-4-5 --- 你是代码审查专家。 审查维度: - 潜在 bug 与空指针风险 - 安全问题(注入、越权、敏感信息泄露) - 性能问题(N+1 查询、无谓循环) - 可读性(命名、注释、函数长度) 输出要求:按严重程度分级列出问题,每条给出文件行号与修改建议。接下来是 Rules 与 subAgents 的绑定。Rules 文件放在.cursor/rules/下,用.mdc后缀。建一个workflow.mdc,把「什么任务该调哪个子代理」写清楚:
--- description: 多步骤开发任务的分工规则 globs: ["**/*"] alwaysApply: true --- 当用户请求涉及「新增功能」时: 1. 先调用 code-agent 实现代码 2. 再调用 test-agent 补测试 3. 最后调用 review-agent 审查 当用户请求只涉及「改 bug」时: 1. 调用 code-agent 修复 2. 调用 test-agent 补回归测试 当用户请求涉及「文档更新」时: 直接调用 doc-agent(若已定义),否则主 Agent 处理。Commands 则是快捷触发入口,放在.cursor/commands/下。建一个feature.md:
--- name: feature description: 触发完整功能开发链路 --- 请按以下流程处理:$ARGUMENTS 1. 调用 code-agent 实现功能 2. 调用 test-agent 编写测试 3. 调用 review-agent 审查代码 4. 汇总三者的输出,给出最终改动清单这样你在 Cursor 对话框里输入/feature 新增用户注册接口,就会自动走完整条链路。注意$ARGUMENTS是占位符,会把后面的描述传进去。
如果你用的是 Claude Code 风格的配置,settings.json里可以这样写模型接入:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的key", "ANTHROPIC_MODEL": "claude-sonnet-4-5" } }三件套(Base URL + Key + Model ID)必须齐全,缺一个都会在调用子代理时报错。
4. 验证请求:跑一次完整任务链看结果
配置写完,得实际跑一遍才知道有没有生效。我拿一个真实的小任务来验证:给一个 Node.js 项目新增「用户注册」接口。
第一步,确认子代理被识别。在 Cursor 对话框输入@,看下拉列表里有没有code-agent、test-agent、review-agent。如果没有,检查.cursor/agents/目录名和文件后缀是否正确——必须是.md,且 frontmatter 的name字段和文件名一致。
第二步,触发命令。输入:
/feature 新增 POST /api/register 接口,接收 email 和 password,返回 userId正常情况下,你会看到主 Agent 先分析任务,然后依次调用三个子代理。输出大致分三段:code-agent 给出routes/auth.js的改动,test-agent 新增tests/auth.test.js,review-agent 列出几条建议(比如「密码未做强度校验」「email 未去重」)。
第三步,验证模型接入是否真的走了 TaoToken。打开 Cursor 的输出面板,或者到 TaoToken 控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 看调用日志。如果日志里有对应的请求记录,说明 Base URL 配置生效了。这一步很关键,很多人以为配了就行,其实请求可能还在走默认通道。
第四步,检查产物。确认routes/auth.js真的被改了、tests/auth.test.js真的被创建了。如果只有文字描述没有实际文件改动,说明子代理的tools字段没配对——写代码的 Agent 必须有codebase和terminal,只给codebase它只能读不能写。
实测下来,一次完整链路大概 30 到 60 秒,比手动分三次提问快,而且输出结构统一,review 的问题不会漏。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
配置过程中最容易卡在几个固定报错上,我按实际遇到的频率列一下。
401 Unauthorized:九成是 Key 填错或过期。先到控制台重新生成一个,注意 Cursor 里 Base URL 末尾不要多加/v1,TaoToken 的地址就是https://taotoken.net/api。如果 Key 没问题还报 401,检查是不是把 Key 填到了错误的字段——Cursor 的 OpenAI 配置和 Anthropic 配置是两个入口。
local proxy failed:这个通常出现在 Cursor 开了代理设置但实际网络不通的时候。解决方法是到Settings → Network把代理关掉,或者确认你的网络环境能直连taotoken.net。注意不要用任何来路不明的网络工具,直接连就行。
reading choices 报错:完整报错一般是Cannot read properties of undefined (reading 'choices')。这是响应格式不匹配导致的——你用的模型返回的是 Anthropic 格式,但 Cursor 按 OpenAI 格式解析。解决办法是在 subAgents 文件里把model字段统一成同一家风格的模型,别混用。比如全用claude-sonnet-4-5,或者全用gpt-4o。
OAuth 相关报错:如果你在 Claude Code 里配置,报OAuth token expired或类似信息,说明走的是 OAuth 通道而不是 API Key。这时候要在settings.json里显式指定ANTHROPIC_API_KEY,并且确认ANTHROPIC_BASE_URL指向https://taotoken.net/api。三件套缺一不可。
还有一个隐蔽的坑:subAgents 文件里tools字段写了terminal但 Cursor 没开终端权限,会导致子代理静默失败——不报错,但也不执行。到Settings → Agents → Terminal里把权限打开。
排查顺序建议:先验证主 Agent 能正常对话(排除 Key 问题),再验证单个子代理能被@到(排除文件问题),最后跑完整链路(排除编排问题)。分层排查比一上来就查全链路快得多。
6. 把零散能力沉淀成工作流:从 Rules 到 subAgents 的复用思路
走到这里,你应该已经有一套能跑的工作流了。但真正让它「可复用」,还得做一件事:把项目特有的约束写进 Rules,让子代理自动继承。
比如你的项目规定「所有接口必须返回统一格式{ code, data, message }」,那就写进workflow.mdc的alwaysApply: true规则里。这样子代理在写代码时会自动遵守,不用每次在 prompt 里重复。
再比如翻译场景——我前面提到过,用 Cursor 做翻译时经常找不到相关代码,结果翻得不准。解决办法是建一个translate-agent.md,在tools里加上codebase,并在 prompt 里要求「先检索项目中已有的术语表文件glossary.json,再执行翻译」。这样每次翻译都会自动带上项目上下文,一致性提升很明显。
Commands 这边,建议按任务类型建多个入口:/feature走完整开发链路,/fix只走修复加回归测试,/review单独触发审查。每个 Command 文件里用$ARGUMENTS接收参数,保持灵活。
最后提醒一点:subAgents 不要建太多。我一开始建了七八个,结果主 Agent 经常选错,反而更乱。控制在三到五个,每个职责边界清晰,比数量堆砌有用得多。职责重叠的 Agent 合并掉,prompt 写明确,这套工作流才算真正沉淀下来。
如果你还没开始配,建议先从code-agent和test-agent两个跑通,再逐步加 review 和文档代理。模型接入层用 TaoToken 的 API https://taotoken.net/api 统一管理,Key 到控制台 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 生成,长期做编码和 Agent 编排的话可以看看 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 有完整说明。