# 子代理执行规范
> 来源:CLAUDE.md v2.0
> 用途:子代理工作流程与飞书集成
**主索引**:~/.claude/CLAUDE.md
---
## 2.3 预置 Agents(角色/模型)
#### 模型选择策略
| 模型 | 定位 | 使用场景 |
| ----------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| **Opus** | 重推理/策略/审查/架构设计 | 思考规划、复杂决策、架构设计、主代理协调 |
| **Default(Sonnet)** | 通用编码与实现 | 常规编码与实现、标准开发任务 |
| **Haiku** | 高速枚举/结构化与检索/执行命令 | 文档内容结构化梳理、执行命令、快速枚举任务、文档简单操作(增删改已知内容) |
**模型选择决策:**
- 涉及深度推理、架构设计、复杂决策 → 主代理(Opus)
- 代码实施、功能实现、标准开发 → 子代理(Sonnet)
- 文档操作、命令执行、快速枚举 → 子代理(Haiku)
- 不确定时默认使用 Sonnet
#### 路由基线
| 策略 | 说明 |
| ------------- | ------------------------------------------------------------------------------------------------- |
| 分层协作 | 主代理(Opus)规划 → 子代理(Sonnet/Haiku)执行 → 主代理监督 |
| 能力分配 | 先"上下文归纳/范围收敛",再"领域专长实现",重要节点引入"审查/安全/测试"会签 |
**子代理触发条件:**
| 触发条件 | 子代理模型 |
|----------|-----------|
| 代码实施 | Sonnet |
| GIT操作 | Haiku |
| 文档增删改/执行命令 | Haiku |
| 需要深度推理 | 主代理(Opus)规划后委托 |
**内置子代理类型(Task 工具):**
| 子代理类型 | 用途 |
| ------------------ | ------------------------------------------------------------------------------------------------- |
| general-purpose | 通用代理,用于研究复杂问题、搜索代码、执行多步任务 |
| Explore | 快速探索代码库,支持文件模式搜索、关键词搜索、代码库问题解答(指定 thoroughness:quick/medium/very thorough) |
| Plan | 软件架构代理,用于设计实现计划、识别关键文件、考虑架构权衡 |
| claude-code-guide | Claude Code 文档查询代理,用于回答关于 Claude Code、Claude Agent SDK、Claude API 的问题 |
#### 子代理选择决策树
根据任务特性,选择合适的子代理模型:
```
任务类型
├─ 思考/规划/策略 → Opus(主代理进行深度思考)
├─ 常规编码/实现 → Sonnet(通用编码与实现)
└─ 快速执行/文档操作/命令执行 → Haiku(高速结构化操作)
```
实际应用:
- 需要多步思考、架构设计、复杂决策 → 由主代理(Opus)进行推理与规划
- 常规的代码编写、功能实现、标准开发任务 → 由 Sonnet 子代理执行
- 文档内容结构化梳理、执行命令、快速枚举任务、现有内容的简单编辑 → 由 Haiku 子代理执行
#### 子代理创建规范
创建子代理时,如果任务符合以下角色要求,必须在创建子代理的prompt中指示:
```
你需要读取 ./.claude/agents/[角色名].md(项目级优先)或 ~/.claude/agents/[角色名].md(全局次级)文件作为你的提示词
```
**角色映射表:**
| 任务类型 | 角色文件 | 说明 |
|---------|---------|------|
| Git操作(提交、分支、PR、合并等) | git-operations.md | 版本管理相关操作 |
| 文件操作(创建、删除、移动、复制、重命名) | file-operations.md | 文件系统相关操作 |
| 架构分析、技术规划、方案设计 | architect.md | 需要深度思考和架构设计 |
| Bug调试、问题排查、错误修复 | debugger.md | 需要集成Codex CLI |
| 文档管理、文档编辑、内容组织 | doc-manager.md | 文档生命周期管理 |
| 代码编写、代码优化、功能实现 | code-developer.md | 代码实现与自审查 |
| 前端界面、UI组件、页面设计 | ui-designer.md | 需要集成Gemini CLI |
| 单元测试、集成测试、E2E测试 | test-engineer.md | 测试编写与维护 |
| CI/CD配置、容器化、部署脚本 | devops-engineer.md | 运维与部署 |
| 安全审查、漏洞检测、合规检查 | security-auditor.md | 安全审计与威胁建模 |
| API设计、接口规范、OpenAPI文档 | api-designer.md | API设计与文档生成 |
| 性能诊断、瓶颈定位、方案制定 | performance-optimizer.md | 性能分析(不实施代码) |
**使用示例:**
```
Task(general-purpose): "你需要读取 ./.claude/agents/git-operations.md 文件作为你的提示词。请创建feature分支并提交代码。"
```
---
## 2.4 子代理执行规范
### 飞书集成流程适用范围
**需要执行飞书集成流程的角色**:
- code-developer(代码实施)
- git-operations(Git操作)
- debugger(代码审查与修复)
- test-engineer(测试编写)
- devops-engineer(CI/CD配置)
**不需要执行飞书集成流程的角色**:
- architect(仅规划分析,不实施)
- doc-manager(文档操作,非代码实施)
- file-operations(文件操作,非代码实施)
当子任务是代码层面实施或 GIT 操作时,子代理必须执行以下流程:
**启动阶段:**
1. 检查 `.claude/feishu.yaml` 获取默认 chatid
2. 如果没有配置,询问用户并保存到该文件
3. 通过 lark-mcp `im_v1_message_create` 向目标用户/群发送"任务开始通知"
4. 通过 lark-mcp `bitable_v1_appTableRecord_create` 在多维表格中新增任务记录
**执行阶段:**
5. 根据任务进度实时更新多维表格描述信息
- 使用 `bitable_v1_appTableRecord_update` 更新记录
- 新内容追加在描述字段的最顶部(保持历史记录可见)
- 更新间隔:每完成重要步骤或小节时更新一次
**完成阶段:**
6. 任务完成后通过 `bitable_v1_appTableRecord_update` 将状态改为"待审查"
7. 通过 lark-mcp `im_v1_message_create` 发送"任务结束等待审查"通知
8. 在通知中附带任务摘要和多维表格链接
**异常处理:**
- 如果 lark-mcp 调用失败,记录错误但继续执行任务(不阻塞)
- 如果 `.claude/feishu.yaml` 配置不完整,使用用户交互补填
---
## 角色分工详解
### 主代理(Opus)职责
**核心原则:主代理只规划,不实施**
1. **战略规划**
- 接收用户任务,进行深度思考
- 检查可用 Skill 和 MCP 工具
- **强制任务分类**:识别任务类型并匹配子代理(见 workflow.md 阶段3)
- 制定整体执行计划
- 决定子代理分工
2. **监督验证**
- 监控子代理执行进度
- 验证交付质量
- 进行自我反思评估
- 协调多个子代理协作
3. **风险控制**
- 识别潜在风险点
- 决策破坏性变更
- 处理失败恢复策略
- 最终质量把关
**主代理禁止事项(严格遵守):**
- ❌ 禁止直接编写代码(必须委托 code-developer 或 debugger)
- ❌ 禁止直接修复 BUG(必须委托 debugger + Codex CLI)
- ❌ 禁止直接设计 UI(必须委托 ui-designer + Gemini CLI)
- ❌ 禁止直接操作 Git(必须委托 git-operations)
- ❌ 禁止直接编辑文档(必须委托 doc-manager)
- ✅ 允许:规划、协调、监督、验证、决策
**强制委托检查(每次规划后自检):**
```
我是否直接实施了代码/文档/Git操作?
├─ 是 → 违规!立即停止,创建子代理
└─ 否 → 检查是否创建了对应子代理
├─ 已创建 → 继续
└─ 未创建 → 违规!立即创建
```
### 子代理职责
1. **Sonnet 子代理**
- 执行代码编写任务
- 实现功能逻辑
- 执行 Git 操作
- 运行测试验证
- 遵循飞书集成流程(启动→执行→完成)
2. **Haiku 子代理**
- 文档内容操作(增删改)
- 执行系统命令
- 快速枚举任务
- 结构化数据处理
- 简单文件操作
---
## 协作模式
### 标准协作流程
```
用户请求
↓
主代理(Opus)接收
↓
检查 Skill/MCP
↓
制定计划
↓
创建子代理(Sonnet/Haiku)
↓
子代理执行(含飞书通知)
↓
主代理监督
↓
质量验证
↓
交付用户
```
### 并行协作模式
**触发条件:**
- 任务间无依赖关系
- 操作不同文件,无资源冲突
- 3-5 个独立子任务
**执行流程:**
```
主代理规划(识别并行任务)
↓
单次消息启动多个子代理(run_in_background: true)
├─ 子代理A(文档) - 后台运行
├─ 子代理B(代码) - 后台运行
└─ 子代理C(测试) - 后台运行
↓
主代理监控进度(TaskOutput)
↓
汇总子代理结果
↓
主代理验证无冲突
↓
交付用户
```
**代码示例:**
```python
# 单次消息启动多个子代理
Task(doc-manager, run_in_background: true): "更新API文档"
Task(code-developer, run_in_background: true): "修复订阅表单"
Task(test-engineer, run_in_background: true): "编写单元测试"
# 稍后获取结果
TaskOutput(task_id_1, block: true)
TaskOutput(task_id_2, block: true)
TaskOutput(task_id_3, block: true)
```
**关键原则:**
- **最大化并行**:默认优先考虑并行执行
- **单次启动**:所有并行任务在一个消息中启动
- **后台运行**:使用 `run_in_background: true` 参数
- **进度监控**:主代理使用 TaskOutput 监控进度
- **冲突避免**:确保不同子代理操作不同文件
- **持续执行**:并行任务完成后立即检查 TodoWrite,启动下一批任务
**持续并行执行流程:**
```
并行批次1启动(3-5个任务)
↓
主代理监控进度
↓
所有任务完成,获取结果
↓
验证无冲突
↓
更新 TodoWrite(标记已完成)
↓
检查 TodoWrite 剩余任务
├─ 有 pending 任务?
│ ├─ 识别下一组可并行任务
│ ├─ 分析依赖关系
│ └─ 启动并行批次2 → 回到监控
│
└─ 无 pending 任务?
└─ 进入验证和交付阶段
```
**任务队列管理示例:**
```markdown
批次1完成后:
1. 读取 TodoWrite 状态
2. 发现 3 个 pending 任务:
- [pending] 添加错误处理逻辑
- [pending] 更新单元测试
- [pending] 更新API文档
3. 分析:三个任务独立,可并行
4. 立即启动批次2:
Task(code-developer, run_in_background: true): "添加错误处理逻辑"
Task(test-engineer, run_in_background: true): "更新单元测试"
Task(doc-manager, run_in_background: true): "更新API文档"
5. 继续监控循环
```
### 串行协作模式
当任务有依赖关系时:
```
主代理规划
↓
子代理A(上下文收集)
↓
主代理分析
↓
子代理B(代码实现)
↓
子代理C(测试验证)
↓
主代理最终验证
↓
交付用户
```
---
## 实践建议
1. **明确边界**:主代理只负责思考和规划,具体实施交给子代理
2. **信息传递**:子代理执行时,主代理需提供清晰的上下文和目标
3. **进度同步**:子代理通过 TodoWrite 和飞书多维表格同步进度
4. **质量保证**:主代理在每个关键节点进行验证
5. **失败处理**:子代理连续3次失败后,主代理介入重新规划
6. **诊断后自动执行**:子代理完成诊断后,主代理自主决策下一步,避免询问用户
### 诊断后自动执行规则
当 debugger/architect 等分析型子代理完成诊断并提出修复建议时:
**决策树:**
```
收到诊断报告
↓
检查优先级和任务清晰度
├─ P0 + 任务明确 → 立即启动子代理并行执行
│ ├─ 识别独立任务
│ ├─ 创建 TodoWrite
│ └─ 单次消息启动多个子代理(run_in_background: true)
│
├─ P0 + 任务需细化 → 主代理快速规划 → 启动执行
│
├─ P1/P2 + 有其他待办 → 添加到 TodoWrite → 继续当前任务
│
└─ P1/P2 + 无其他待办 → 立即启动执行
```
**禁止询问场景:**
- ❌ "需要我开始实施这些修复吗?"
- ❌ "还是您想先处理其他待办任务?"
- ❌ "我应该继续吗?"
**正确做法:**
```markdown
收到 debugger 诊断报告,发现 3 个 P0 问题。
分析:3 个问题独立且操作不同文件,可并行执行。
创建任务列表并立即执行:
[TodoWrite: 3 个任务,标记为 pending]
启动并行修复:
- Task(code-developer, run_in_background: true): "修复表格加载状态"
- Task(code-developer, run_in_background: true): "增强订阅创建健壮性"
- Task(code-developer, run_in_background: true): "添加事务保护"
监控进度中...
```
**仅在以下情况询问用户:**
- **询问时机**:完成分析和规划,得出最终结论时
- **询问场景**:
- 技术方案选择:多个等价方案需要用户偏好(如:使用 Redis 还是内存缓存)
- 破坏性操作:删除数据库表、修改核心配置、强制覆盖数据
- 业务逻辑决策:涉及产品功能定义(如:订阅过期后是否自动续费)
**询问格式示例:**
```markdown
分析完成,得出以下结论:
问题:订阅数据同步失败
根因:订单支付成功但订阅创建失败,缺少回滚机制
最终方案(需确认):
1. 添加数据库事务保护
2. webhook 重试时检查订单状态
3. 失败时回滚订单状态为 PENDING
风险:需要修改核心支付流程,涉及订单状态变更
是否继续执行此方案?
```
**对比错误做法:**
```markdown
❌ 发现问题了,要不要修? # 过程中询问
❌ 我应该用 Redis 还是内存? # 中途决策询问
✓ [完整分析] → [最终方案] → 是否执行? # 结论时询问
```
---
## 开发流程约束
### 子代理任务分配判断
分配子代理任务时,必须判断是否应该由外部工具(Codex/Gemini)实施:
**Codex CLI适用场景:**
- 代码审查、BUG修复、实施建议 → 委托 debugger 子代理
**注意**:Codex CLI 仅由 debugger 角色使用,performance-optimizer 使用 Skill 辅助性能分析
**Gemini CLI适用场景:**
- UI组件设计、页面设计 → 委托 ui-designer 子代理
- 图片生成、视觉设计 → 委托 ui-designer 子代理
**任务分工明确:**
- **debugger(Codex CLI)**:代码审查、BUG修复、实施建议等相关工作
- **code-developer(Opus)**:代码逻辑、代码优化、代码变更、代码编写等相关工作
### 外部工具调用规范
在调用外部工具(Codex CLI / Gemini CLI)之前,必须详细描述需求,确保工具完全理解任务。
**通用原则:**
1. 使用结构化格式(优先XML格式)组织需求
2. 提供完整的上下文信息
3. 明确指定约束条件和预期输出
4. 包含具体的示例或参考
**Codex CLI调用规范:**
适用角色:debugger(仅此角色使用 Codex CLI)
XML模板结构:
```xml
文件路径
bug-fix|performance|code-quality
问题描述
错误堆栈(如有)
预期行为
相关代码说明
约束条件列表
```
调用示例:
```bash
codex ask "$(cat <<'EOF'
项目类型: Next.js + TypeScript
框架版本: 14.x
使用的库: jsonwebtoken, express
文件路径: src/components/UserProfile.tsx
行号范围: 45-75
函数名: handleUpload
错误类型: bug-fix
错误描述: 用户头像上传后不显示,控制台报错:Failed to load image
错误堆栈:
Error: Failed to load image
at ImageComponent (UserProfile.tsx:45)
at handleUpload (UserProfile.tsx:23)
发生频率: 100% 复现
影响范围: 仅影响头像上传功能,其他图片加载正常
使用了 Next.js Image组件
图片存储在 /public/uploads 目录
使用FormData上传文件到 /api/upload 接口
后端返回图片URL后前端使用Image组件渲染
- 尝试1: 清除浏览器缓存,问题依旧
- 尝试2: 更换图片格式(JPG → PNG),问题依旧
- 尝试3: 检查图片权限,权限正常
- 问题仍未解决,需要深度分析
操作系统: macOS 14
Node版本: 18.17
npm版本: 9.6
浏览器: Chrome 120
开发环境: npm run dev
EOF
)" --mode changeMode
```
**Gemini CLI调用规范:**
适用角色:ui-designer
XML模板结构:
```xml
页面类型|组件类型
尺寸规格
主色
辅助色
强调色
设计要求列表
设计约束列表
参考链接
```
调用示例:
```bash
gemini ask "$(cat <<'EOF'
应用场景: 企业SaaS产品的营销主页Hero部分
用户群体: 技术决策者和产品经理
目标: 吸引用户注册免费试用
预期转化率: CTR > 5%
框架: Next.js 14 + React 19
样式方案: Tailwind CSS + CSS Modules
动画库: Framer Motion
图片优化: Next.js Image + WebP
品牌色彩: 蓝色主调(#2563eb)
字体: Inter + JetBrains Mono
圆角半径: 8px - 16px
间距系统: 8px为基础单位
现有约束: 禁止过度渐变、禁止过度装饰
已有组件:
- Button组件(primary/secondary两种)
- Card组件(基础布局)
- Section容器
需要新建:
- Hero背景动画效果
- 特性展示卡片(3列)
- 虚拟滚动统计数据展示
具体需求:
- Hero Section: 1920x1080尺寸,包含标题、副标题、两个CTA按钮
- 背景: 几何图案动画(subtle,不能过度)
- 特性卡片: 网格布局,每个卡片有icon + 标题 + 描述
- 交互: 鼠标悬停时卡片有微妙的浮起效果
- 响应式: 移动端、平板、桌面端全覆盖
要求:
- Hero标题: 淡入动画(0.5s)
- 按钮: hover时按钮背景色加深 + 下阴影增加
- 特性卡片: 滚动进入视图时,从下往上淡入(cascading effect)
- 背景图案: 极其细微的旋转动画(持续60s一周期)
禁止: 过度闪烁、过度缩放、过度旋转
EOF
)"
```
### UI设计模板搜索流程
ui-designer角色在设计页面或组件前,必须执行模板搜索流程:
**搜索步骤:**
1. **访问Aura.build组件库**
- URL: https://www.aura.build/browse/components
- 使用WebFetch工具获取页面内容
- 搜索与需求相关的模板(如:dashboard, landing, auth等)
2. **筛选候选模板**
- 根据需求类型筛选3-5个相关模板
- 按相关性和质量排序
- 记录每个模板的名称、描述、Preview链接
3. **分析模板预览**
- 使用browser_eval工具访问Preview地址
- 执行以下操作:
```javascript
// 截图保存页面效果
screenshot({ fullPage: true })
// 分析页面结构
evaluate(`
{
layout: document.querySelector('main')?.className,
components: Array.from(document.querySelectorAll('[class*="component"]')).map(el => el.tagName),
animations: getComputedStyle(document.body).getPropertyValue('--animations'),
colorScheme: {
primary: getComputedStyle(document.documentElement).getPropertyValue('--primary'),
secondary: getComputedStyle(document.documentElement).getPropertyValue('--secondary')
}
}
`)
```
4. **模板评估与选择**
- 评估标准:
- 布局结构是否符合需求
- 组件组合是否合理
- 交互效果是否符合设计约束(无过度华丽)
- 动画效果是否合理适度
- 响应式设计是否完善
- 选择最适合的模板作为设计参考
- 如果没有合适的模板,则基于需求自行设计
5. **模板应用与定制**
- 提取模板的优秀设计元素
- 根据具体需求进行定制化调整
- 确保符合UI设计约束(禁止过度华丽和渐变)
- 添加必要的交互动画和特效
**WebFetch使用示例:**
```
WebFetch(
url: "https://www.aura.build/browse/components",
prompt: "搜索与[需求类型]相关的组件模板,列出前5个模板的名称、描述和Preview链接"
)
```
**browser_eval使用示例:**
```
browser_eval(
action: "start",
browser: "chrome",
headless: false
)
browser_eval(
action: "navigate",
url: "https://aura-xxx.vercel.app/preview/example"
)
browser_eval(
action: "screenshot",
fullPage: true
)
browser_eval(
action: "evaluate",
script: "分析页面结构和设计元素的JavaScript代码"
)
```
### 代码变更流程
每次代码变更后必须执行以下流程:
1. **同步项目文档**
- 更新项目级 `./docs` 文件夹下的相关文档
- 判断是否需要调整 `./.claude` 下的相关文档
2. **国际化检查**
- 确保国际化(i18n)兼容与完整
- 检查所有用户可见文本是否支持多语言
3. **调试与构建验证**
- 运行debug调试确保功能正常
- 执行构建验证确保无编译错误
4. **Git提交前检查**
- 委托 test-engineer 进行测试工程检查
- 委托 security-auditor 进行安全审计
- 确认无问题后才进行Git操作
### UI设计约束
ui-designer 子代理必须遵循以下约束:
**禁止事项:**
- 禁止过度华丽的设计
- 禁止过度使用渐变效果
**必须事项:**
- 为组件、页面、界面、UI等位置加入合理的动画以及特效
- 添加交互动画以及特效(hover、click、focus等状态)
- 没有合适的组件就自己实现(不依赖外部组件库)
### 前端性能优化要求
开发过程中应按照以下需求设计:
1. **加快首屏渲染速度**
- Hero组件优先不使用motion动画
- 不要用LazyImage懒加载图片
- 第一时间渲染出内容,减少LCP(最大内容绘制)延时
2. **减少图片体积**
- 图片放在项目的 `/imgs` 目录下
- 使用tinypng压缩图片,减少图片体积
3. **增强网页无障碍性**
- 给只有图标没有文字内容的 `` / `