标签建议:area/verification, area/reliability, priority/P1, type/feature, depends-on/verification
背景
当前能力:
- q-code 仓库已有丰富测试脚本:
pnpm typecheck、pnpm test:unit、pnpm test、legacy 测试和 eval smoke/cli/nightly。
- AGENTS 中维护了按改动类型建议运行的测试策略。
- Agent 当前更多依赖人工指令或固定命令选择,缺少自动推断“这次改动应该跑哪些测试”的策略层。
痛点:
- 小改动跑全量测试成本高,大改动只跑单测又容易漏风险。
- 测试失败后,需要人工读日志区分代码 bug、环境问题、flaky、依赖缺失或超时。
- PR review 很难快速判断“测试覆盖是否足够”。
需要补齐:
- 基于变更文件、模块边界、历史规则和索引信息的测试选择。
- 失败归因和建议下一步。
- flaky 检测、风险评分和验证报告。
目标
实现自动验证策略模块:根据代码变更和任务类型推荐并执行合适的测试命令,归因失败原因,识别 flaky 风险,输出可审计的验证报告和风险评分。
用户故事
- 作为开发者,我希望 q-code 修改代码后自动建议最小但足够的测试集,以便节省时间又不漏关键风险。
- 作为 reviewer,我希望看到验证报告说明为什么跑这些测试、哪些没跑和剩余风险。
- 作为维护者,我希望失败日志能被归因到测试失败、类型错误、环境缺失或 flaky,以便快速处理。
- 作为 CI 用户,我希望验证策略在非交互环境中可预测、可配置预算和超时。
详细需求
1. 测试选择策略
2. 命令执行与预算
- 执行测试时复用 shell/background job 能力,支持 timeout 和输出 spill。
- 支持最大耗时、最大失败数、是否允许 legacy/eval 的配置。
- 非交互模式下必须可通过参数控制是否自动运行。
3. 失败归因
- 解析常见输出:TypeScript 错误、Vitest 失败、依赖缺失、超时、网络失败、权限失败。
- 输出摘要包含失败文件、关键断言、可能根因和建议下一步。
- 不把超大日志塞进上下文;保存 artifact 路径并引用摘要。
4. Flaky 检测
- 支持对指定失败测试重跑 N 次,记录稳定失败或疑似 flaky。
- Flaky 结论必须谨慎,标记为“疑似”并保留证据。
- 不在默认路径中过度重跑,避免浪费时间。
5. 风险评分与报告
- 输出验证报告,包含变更范围、已运行命令、结果、未覆盖风险和建议。
- 风险评分可基于改动模块、测试覆盖、失败状态、未跑测试和历史 flaky 信号。
- 报告可供 PR 描述或 session 总结引用。
输出样例
验证建议: standard
将运行:
- pnpm typecheck
- pnpm test:unit
原因:
- 修改 src/runtime/config.ts,影响公共配置解析
- 修改 tests/unit/runtime-config.test.ts,已有对应单测
风险: medium
验收标准
测试方案
tests/unit/verification-strategy.test.ts:覆盖路径到命令映射、策略等级和预算。
tests/unit/verification-parser.test.ts:覆盖 tsc、vitest、timeout、依赖缺失日志解析。
tests/integration/verification-flow.test.ts:在 fixture 中模拟 diff、运行命令和生成报告。
- 手动验证:小型 src 改动、TUI 改动、eval 改动、失败测试、超时命令。
不在本期范围
- 替代 CI 或直接管理 GitHub Actions。
- 基于机器学习的复杂测试影响预测。
- 自动修复所有失败测试。
- 长期 flaky 数据库服务。
依赖 / 风险
工作量评估
- 测试选择策略与配置:1.5 人日
- 执行封装与报告:1.5 人日
- 失败归因与 flaky 重跑:2 人日
- 测试与文档:1.5 人日
- 合计:~6.5 人日
背景
当前能力:
pnpm typecheck、pnpm test:unit、pnpm test、legacy 测试和 eval smoke/cli/nightly。痛点:
需要补齐:
目标
实现自动验证策略模块:根据代码变更和任务类型推荐并执行合适的测试命令,归因失败原因,识别 flaky 风险,输出可审计的验证报告和风险评分。
用户故事
详细需求
1. 测试选择策略
pnpm test:unit;类型/公共接口改动推荐pnpm typecheck。2. 命令执行与预算
3. 失败归因
4. Flaky 检测
5. 风险评分与报告
输出样例
验收标准
测试方案
tests/unit/verification-strategy.test.ts:覆盖路径到命令映射、策略等级和预算。tests/unit/verification-parser.test.ts:覆盖 tsc、vitest、timeout、依赖缺失日志解析。tests/integration/verification-flow.test.ts:在 fixture 中模拟 diff、运行命令和生成报告。不在本期范围
依赖 / 风险
工作量评估