git:20260905.a346b91 to git:20260906.d5147b3

63 added, 373 removed. Audit A to A.

---
name: auto-test-project
category: normal
- description: 当用户明确要求"测试项目"、"运行 auto-test-project"或"进行项目级测试"时使用。对完整项目进行多轮 A 轮批判性测试 + B 轮质量检查,系统化发现、记录、修复问题。⚠️ 不适用:用户只是想优化功能(应直接修改)、只是询问项目问题(应直接回答)、没有明确"测试"意图。
+ description: 当用户明确要求“测试项目”、 “运行 auto-test-project”或“进行项目级测试”时使用。对完整项目执行多轮 A 轮批判性测试与 B 轮质量检查,发现、记录、修复并验证问题。⚠️ 不适用:用户只是想优化功能、询问项目问题,或没有明确测试意图。
metadata:
author: Bensz Conan
- short-description: 多轮 A 轮测试 + B 轮质量检查 的项目级测试驱动优化流水线
+ short-description: 多轮 A 轮测试 + B 轮质量检查的项目级测试驱动优化流水线
keywords:
- auto-test-project
- 项目级测试
- project QA
---
# auto-test-project(项目级自动化测试驱动优化)
## 目标
- 为具备明确目录和可执行入口的完整项目提供可追溯的 A 轮问题发现、修复验证与 B 轮质量检查。仅当用户明确要求项目级测试时触发;单个 Skill 的测试使用 `auto-test-skill`。本 Skill 不替代领域业务判断,不默认修改远程系统,也不把报告模式误当成发布阻断。
+ 为具备明确目录和可执行入口的完整项目提供可追溯的项目级测试与优化流水线:项目初始化、A 轮问题发现与修复、B 轮质量原则检查、验证和交付总结。仅在用户明确要求项目级测试时触发;单个 Agent Skill 使用 `auto-test-skill`。
+ 本 Skill 将“项目”定义为具有指令文件或等价入口、明确目录结构和功能模块,并包含可执行代码、脚本或流程定义的项目,包括 Agent Skills、工作流项目、脚本工具集和结构化文档项目。本 Skill 不替代领域业务判断,不默认修改远程系统,不把报告模式误当作发布阻断,也不负责单 Skill 测试。
+
## 流程
### 输入
- 接收项目根目录、用户指定的测试/优化范围、已有配置和可执行测试入口;排除历史任务产物、缓存、依赖目录及敏感信息。
+ - 项目根目录、用户指定的测试范围、优化目标或 A 轮次数。
+ - 项目指令文件、配置文件、模块目录、可执行代码/脚本和已有测试入口。
+ - 需要关注的历史问题、已知约束和可接受的修改边界。
+ 排除历史任务产物、缓存、依赖目录和敏感信息。先验证项目结构与可执行入口,再确定项目类型、核心模块和跨模块测试边界;配置中的 `project_testing`、`a_round` 和 `b_round_check` 是规划口径的单一来源。
+
### 执行步骤
- 按配置创建唯一 `.bensz-api` 任务工作区,执行 A 轮检查与修复,再执行 B 轮质量检查;脚本负责确定性路径、模板和会话验证,AI 负责问题判断与最小修改。
+ 1. **初始化会话**:使用宿主已经公开并锁定的任务根;调用 `scripts/create_test_session.py` 创建 A/B 会话及模板文件。缺省 `--task-root` 时才分配新任务;A/B 轮和 continuation 必须显式复用同一 task root,不猜测最近任务。
+ 2. **识别项目**:检查指令文件、目录结构、功能模块、入口和测试边界,排除 `node_modules/`、`__pycache__/`、`.git/`、`tests/`、`plans/` 和 `_artifacts/` 等配置的排除路径。
+ 3. **执行 A 轮(可重复 N 次)**:结合 `references/CRITICAL_THINKING_GUIDE.md` 与配置的审查范围独立发现问题;为每个问题记录证据、影响、优先级、修复建议和验收标准,形成可引用的 `P0-1` 等编号。
+ 4. **修复并轻量测试**:按计划优先修复 P0/P1,再处理其它问题;只做最小必要修改,补充 `TEST_PLAN.md` 和 `TEST_REPORT.md` 中的可复现命令、结果和证据。项目已有测试时优先运行受影响范围,再按风险扩大验证。
+ 5. **判断下一轮**:检查计划中的问题是否均有报告对应项、成功标准是否有验证结论,以及 P0/P1 是否闭环;达到用户指定轮数或明确的停止条件后进入 B 轮。
+ 6. **执行 B 轮质量检查**:依据 `config.yaml:b_round_check.dimensions` 检查硬编码与 AI 功能规划、冗余残留、安全性、过度设计、通用性、一致性、项目指令文件瘦身和配置集中化;对发现的 P0/P1 做针对性修复与轻量验证。
+ 7. **收尾验证**:每个会话运行 `scripts/verify_test_session.py`,最终运行 `scripts/verify_all_sessions.py --require-plan`;更新目标项目的 `CHANGELOG.md`,并保留失败证据与提前结束原因。
### 输出
- 输出问题计划、测试计划、测试报告和可复现命令;正式代码、文档和 `CHANGELOG.md` 按项目目录保存,任务证据留在任务工作区。
-
- ### 输出管理
-
- 所有中间输入、草案、日志和验证证据写入任务根的 `shared/` 或本 Skill 子目录;不覆盖用户已有文件,不把缓存或测试产物写入源码目录。
-
- ### 校验
-
- 运行 `scripts/verify_test_session.py`、`scripts/verify_all_sessions.py` 及 `scripts/check_skill_structure.py --skill-root . --mode strict`;通过标准是无模板占位符、会话证据完整、结构检查无发现且相关测试成功。
-
- ### 失败与恢复
-
- 保留失败命令和输出,区分输入缺失、脚本错误、测试失败和不确定结果;可在同一任务根重试未完成阶段,禁止伪造通过或删除失败证据。外部依赖不可用时安全停止并给出复现命令。
+ 交付以下可追溯产物,具体模板由 `config.yaml:templates` 指定:
- ## 约束
+ - A 轮计划:`<task-root>/auto-test-project/output/plans/vYYYYMMDDHHMM.md`。
+ - A 轮会话:`<task-root>/auto-test-project/output/tests/vYYYYMMDDHHMM/`,包含 `TEST_PLAN.md` 和 `TEST_REPORT.md`。
+ - B 轮计划:`<task-root>/auto-test-project/output/plans/B轮-vYYYYMMDDHHMM.md`。
+ - B 轮会话:`<task-root>/auto-test-project/output/tests/B轮-vYYYYMMDDHHMM/`,包含 `TEST_PLAN.md` 和 `TEST_REPORT.md`。
+ - 正式代码、文档和项目 `CHANGELOG.md`:按目标项目原有目录约定保存。
- <!-- BEGIN COMMON CONSTRAINTS -->
- <!-- Source-Hash: sha256:15120201e9e0c7569517261d57ecefb63ac279c26ed13876f8e95b6dc35854d3 -->
- <!-- Template-ID: skill-common-constraints; Template-Version: 1; Sync-Policy: exact-block -->
+ 报告必须区分已修复、未修复、无法验证和不确定问题,并提供复现命令或后续人工动作;不得用空报告或口头结论代替证据。
- ### 公共硬约束
+ ### 输出管理
- 本块由 `docs/templates/skill-common-constraints.md` 统一维护;每个 `SKILL.md` 的 `## 约束` 必须逐字同步本块,不得在副本中改写公共规则。
+ 所有计划草案、测试报告、会话元数据、命令输出和验证证据写入当前任务根下的 `auto-test-project/`,不得写入旧的 `.bensz-api/skills/auto-test-project/`。规划文档放在 `output/plans/`,会话放在 `output/tests/`,B 轮会话名统一使用 `B轮-` 前缀。
- - 任务需要落盘时,使用唯一的 `./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/` 根目录;共享材料放入 `shared/`,Skill 专属材料放入该 Skill 的 `input/`、`output/`、`log/`。
- - 正式交付物、源代码和正式计划按项目约定保存,不写入任务工作区;未经授权不覆盖、删除、迁移或远程写入。
- - 项目维护变更检查 BAC 可用性并记录需求、AI 产出、工具结果、文件改动和验证摘要;BAC 只做过程审计,不替代署名、责任或合规判断。
- - 不记录 API Key、访问令牌、密码、Cookie、环境/凭据文件、私有 Prompt、身份信息、本地用户名、主机名或不必要的大体积原始数据。
- - 文件路径必须规范化并限制在授权项目范围内;外部 URL、子进程和网络访问遵循最小权限,防止路径遍历、SSRF 和命令注入。
- - Skill 版本唯一记录在自身 `config.yaml:skill_info.version`;公开 API、协议、目录或配置变更同步文档与 `CHANGELOG.md`。
- - `bensz-collect-bugs` 是一个 Agent Skill;仅将 Bensz Agent Skill 或 Bensz 基础设施本身的设计缺陷交给它。先脱敏写入 `~/.bensz-skills/bugs/`,当前任务不中断,只有用户明确要求才公开上报,禁止直接修改用户已安装的 Skill 源码。
+ 旧目录仅允许验证脚本通过 `--legacy-root` 显式只读检查;创建脚本不得写入。不得覆盖用户已有文件,不得把缓存、依赖或测试运行产物写入源码目录。
- <!-- End of canonical common constraints. -->
- <!-- END COMMON CONSTRAINTS -->
- ## Quick Start(最快路径)
+ ### 校验
- 1. 使用宿主已公开并锁定的任务根创建本轮会话骨架:
+ 使用分钟级会话 ID `vYYYYMMDDHHMM`。典型 A 轮初始化与验证命令如下:
```bash
TASK_ROOT=".bensz-api/task-{yyyymmdd-hhmm}-{简短描述}"
python3 auto-test-project/scripts/create_test_session.py \
- --project-root . \
- --task-root "$TASK_ROOT" \
- --kind a \
- --create-plan
- ```
-
- `--task-root` 省略时表示开始一个新逻辑任务,脚本会分配新的 `task-*` 根;A/B 轮或 continuation 必须显式回传同一个 task root,脚本不会猜测“最近任务”。旧 `.bensz-api/skills/auto-test-project/` 只能通过验证脚本的 `--legacy-root` 显式只读检查,创建命令绝不写入旧目录。
-
- 2. 在 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/vYYYYMMDDHHMM.md` 写出本轮问题清单(至少 10 个),并使用可引用编号(如 `P0-1`)。
- 3. 按计划修复,并补齐 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/TEST_PLAN.md` 与 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/TEST_REPORT.md` 的可复现证据。
- 4. 运行验证脚本(推荐收尾用严格模式):
-
- ```bash
+ --project-root . --task-root "$TASK_ROOT" --kind a --create-plan
python3 auto-test-project/scripts/verify_test_session.py \
- --project-root . \
- --task-root "$TASK_ROOT" \
- --require-plan \
+ --project-root . --task-root "$TASK_ROOT" --require-plan \
"$TASK_ROOT/auto-test-project/output/tests/vYYYYMMDDHHMM"
```
- 5. 重复 A 轮 N 次后,进入 B 轮质量检查与验证。
-
- ## 项目定义
-
- 本技能中的"项目"是指:
- - 具有项目指令文件(如 `CLAUDE.md`、`AGENTS.md`、`PROJECT.md` 等)
- - 具有明确的目录结构和功能模块
- - 包含可执行的代码、脚本、或流程定义
- - 类似 `init-project` 定义的项目结构
-
- 典型项目类型:
- - **Agent Skills**:符合 [Agent Skills 开放标准](https://agentskills.io) 的技能
- - **工作流项目**:定义了开发流程的项目
- - **脚本工具集**:一组协同工作的脚本和工具
- - **文档项目**:具有结构化文档和模板的项目
-
- ## 你要产出的东西
-
- 本 skill 的交付不是"口头建议",而是一组可追溯的文件:
-
- - `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/vYYYYMMDDHHMM.md`:A 轮问题分析与改进计划(每轮 1 份)
- - `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/`:A 轮测试会话目录(包含 `TEST_PLAN.md` + `TEST_REPORT.md`)
- - `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/B轮-vYYYYMMDDHHMM.md`:B 轮质量检查报告(维度以 `config.yaml:b_round_check.dimensions` 为准)
- - `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/B轮-vYYYYMMDDHHMM/`:B 轮验证会话目录(包含 `TEST_PLAN.md` + `TEST_REPORT.md`)
-
- ## 目录与命名规范
-
- - 测试会话 ID:`vYYYYMMDDHHMM`(分钟级时间戳)
- - 规划文档:放在 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/`
- - 测试会话:放在 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/`
- - B 轮统一加前缀:`B轮-`
-
- ## 工作流程
-
- ### 概览
-
- ```
- 用户输入(项目根目录 + 问题列表/优化目标)
- ↓
- [项目初始化]:验证项目结构、识别项目类型
- ↓
- [A轮 × N]:分析 → 计划 → 优化 → 轻量测试
- ↓
- B轮:质量原则检查(以 `config.yaml:b_round_check.dimensions` 为准) → 针对性优化 → 轻量验证
- ↓
- 完成(文档齐全 + 问题闭环 + 项目 CHANGELOG.md 已更新)
- ```
-
- ### 项目初始化
-
- #### P.1 验证项目结构
-
- 目标:确认目标是一个有效的"项目",并识别项目类型。
-
- 检查项:
- - [ ] 是否存在项目指令文件(`CLAUDE.md`、`AGENTS.md`、`PROJECT.md` 等)
- - [ ] 是否存在配置文件(`config.yaml`、`package.json`、`pyproject.toml` 等)
- - [ ] 是否有明确的目录结构(源码、文档、脚本等)
-
- 输出:`PROJECT_TYPE.md`(可选,记录项目类型和关键信息)
-
- #### P.2 识别测试边界
-
- 目标:确定测试范围和优先级。
-
- 分析维度:
- - **核心模块**:哪些文件/目录是项目的核心功能?
- - **测试路径**:哪些功能需要优先测试?
- - **依赖关系**:模块间的依赖关系是什么?
-
- 输出:在首个 A 轮计划中记录测试边界。
-
- ### A 轮测试(可重复 N 次)
-
- #### A.1 初始化会话(生成测试 ID + 目录)
-
- 目标:创建本轮的 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/` 与 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/` 骨架。
-
- 推荐使用确定性脚本:
-
- ```bash
- TASK_ROOT=".bensz-api/task-{yyyymmdd-hhmm}-{简短描述}"
- python3 auto-test-project/scripts/create_test_session.py --project-root . --task-root "$TASK_ROOT" --kind a --id vYYYYMMDDHHMM --create-plan
-
- # 可选:如果你希望 TEST_PLAN.md 直接以计划文档为“种子”,再手动补齐测试细节
- python3 auto-test-project/scripts/create_test_session.py --project-root . --task-root "$TASK_ROOT" --kind a --id vYYYYMMDDHHMM --seed-test-plan-from-plan
- ```
-
- 最低要求:
- - `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/` 与 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/` 存在
- - `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/TEST_PLAN.md` 与 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/TEST_REPORT.md` 存在
-
- #### A.2 问题分析与计划生成(写入 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/`)
-
- 目标:把本轮要解决的问题写成可执行计划,按 P0/P1/P2 排序。
-
- 输出:`.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/vYYYYMMDDHHMM.md`
-
- **⭐️ 核心价值**:本项目级测试的核心价值在于**系统视角和批判性思维**,而非替代 linter 进行表面检查。
-
- **数量要求**(强制):
- - 每轮至少发现 10 个问题(P0 + P1 + P2 总和)⚠️ **强制门槛**
- - 建议目标范围 15-25 个问题(考虑跨模块复杂性)
-
- **⚠️ 质量要求**(批判性思维门槛):
- - 每轮至少有 **1-2 个痛点级问题**(架构级/设计级问题,非表面问题)
- - 每轮至少有 **3 个系统性问题**(架构/过度设计/一致/安全等;项目级优先关注跨模块/跨文件矛盾)
- - 每轮问题类型分布推荐:痛点级 ~20%、隐患级 ~50%、噪音级 ~30%
- - **每个 P0/P1 问题必须包含批判性思维字段**(批判性质疑、根本原因、价值判断)
- - **P0 + P1 占比必须 ≥ 60%**(确保问题有价值;小项目可在计划中说明为何达不到)
-
- 说明:默认口径以 `config.yaml:test_rounds.min_issues_per_round` 与 `config.yaml:test_rounds.target_issues_range` 为准。
-
- **核心要求**:
- - **独立评估原则**(默认启用,除非用户明确要求“沿上轮跟进修复”):
- - 每轮 A 轮基于目标项目的**当前工作状态**独立分析
- - 默认**不查看**历史 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/` 与 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/`(避免确认偏差/路径依赖)
- - 排除范围建议以 `config.yaml:a_round_check.independent_review.exclude_patterns` 为准(历史产物/缓存/依赖目录应排除)
- - **批判性思维优先**:**优先使用技巧 0(批判性分析框架)**,再辅以技术检查技巧(技巧 1-8)
- - 技巧 0.1:第一性原理思考(评估项目是否偏离核心目标)
- - 技巧 0.2:架构合理性质疑(评估模块划分、依赖方向、抽象层次)
- - 技巧 0.3:价值导向的问题分类(避免噪音级问题,聚焦痛点级/隐患级)
- - 技巧 0.4:根本原因分析(5 Whys)(挖掘问题本质,而非修复表象)
- - **全局意识**:明确本轮在优化 journey 中的位置(首轮/中间/收尾)
- - **上下文连贯**:说明与上轮的关联,避免孤立的问题清单
- - **项目视野**:考虑跨模块影响和依赖关系,记录涉及的模块
- - **优先级依据**:P0/P1/P2 必须有明确的判定标准和价值判断
- - P0: 阻塞性问题、安全风险、核心功能缺陷、架构级偏离
- - P1: 重要优化、模块间接口优化、测试覆盖不足、技术债务
- - P2: 锦上添花、文档改进、后续迭代项
- - **可追溯性**:每个问题必须包含位置、涉及模块、影响、修复建议、验证方法
- - **问题深度**:每个 P0/P1 问题必须有批判性质疑和根本原因分析(至少 3 次"为什么")
-
- **详细结构模板**:`references/A_ROUND_PLAN_TEMPLATE.md`(包含"系统视角与批判性分析"章节)
-
- **批判性思维必读**:
- - `references/CRITICAL_THINKING_GUIDE.md` ⚠️ **核心文档,必须使用**
- - `references/CONSTRUCTIVE_SUGGESTION_GUIDELINES.md` 建设性建议标准(避免“空洞建议/不可验证”)
- - `references/ANTI_PATTERNS_LIBRARY.md` 反例库(快速识别常见项目级反模式)
-
- **问题挖掘技巧**:`references/PROJECT_ISSUE_DISCOVERY_TECHNIQUES.md`
- - ⚠️ **强制要求**:每轮**必须使用技巧 0(批判性分析框架)**
- - ⚠️ **强烈建议**:每轮使用 3-5 个技巧组合(如技巧 0.1 + 0.2 + 技巧 1 跨模块一致性检查)
-
- **如首轮无明确问题列表**:先做静态检查与一致性检查,再给出问题清单。
-
- #### A.3 执行优化与轻量测试(写入 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/`)
-
- 目标:按计划逐项修复,并用轻量测试验证。
-
- 输出:`.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/TEST_PLAN.md` 和 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/TEST_REPORT.md`
-
- **⚠️ 强制要求 - 防止"假计划、空报告"**:
-
- **禁止行为**:
- - ❌ 保留模板占位符(`{{TEST_ID}}`、`{{MODULE_1}}` 等)
- - ❌ 使用"(填入...)"、"待补充"等占位文本
- - ❌ 报告内容少于 500 字(排除模板)
- - ❌ 缺少具体证据(命令输出、文件路径、截图)
-
- **必须满足**:
- - ✅ TEST_PLAN.md 和 TEST_REPORT.md 必须完全替换模板占位符
- - ✅ 每个验证点必须有具体的执行记录(命令、输出、结果)
- - ✅ 每个问题修复必须有前后对比或可复现证据
- - ✅ 报告必须包含明确的结论(通过/失败/部分通过)
-
- **验证方法**(每轮结束后必须执行):
-
- ```bash
- # 检查是否还有未替换的模板占位符
- grep -r "{{" .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/
- # 如果有输出,说明模板未被正确替换,必须修复
-
- # 使用验证脚本(推荐)
- python3 auto-test-project/scripts/verify_test_session.py --project-root . --task-root "$TASK_ROOT" "$TASK_ROOT/auto-test-project/output/tests/vYYYYMMDDHHMM"
-
- # 可选:更严格模式(要求 .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/vYYYYMMDDHHMM.md 存在且包含 P0-1 等编号,才能做计划-报告一致性检查)
- python3 auto-test-project/scripts/verify_test_session.py --project-root . --task-root "$TASK_ROOT" --require-plan "$TASK_ROOT/auto-test-project/output/tests/vYYYYMMDDHHMM"
- ```
-
- **轻量测试原则**:
- - 只验证"核心路径"与"本轮变更点"
- - 每条结论必须有可复现证据(命令输出、文件、对比结果)
- - 中间产物放入 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/vYYYYMMDDHHMM/_artifacts/`,不污染主目录
- - 项目级测试需要考虑模块间交互
-
- **TEST_PLAN.md 最低内容标准**:
- - 具体的测试目标(非模板,明确本轮要验证什么)
- - 明确的测试范围和边界(哪些模块/文件)
- - 可执行的验证点(至少 3 个,每个包含:描述、方法、预期结果)
- - 清晰的通过标准(可衡量的成功条件)
-
- **TEST_REPORT.md 最低内容标准**:
- - 执行摘要(状态:✅ 通过 / ❌ 失败 / ⚠️ 部分通过)
- - 每个验证点的执行结果(包含实际执行的命令、输出、截图路径等)
- - 问题修复记录(每个 P0/P1 问题必须记录:修复前状态 → 修复措施 → 修复后状态)
- - 遗留问题清单(未解决的问题及原因)
- - 下一步建议(是否需要下一轮、重点是什么)
-
- #### A.4 是否进入下一轮
-
- **⚠️ 数量验证**(强制检查):
-
- 在进入下一轮之前,**必须**确认:
-
- - [ ] 本轮已提出至少 10 个问题(P0 + P1 + P2 总和)
- - 如未达到,必须继续挖掘问题(使用跨模块分析、依赖关系分析等技巧)
-
- **⚠️ 进入下一轮前的强制检查**:
-
- 在进入下一轮 A 轮之前,**必须**执行以下验证:
+ B 轮创建时显式关联 A 轮:
```bash
- # 1. 检查模板占位符是否被替换
- python3 auto-test-project/scripts/verify_test_session.py --project-root . --task-root "$TASK_ROOT" "$TASK_ROOT/auto-test-project/output/tests/vYYYYMMDDHHMM"
-
- # 2. 检查计划与报告的一致性
- # - .bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/vYYYYMMDDHHMM.md 中的每个问题是否在 TEST_REPORT.md 中有对应记录
- # - 成功标准是否在报告中有验证结论
+ python3 auto-test-project/scripts/create_test_session.py \
+ --project-root . --task-root "$TASK_ROOT" --kind b \
+ --id vYYYYMMDDHHMM --a-test-id vYYYYMMDDHHMM
```
- **验证失败的处理**:
- - 如果发现模板占位符未替换、报告空白、计划与执行脱节等问题
- - 必须先修复当前轮次的测试报告,不得进入下一轮
- - 修复标准:满足 A.3 节的所有"必须满足"条件
-
- **验证通过的判断标准**:
- - ✅ 问题数量 ≥ 10 个(P0 + P1 + P2 总和)
- - ✅ 所有模板占位符已替换
- - ✅ TEST_REPORT.md 内容 ≥ 500 字
- - ✅ 每个 P0/P1 问题都有修复记录
- - ✅ 计划中的成功标准都有验证结论
-
- 进入下一轮 A 轮的典型条件:
- - 用户指定的轮次数未完成
- - 仍存在未解决的 P0 / P1
- - 轻量测试报告中出现阻塞性失败
- - 发现新的跨模块问题需要解决
-
- **重要**:A 轮结束后(无论多少轮),必须进入 B 轮质量检查,不得跳过。
-
- ### B 轮质量检查(维度以 config.yaml:b_round_check.dimensions 为准)
-
- ⚠️ **强制执行**:B 轮质量检查是项目级自动测试流程的强制性环节,除非用户明确要求跳过,否则不得省略。
-
- #### B.1 产出质量检查报告(写入 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/`)
-
- 目标:对 A 轮后的最新状态做系统性质量检查。
-
- 输出:`.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/B轮-vYYYYMMDDHHMM.md`
-
- **建议数量与修复门槛**(默认口径以 `config.yaml:b_round_check.*` 为准):
- - 建议数量:至少 10 条(P0+P1+P2,总和),目标范围 10-20
- - 修复率门槛:P0 = 100%,P1 ≥ 80%
-
- 检查维度(以 `config.yaml:b_round_check.dimensions` 为准):
- - 硬编码/AI 功能规划
- - 冗余残留错误检查
- - 安全性检查
- - 过度设计检查
- - 通用性检查
- - 一致性检查
- - **项目指令文件瘦身检查**(新增):检查 CLAUDE.md/AGENTS.md 等项目指令文件是否过于冗长,应将详细内容模块化到各模块的 `references/` 或 `docs/`
- - 配置集中化检查:检查可配置参数是否集中到配置文件作为单一真相来源,避免散落造成口径漂移
-
- 模板:`templates/B_ROUND_CHECK_TEMPLATE.md`
-
- #### B.2 B 轮优化与验证(写入 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/`)
-
- 目标:对 B 轮发现的 P0/P1 进行针对性修复并验证。
-
- 推荐创建独立会话目录:
-
- 建议显式提供 `--a-test-id`(对应 A 轮会话 ID),避免 B 轮文档中 A/B 关联被默认值误导。
+ 最终验证:
```bash
- TASK_ROOT=".bensz-api/task-{yyyymmdd-hhmm}-{简短描述}"
- python3 auto-test-project/scripts/create_test_session.py --project-root . --task-root "$TASK_ROOT" --kind b --id vYYYYMMDDHHMM --a-test-id vYYYYMMDDHHMM
+ python3 auto-test-project/scripts/verify_all_sessions.py \
+ --project-root . --task-root "$TASK_ROOT" --require-plan
```
- 输出:`.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/B轮-vYYYYMMDDHHMM/TEST_REPORT.md`
-
- ## 完成条件(验收)
+ 通过标准:每轮会话均有非空计划和报告,模板占位符已替换,计划与报告的问题编号和成功标准可对应,验证脚本通过,P0 修复率为 100%,P1 修复率达到配置门槛,且 B 轮强制完成或明确记录无法完成的原因。仓库级 Skill 结构和公共约束由仓库治理检查器负责,不由本 Skill 的会话验证脚本替代。
- - [ ] 用户指定的 A 轮次数已完成(或明确说明提前结束原因)
- - [ ] B 轮质量检查已完成并形成报告(⚠️ 强制要求,参考 `config.yaml` 的 `b_round_check.mandatory`)
- - [ ] 关键问题(P0/P1)已闭环:计划 → 修复 → 证据 → 结论
- - [ ] `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/plans/` 与 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/` 结构完整且可追溯
- - [ ] 目标项目的 `CHANGELOG.md` 已更新
- - [ ] **每轮测试会话都通过验证脚本检查**(防止"假计划、空报告")
+ ### 失败与恢复
- **最终验证命令**:
+ 将失败分类为输入缺失、项目结构无效、脚本错误、测试失败、外部依赖不可用和结果不确定;保存命令、输出、错误和已生成证据,不伪造通过、不删除失败记录。
- ```bash
- TASK_ROOT=".bensz-api/task-{yyyymmdd-hhmm}-{简短描述}"
- # 验证同一 task root 下的全部 A/B 会话
- python3 auto-test-project/scripts/verify_all_sessions.py \
- --project-root . \
- --task-root "$TASK_ROOT" \
- --require-plan
- ```
+ 可在同一任务根重试未完成阶段;A/B continuation 必须复用原 task root 和关联 ID。输入或环境问题先停止并给出补充项/复现命令;测试失败保留失败报告并允许针对性修复后重跑;无法取得可靠证据时标记为不确定并转人工复核。达到用户指定轮数后不得擅自扩展范围。
- ## 与 auto-test-skill 的区别
+ ## 约束
- | 维度 | auto-test-skill | auto-test-project |
- |------|-----------------|-------------------|
- | **目标对象** | 单个 Agent Skill | 完整项目(多模块、多文件) |
- | **测试范围** | 单个 skill 目录 | 整个项目目录 |
- | **问题分析** | skill 级别(SKILL.md、config.yaml) | 项目级别(跨模块、跨文件) |
- | **质量检查** | 维度以 `config.yaml:b_round_check.dimensions` 为准 | 维度以 `config.yaml:b_round_check.dimensions` 为准(项目级扩展) |
- | **输出位置** | 在 skill 内部的 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-skill/output/` 创建计划和测试会话 | 在项目根目录的 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/` 创建计划和测试会话 |
- | **CHANGELOG** | 更新 skill 的 CHANGELOG.md | 更新项目的 CHANGELOG.md |
+ <!-- BEGIN COMMON CONSTRAINTS -->
+ <!-- Source-Hash: sha256:15120201e9e0c7569517261d57ecefb63ac279c26ed13876f8e95b6dc35854d3 -->
+ <!-- Template-ID: skill-common-constraints; Template-Version: 1; Sync-Policy: exact-block -->
- ## 可复用资源
+ ### 公共硬约束
- - 配置:`config.yaml`
- - 模板:`templates/`
- - 参考:
- - `references/FAQ.md`:常见问题(如何检测“假计划/空报告”、证据标准、避免会话污染等)
- - `references/PROJECT_TESTING_BEST_PRACTICES.md`:项目级测试最佳实践
- - `references/PROJECT_ISSUE_DISCOVERY_TECHNIQUES.md`:项目级问题挖掘技巧 ⚠️ 强烈建议每轮使用 3-5 个技巧组合
- - `references/CRITICAL_THINKING_GUIDE.md`:批判性思维指南 ⚠️ A 轮必须使用
- - `references/CONSTRUCTIVE_SUGGESTION_GUIDELINES.md`:建设性建议标准(可执行、可验证、有证据)
- - `references/ANTI_PATTERNS_LIBRARY.md`:反例库(快速识别项目级反模式)
- - `references/EXAMPLE_STRICT_MINIMAL.md`:严格模式最小示例(P0-1 编号如何让计划-报告一致性检查落地)
- - `references/EXAMPLE_TEST_REPORT.md`:完整的测试报告示例(12 个问题,展示期望的输出质量)
- - 辅助脚本:
- - `scripts/create_test_session.py`:创建测试会话目录(支持模板变量自动替换)
- - `scripts/verify_test_session.py`:验证测试会话完整性(包含计划-执行一致性检查)
- - `scripts/verify_all_sessions.py`:批量验证 `.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/auto-test-project/output/tests/` 下的所有会话(可选严格模式)
- - `scripts/verify_skill.py`:一键自检本 skill(必需文件、脚本可用、模板关键占位符自动填充)
- - `scripts/check_skill_structure.py`:报告或严格检查 Skill frontmatter、四段式正文骨架、流程子章节、公共约束摘要、引用和模板副本哈希
+ 本块由 `docs/templates/skill-common-constraints.md` 统一维护;每个 `SKILL.md` 的 `## 约束` 必须逐字同步本块,不得在副本中改写公共规则。
- ## 常见问题与最佳实践
+ - 任务需要落盘时,使用唯一的 `./.bensz-api/task-{yyyymmdd-hhmm}-{简短描述}/` 根目录;共享材料放入 `shared/`,Skill 专属材料放入该 Skill 的 `input/`、`output/`、`log/`。
+ - 正式交付物、源代码和正式计划按项目约定保存,不写入任务工作区;未经授权不覆盖、删除、迁移或远程写入。
+ - 项目维护变更检查 BAC 可用性并记录需求、AI 产出、工具结果、文件改动和验证摘要;BAC 只做过程审计,不替代署名、责任或合规判断。
+ - 不记录 API Key、访问令牌、密码、Cookie、环境/凭据文件、私有 Prompt、身份信息、本地用户名、主机名或不必要的大体积原始数据。
+ - 文件路径必须规范化并限制在授权项目范围内;外部 URL、子进程和网络访问遵循最小权限,防止路径遍历、SSRF 和命令注入。
+ - Skill 版本唯一记录在自身 `config.yaml:skill_info.version`;公开 API、协议、目录或配置变更同步文档与 `CHANGELOG.md`。
+ - `bensz-collect-bugs` 是一个 Agent Skill;仅将 Bensz Agent Skill 或 Bensz 基础设施本身的设计缺陷交给它。先脱敏写入 `~/.bensz-skills/bugs/`,当前任务不中断,只有用户明确要求才公开上报,禁止直接修改用户已安装的 Skill 源码。
- 为避免 `SKILL.md` 过长,常见问题与最佳实践下沉到 references:
+ <!-- End of canonical common constraints. -->
+ <!-- END COMMON CONSTRAINTS -->
- - `references/FAQ.md`
- - `references/PROJECT_TESTING_BEST_PRACTICES.md`
+ ### Skill 专属约束
- > 公共约束长版本:[`docs/templates/skill-common-constraints.md`](../../../docs/templates/skill-common-constraints.md)。
+ - A 轮至少按配置完成用户指定次数;若提前结束,必须说明原因和未完成范围。
+ - B 轮质量检查为强制阶段,维度以 `config.yaml:b_round_check.dimensions` 为准,不得在正文另设易漂移的默认清单。
+ - 计划、修复、测试、证据和结论必须形成闭环;P0/P1 不得仅以建议或口头判断结案。
+ - 与 `auto-test-skill` 的边界固定为:本 Skill 面向完整项目及跨模块关系,`auto-test-skill` 面向单个 Skill 目录。
+ - 可复用的 FAQ(`references/FAQ.md`)、最佳实践、问题挖掘技巧、反例、严格示例(`references/EXAMPLE_STRICT_MINIMAL.md`)和报告示例放在 `references/`;会话创建、单会话验证、批量验证和 Skill 自检使用 `scripts/`,不得把这些详细材料重新堆回正文。