你以为你在用 AI 写代码,其实你只是在给 AI 当项目经理

每次接到一个稍微复杂点的需求,你的工作流是不是这样的:

打开 Cursor,先想半天怎么拆任务,然后一条一条喂给 AI——"先帮我建目录结构","好,现在写 API 层","这个组件再单独搞一下"……整个过程你就像一个项目经理,在那里协调、检查、推进,AI 负责执行,你负责思考。

听起来还不错?问题是,这套工作流的天花板,是你自己的认知上限。

任务拆得好不好,全看你对这个项目的理解有多深。你没想到的依赖关系,AI 不会提醒你;你拆错了顺序,AI 只会乖乖按顺序出错。本质上,AI 只是一个执行器,真正在"想"的还是你。

Cursor 的 /orchestrate 指令,要解决的就是这个问题。它的核心逻辑只有一句话:

手动拆任务是"人给 AI 分工",/orchestrate 是"AI 给 AI 分工"——这个主语的转移,才是真正的范式跃迁。

---

第一章:你以前的工作流,为什么是个隐形瓶颈

让我描述一个具体场景。

你接到需求:给现有的 React 项目加国际化支持,支持中英文切换,所有文案提取成 i18n key,同时不能破坏现有组件结构。

你的第一反应,是开始在脑子里拆任务:

1. 安装 react-i18next 和相关依赖

2. 配置 i18n 初始化文件

3. 扫描所有组件,找出硬编码文案

4. 提取文案,生成 en.jsonzh.json

5. 修改每个组件,替换为 t('key') 调用

6. 加语言切换组件

7. 测试

你把这个清单喂给 AI,然后开始一步步推进。这个流程能跑通,但有几个隐患你可能没意识到:

  • 步骤 3 和步骤 5 其实可以并发,但你的顺序执行让它们变成了串行
  • 你可能漏掉了动态生成的文案、第三方组件里的硬编码、以及 titlealt 属性里的文本
  • 每个步骤之间,你都要检查输出、确认没问题、再触发下一步——你的注意力被反复打断

这不是你的问题,这是"人工拆任务"这种模式的结构性缺陷。

---

第二章:/orchestrate 到底做了什么?

Cursor 官方对 /orchestrate 的定位是:启动一个 Orchestrator Agent,由它负责将复杂目标分解为子任务,并协调多个 Sub-Agent 并发执行,最终聚合结果。

听起来像套话?我们拆开看三个核心机制。

核心一:任务图是 AI 动态生成的,不是你预设的

当你输入 /orchestrate 加上目标描述,第一步发生的事情不是"开始执行",而是 Orchestrator Agent 先对目标做分析,生成一张任务依赖图

这张图不是线性的清单,而是一个有向无环图(DAG)——哪些任务必须先完成,哪些任务可以并行,哪些任务的输入依赖另一个任务的输出,全部由 AI 自己推导。

你的输入:

"给 React 项目加国际化,支持中英文,提取所有硬编码文案"

Orchestrator 生成的任务图(示意):

[分析项目结构] ──┬──> [安装依赖 + 配置 i18n]

└──> [扫描硬编码文案] ──> [生成语言包] ──> [替换组件文案]

└──> [添加切换组件]

[集成测试验证] <──┘

类比一下:你给了目的地,它自己规划了路线——而且规划的路线比你手动画的更完整,因为它考虑了你可能忽略的依赖关系。

核心二:子 Agent 可以递归再生成子 Agent

这是 /orchestrate 最有意思的地方。

当某个子任务的复杂度超过阈值——比如"扫描硬编码文案"这个任务,发现项目有 200 个组件,文件数量巨大——该 Sub-Agent 不会卡住,也不会回来找你求助。它会继续向下 spawn 新的 Agent,把"扫描 200 个组件"这件事再拆成更小的并发任务。

Orchestrator

└── Sub-Agent: 扫描硬编码文案

├── Sub-Sub-Agent: 扫描 /components/ui/ (50个文件)

