← 返回
未分类

qc需求理解与测试用例生成

AI驱动的需求→测试用例生成能力。V4.6.11架构:P6子任务防护+tool call合并+HMAC密钥统一+飞书附件路径自动查找+P7代码校验+云端评审推送+知识库同步+项目业务域匹配+HMAC来源审计+重试队列+PRD审查增强+P0/P1报告导出+P3+P4并行+自动P2/P5+架构模块化+字段标准化+feature_tree类型守卫。
AI驱动的需求→测试用例生成能力。V4.6.11架构:P6子任务防护+tool call合并+HMAC密钥统一+飞书附件路径自动查找+P7代码校验+云端评审推送+知识库同步+项目业务域匹配+HMAC来源审计+重试队列+PRD审查增强+P0/P1报告导出+P3+P4并行+自动P2/P5+架构模块化+字段标准化+feature_tree类型守卫。
user_024716e2
未分类 community v4.6.10 9 版本 100000 Key: 无需
★ 1
Stars
📥 113
下载
💾 0
安装
9
版本
#latest

概述

qc-req2testcase-generator V4.6.10

> 版本:4.6.10

> 架构:orchestrator代码硬控 + Agent只填内容 + 6段确认模式 + HMAC签名防伪造 + P2/P5/P7代码路径 + P6统一流程+prompt瘦身+子任务防护


⛔ 入口强制检查:需求载荷是否存在(最高优先级)

此检查在技能触发后、任何其他操作之前执行。不通过则立即终止,禁止进入Onboarding。

✅ 允许继续的情况(满足任一即可):

  • 用户消息中实际包含需求正文(粘贴的文字内容)
  • 或用户消息中实际包含需求附件(.docx/.txt/.pdf文件)
  • 或用户消息明确引用了近期已发送的需求文档(包含文件名/任务ID等可检索标识)

❌ 必须立即停止的情况(匹配任一即终止):

用户输入为何不算正确响应
---------------------------
"我等会发"、"稍后发"、"等一下发"未来时态,需求未实际到达停止,等待
"分析这个需求"(无附件/无正文)模糊引用,无实际载荷停止,等待
"用qc-req2testcase-generator"(无需求材料)仅提及技能名停止,等待
"帮我生成测试用例"(无上下文)仅触发词,无载荷停止,等待
用户引用了不存在或无法检索的需求无实际内容停止,等待

⚠️ 灰色地带处理:

  • 用户说"分析刚才的需求" → 检查对话历史中是否确实有需求文档,如无→停止
  • 用户说"用上次的需求" → 检查是否有可检索的历史任务,如无→停止

不通过时的回复模板:

📋 请先发送需求正文或需求文档(.docx / .txt / 粘贴文字均可),收到后立即开始分析。

💡 提示:仅说"等会发"、"稍后发"不算已收到需求,必须实际发送文档后才能开始分析。

通过后的回复模板:

✅ 需求载荷已收到 | 格式:{docx/txt/paste} | 大小:{字数/KB}
📋 即将进入初始化流程...

🔴 此检查必须在技能触发的第一个动作执行,绝对禁止跳过。


📎 附录:常见误判场景(Agent自我纠偏参考)

用户输入正确判断
------------------
"帮我分析需求,文档等会发"❌ 停止,等待文档
"用qc-req2testcase-generator分析"❌ 停止,等待文档
"分析这个需求"(无附件无正文)❌ 停止,等待文档
"分析需求" + 附了docx文件✅ 通过,进入流程
"分析需求" + 粘贴了大段文字✅ 通过,进入流程
"用上次task_20260515的需求再生成一次"✅ 通过(可检索到历史任务)

🔴 运行协议

核心原则:orchestrator.py控制流程,Agent只负责执行prompt返回JSON。

参数自动化:orchestrator自动发现skill_dir、自动回填data_dir/task_id,Agent几乎不需要传参。

6段确认模式:流程分6段执行,P2/P5为自动执行步骤(无需用户确认),用户实际只需回复5次「继续」。用户始终知道流程在哪一步。

🔴🔴🔴 段落编号严格对应(绝对禁止合并段落):

  • 段落1 = init+onboarding
  • 段落2 = step0+图片理解
  • 段落3 = P0+P1 + 自动P2(P2代码自动生成,无需用户确认)
  • 段落4 = P3+P4(风险+PCI)+ 自动P5(代码自动合并,无需用户确认)
  • 段落5 = P6(用例生成,必须用分批流程p6_batch_info→p6_save_batch→p6_merge,step_run会被拒绝)
  • 段落6 = P7(代码自动校验)+Excel

每段结束时必须输出状态提示行,不允许把多个段落合并成一个。


🔴 操作约束矩阵(最高优先级)

