动态工作流(Batch 特性)
动态工作流(Batch 特性)
AuraCode 提供大规模并行变更编排系统,支持任务分解、并行执行和进度追踪。
概述
Batch 特性允许用户将大规模变更分解为可并行执行的子任务,通过多代理协同工作,显著提高大规模重构和批量操作的效率。
适用场景:- 大规模代码重构(跨 50+ 文件)
- 批量 API 迁移
- 统一代码风格调整
- 依赖升级与兼容性修复
- 文档批量更新
基本用法
/batch <描述>
参数说明:
描述:自然语言描述要执行的批量变更
/batch 将所有 Python 文件中的 print 语句改为 logging.info
/batch 升级 requirements.txt 中所有依赖到最新版本
/batch 使用 black 格式化所有 Python 文件
核心能力
1. 任务分解
AuraCode 自动分析用户描述,识别可并行的变更单元:
- 文件级分解 — 每个文件作为独立任务
- 目录级分解 — 按目录组织任务
- 逻辑级分解 — 按变更类型分组
2. 并行执行
通过子代理系统实现真正的并行:
- 每个子任务分配独立的子代理
- 子代理同时工作,互不干扰
- 实时显示每个子任务的进度
3. 进度追踪
实时显示任务执行状态:
批量任务进度:
[████████░░] 80% (4/5 完成)
✓ file1.py - 已更新 (2 处修改)
✓ file2.py - 已更新 (3 处修改)
✓ file3.py - 已更新 (1 处修改)
✓ file4.py - 已更新 (4 处修改)
⚙ file5.py - 处理中...
4. 错误恢复
部分失败时自动处理:
- 重试机制 — 自动重试失败的任务
- 降级策略 — 跳过无法处理的文件
- 冲突解决 — 自动检测并解决冲突
5. 结果聚合
汇总所有子任务的执行结果:
- 统计成功/失败数量
- 展示变更详情
- 提供回滚选项
执行流程
Phase 1: 任务分析
1. 解析用户描述
2. 识别目标文件和目录
3. 评估变更范围和复杂度
Phase 2: 任务分解
1. 将大任务拆分为独立子任务
2. 确定子任务间的依赖关系
3. 计算最优并行策略
Phase 3: 代理分配
1. 为每个子任务创建子代理
2. 分配独立的上下文和工具
3. 设置执行超时和重试策略
Phase 4: 并行执行
1. 所有子代理同时开始工作
2. 实时报告进度和状态
3. 处理执行中的异常
Phase 5: 结果聚合
1. 收集所有子任务的输出
2. 合并变更结果
3. 生成执行报告
Phase 6: 冲突处理
1. 检测文件冲突
2. 自动解决或提示用户
3. 提供回滚选项
使用示例
示例 1: 批量重构
场景:将所有 Python 文件中的print 改为 logging.info
用户: /batch 将所有 Python 文件中的 print 语句改为 logging.info
执行流程:
1. 扫描项目,找到 45 个 Python 文件
2. 分解为 45 个子任务(每个文件一个)
3. 创建 10 个子代理并行工作
4. 每个子代理处理 4-5 个文件
5. 实时显示进度
6. 汇总结果:修改了 127 处 print 语句
输出:
批量任务完成 ✓
总计: 45 个文件
成功: 43 个文件
失败: 2 个文件 (已跳过)
变更详情:
- 替换 print 语句: 127 处
- 添加 import logging: 15 个文件
- 修复格式问题: 8 个文件
失败文件:
- legacy/old.py (语法错误,无法解析)
- tests/test_legacy.py (依赖缺失)
是否要查看变更详情?(y/n)
示例 2: 批量依赖升级
场景:升级所有依赖到最新版本用户: /batch 升级 requirements.txt 中所有依赖到最新版本,并修复兼容性问题
执行流程:
1. 读取 requirements.txt (25 个依赖)
2. 查询每个依赖的最新版本
3. 分解为 3 个子任务:
- 升级主要版本 (5 个)
- 升级次要版本 (12 个)
- 升级补丁版本 (8 个)
4. 并行执行升级
5. 运行测试验证兼容性
6. 修复发现的问题
示例 3: 批量格式化
场景:统一代码风格用户: /batch 使用 black 格式化所有 Python 文件,并修复 lint 错误
执行流程:
1. 找到所有 Python 文件 (150 个)
2. 分解为 5 个子任务 (每个 30 个文件)
3. 并行运行 black 格式化
4. 运行 flake8 检查 lint
5. 自动修复可修复的问题
6. 报告无法自动修复的问题
高级配置
并行度控制
默认并行度为 10 个子代理,可通过配置调整:
# config.yaml
batch:
max_parallel: 15 # 最大并行数
timeout_per_task: 300 # 每个子任务超时时间(秒)
retry_count: 2 # 失败重试次数
文件过滤
可以指定只处理特定类型的文件:
/batch 在所有 .py 文件中添加类型注解
/batch 在 src/ 目录下统一代码风格
/batch 排除 tests/ 目录,升级所有依赖
干运行模式
先预览变更,不实际执行:
/batch --dry-run 将所有 print 改为 logging
输出示例:
干运行模式 - 不会实际修改文件
计划变更:
- 45 个文件将被修改
- 预计修改 127 处
- 预计耗时 2-3 分钟
是否继续执行?(y/n)
最佳实践
1. 明确描述
✅ 好的描述:
/batch 将所有 Python 文件中的 print 语句改为 logging.info
❌ 模糊的描述:
/batch 修改代码
2. 分阶段执行
对于大规模变更,建议分阶段执行:
# 第一阶段:预览
/batch --dry-run 升级所有依赖
第二阶段:执行
/batch 升级所有依赖
第三阶段:验证
/batch 运行所有测试并修复失败
3. 备份重要文件
在执行批量变更前,建议先备份:
git add .
git commit -m "Backup before batch operation"
4. 使用版本控制
批量操作后,使用 Git 审查变更:
git diff # 查看所有变更
git diff --stat # 查看变更统计
git diff file.py # 查看特定文件的变更
常见问题
Q: 批量操作会阻塞主会话吗?
A: 不会。批量操作在后台并行执行,你可以继续其他工作。
Q: 如果部分任务失败怎么办?
A: AuraCode 会自动重试失败的任务,如果仍然失败,会跳过并报告原因。
Q: 可以取消正在执行的批量任务吗?
A: 可以,使用 /batch cancel 取消所有正在执行的任务。
Q: 批量操作支持回滚吗?
A: 支持,使用 /batch rollback 回滚到操作前的状态。
相关工具
spawn_subagent— 创建子代理join_subagent— 等待子代理完成list_subagents— 列出所有子代理subagent_stats— 查看子代理统计