├── Sub-Sub-Agent: 扫描 /components/pages/ (80个文件)

├── Sub-Sub-Agent: 扫描 /components/forms/ (40个文件)

└── Sub-Sub-Agent: 扫描 /hooks/ + /utils/ (30个文件)

类比:工头发现活太多,自己再雇工人,而不是回来找你汇报"活太多干不完"。

这个递归能力意味着,任务的实际执行深度是动态的,不是你预先定义的。

核心三:上下文隔离 + 结果聚合同时发生

每个 Sub-Agent 拥有独立的 context 窗口

这个设计解决了一个长期困扰大型任务的问题:当任务复杂到一定程度,单个对话的 context 会被大量中间信息填满,导致 AI 开始"忘事"——前面定的规范,后面就不遵守了;前面分析的结构,后面就搞错了。

独立 context 的意思是:每个 Sub-Agent 只看自己负责的那部分,不被其他任务的噪音干扰。

但独立执行之后,结果怎么合并?这是 Orchestrator 的另一个职责:结果聚合和冲突裁决

比如两个 Sub-Agent 都生成了语言包文件,但 key 的命名规范略有不同,Orchestrator 会负责做统一,而不是把两份结果原样扔给你。

类比:多个工程师各自写模块,最后有人专门做 code review 和合并——而这个"最后的人"也是 AI。

---

第三章:和手动拆任务的本质区别

用一张表格直接对比:

| 维度 | 手动拆任务模式 | /orchestrate 模式 | | 谁来拆任务 | 人(你) | Orchestrator Agent | | 拆解质量上限 | 你对项目的理解深度 | 模型的推理能力上限 | | 并发能力 | 基本是串行,偶尔手动并行 | 自动识别并发机会,多 Agent 同时跑 | | 出错处理 | 你发现了再回头改 | Sub-Agent 局部失败可局部重试,不影响其他分支 | | 人的介入频率 | 每个步骤之间都要确认 | 只需在关键检查点介入 |

这张表的核心信息是最后一行:你的注意力从"每步都要盯"变成了"只看关键节点"

这不是效率提升,这是工作性质的变化。你从执行层的监工,变成了策略层的决策者。

---

第四章:普通开发者怎么用好这个能力?

知道了机制,怎么落地?给你三个可以直接复用的 Prompt 写法。

Prompt 模板一:高质量目标描述

差的写法:
/orchestrate 给 React 项目加国际化
好的写法:
/orchestrate

目标:为当前 React + TypeScript 项目添加国际化支持

具体要求:

  • 使用 react-i18next 作为 i18n 框架
  • 支持语言:中文(zh)和英文(en),默认中文
  • 需要处理的文案范围:所有 .tsx/.ts 文件中的中文字符串,包括 JSX 文本、title 属性、aria-label、placeholder
  • 语言包文件格式:JSON,按功能模块分文件(如 common.json、auth.json、dashboard.json)
  • 不修改组件的 props 接口和样式
  • 在 Header 组件中添加语言切换按钮

项目结构说明:

  • 组件目录:src/components/
  • 页面目录:src/pages/
  • 入口文件:src/main.tsx
关键点: 目标描述越具体,Orchestrator 生成的任务图越精准。模糊的目标会导致 AI 在关键决策点"自由发挥",结果可能偏离预期。

Prompt 模板二:约束条件,防止递归失控

Agent 递归失控是真实存在的风险。典型症状:任务爆炸(一个任务被拆成几十个细碎子任务,每个子任务又继续拆)或循环依赖(A 等 B 完成,B 等 A 完成)。

规避写法:
/orchestrate

[目标描述]

约束条件:

  • 单次执行的文件修改范围不超过 30 个文件;如果超出,暂停并列出清单等待确认
  • 不创建新的目录结构,只在现有目录内操作
  • 不修改 package.json 以外的配置文件
  • 遇到不确定的命名决策,使用 [PLACEHOLDER] 标记,不要自行猜测
  • 最大递归深度:3 层
