justbin-coder/cann-ops-test

★ 1Forks 1PythonGitHub ↗Compare

README

cann-ops

一套面向开源算子仓的质量巡检看护 agent skills。 算子编不编得过、跑不跑得通,文档对不对得上代码——交给它盯着;发现问题就整理成社区 issue 提上去,一路跟到修复复测闭环。

采用通用 Agent Skills 格式(SKILL.md + frontmatter),Claude Code / Codex / OpenCode 等 agent 前端通用,装法见安装。

任意 ops 仓、任意 SOC,全程中文交互。仓路径 / SOC / 目标算子一律每次会话询问,不写死;产物统一落在你当前目录的 cann-ops-report/ 下。

Skill 分工

按巡检对象分两条线,外加一步环境准备:

一、算子质量 · 闭环巡检

主线是 跑测 → 上报 → 跟进 三步;最后一环反哺开头: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 把裸机 / 新服务器搭成能编译、能跑测的环境 目标机真跑,有副作用 →

产物都放哪:cann-ops-report/

<你的 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 目录即可用。

方式一:软链到 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 Code 插件

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 中说明改动前后的行为差异,并附真实产出对比。

仓库

Contributors

justbin-coder

Issues