StepAgent角色唯一正确命令
----------------------------
P0执行者prep_prompt → 生成JSON → step_run
P1执行者prep_prompt → 生成JSON → step_run
P2观察者python3 "$ORCH" --action p2_code_generate
P3执行者prep_prompt → 生成JSON → step_run
P4执行者prep_prompt → 生成JSON → step_run
P5观察者python3 "$ORCH" --action p5_code_merge
P6执行者(主会话)p6_batch_info → 循环(prep_prompt+p6_save_batch) → p6_merge
P7观察者python3 "$ORCH" --action p7_code_check

观察者步骤:Agent只执行一条命令等待结果。不调用prep_prompt,不生成JSON,不写agent_output文件。

执行者步骤:Agent读取prompt,用推理能力生成高质量JSON,写入文件,调用orchestrator校验。

Agent在本技能中只做3类事情:

  1. 调用orchestrator命令(exec)
  2. 读取prompt文件并生成JSON结果,write到文件
  3. 读取图片并描述内容(PX步骤)

禁止Agent自行:

  • 决定下一步做什么(由orchestrator决定)
  • 直接写入p*_output.json文件(由orchestrator通过truncation_guard写入)
  • 绕过orchestrator(🔴 即使orchestrator报错,也不允许回退到"手动执行"模式,必须修复参数后重试)
  • 输出JSON结构体到对话(只写文件)

