一套面向开源算子仓的质量巡检看护 agent skills。 算子编不编得过、跑不跑得通,文档对不对得上代码——交给它盯着;发现问题就整理成社区 issue 提上去,一路跟到修复复测闭环。
采用通用 Agent Skills 格式(SKILL.md + frontmatter),Claude Code / Codex / OpenCode 等 agent 前端通用,装法见安装。
任意 ops 仓、任意 SOC,全程中文交互。仓路径 / SOC / 目标算子一律每次会话询问,不写死;产物统一落在你当前目录的 cann-ops-report/ 下。
按巡检对象分两条线,外加一步环境准备:
主线是 跑测 → 上报 → 跟进 三步;最后一环反哺开头:track-issues 验证通过的修复会写进 FAQ,下次 ops-test 再遇到同样的失败,自动认出来并提示「用已知方案重试」——跑得越久,越省事。
soc950-feature-scan ─→ ops-test ─→ report-issues ─→ track-issues
可选:筛目标算子 真机跑测 失败提 issue 跟进修复复测
↑ │
└── 修复写进 FAQ,自动复用 ────┘
| Skill | 干什么 | 需要什么 | 文档 |
|---|---|---|---|
ops-test |
build → install → 真机跑示例,出带日志 / 复现命令的跑测报告 | 真机 NPU + CANN,传 SOC | → |
report-issues |
把跑测失败的算子整理成社区 issue 草稿(一算子一篇),半自动提交 | 提交需 gh / GITEE_TOKEN / GITCODE_TOKEN |
→ |
track-issues |
查社区回复,读懂修复方案并复测;PASS 就关 issue + 写进 FAQ | 复测需 NPU,提交需 token | → |
soc950-feature-scan(可选) |
按 950 硬件特性(SIMT / HIF8 / RegBase)筛出目标算子清单 | 纯静态,不需 NPU | → |
目标算子清单有三种来源:直接列举算子名、给一个清单文件、或用
soc950-feature-scan的扫描产物。 只在你想按 950 特性挑算子时才需要扫描这一步,其余情况跳过即可。
| Skill | 干什么 | 需要什么 | 文档 |
|---|---|---|---|
tech-docs-guard |
通读技术文档,对照代码找「讲错 / 对不上」,出带证据的体检报告 | 纯静态,不需 NPU | → |
quickstart-check |
忠实模拟新开发者照快速入门文档操作,验证文档能不能跑通 | build/run 步骤需真机 NPU + CANN | → |
| Skill | 干什么 | 需要什么 | 文档 |
|---|---|---|---|
setup-env |
把裸机 / 新服务器搭成能编译、能跑测的环境 | 目标机真跑,有副作用 | → |
<你的 CWD>/
└── cann-ops-report/
├── SUMMARY.md ← 每轮跑完自动生成的跨仓摘要
├── <repo>/ ← 每个被测仓一份:scan/(扫描)+ test/(跑测)
├── issues/ ← 草稿 / 提交记录 / 跟进过程
├── faq/ ← 沉淀的「已知修复」(known_fixes.json + FAQ.md)
├── setup/ ← 环境体检 + 就绪状态
├── tech-docs-guard/ ← 技术文档体检报告
└── doccheck/ ← 快速入门体检的忠实趟 / 探索趟报告
每个子目录里有哪些文件,见对应 skill 文档的「产出」一节。
skills/ 下每个子目录就是一个标准 skill(SKILL.md + 脚本),放进 agent 的 skills 目录即可用。
git clone https://github.com/justbin-coder/cann-ops-test.git
cd cann-ops-test
# Claude Code
mkdir -p ~/.claude/skills
for d in skills/*/; do ln -sfn "$PWD/${d%/}" ~/.claude/skills/"$(basename "$d")"; done
# Codex(OpenCode 也读这个目录)
mkdir -p ~/.agents/skills
for d in skills/*/; do ln -sfn "$PWD/${d%/}" ~/.agents/skills/"$(basename "$d")"; done三家都支持软链,所以 git pull 一次,所有 agent 同步更新。想要拷贝而不是软链,把 ln -sfn 换成 cp -r。只装其中几个 skill,就挑对应目录单独链。
各 agent 认的 skills 目录:
| Agent | 个人级 | 项目级 |
|---|---|---|
| Claude Code | ~/.claude/skills/ |
.claude/skills/ |
| Codex | ~/.agents/skills/ |
.agents/skills/ |
| OpenCode | ~/.config/opencode/skills/、~/.claude/skills/、~/.agents/skills/ |
.opencode/skills/、.claude/skills/、.agents/skills/ |
claude plugin marketplace add https://github.com/justbin-coder/cann-ops-test.git
claude plugin install cann-ops@cann-ops-test别用
justbin-coder/cann-ops-test这种简写——GitHub 简写默认走 SSH 克隆,没配 SSH key 会失败。 用上面的完整 HTTPS URL,或者设CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1再用简写。
直接说需求就能触发(「帮我跑一下 X 仓的算子」);也可以敲命令显式调,两种装法的命令名不同:
- 方式一(skills 目录)→
/ops-test,命令名取自目录名 - 方式二(插件)→
/cann-ops:ops-test,带插件前缀
Claude Code 会自动发现新增的 skill;如果 skills 目录是会话开始后才新建的,重启一次即可。
- NPU:任意 Ascend 系列(910B / 950 / 310P …),跑测时由你指定 SOC。
- CANN toolkit:安装后
ASCEND_HOME_PATH自动设置,无需手动 source。 - Python:3.8+(依赖 jinja2,首次运行自动安装)。
欢迎提 PR 到 main。使用中暴露的问题最值得修复:产出不准、交互不顺、报告混入无效条目,均可直接改进。
例如文档体检报出无效项,收紧 problem-taxonomy.md 的判定标准,比每次人工忽略更根本。不便动手时,提 issue 说明「什么场景、什么产出、为何不合理」同样有效。
| 改什么 | 位置 |
|---|---|
| skill 行为、交互、判定纪律 | skills/<name>/SKILL.md |
| 文档体检的分类与判定标准 | skills/tech-docs-guard/references/problem-taxonomy.md |
| 950 扫描误报排除 | skills/soc950-feature-scan/exemptions/ignore_files.txt、ignore_ops.txt |
| 脚本逻辑 | skills/<name>/scripts/ |
| 报告样式 | skills/<name>/templates/ |
| 使用说明 | docs/ 下对应文档 |
单测须在 skill 目录内运行——各 skill 的 tests/ 同名,从仓根运行会导入冲突:
cd skills/<name>
python3 -m pytest tests/ -q脚本改动需补用例;SKILL.md 等提示词改动无法由单测覆盖,请在 PR 中说明改动前后的行为差异,并附真实产出对比。
- 主页:https://github.com/justbin-coder/cann-ops-test
- License:MIT