初始化 AutoFlow 环境 — 智能项目分类、深度扫描/行业调研、方案推荐、脚手架生成。适用场景:首次运行、/using-autoflow、'初始化 autoflow'、'设置 autoflow'。
为新项目或已有项目引导安装 AutoFlow 自动化测试框架。 流程包括:环境校验、智能分类、深度扫描/行业调研、仓库接入、连接配置, 最终生成项目脚手架和 CLAUDE.md。
在流程开始时,批量创建 6 个任务以可视化全流程进度。任务 2 和 3 使用通用措辞,在分支确定后动态更新:
TaskCreate(subject="环境检测 + 智能分类", activeForm="检测项目环境",
description="子步骤:工具版本检查 → 依赖检测与安装 → 重初始化检测 → 项目标志扫描 → 判定 existing_auto / new")
TaskCreate(subject="项目分析", activeForm="分析项目特征",
description="子步骤:待分类后更新(分支 A: project-scanner 深度扫描;分支 B: 行业画像收集 + industry-researcher 调研)")
TaskCreate(subject="确认与选择", activeForm="确认分析结果",
description="子步骤:待分类后更新(分支 A: 7 维度逐项确认;分支 B: 方案推荐 + 试运行)")
TaskCreate(subject="源码仓库配置", activeForm="配置源码仓库",
description="子步骤:收集仓库 URL → git clone → URL 前缀映射 → 写入 repo-profiles.yaml")
TaskCreate(subject="连接配置", activeForm="配置连接信息",
description="子步骤:Base URL → 认证方式与凭证 → 数据库(可选)→ 通知 Webhook(可选)")
TaskCreate(subject="脚手架生成 + 配置验证", activeForm="生成项目脚手架",
description="子步骤:渲染 autoflow-config.yaml → 运行 scaffold.py → 生成 CLAUDE.md → smoke test → 输出初始化摘要")
将每个 TaskCreate 返回的 ID 依次记为 <task_1_id> 到 <task_6_id>,后续步骤引用这些 ID 进行状态更新。
将任务 1 标记为进行中:
TaskUpdate(taskId=<task_1_id>, status="in_progress")
检查所有必要工具是否可用:
python3 --version # 要求 >= 3.12
uv --version # 要求 uv 包管理器
git --version # 要求 git
检测包管理器类型:
test -f uv.lock && echo "PKG_MGR: uv"
test -f poetry.lock && echo "PKG_MGR: poetry"
test -f requirements.txt && echo "PKG_MGR: pip"
检测插件依赖:
python3 -c "import jinja2" 2>/dev/null || echo "MISSING: jinja2"
python3 -c "import pydantic" 2>/dev/null || echo "MISSING: pydantic"
python3 -c "import yaml" 2>/dev/null || echo "MISSING: pyyaml"
若有缺失依赖,根据检测到的包管理器自动安装。
输出状态表格:
| 工具 | 要求版本 | 检测版本 | 状态 |
|---|---|---|---|
| Python | >= 3.12 | x.y.z | 正常/失败 |
| uv | 任意 | x.y.z | 正常/失败 |
| git | 任意 | x.y.z | 正常/失败 |
| jinja2 | 任意 | — | 正常/已安装 |
| pydantic | 任意 | — | 正常/已安装 |
| pyyaml | 任意 | — | 正常/已安装 |
若有必要工具缺失,打印安装说明并终止。
test -f autoflow-config.yaml && echo "CONFIG_EXISTS"
若 autoflow-config.yaml 已存在:
AskUserQuestion(
"检测到已有 AutoFlow 配置。请选择处理方式:",
options=[
"使用现有配置直接进入 /autoflow(推荐)",
"更新配置(只修改变更项)",
"完全重新初始化"
]
)
.autoflow/backup/,继续完整流程扫描项目标志,判定项目类型:
# 计算测试文件数
TEST_COUNT=0
for d in testcases tests test; do
if [ -d "$d" ]; then
count=$(find "$d" -name "test_*.py" -o -name "*_test.py" 2>/dev/null | wc -l)
TEST_COUNT=$((TEST_COUNT + count))
fi
done
echo "TEST_FILE_COUNT: $TEST_COUNT"
# 检测 conftest.py
for f in conftest.py tests/conftest.py testcases/conftest.py test/conftest.py; do
test -s "$f" && echo "CONFTEST: $f"
done
# 检测 pytest 配置
grep -q "\[tool\.pytest" pyproject.toml 2>/dev/null && echo "PYTEST_CONFIG: pyproject.toml"
test -f pytest.ini && echo "PYTEST_CONFIG: pytest.ini"
grep -q "\[tool:pytest\]" setup.cfg 2>/dev/null && echo "PYTEST_CONFIG: setup.cfg"
# 检测 HTTP 客户端
grep -rl "import requests\|import httpx\|BaseRequests" testcases/ tests/ test/ 2>/dev/null | head -3
# 检测 allure
grep -rl "import allure" testcases/ tests/ test/ 2>/dev/null | head -3
# 检测 CI 配置
test -d .github/workflows && echo "CI: github_actions"
test -f .gitlab-ci.yml && echo "CI: gitlab_ci"
test -f Jenkinsfile && echo "CI: jenkins"
判定规则:
if TEST_FILE_COUNT >= 3 AND (CONFTEST存在 OR PYTEST_CONFIG存在):
project_type = "existing_auto"