
Skill 测试框架【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills基于变更文件识别受影响的 skills执行对应的评测用例输出测试结果报告。用于 CI/CD 门禁检查确保 skills 代码变更质量。核心工作流程输入repo_root changed_files │ ├─ 步骤1识别受影响的skills │ └─ 从变更文件路径中提取 skill 目录 │ ├─ 步骤2加载评测用例 │ └─ 读取 skill/evals/evals.json │ ├─ 步骤3执行评测 │ ├─ Phase 1: 静态结构验证test_skill_basic.py │ └─ Phase 2: AI 语义评测test_skill_evals.py │ ├─ 步骤4保存结果 │ └─ 输出到 tests/system/results/ │ └─ 返回通过/失败状态输入参数参数必填说明默认值repo_root必填仓库根目录的绝对路径-changed_files必填变更文件列表空格分隔支持相对或绝对路径---parallel/-p否并行 worker 数auto全部CPU或指定数字如41(顺序执行)输出结果文件说明results/skill_name_timestamp.json每个受影响skill的测试结果报告results/basic_validation.htmlPhase 1 静态结构验证报告results/skill_evals.htmlPhase 2 语义评测报告结果文件结构{ skill_name: ascendc-aclnn-execute, timestamp: 20260509_143000, repo_root: /path/to/repo, changed_files: [ops/ascendc-aclnn-execute/SKILL.md], total_evals: 10, passed_evals: 8, failed_evals: 2, results: [ { eval_id: 1, passed: true, prompt: ..., expected_output: ..., actual_output: ..., error: , expectations: [...], expectations_met: [...], expectations_failed: [] } ] }测试阶段Phase 1静态结构验证test_skill_basic.py无需 AI 调用快速验证 skill 的结构完整性evals.json存在性、JSON 合法性、必填字段检查每个 eval case 的 id、prompt、expectations 格式校验SKILL.md 存在性、YAML frontmatter 格式校验Phase 2AI 语义评测test_skill_evals.py使用 opencode CLI 执行评测用例验证 skill 的实际表现执行 Session向 skill 发送 prompt收集 AI 回复评测 Session独立评测模型评审回复质量信息覆盖度 40 分、技术准确性 30 分、回复质量 20 分、Token 消耗 10 分总分 60 通过断言验证检查 expectations 中的contains/not_contains/file_exists模式evals.json 格式{ skill_name: skill-name, evals: [ { id: 1, prompt: 测试场景描述, expected_output: 预期输出描述, files: [], expectations: [期望内容1, 期望内容2] } ] }expectations 类型类型说明示例containsAI 回复必须包含指定文本普通的字符串not_containsAI 回复不能包含指定文本!not_contains:禁止出现的内容file_exists指定文件必须被创建或修改file_exists:path/to/file使用方式命令行调用python tests/system/scripts/main.py \ --repo-root /path/to/repo \ --changed-files ops/ascendc-st-design/SKILL.md ops/ascendc-st-design/evals/evals.json通过 gate_check.sh 调用CI 门禁# 方式1手动指定变更文件 export CHANGED_FILESops/ascendc-st-design/SKILL.md export REPO_ROOT/path/to/repo ./tests/gate_check.sh # 方式2Git 自动检测对比 origin/master HEAD 变更 ./tests/gate_check.sh # 方式3指定目标分支对比 export CI_MERGE_REQUEST_TARGET_BRANCH_NAMEmain ./tests/gate_check.sh并行执行Phase 2 的 eval 用例相互独立可通过--parallel并行执行python tests/system/scripts/main.py \ --repo-root /path/to/repo \ --changed-files ops/foo/SKILL.md \ --parallel auto配置编辑tests/system/config/skill-test.config调整扫描路径skill_dirs: - ops - graph - model/skills exclude_skills: - skill-test-framework依赖安装pip install -r tests/system/scripts/requirements.txt目录结构tests/system/ ├── README.md # 本文档 ├── config/ │ └── skill-test.config # 扫描路径配置 ├── docs/ │ └── USER_GUIDE.md # 详细使用指南 ├── results/ # 测试结果输出目录 ├── logs/ # 运行日志 └── scripts/ ├── main.py # CI 门禁主入口 ├── conftest.py # pytest 共享配置与工具函数 ├── opencode_runner.py # opencode CLI 封装 ├── test_skill_basic.py # Phase 1: 静态结构验证 ├── test_skill_evals.py # Phase 2: AI 语义评测 ├── run_eval.py # 命令行评测启动脚本 ├── session_stats.py # Session 数据统计工具 ├── pytest.ini # pytest 渲染配置 └── requirements.txt # Python 依赖注意事项变更识别只有配置的skill_dirs目录下的变更才会触发评测evals.json 必需skill 必须有evals/evals.json文件才会执行 Phase 2 评测超时设置批量评测超时 1200 秒单个评测用例超时 300 秒退出码所有评测通过返回 0任一失败返回 1【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考