最大递归深度:3 层 这一条是关键。明确告诉 Orchestrator 不要无限向下分解,超过深度限制就停下来汇报。

Prompt 模板三:插入人工检查点

/orchestrate

[目标描述]

[约束条件]

检查点(Human-in-the-loop):

  • 检查点 1:生成任务依赖图后,展示给我确认,再开始执行
  • 检查点 2:语言包文件生成完成后,暂停,我需要审查 key 的命名规范
  • 检查点 3:所有组件修改完成后,运行 TypeScript 类型检查,有报错先停下来

检查点的设计原则:放在"不可逆操作"之前,或"影响范围最广"的节点。语言包的命名规范一旦定了,后面几百个 key 都要跟着走,所以在这里插入人工确认最划算。

---

一个真实场景的完整指令

把上面三个模板合并,国际化需求的完整 /orchestrate 指令长这样:

/orchestrate

目标:为 src/ 目录下的 React + TypeScript 项目添加国际化支持

具体要求:

  • i18n 框架:react-i18next + i18next
  • 支持语言:zh(默认)、en
  • 文案提取范围:所有 .tsx/.ts 文件中的中文字符串
  • 语言包结构:按页面模块拆分 JSON 文件
  • 在 src/components/Header.tsx 中添加语言切换 UI

约束条件:

  • 不修改组件 props 接口
  • 不删除任何现有文件
  • 单次修改文件数上限 20 个,超出则分批并等待确认
  • 最大 Agent 递归深度:3 层

检查点:

1. 展示任务依赖图后等待我确认

2. 语言包 key 命名方案生成后暂停

3. 全部替换完成后运行 npx tsc --noEmit,有报错停下

---

如果你想在自己的项目里实验这套多 Agent 工作流,不一定非要绑定 Cursor 的完整环境。通过标准 API 接口,你同样可以手动实现 Orchestrator + Sub-Agent 的调用链。

[api.884819.xyz](https://api.884819.xyz) 提供兼容主流模型的 API 接口,按量计费,没有月租,适合个人开发者直接上手搭原型。新用户注册即送体验 token,国产模型(Deepseek / 千问等)完全免费,拿来跑 Agent 链路实验成本极低。

---

第五章:这个设计意味着什么?

/orchestrate 出发,我想说一件更大的事。

过去几年,我们对"AI 辅助编程"的想象,基本停留在"更智能的代码补全"或者"更好用的搜索引擎"。你写代码,AI 帮你补;你有问题,AI 帮你查。人是主体,AI 是工具。

/orchestrate 代表的方向是另一回事:AI 开始承担认知工作,而不只是执行工作。

任务拆解、依赖分析、并发调度、结果裁决——这些以前必须由人来做的"思考",现在可以委托给 Orchestrator。人退到了更高的层次:定义目标,设置约束,在关键节点做判断。

这意味着,未来开发者最值钱的技能,不是你能写多快的代码,而是你能不能把目标描述清楚,能不能设计出合理的约束体系,能不能在正确的地方插入人的判断

换句话说:Prompt 的质量,决定了你能从这套系统里拿到多少。

你现在的 Prompt 习惯,还停在"帮我写一个函数"这个层次吗?

工具已经进化了。问题是,你的思维方式有没有跟上。

---

📌 下一篇预告

/orchestrate 解决了任务拆解的问题——但多个 Agent 并发执行时,Context 冲突和结果合并才是真正的难题。

你有没有遇到过这种情况:Agent 改了 A 文件,另一个 Agent 不知道,又基于旧版本的 A 文件做了修改,最后合并出来一堆冲突?

下一篇,我会拆解 Cursor 的 Context 隔离机制,以及为什么你的 Agent 有时候"左手不知道右手在做什么"——以及怎么修。

---

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI编程 #Cursor #Agent #Prompt技巧 #开发者工具 #8848AI #Agentic编程 #AI工作流