🔴🔴🔴 V3.5.2 绝对禁止行为(代码层硬控,违反即判定流程无效)

  1. 禁止直接写gate文件 - 所有 gates/*.pass.json 只能由orchestrator action内部创建,Agent不得以任何方式创建/修改gate文件
  2. 禁止直接写output文件 - 所有 p{N}_output.json 只能通过 step_run/p2_code_generate/p5_code_merge 等action写入,Agent不得直接write
  3. 禁止直接修改state文件 - orchestrator_state.json 只能由orchestrator内部修改
  4. 禁止import orchestrator - 不允许 import orchestratorfrom orchestrator importexec(open("orchestrator.py"))
  5. 禁止跳过orchestrator执行 - 所有步骤必须通过 python3 "$ORCH" --action XXX 执行,不得用Python脚本直接调用内部函数
  6. 禁止伪造执行结果 - 当orchestrator返回错误时,必须修复参数重试,不得"手动生成"替代结果
  7. Onboarding必须逐步交互 - 3步必须逐步展示,禁止合并为1次交互

违反以上任何规则的执行结果将被代码层检测并拒绝导出。step7_export会审计全链路gate来源,非法来源的gate将被拒绝。

对话输出规则:每段只输出1行状态+确认提示。


触发条件

「ai用例生成」「ai需求分析」「ai测试用例」「ai测试用例生成」「req2testcase」

「生成测试用例」「分析需求」「拆解功能点」「输出测试点」「需求评审」「帮我写用例」「这个需求怎么测」「PRD转测试用例」


🔴 6段确认模式

⚠️ 需求载荷前置(强制规则):

  • 触发后,如果用户消息中不包含需求正文/需求附件/明确引用近期需求材料,必须立即停止,输出:📋 请先发送需求正文或需求文档(.docx/.txt/粘贴文字),收到后立即开始分析。
  • 禁止进入Onboarding。必须等到收到需求文档后才能继续。
  • 用户说"分析需求"、"帮我测试"、"生成用例"等时,如果还没发需求,必须等待需求。
  • ⚠️ "我等会发"、"稍后发"、"等会儿发"不算已收到需求:必须等待实际文档。
  • ⚠️ 模糊引用不算:说"分析这个需求"但没附文档,必须等待文档。

收到需求后,按以下6段执行(P2/P5自动执行,用户只需回复5次「继续」):


📋 段落1:初始化 + Onboarding

首先定位orchestrator(只需执行一次,后续复用$ORCH变量):

exec: ORCH=$(find ~/.openclaw ~/.local ~/skills /app/skills -name orchestrator.py -path "*/qc-req2testcase-generator/*" -print -quit 2>/dev/null) && echo "ORCH=$ORCH"

如果找到,后续所有命令使用 python3 "$ORCH" 调用。如果未找到,输出错误。

exec: python3 "$ORCH" --action init
→ 获得 task_id

exec: python3 "$ORCH" --action onboarding
→ 环境检查结果(返回next_action字段,必须遵循)

🔴🔴🔴 onboarding返回后,段落1还没完成!必须继续执行以下3步交互,每步等用户回复后才展示下一步:

🔴 第1步:PRD审查(必须单独展示,等用户回复)

📋 PRD审查可在生成用例前检查需求文档质量。
请选择:
• 回复「开启」→ 启动PRD审查(不到合格分会中断并输出问题清单)
• 回复「跳过」→ 直接生成用例

用户回复后执行: exec: python3 "$ORCH" --action set_prd_review --enabled {true或false}

(用户选"开启"→ --enabled true,选"跳过"→ --enabled false)

🔴 必须等用户回复后,才能展示第2步。不允许和其他选项一起展示。

🔴 第2步:L5知识库(等第1步用户回复后才展示)

📚 L5知识库可注入历史测试经验,提升用例质量。
请选择:
• 上传知识库文件 → 解析入库
• 回复「跳过」→ 不使用知识库

🔴 必须等用户回复后,才能展示第3步。

🔴 第3步:图片理解API密码(等第2步用户回复后才展示)

(见下方检查4B详细流程)

检查4B:图片理解 + 评审工具密码

i️ 图片理解API可自动解析需求文档中的原型图/流程图/截图,提升用例质量。
🔗 评审工具可将生成的用例推送到在线评审平台,支持可视化评审与经验闭环。

请输入密码(图片API + 评审工具共用同一密码):
• 回复密码 → 同时启用图片理解 + 在线评审推送(密码验证后启用,不会保存到任何文件)
• 回复「跳过」→ 纯文本模式,图片信息仅通过前后文推断,不推送评审工具

用户输入密码时:

  1. Agent将密码传给orchestrator进行验证:exec: python3 "$ORCH" --action check_image_api --api-key "用户输入的密码"
  2. orchestrator调用API的/api/auth-check接口验证密码
  3. 密码正确→启用,Agent记住密码(仅在当前会话,不写文件),后续step0_8_prep时传入
  4. 密码错误→提示用户"密码验证失败",允许重试(最多3次),3次失败后自动降级为纯文本模式
  5. 服务不可用→提示"API服务暂不可用",自动降级为纯文本模式

密码验证失败时的处理流程:

  • 第1次失败:提示"密码错误,请重新输入或回复「跳过」"
  • 第2次失败:提示"密码再次错误,还有1次机会,或回复「跳过」"
  • 第3次失败:自动切换为纯文本模式,告知用户

用户选择「跳过」→纯文本降级模式(caption_only)

⚠️ 密码安全:不写入任何文件,不保存到preferences/environment,仅在当前会话内存中持有

完成后输出:

✅ 段落1完成 | Onboarding通过 | task_id=xxx

🔴🔴🔴 段落1必须执行以下收尾动作(缺一不可):

→ 如果用户已在段落1之前发送了需求文档 → 立即自动执行:

```

exec: python3 "$ORCH" --action step0 --requirement-file "{data_dir}/requirement.docx"

```

→ 如果用户尚未发送需求文档 → 必须输出以下提示并等待:

```

📋 请发送需求正文(.docx/.txt文件或直接粘贴文字),收到后立即开始分析

```

禁止跳过段间判断直接进入段落2,必须根据用户是否已发送需求来决定下一步


📋 段落2:需求接收 + 图片理解

用户回复"继续"/"好的"/"下一步"/"go"等确认意图后执行:

🔴 段间验证(必须先执行):

exec: python3 "$ORCH" --action status

确认onboarding gate pass存在。如不存在,必须重新执行段落1。

🔴 查找并保存上传的文档(如用户上传了.docx/.txt文件):

⚠️ data_dir从onboarding返回的task_id推断,格式为: ~/.openclaw/workspace/data/task_{task_id}

Step 1: 查找最近修改的docx/txt/pdf文件(飞书附件可能下载到多个位置):

exec:
# 查找最近30分钟内修改的docx/txt/pdf文件,覆盖飞书附件可能的下载路径
DOC_FILE=$(find ~/Downloads /tmp ~/Desktop ~/Documents ~/Library \
  -maxdepth 3 -type f \
  \( -name "*.docx" -o -name "*.txt" -o -name "*.pdf" \) \
  -mmin -30 2>/dev/null \
  | head -1)

if [ -n "$DOC_FILE" ]; then
  echo "FOUND_FILE=$DOC_FILE"
  echo "✅ 找到候选文件: $DOC_FILE"
else
  echo "NO_FILE_FOUND"
  echo "⚠️ 未在常用路径找到最近30分钟内的需求文档"
fi

Step 2: 如果Step 1找到了文件,移动/复制到data_dir:

exec:
DOC_FILE="{Step1返回的FOUND_FILE路径}"
DATA_DIR="{data_dir}"
mkdir -p "$DATA_DIR"
cp "$DOC_FILE" "$DATA_DIR/requirement.docx"
echo "✅ 需求文档已复制到: $DATA_DIR/requirement.docx"

Step 3: 如果Step 1没找到,扩大搜索范围(全盘搜索最近2小时的文件):

exec:
DOC_FILE=$(find /tmp ~/Downloads ~/Desktop ~/Documents ~/Library ~/ \
  -maxdepth 5 -type f \
  \( -name "*.docx" -o -name "*.txt" -o -name "*.pdf" \) \
  -mmin -120 2>/dev/null \
  | head -5)

if [ -n "$DOC_FILE" ]; then
  echo "FOUND_FILES:"
  echo "$DOC_FILE"
  echo "💡 请确认上述哪个是需求文件,或告知文件路径"
else
  echo "NO_FILE_FOUND"
  echo "📋 需求文档尚未上传到处理目录。"
  echo "请将需求文件路径告诉我,或重新上传该文件。"
fi

⚠️ 找到文件后必须移动或复制到data_dir目录下,命名为requirement.docx

exec: python3 "$ORCH" --action step0 --requirement-file "{data_dir}/requirement.docx"
→ 需求接收完成

exec: python3 "$ORCH" --action step0_8_prep --requirement-file "{docx_path}" --api-key "{用户在Onboarding中输入的密码}"
→ V3.2.5: orchestrator自动调用API理解图片(密码正确时),或降级为caption_only
→ 密码为空或未输入则自动降级
→ 结果写入px_api_results.json,无需Agent看图
→ 如返回skipped:非docx或无图片,跳过

exec: python3 "$ORCH" --action step0_8_save
→ 统一收口:读取结果→px_understand.json→image_enhance→mark_complete

完成后输出:

✅ 段落2完成 | 需求已解析 | 业务域:xxx | 图片N张
📋 请回复「继续」开始需求结构化

🔴🔴🔴 段落2必须输出图片理解摘要(缺一不可)(展示给用户确认):

exec: cat {data_dir}/px_understand.json

→ 读取后展示识别到的图片张数、每张图的页面/内容摘要,让用户确认图片理解是否准确。

→ 如果识别结果异常(如图片数量与需求不符),提示用户在P0中补充说明。

禁止跳过此步骤直接进入段落3,图片理解结果是P0质量的重要参考。


📋 段落3:需求结构化 + 模块拆解 + 自动测试点(P0 + P1 + 自动P2)

用户确认后执行:

🔴 段间验证(必须先执行):

exec: python3 "$ORCH" --action status

确认step0的gate pass存在(说明段落2已完成,P0/P1尚未执行是正常的)。如不存在,必须重新执行段落2。

对 P0 和 P1 各执行:
  exec: python3 "$ORCH" --action prep_prompt --step P{N}
  → 获得 prompt_file 路径
  read {prompt_file} → 用推理能力生成JSON
  write {DATA_DIR}/p{n}_agent_output.json → JSON结果
  exec: python3 "$ORCH" --action step_run --step P{N}
  → orchestrator校验+truncation_guard+gate pass

V3.5.4: P0执行完成后追加quality_check(PRD审查增强):

🔴🔴🔴 重要:如果用户开启了PRD审查,P0的JSON输出必须包含 blocks_markdown 和 issues 两个字段!
这是代码层硬校验,缺少任何一个字段,step_run将直接返回 prd_review_validation_failed 错误并拒绝。

当 prd_quality_review=True 时,P0的JSON输出必须包含:
  - blocks_markdown: string  ← 需求结构化Markdown,必须输出,不得省略
  - issues: array            ← 问题清单数组,无问题时输出空数组[]

P0的step_run成功后,立即执行:
  exec: python3 "$ORCH" --action quality_check --step P0
  → 如果返回中包含 prd_review_enabled: true,则必须展示以下内容:

  📋 **需求结构化结果**
  {blocks_markdown内容,原样输出,保持Markdown格式}

  **展示示例**(供Agent参考,实际输出以blocks_markdown内容为准):
  ```
  ## 模块1:月亮晒榜单优化(PC端)

  ### F01 有效机构户排名优化
  **输入/输出**
  - 输入:机构户数据、统计周期(月度) ✅
  - 输出:排名列表(增量排名替代原排名) ✅

  **业务规则**
  - 增量排名 = 本期新增机构户数排序 ✅
  - ⚠️ 未明确增量排名排序规则(降序?平局如何处理?)

  **约束条件**
  - 统计周期:自然月 ✅
  - ⚠️ 未定义"有效机构户"的判定标准

  **场景**
  - 正常展示、无新增机构户、多机构并列

  ---

  ### F02 重点机构业务优化
  **输入/输出**
  - 输入:重点机构业务数据 ✅
  - 输出:删除"目标完成率(%)"列 ✅

  **业务规则**
  - 删除操作:前端隐藏该列 ✅
  - ⚠️ 未说明存量数据是否保留(物理删除 or 逻辑隐藏)

  **状态流转**
  - 删除前 → 确认提示 → 删除后刷新列表 ✅

  ---

  ### F05-F07 福建区域新增三张表
  **输入/输出**
  - 输入:金种子/商机沙盘/海交综服数据 ✅
  - 输出:三张新增tab,各含11个统计字段 ✅

  **业务规则**
  - 11个统计字段:⚠️ 未定义字段名称、计算公式、数据来源

  **约束条件**
  - 数值字段:⚠️ 未定义数据类型(整数/小数)、单位、精度
  - 必填项:⚠️ 未明确哪些字段必填

  **角色权限**
  - 福建区域用户可见 ✅
  - ⚠️ 其他区域用户是否可见未说明
  ```

  ⚠️ **问题清单**(共{prd_issues数量}项)
  | 严重度 | 位置 | 类型 | 问题 | 建议 |
  |--------|------|------|------|------|
  {遍历prd_issues数组渲染表格}

  📊 **质量评分:{quality_score}**

  → 如果 quality_check 返回中包含 prd_review_report_path 字段:
    发送文件: 📄 PRD审查报告已生成,点击下载:{prd_review_report_path}
    (使用相对路径或绝对路径均可,确保用户可点击下载)

  → 如果 quality_check 返回 quality_failed(评分<0.5):
    输出: ❌ 需求质量不合格,流程中断。请根据问题清单修改需求后重新提交。
    停止执行(不继续P1)
  → 如果 quality_check 返回 ok:
    展示内容后自动继续P1,不等待用户
  → 如果返回中不包含 prd_review_enabled(用户跳过了PRD审查):
    仍必须展示质量评分摘要:
    ```
    📊 P0需求质量评分: {quality_score} (阈值≥0.7为✅通过, <0.5为❌不合格)
    📋 待确认问题: N条(见下方问题清单,若无则显示"无")
    ```
    → 如果 quality_score < 0.5: 输出❌不合格提示,流程中断
    → 如果 quality_score >= 0.5: 直接继续P1,不等待用户

完成后输出:

✅ 段落3完成 | P0评分:0.xx | P1模块:N个/功能点:M个

🔴🔴🔴 段落3必须输出以下内容(缺一不可,禁止跳过直接进入段落4):

→ 生成需求理解与功能点拆解报告:

exec: python3 "$ORCH" --action export_p0p1

→ 生成 {data_dir}/p0p1_report.md 文件

→ 发送报告文件给用户:

📄 需求理解与功能点拆解报告已生成

MEDIA:{data_dir}/p0p1_report.md

(使用绝对路径,确保飞书可以上传文件)

→ 如果开启了PRD审查,检查data目录是否有 prd_review_report.md 文件:

如果存在,同样发送: 📄 PRD审查报告

MEDIA:{data_dir}/prd_review_report.md

V4.0.0 评审推送闭环:

从export_p0p1返回的JSON中解析cloud_review字段(从exec的stdout解析JSON):

  • cloud_review.pushed == True → 输出: 🔗 需求理解已推送到评审工具: {cloud_review.review_url}
  • cloud_review.pushed == False → 输出: ⚠️ 需求推送失败({cloud_review.message}),不影响后续流程
  • 无cloud_review字段 → 跳过(未配置云端评审)

禁止跳过上述任何一步直接进入段落4 — 即使P0+P1+P2全部PASSED,未发送报告文件仍属于流程不完整

🔴🔴🔴 发送P0P1报告前强制自检(在执行P2之前必须全部完成):

在执行 auto P2 之前,Agent必须逐项确认以下全部完成,不得跳过任一项:

exec: python3 "$ORCH" --action export_p0p1 已执行完毕,stdout包含 "status": "success"

□ MEDIA 附件指令已在回复中独占一行发出(格式: MEDIA:{data_dir}/p0p1_report.md

□ 质量评分已在回复中展示(格式: 📊 P0需求质量评分: X.XX,≥0.7✅ / <0.5❌)

□ cloud_review 推送结果已在回复中展示(如已配置API密码)

全部确认后,才执行 P2 auto;任一项未完成则立即补做,不允许执行P2

⚡ P0+P1完成后立即自动执行P2(无需用户确认):

段落3的P0+P1完成后,Agent立即自动执行P2,不等待用户回复:

段间验证: exec: python3 "$ORCH" --action status(确认P0+P1 gate pass存在)

P2由代码自动生成,Agent执行以下命令即可:

exec: python3 "$ORCH" --action p2_code_generate

→ 代码自动读P1 feature_tree → 规则引擎生成测试点 → gate pass

段落3+4合并输出(P2自动完成后展示):

[自动] P1完成 | 功能点:N个 | 场景:M个
[自动] P2测试点生成完成 | 测试点:X条(自动生成)
📋 请回复「继续」进入风险识别(P3+P4)

V4.2.0: 当 prd_quality_review=False 时,P0完成后仍必须展示结构化结果:

exec: python3 "$ORCH" --action quality_check --step P0

→ 读取 p0_output.json,依次展示:

📋 需求结构化结果

  • 需求目标: {objective字段,空时显示"未提供"}
  • 质量评分: {quality_score字段} (阈值≥0.7为合格)
  • 业务对象({blocks.business_objects长度}条): {遍历blocks.business_objects输出"- {name}",超过3条显示"...等N条"}
  • 核心操作({blocks.operations长度}条): {遍历blocks.operations输出"- {name}",超过3条显示"...等N条"}
  • 业务规则({blocks.business_rules长度}条): {遍历blocks.business_rules输出"- {description}"}
  • 测试关注点({blocks.test_point_candidates长度}条): {遍历blocks.test_point_candidates输出"- {description}[{category}]"}

→ 如果 blocks 字段不存在或为空: 仅展示objective+quality_score+"⚠️ 部分结构化数据不可用"

→ 如果 objective 为空: 显示"⚠️ 需求目标未提取"

📋 待确认问题:

→ 如果 blocks 不存在或 blocks.unknowns 为空: 显示"✅ 无待确认问题"

→ 否则读取 blocks.unknowns(数组,每项含description和impact字段,无clarification_questions字段):

🚨 阻塞问题({blocks.unknowns中blocking=true的数量}条):

{遍历blocks.unknowns中blocking=true的项,每条输出"- 🚨 {description} (影响:{impact})"}

⚠️ 非阻塞问题({blocks.unknowns中blocking=false的数量}条):

{遍历blocks.unknowns中blocking=false的项,每条输出"- ⚠️ {description} (影响:{impact})"}

如果两处均为空: "✅ 无需确认问题,可继续推进"

注: 🚨阻塞=阻止开发/测试继续; ⚠️非阻塞=不影响主流程但需关注


📋 段落4:风险识别 + PCI(P3 + P4) + 自动P5合并

用户确认后执行:

🔴 段间验证:

exec: python3 "$ORCH" --action status

确认P2的gate pass存在。

⚡ P3和P4互不依赖,必须并行执行(同时进行,省3-4分钟):

并行分支1 - 执行P3(风险识别):

exec: python3 "$ORCH" --action prep_prompt --step P3

→ 读取P3 prompt → 生成JSON → write到p3_agent_output.json

exec: python3 "$ORCH" --action step_run --step P3

并行分支2 - 执行P4(PCI识别):

exec: python3 "$ORCH" --action prep_prompt --step P4

→ 读取P4 prompt → 生成JSON → write到p4_agent_output.json

exec: python3 "$ORCH" --action step_run --step P4

并行要求:P3和P4的4条命令(2条prep_prompt + 2条step_run)必须同时发起,不等其中一个完成再执行另一个。若任一步骤失败,立即停止,不执行P5合并。

⚡ V4.1.1 并行失败处理机制:

也可使用一条命令执行P3+P4并行(推荐,内置完整失败处理):

exec: python3 "$ORCH" --action p3_p4_parallel

失败处理规则:

  1. 任一失败→立即停止: P3或P4任一步骤失败,另一个立即标记为"跳过",不进入P5合并
  2. 失败日志聚合: 输出包含失败步骤名、失败阶段(prep_prompt/step_run/timeout)、失败原因、耗时
  3. 资源自动释放: 无论成功失败,finally块自动清理所有.tmp.json临时文件
  4. 重试指引: 失败时输出restart_from P3重试命令

失败时输出示例:

{"status":"failed","failure_log":[{"step":"P3","status":"failed","reason":"..."}],"can_proceed_to_p5":false}

⚡ P3+P4完成后自动执行P5合并(无需用户确认):

🔴 段间验证:

exec: python3 "$ORCH" --action status

确认P2/P3/P4的gate pass存在。

🔴🔴🔴 P5由代码自动合并,Agent绝对不参与!

  • Agent不生成P5 JSON,不写p5_agent_output.json
  • Agent不调用step_run --step P5(代码层会直接拒绝)
  • Agent只执行下面这一条命令,然后等结果:
exec: python3 "$ORCH" --action p5_code_merge

→ orchestrator自动读P2+P3+P4→代码合并→写入P5→gate pass

❌ 以下操作全部禁止(代码层硬控,会被拒绝):

# 禁止!会被orchestrator直接拒绝
exec: python3 "$ORCH" --action step_run --step P5
# 禁止!Agent不能自己写P5
write: p5_agent_output.json
write: p5_output.json
# 禁止!Agent不能用Python脚本生成P5
exec: python3 -c "..."
# 禁止!Agent不能伪造gate pass(V3.2.6 HMAC验签会拒绝)
write: gates/P5.pass.json

段落5+6合并输出(P5自动完成后展示):

[自动] P3+P4完成 | 风险:Y条 | PCI:Z条
[自动] P5测试点合并完成(代码自动执行)
📋 请回复「继续」进入用例生成

🔴🔴🔴 段落4必须执行以下检查(禁止跳过,缺一不可):

→ exec: python3 "$ORCH" --action status

确认 step0/P0/P1 gate pass 存在

→ exec: python3 -c "import json; d=json.load(open('{data_dir}/p3_output.json')); assert d.get('risk_points'), 'risk_points缺失'"

确认 p3_output.json 包含 risk_points

→ exec: python3 -c "import json; d=json.load(open('{data_dir}/p4_output.json')); assert d.get('pci_list'), 'pci_list缺失'"

确认 p4_output.json 包含 pci_list

→ exec: test -f "{data_dir}/gates/P5.pass.json" && echo "P5.pass.json exists" || (echo "P5.pass.json missing" && exit 1)

确认 gates/P5.pass.json 存在

→ 如任一检查失败,必须重新执行对应步骤,禁止跳过进入段落5


📋 段落5:用例生成(P6)

🔴🔴🔴 V4.6.8 子任务执行禁令(最高优先级):

P6禁止在子任务/子Agent环境中执行! P6分批流程需要多轮tool call交互(每批2次),子任务环境容易超时导致整个流程中断。

  • 必须在主会话中执行P6 — 由主Agent直接调用,不要派生子任务/子Agent来执行P6
  • orchestrator代码层已增加检测 — 子任务环境调用P6 action将直接返回错误
  • 正确做法: 在主会话中按P0→P1→P2→P3+P4→P5→P6→P7的完整流程顺序执行
  • 错误做法: 将P6拆为子任务单独执行(超时风险极高,且代码层会拒绝)

用户确认后执行:

🔴 段间验证:

exec: python3 "$ORCH" --action status

确认P5的gate pass存在。

📋 安全用例条件注入(V4.1.1):

需求涉及文件上传/导入时,orchestrator自动注入52行安全规则。

  • 检测关键词:上传,导入,批量,文件,Excel,CSV,附件,docx,xlsx,上传文件,批量导入
  • 未检测到:显示[自动] 安全用例规则跳过(未检测到文件上传场景)而非删除规则,Agent无需干预。

P6统一流程:P5上下文 → AI生成 → 模板整理 → Gate检查 → 输出

所有模型统一使用以下流程:

exec: python3 "$ORCH" --action p6_batch_info

→ 获得total_batches

对每个批次N=1,2,...执行:

exec: python3 "$ORCH" --action prep_prompt --step P6 --batch-index {N}

→ 读取prompt → Agent生成JSON → write到p6_batch_{N:03d}_agent_output.json

exec: python3 "$ORCH" --action p6_save_batch --batch-index {N}

→ 校验(步骤唯一性+步骤-结果对应+占位符检测)

🔴 P6重试规则:

  • p6_save_batch返回quality_rejected时,仔细阅读issues中的具体问题
  • 针对性修改后重新生成该批次JSON,再次调用p6_save_batch
  • 最多自动重试2次,不要在重试期间报告给用户
  • 只有连续3次被拒绝(同一批次)才告知用户

全部批次完成后:

exec: python3 "$ORCH" --action p6_merge

完成后输出:

✅ 段落5完成 | 用例:N条 | 冒烟:M条
📋 请回复「继续」进入质检和导出

🔴🔴🔴 段落5必须执行以下检查(禁止跳过,缺一不可):

→ exec: python3 -c "import json; d=json.load(open('{data_dir}/p6_output.json')); assert d.get('testcases'), 'testcases缺失'; assert len(d['testcases'])>0, 'testcases为空'"

确认 p6_output.json 存在且包含非空 testcases

→ exec: python3 -c "import json; d=json.load(open('{data_dir}/p6_output.json')); smokes=[c for c in d.get('testcases',[]) if c.get('isSmoke')]; assert len(smokes)>0, '无冒烟用例标注'"

确认 p6_output.json 中冒烟用例 isSmoke 字段已标注

→ exec: test -f "{data_dir}/gates/P6.pass.json" && echo "P6.pass.json exists" || (echo "P6.pass.json missing" && exit 1)

确认 gates/P6.pass.json 存在

→ 如任一检查失败,必须重新执行段落5,禁止跳过进入段落6

→ ⚠️ P6+Excel导出文件在段落6生成,不要在段落5重复生成

⚠️ Agent收到用户「继续」后,必须立即执行段落6的Step 1+Step 2,禁止在此处宣布「任务完成」,禁止询问用户是否需要Excel导出,P7+Excel导出是自动执行的必须步骤!


📋 段落6:质检 + 导出(P7 + Excel)

用户确认后执行:

🔴 段间验证(必须先执行):

exec: python3 "$ORCH" --action status

确认P6的gate pass存在。如不存在,必须重新执行段落5。

Step 1: P7质量门禁(V3.3.1: 代码自动校验,无需Agent生成JSON)

exec: python3 "$ORCH" --action p7_code_check

→ 代码自动读p5_output.json+p6_output.json,执行C1-C9+C7.1全部11项校验

→ 自动生成p7_output.json + p7_report.html + P7.pass.json

→ ❌ 禁止用step_run --step P7,会被拒绝

Step 2: Excel导出 + 评审推送

exec: python3 "$ORCH" --action step7_export

→ 🔴 step7_export会校验P6用例数量底线 + P7 gate pass(必须由p7_code_check生成)

→ V4.0.0: 导出成功后自动推送用例到云端评审工具(如已配置),返回cloud_review字段

→ 不达标会被拒绝,需要重新执行段落5的P6

⚠️ MEDIA指令是发送文件给用户的唯一方式。不输出MEDIA=用户收不到文件。

⚠️ 评审链接是V4.0.0闭环的关键环节,必须展示给用户。


🔴🔴🔴 段落6必须输出以下内容(缺一不可,禁止跳过):

→ 执行 step7_export 后,必须发送Excel文件: MEDIA:{data_dir}/test_cases.xlsx

→ 必须展示P7质量门禁结果摘要(通过/不通过/警告数量)

→ 必须展示评审推送结果(链接或失败原因)

→ 如未输出MEDIA指令则用户无法收到Excel文件,属于严重流程遗漏

用户交互指令

用户输入含义
---------------
继续/好的/下一步/go执行下一段
查看进度exec orchestrator.py --action status
从P{N}重新开始exec: python3 "$ORCH" --action restart_from --step P{N}
取消/停止终止流程,保留已完成产物
重试推送exec: python3 "$ORCH" --action retry_push

断点续跑

用户发送"继续"时,如果当前任务有未完成步骤:

exec: python3 "$ORCH" --action resume
→ 获得 next_step,从对应段落继续

错误处理

错误处理
------------
orchestrator返回error输出错误信息,🔴 不允许回退到手动模式,必须修复后重试
orchestrator返回gate_blocked检查前置步骤是否完成
orchestrator返回guard_failed重新生成JSON重试(最多1次)
orchestrator返回quality_failed按retry_hint重新执行对应步骤

引用文件

路径说明
------------
tools/orchestrator.py核心流程控制器,15+个action,参数自动化,HMAC签名,云端评审推送
tools/truncation_guard.py四级截断检测+原子写入+HMAC签名
tools/export_excel.pyExcel导出(21列公司标准)
tools/export_markdown.pyMarkdown降级导出
tools/export_p0p1.pyP0/P1结构化报告导出(MD+HTML)
tools/export_prd_review.pyPRD审查结果Excel导出
tools/p5_prepare.pyP5测试点合并预处理
tools/p6_templates.pyP6模板整理(11套category模板,统一流程辅助)
tools/image_extract.pydocx图片抽取(python-docx)
tools/image_understand.py图片理解调度(vision/OCR/context_only三级降级)
tools/image_ocr.pyOCR引擎封装
tools/image_enhance.py图片理解增强聚合
tools/model_detect.py模型能力检测(视觉能力+预处理)
tools/test_px_pipeline.py图片处理管线集成测试
tools/image_api_server/server.py腾讯云图片理解API服务端(Flask)
references/orchestrator_protocol.mdAgent↔orchestrator交互协议
references/onboarding.mdOnboarding检查+交互流程
references/step0-px.mdStep 0+PX详细指令(prompt参考源)
references/step1-4.mdP0-P5详细指令(prompt参考源)
references/step5-7.mdP6-P7+Excel详细指令(prompt参考源)
prompts/P0_requirement_structuring.mdP0需求结构化Prompt
prompts/P0.5_prd_quality_review.mdP0.5 PRD质量审查Prompt
prompts/P0_prd_review_enhance.mdP0 PRD审查增强Prompt
prompts/P1_feature_tree_generation.mdP1功能点树Prompt
prompts/P2_test_point_draft.mdP2测试点草稿Prompt
prompts/P3_risk_identification.mdP3风险识别Prompt
prompts/P4_pci_identification.mdP4 PCI识别Prompt
prompts/P5_test_point_merge.mdP5测试点合并Prompt
prompts/P5a_batch_merge.mdP5a批量合并Prompt
prompts/P6_testcase_generation.mdP6用例生成Prompt
prompts/P6_api_rules.mdP6 API测试规则Prompt
prompts/PX_image_understand.mdPX图片理解Prompt
prompts/PX_ocr_extract.mdPX OCR提取Prompt
config/project_domain_mapping.json项目→业务域映射配置(v2.0: 10组项目关键词+16个同义词+12域知识库映射)
user_knowledge/preferences.json用户偏好配置(PRD审查/输出格式/默认域)
user_knowledge/model_vision_override.json模型视觉能力覆盖配置
知识库由云端API实时同步_sync_knowledge_from_cloud() 按需拉取,本地无缓存文件
CHANGELOG.md版本变更记录
RELEASE_NOTES.md发布说明

已知限制

  1. Agent需配合orchestrator协议,不配合时orchestrator会重试但无法强制
  2. 6段确认模式需要用户回复5次"继续"(P2/P5自动执行,无需确认)
  3. Excel导出依赖openpyxl
  4. 图片理解依赖Agent模型的视觉能力

版本历史

共 8 个版本

  • v4.6.10 bugfix 当前
    2026-05-18 13:00 安全 安全
  • v4.6.9 bugfix
    2026-05-18 11:51 安全 安全
  • v4.6.8 bugfix
    2026-05-18 08:25 安全 安全
  • v4.6.3 bugfix
    2026-05-17 14:41 安全 安全
  • v4.6.2 Initial release
    2026-05-16 19:55 安全 安全
  • v4.6.1 bug修复
    2026-05-16 19:27 安全 安全
  • v4.6.0 架构调整,完善AI需求分析与理解能力
    2026-05-16 16:36 安全 安全
  • v4.2.0 Initial release
    2026-05-15 12:54 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

YouTube

byungkyu
使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。
★ 142 📥 42,118
dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 686 📥 331,077
dev-programming

Docker Essentials

arnarsson
核心 Docker 命令和工作流程,包括容器管理、镜像操作和调试。
★ 38 📥 32,690