文件最后提交记录最后更新时间
feat(tests/system): ST 框架新增正向看护能力(skill_activated 程序化断言 + Distractor 沙箱注入) Co-authored-by: hello_simida<wangyi206@huawei.com> Co-authored-by: zzZzz__zzZzz<821946509@qq.com> # message auto-generated for no-merge-commit merge: !254 merge skilltest into master feat(tests/system): ST 框架新增正向看护能力(skill_activated 程序化断言 + Distractor 沙箱注入) Created-by: zzZzz__zzZzz Commit-by: zzZzz__zzZzz;hello_simida Merged-by: cann-robot Description: ## 描述 本 PR 在 ST 框架现有的双 Phase 验证(静态结构 + AI 语义评测)基础上,新增 **正向看护(Forward Verification)能力** —— 验证 AI 在多个干扰 skill 同时可用的真实环境中,仍能正确选择并激活目标 skill。同时修复了 ST 文档与实际代码不一致的多处问题,并优化了评测报告的错误展示。 正向看护采用**程序化断言**(不依赖 AI 评审模型):从导出的 session JSON 中精确匹配 tool=skill 事件的 state.input.name,给出确定性判断。 ### 新特性 New Features - 【tests/system 程序化断言】test_skill_evals.py 新增 [skill_activated] 类型 Expectation:从 ses.json 解析所有 tool=skill 事件的 state.input.name(fallback 到 state.metadata.name),与期望 skill 名严格匹配;失败时列出实际激活的 skill 列表辅助定位。 - 【tests/system Distractor 配置】evals_parser.py 新增解析 case-level ## Config - Distractor skills: a;b;csandbox_manager 支持在沙箱 .opencode/skills/ 下同时部署目标 + 多个 distractor skill 的目录树(默认软链接,不重复复制)。 - 【tests/system HTML 正向看护块】conftest.py 新增 _parse_skill_activated_block 钩子,将正向看护失败渲染为紫色专属块:清晰展示"期望激活"vs"实际加载"对比 + 失败原因提示,与普通 contains/file 类失败块视觉区分。 - 【tests/system 示例用例】cases/cann-env-setup_evals.md 新增 Case 7「正向看护 - 多 skill 环境下正确触发目标 skill」:4 个 distractor + [skill_activated] cann-env-setup 断言。 ### 特性增强 - 【tests/system 报告优化】所有断言错误改为中文 + 过滤无关 traceback 行,提升评审可读性。 - 【tests/system 配置修复】skill-test.configskill_dirs 路径 model/skills 修正为 model,与实际仓库目录结构对齐。 - 【tests/system 静态验证扩展】test_skill_basic.py 新增 test_eval_cases_distractor_skills_valid —— 校验 distractor skill 名称在仓库中真实存在。 ### 文档更新 - 【tests/system ST 设计指南】ST_DESIGN_AND_DEVELOPMENT_GUIDE.md 大幅修订:补充缺失 skill 项、修正用例计数、移除无效引用、新增正向看护章节(+173/-97 行)。 ## 关联的Issue <!-- 暂未关联 Issue --> ## 测试 - **Phase 1 静态验证**:36/36 PASSED(含新增 distractor 字段校验) - **_validate_skill_activated 单元行为**:6 种场景人工注入 session JSON 验证全部符合预期(命中 input.name / 命中 metadata.name fallback / 加载错误 skill / 未加载任何 skill / 多 skill 命中 / 空 pattern 配置错误) - **沙箱多 skill 部署**:Case 7 的 1 目标 + 4 distractor 全部在 .opencode/skills/ 下完成软链接部署,SKILL.md 均可达 - **HTML 正向看护块渲染**:手工注入失败 longrepr 后 _parse_skill_activated_block 输出正确包含期望/实际对比与紫色样式 - **main.py 主流程**:Phase 1 → Phase 2 → 归档 zip 编排正常,exit code 反映失败状态 - **evals_parser 字段提取**:Case 7 正确解析出 distractor_skills=[ascendc-task-focus, npu-arch, ascendc-docs-search, ascendc-runtime-debug][skill_activated] cann-env-setup ## 文档更新 - 更新 tests/system/docs/ST_DESIGN_AND_DEVELOPMENT_GUIDE.md:补充正向看护章节、修正用例计数、移除无效引用。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🌟 新特性 - [x] ✨ 特性增强 - [ ] 🐛 Bug 修复 - [ ] ⚡ 性能优化 - [x] 🧪 测试用例 - [ ] 📦 构建 / CI - [x] 📝 文档更新 - [x] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 See merge request: cann/cannbot-skills!2547 天前