CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供plugin、harness等应用模块。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(triton-op-generator): 从 cannbot-skills 迁移 Triton 算子生成插件为官方插件,知识切换 cannbot-knowledge Co-authored-by: w00934874<wujiaping@huawei.com> # message auto-generated for no-merge-commit merge: !130 merge feat/triton-op-generator-migration-1012 into master feat(triton-op-generator): 从 cannbot-skills 迁移 Triton 算子生成插件为官方插件,知识切换 cannbot-knowledge Created-by: w00934874 Commit-by: w00934874 Merged-by: cann-robot Description: ## 描述 【Triton】triton-op-generator 插件从 cannbot-skills 仓迁入,成为官方插件并接入统一安装;知识卡片全部由 cannbot-knowledge 知识库供给(安装时自动克隆,用户零感知 cannbot-skills / cannbot-knowledge 两仓)。 ### 改动内容 - **新增 plugins-official/triton-op-generator/**: - .claude-plugin/plugin.json / .codex-plugin/plugin.json(v1.0.0)、plugin-sources.json(8 个 triton 系列 Skill + knowledge-query + ops-knowledge-ingest,全部来自 vendor/cannbot-skills,symlink 模式)、薄 init.sh(统一安装器入口); - plugin-install.json:声明 cannbot-knowledge 依赖仓,安装时自动浅克隆到 <项目>/.cannbot/dependencies/triton-op-generator/cannbot-knowledge(离线告警跳过,CANNBOT_SKIP_DEPENDENCY_REPOS=1 可关); - hooks/hooks.json + guard 脚本:基线防篡改 PreToolUse hook 改标准布局,由安装器注册进 settings.json(allowlist 增 .cannbot/dependencies/,self_guard 同步新路径,test_guard 22/22 通过); - AGENTS.md(Phase 0-7 编排):知识触点全部切换 KB——Phase 0 新增知识库自举(KB_ROOT 解析 + 索引懒构建);Phase 2 门禁直读 $KB_ROOT/ops/triton/guides/constraints/{category}_constraints.md(attention 家族走路由卡),precheck.json loaded_via=kb_explicit_path(+preflight);Phase 4 checklist 改读 KB debug_checklist 卡;Phase 7 经验写回 KB constraints/runbooks(本地草稿,上游合入走贡献流程);固定配置改为内嵌默认值 + 项目根 triton_op_generator.config.json 覆盖; - utils/ 批跑工具随迁(默认 scripts 路径改 vendor 布局),workflows/render_session.py 供 Phase 6 会话导出; - **marketplace.json**:注册 triton-op-generator 及两个 git-subdir skills ; ## 关联的Issue / 配套 PR cannbot-skills 配套 PR:https://gitcode.com/cann/cannbot-skills/pulls/1353 ## 文档更新 README.md 官方插件表、plugins-official/README.md、CHANGELOG.md、插件 quickstart.md。 ## 类型标签 - [x] 🌟 新特性 - [x] ♻️ 代码重构 See merge request: cann/cannbot!130 | 23 天前 | |
feat(CI): 接入CANNBot PR静态门禁并关联检查记录 Co-authored-by: andingfangt<miaominghao@huawei.com> # message auto-generated for no-merge-commit merge: !134 merge codex/cannbot-pr-static-gates-20261013 into master feat(CI): 接入CANNBot PR静态门禁并关联检查记录 Created-by: andingfangt Commit-by: andingfangt Merged-by: cann-robot Description: 为 CANNBot PR 新增安全扫描和内容审查,复用 A5 Runner02 执行,并上传检查报告。 See merge request: cann/cannbot!134 | 20 天前 | |
从 cannbot-skills 迁移 tilelang2ascendc-ops-generator plugin Co-authored-by: chenshushu2020<chenshushu@huawei.com> # message auto-generated for no-merge-commit merge: !36 merge tilelang-plugin into master 从 cannbot-skills 迁移 tilelang2ascendc-ops-generator plugin Created-by: chenshushu2020 Commit-by: chenshushu2020 Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: [x] 否 [ ] 是 __1. AI Agent 平台: __2. AI 模型: __3. Prompt上下文 : ### PR功能描述 / 为什么需要这个合入**: <!-- 本 PR 做了什么,为什么需要 / What does this PR do and why --> ### 该PR关联的issue *(格式为fixes #<issue号>, 或者resolves #<issue号>)*: fixes # ### 希望检视人员了解: ## 改动类型 / Change Type - [ ] Bug 修复 / Bug Fix - [ ] 新功能 / New Feature - [ ] 性能优化 / Performance - [ ] 代码重构 / Refactoring - [ ] 文档更新 / Documentation - [ ] 测试相关 / Test - [ ] 其它 / Other ## 测试信息 / Testing <!-- 简要测试说明或关键结果 / Brief test description or key results --> - [ ] 单元测试通过 / UT passed - [ ] 集成测试通过 / ST passed - [ ] 人工验证通过 / Manual verified ## 检查清单 / Checklist - [ ] 代码符合规范 / Code follows style guide - [ ] 测试添加并通过 / Tests added and passed - [ ] 文档已更新 / Docs updated if needed - [ ] 无硬编码敏感信息 / No secrets hardcoded - [ ] 提交信息符合规范 / Commit message follows convention See merge request: cann/cannbot!36 | 24 天前 | |
支持嵌套subgraph Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !105 merge improve_subgraph into master 支持嵌套subgraph Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 workflow-orchestrator 原先只允许子图包含普通任务,无法在子图中继续引用子图。本次支持多层 subgraph 嵌套,每层均可混合 normal 和 subgraph 节点,主工作流也可仅包含子图。 - 新增 task_graph.py,由 get_task.py 调用,负责按需展开子图、补全任务 ID 与依赖路径、聚合子图状态,以及生成普通任务候选列表。 - 子图依赖全部通过后才读取对应 YAML,保留上游动态生成下一层子图文件的能力。各层 file 仍相对于 work_dir 解析,depends_on 和 rollback_to 仍引用当前文件中的局部 ID。 - 普通任务使用 outer/middle/inner/task 形式的完整 ID。子图节点不启动 agent、不占并发名额,只有普通任务写入 status.json 的 tasks。 - 逐层聚合完成与跳过状态,防止尚未展开的内层子图导致外层提前完成;同步适配重试、回滚、checkpoint 和人工审批查询。 - 使用 subgraph_members 保存直接成员关系,完成状态仍由普通任务状态推导;兼容旧的单层状态文件,并保留已完成子图在 YAML 清理后的恢复能力。 - 支持兄弟子图复用同一文件,检测沿嵌套路径的文件循环引用(包括符号链接)。 ## 关联的Issue 暂无关联 Issue。 ## 测试 以下结果在本地提交 0b4f3ebe279eba278b9d0212a506dcb150492461 上验证。 ### 自动化测试 bash python3 -m unittest discover -s harness/workflow-orchestrator/tests 结果:**171 项测试全部通过**,其中新增 17 项嵌套子图测试,位于 harness/workflow-orchestrator/tests/test_nested_subgraphs.py。 覆盖多层嵌套、动态生成子图文件、并发限制、逆序 YAML 依赖、完整任务 ID 隔离、逐层跳过与独立分支、文件循环引用、审批通过/驳回/终裁、重试和回滚,以及子图 YAML 清理后的恢复。 bash git diff --check HEAD^ HEAD -- harness/workflow-orchestrator 结果:通过,无空白格式错误。 ### 模拟运行验证 通过 orchestrator.py --dry-run 执行以下两种工作流,均退出码 0: | 场景 | 结构与故障注入 | 结果 | | --- | --- | --- | | 三层纯嵌套 | outer → middle → inner,内层 a → b;模拟 b 首次验证失败并回滚到 a | 3 个普通任务(含顶层 after)全部通过,rollbacks_used = 1 | | normal + subgraph 混合 | outer 和 middle 均包含前置普通任务、嵌套子图、后置普通任务;模拟内层 b 失败并回滚到 a | 8 个普通任务全部通过,rollbacks_used = 1,通过顺序符合依赖 | 混合场景结构: text 主图: start → outer(subgraph) → finish outer: prepare → middle(subgraph) → summarize middle:prepare → inner(subgraph) → summarize inner: a → b 混合场景最终通过顺序: text start → outer/prepare → outer/middle/prepare → outer/middle/inner/a → outer/middle/inner/b → outer/middle/summarize → outer/summarize → finish 已检查状态文件中的完整任务 ID、subgraph_members 成员关系,以及回滚 checkpoint、历史归档、advice 和 verdict 产物。示例产物结构: text .workflow/ ├── status.json ├── log.jsonl ├── checkpoints/outer/middle/inner/a/ ├── history/outer__middle__inner__b.to.outer__middle__inner__a.1/ ├── advice/outer__middle__inner__b.to.outer__middle__inner__a.1.md └── verdicts/ 上述运行使用模拟 agent 和模拟回滚建议,未启动真实 Coding Agent CLI;不代表真实 agent 端到端验证结果。 ## 文档更新 更新 harness/workflow-orchestrator/README.md 和 templates/basic_workflow.yaml,补充嵌套配置示例、路径与依赖作用域、子图状态聚合及恢复规则。 ## 类型标签 - [ ] 🌟 新特性 - [x] ✨ 特性增强 - [ ] 🐛 Bug 修复 - [ ] ⚡ 性能优化 - [x] 🧪 测试用例 - [ ] 📦 构建 / CI - [x] 📝 文档更新 - [ ] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 > > 示例: >  See merge request: cann/cannbot!105 | 28 天前 | |
[L1] fix: 两个 UT 的 __main__ 自测入口调用了拼错的测试函数名(4 处),且自带 sys.path 少一层 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !93 merge fix-orchestrator-ut-selftest-entry into master [L1] fix: 两个 UT 的 __main__ 自测入口调用了拼错的测试函数名(4 处),且自带 sys.path 少一层 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 问题 这两个 UT 文件末尾都有一个把全部用例顺序调一遍的 if __name__ == "__main__": 自测入口,但里面有 4 个调用点的函数名和本文件里定义的函数名**大小写不一致**,另外两行自带的 sys.path 也少了一层,所以这个自测入口现在是跑不起来的。用仓自己 pin 的 ruff(.pre-commit-config.yaml:52-56,ruff-pre-commit rev: v0.14.14,ruff-check 只 --ignore E501,RUF001,RUF002,RUF003,E402,E701,E702,N815,默认规则集里的 F 没被屏蔽)单独扫这两个文件,报的就是这 4 个名字: `` $ python3 -m ruff check --isolated --select F821 --output-format concise \ test_harness_internal_stream_log.py test_port_a3_target_enforce.py test_harness_internal_stream_log.py:112:5: F821 Undefined name test_other_dotted_files_NOT_routed test_harness_internal_stream_log.py:114:5: F821 Undefined name test_user_facing_files_NOT_routed test_port_a3_target_enforce.py:63:5: F821 Undefined name test_port_a3_with_other_nonA5_target_is_overridden test_port_a3_target_enforce.py:64:5: F821 Undefined name test_non_port_a3_mode_target_is_NOT_touched Found 4 errors. ` 对照本文件里真正的定义: | 调用点 | 调用写成 | 定义其实是 | | --- | --- | --- | | plugins-community/ascendc-port-orchestrator/engine/src/scripts/orchestrator/tests/ut/test_harness_internal_stream_log.py:112 | test_other_dotted_files_NOT_routed() | test_other_dotted_files_not_routed()(L59) | | plugins-community/ascendc-port-orchestrator/engine/src/scripts/orchestrator/tests/ut/test_harness_internal_stream_log.py:114 | test_user_facing_files_NOT_routed() | test_user_facing_files_not_routed()(L93) | | plugins-community/ascendc-port-orchestrator/engine/src/scripts/orchestrator/tests/ut/test_port_a3_target_enforce.py:63 | test_port_a3_with_other_nonA5_target_is_overridden() | test_port_a3_with_other_nona5_target_is_overridden()(L44) | | plugins-community/ascendc-port-orchestrator/engine/src/scripts/orchestrator/tests/ut/test_port_a3_target_enforce.py:64 | test_non_port_a3_mode_target_is_NOT_touched() | test_non_port_a3_mode_target_is_not_touched()(L51) | 同一个 __main__ 块里另外两个调用点(test_stream_log_files_routed_to_harness() / test_existing_harness_internal_still_routed(),以及 test_port_a3_with_a3_target_is_overridden_to_a5_with_loud_warning() / test_port_a3_with_a5_target_is_unchanged_no_warning())都和定义逐字一致 —— 说明这个入口的本意就是把 4 个用例都跑一遍,只有带 NOT / nonA5 的那几个手抖改了大小写。 顺带第二处:两个文件都在导入前给自己补了一次 sys.path,但都少算了一层: python # test_harness_internal_stream_log.py:32-35 _HERE = Path(__file__).resolve() # .../orchestrator/tests/ut/xxx.py sys.path.insert(0, str(_HERE.parent.parent)) # -> .../orchestrator/tests (少一层) from finalize_pipeline import _is_harness_internal # finalize_pipeline.py 其实在 .../orchestrator/ # test_port_a3_target_enforce.py:22-24 sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from orchestrator import enforce_port_a3_target # orchestrator.py 其实在 .../orchestrator/ tests/ut 往上两格是 tests,要三格才是 orchestrator(同目录的 tests/ut/conftest.py:51 用的就是 Path(__file__).resolve().parents[2],注释还写着 # …/orchestrator)。pytest 跑的时候 conftest 会先把正确路径塞进 sys.path,所以 UT 门禁看不出问题;但按文件自己写的 path 直接 python3 <file> 就会停在导入那一步。 ## 本机实测 在 .../orchestrator/tests/ut/ 目录里原样执行(Python 3.13): $ python3 test_harness_internal_stream_log.py File ".../tests/ut/test_harness_internal_stream_log.py", line 35, in <module> from finalize_pipeline import _is_harness_internal # noqa: E402 ModuleNotFoundError: No module named 'finalize_pipeline' $ python3 test_port_a3_target_enforce.py File ".../tests/ut/test_port_a3_target_enforce.py", line 24, in <module> from orchestrator import enforce_port_a3_target ModuleNotFoundError: No module named 'orchestrator' 把 sys.path 改成 parents[2]、4 个函数名改回定义里的写法之后,同一目录、同一命令,两个文件都跑到底并正常退出(各自的 logging.info("OK") / logging.info("all DEBT-PORT-A3-TARGET-ENFORCE tests passed") 就是收尾行): $ python3 test_port_a3_target_enforce.py ; echo exit=$? exit=0 $ python3 test_harness_internal_stream_log.py ; echo exit=$? exit=0 也就是说这 4 个用例本身是过的 —— 改名不会把哪个断言暴露成失败,只是让这个自测入口真的能被执行到。 ## 修改 - 2 处 sys.path.insert(...):.parent.parent -> .parents[2](与同目录 conftest.py 一致) - 4 处 __main__ 里的调用名:改成文件中定义的函数名(NOT -> not、nonA5 -> nona5`) 不改任何断言、不改测试逻辑本身。这个插件在仓里还有一份同路径的拷贝(本 PR 只改本仓这一份)。 See merge request: cann/cannbot!93 | 16 天前 | |
增加性能估算,完善quickstart描述 Co-authored-by: cann_wangyq<wangyuqing33@huawei.com> # message auto-generated for no-merge-commit merge: !137 merge master into master 增加性能估算,完善quickstart描述 Created-by: cann_wangyq Commit-by: cann_wangyq Merged-by: cann-robot Description: ## 描述 增加性能估算estimate,完善quickstart描述 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单的链接。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🌟 新特性 - [ ] ✨ 特性增强 - [ ] 🐛 Bug 修复 - [ ] ⚡ 性能优化 - [ ] 🧪 测试用例 - [ ] 📦 构建 / CI - [ ] 📝 文档更新 - [ ] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 > > 示例: >  See merge request: cann/cannbot!137 | 17 天前 | |
增加性能估算,完善quickstart描述 Co-authored-by: cann_wangyq<wangyuqing33@huawei.com> # message auto-generated for no-merge-commit merge: !137 merge master into master 增加性能估算,完善quickstart描述 Created-by: cann_wangyq Commit-by: cann_wangyq Merged-by: cann-robot Description: ## 描述 增加性能估算estimate,完善quickstart描述 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单的链接。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🌟 新特性 - [ ] ✨ 特性增强 - [ ] 🐛 Bug 修复 - [ ] ⚡ 性能优化 - [ ] 🧪 测试用例 - [ ] 📦 构建 / CI - [ ] 📝 文档更新 - [ ] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 > > 示例: >  See merge request: cann/cannbot!137 | 17 天前 | |
infra(pre-commit): 引入 pre-commit/OAT 检查体系 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !51 merge pre-commit into master infra(pre-commit): 引入 pre-commit/OAT 检查体系 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/cannbot/issues/16 ## 描述 #### ✨ 特性增强 仓内无提交期检查(Issue #16)。引入 pre-commit + OAT 检查体系(skills-dev PR#191 同款实现,经本仓 --all-files 全量实测校准),8 文件 +923。 | 件 | 内容 | |---|---| | .pre-commit-config.yaml | 五套钩子(同上体系) | | OAT.xml | **以本仓定制版为底**(保留 vendor/cannbot-skills 子模块、script/ MIT 安装器豁免),增量:Huawei 版权策略项 + yaml/yml/csv/png/mjs 豁免;后补 script/.* 入头策略过滤器(MIT 文件双标修正)、*.golden(测试基准件)、*.jsonl 豁免 | | scripts/ | 三件套(同上) | | .clang-format | Google 基线 + 指针左对齐 | | docs/pre-commit_guide.md | 使用指南 | | .gitignore | 忽略 pre-commit_reports/ | ### 校准结果(--all-files 实测) 私钥/JSON/YAML/OAT 全过;codespell 白名单补 pre-empt 系列与 unparseable(合法变体)后仅余 2 条真 typo;ruff 残留全真问题(F821 37/F841 23/E741 23/F401 6);OAT 豁免后残留为 sh/CMakeLists/py 缺头真实存量债。 ### 检视意见驱动的后续修复(已并入本提交) - **oat_check.sh**:① 批扫描修复——-f argv 逗号串超 MAX_ARG_STRLEN 即 E2BIG 且异常退出曾被当"通过"(大文件量静默失效),改为 120KB 自动分批 + 失败阻塞;② eval 改数组传参加引(防 ()/&/[] 路径打断 shell);③ done-marker 补第四处守卫("无报告"分支限无参落盘,防 args 子集冒充全量) - **format_cpp.sh**:排除目录尾斜杠致 find -path 永不匹配、prune 失效(@Huang-Peng 检视)——去尾斜杠 - **.clang-format**:PointerAlignment: Left(int* p 指针随类型,领导确认口径,引用同规则)+ 年份 2026 - 顺带:脚本乱码 ??→→;OAT.xml *.mjs 重复豁免去重 ## 测试 - 本提交自身过全部钩子(含 OAT 分批真实扫描);yaml/xml/bash 语法全过 - 残留命中均为真实存量债(缺头),按增量消化(不建议 --all-files 翻旧账) ## 类型标签 - [x] ✨ 特性增强 See merge request: cann/cannbot!51 | 1 个月前 | |
feat(dsl): 增加精度验证后检视修复与子图可视化 Co-authored-by: Junren6415<joestranberg99@gmail.com> # message auto-generated for no-merge-commit merge: !150 merge workflow_dev into master feat(dsl): 增加精度验证后检视修复与子图可视化 Created-by: Junren6415 Commit-by: Junren6415 Merged-by: cann-robot Description: ## 描述 CANNBotDSL 算子完成全量精度验证后,先进行可读性检视与修复,再进入性能摸底,避免交付前才发现风格问题而缺少修复与功能回归闭环。 | 能力 | 行为与价值 | |---|---| | 检视修复 | baseline → review → fix;执行 Agent 管理 Git 基线、候选版本与恢复,使用原测试入口完成全量回归;验收 Agent 依据检视报告、修复报告、源码及原始结果判断放行。基线检查脚本仅只读核对提交及冻结资产。 | | 失败托底 | 每次派发完成本轮修复与回归,验收未通过由 core 按节点预算重试。本轮功能失败先恢复基线;验收者核对实际剩余预算,有预算时返回失败重试,最后一轮才可验收有效基线托底,并保留整改未通过结论。 | | 子图可视化 | 展示子节点、依赖、回滚连线及只读提示词;区分规划预览和实际运行子图,支持返回上级图及文件热更新。 | ## 关联的Issue https://gitcode.com/cann/cannbot/issues/75 ## 测试 工作流维护回归 54 项、子图解析回归 6 项,以及 Ruff 和 git diff --check 通过;覆盖基线只读检查、漏提交及源码不一致拦截、组装中断恢复和公开 harness CLI 联通验证。 ## 文档更新 更新插件 README、QUICKSTART、流程 Skill、节点提示词及可视化工具使用说明。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🌟 新特性 - [ ] ✨ 特性增强 - [x] 🐛 Bug 修复 - [ ] ⚡ 性能优化 - [x] 🧪 测试用例 - [ ] 📦 构建 / CI - [x] 📝 文档更新 - [ ] 🔧 配置变更 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] ♻️ 代码重构 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: ## 流水线故障排查 <!-- 如果下方的流水线检查未通过,可参考以下指引进行自助修复 --> > **UT_Test 未通过?** > 请在下方流水线表格的 **UT_Test** 行,点击右侧的 >>>>> 下载 **CANNBot-skills UT 测试报告**(HTML 格式)。 > 打开报告后,展开页面中的「UT Test 失败修复指南」,复制其中的提示词并粘贴给 Agent,Agent 将根据日志自动定位并修复问题。 > > 示例: >  See merge request: cann/cannbot!150 | 21 天前 | |
feat(hccl-op-generator): 新增集合通信领域算子开发插件 Co-authored-by: cann_wangyq<wangyuqing33@huawei.com> Co-authored-by: gcw_ceFcSOhT<fangmiao2@huawei.com> # message auto-generated for no-merge-commit merge: !124 merge feat/hccl-op-dev-plugin-fix into master feat(hccl-op-generator): 新增集合通信领域算子开发插件 Created-by: cann_wangyq Commit-by: cann_wangyq;gcw_ceFcSOhT Merged-by: cann-robot Description: 新增内容 将 HCCL 标准通信算子开发插件(hccl-op-dev)从 cannbot-hccl 仓迁移至本仓,对应 Skills 贡献至 cannbot-skills 仓的 communication/ 目录。 插件契约(plugins-official/hccl-op-dev/) 文件 说明 plugin-sources.json 声明 14 个 Skill 映射到 vendor/cannbot-skills/communication/ .claude-plugin/plugin.json 插件清单(v1.2.3,依赖 hccl-op-dev-skills) .codex-plugin/plugin.json Codex 插件清单 init.sh 17 行薄适配器,委托统一安装器 AGENTS.md HCCLBot 编排器定义(4 Agent 状态机) Agents(4 个) hccl-architect — 需求、设计和测试计划 hccl-developer — 生产源码和开发日志 hccl-reviewer — 独立检视结论 hccl-verifier — 基线、构建、安装、测试和原始证据 Workflows AICPU 多 Agent 状态机(aicpu-multi-agent-workflow.md) CCU 兼容旧流程(task-prompts.md) 流程策略校验器(workflow_policy.py)+ 产物门禁(validate_aicpu_artifacts.py) 13 个模板文件 + 5 个测试文件 Marketplace 注册 hccl-op-dev-skills(category: skills,git-subdir 指向 cannbot-skills communication/) hccl-op-dev(category: development,依赖 hccl-op-dev-skills) 关键变更 412 行自定义 init.sh → 17 行薄适配器(统一安装器接管安装逻辑) INCLUDED_SKILLS 硬编码白名单 → plugin-sources.json 声明式映射 ../../communication 硬编码路径 → vendor/cannbot-skills submodule 文档 迁移 4 个 HCCL 开发文档至 docs/: hccl-op-dev-adaptation-plan.md(适配方案) hccl-allreduce-fused-dev-summary.md / hccl-allreduce-v2-dev-summary.md(AllReduce 开发总结) agent/hccl-aicpu-multi-agent-refactor.md(多 Agent 重构记录) Closes #13 See merge request: cann/cannbot!124 | 24 天前 | |
infra(pre-commit): 引入 pre-commit/OAT 检查体系 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !51 merge pre-commit into master infra(pre-commit): 引入 pre-commit/OAT 检查体系 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/cannbot/issues/16 ## 描述 #### ✨ 特性增强 仓内无提交期检查(Issue #16)。引入 pre-commit + OAT 检查体系(skills-dev PR#191 同款实现,经本仓 --all-files 全量实测校准),8 文件 +923。 | 件 | 内容 | |---|---| | .pre-commit-config.yaml | 五套钩子(同上体系) | | OAT.xml | **以本仓定制版为底**(保留 vendor/cannbot-skills 子模块、script/ MIT 安装器豁免),增量:Huawei 版权策略项 + yaml/yml/csv/png/mjs 豁免;后补 script/.* 入头策略过滤器(MIT 文件双标修正)、*.golden(测试基准件)、*.jsonl 豁免 | | scripts/ | 三件套(同上) | | .clang-format | Google 基线 + 指针左对齐 | | docs/pre-commit_guide.md | 使用指南 | | .gitignore | 忽略 pre-commit_reports/ | ### 校准结果(--all-files 实测) 私钥/JSON/YAML/OAT 全过;codespell 白名单补 pre-empt 系列与 unparseable(合法变体)后仅余 2 条真 typo;ruff 残留全真问题(F821 37/F841 23/E741 23/F401 6);OAT 豁免后残留为 sh/CMakeLists/py 缺头真实存量债。 ### 检视意见驱动的后续修复(已并入本提交) - **oat_check.sh**:① 批扫描修复——-f argv 逗号串超 MAX_ARG_STRLEN 即 E2BIG 且异常退出曾被当"通过"(大文件量静默失效),改为 120KB 自动分批 + 失败阻塞;② eval 改数组传参加引(防 ()/&/[] 路径打断 shell);③ done-marker 补第四处守卫("无报告"分支限无参落盘,防 args 子集冒充全量) - **format_cpp.sh**:排除目录尾斜杠致 find -path 永不匹配、prune 失效(@Huang-Peng 检视)——去尾斜杠 - **.clang-format**:PointerAlignment: Left(int* p 指针随类型,领导确认口径,引用同规则)+ 年份 2026 - 顺带:脚本乱码 ??→→;OAT.xml *.mjs 重复豁免去重 ## 测试 - 本提交自身过全部钩子(含 OAT 分批真实扫描);yaml/xml/bash 语法全过 - 残留命中均为真实存量债(缺头),按增量消化(不建议 --all-files 翻旧账) ## 类型标签 - [x] ✨ 特性增强 See merge request: cann/cannbot!51 | 1 个月前 | |
迁移 CANNBot 插件编排与交付仓库 Co-authored-by: chendunyang<chendunyang1@huawei.com> # message auto-generated for no-merge-commit merge: !1 merge migration/import-cannbot-test into master 迁移 CANNBot 插件编排与交付仓库 Created-by: qq_37913898 Commit-by: chendunyang Merged-by: cann-robot Description: ## 迁移说明 将 CANNBot 插件编排、交付能力和静态插件门户迁移至 cann/cannbot。 ## 主要内容 - 导入官方插件、统一安装器和 npm 发布工程; - 将算子测试插件切换为 ascendc-st-design,对应 ops/ascendc-st-design Skill,支持参数定义、测试因子、约束分析及 L0/L1/L2 ST 用例与覆盖报告; - 引入 vendor/cannbot-skills submodule,通过 gitlink 锁定可复现的 Skill 版本; - 支持同一项目安装多个官方插件,独立管理指令区块和安装记录; - 为组装包和安装目标随附插件与 Skills 许可证,明确 npm 混合许可证边界; - 增加发布前完整测试和实际 tgz/npm-bin smoke test; - 补齐 npm 新仓元数据、Skills 显式更新命令、HTTPS 插件链接和发布文档; - 纳入静态网站,更新算子测试卡片、插件文档、中英文文案和五客户端安装命令; - 已发布 npm 1.3.2,后续从 cann/cannbot 发布和维护; - 将全部迁移内容整理为基于目标仓 master 的单个提交。 ## 验证 - cd script && npm test:40 项测试全部通过; - cd script && npm run pack:check:npm dry-run 打包通过; - cd script && npm run pack:smoke:实际 tgz 安装和 cannbot npm bin 验证通过; - cd script && npm run prepublishOnly:完整发布前门禁通过; - 从公共 npm registry 全新下载 1.3.0,OpenCode、Codex、Claude Code、TRAE、DSH 五种安装目标全部通过; - 公共包内 ascendc-st-design Python 生成脚本可启动; - 网站已部署至 https://cann.cannbot.cn,首页、ascendc-st-design 插件直达页和静态资源公网验收通过; - GitCode 服务端 Hooks 检查通过。 See merge request: cann/cannbot!1 | 2 个月前 | |
infra(pre-commit): 引入 pre-commit/OAT 检查体系 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !51 merge pre-commit into master infra(pre-commit): 引入 pre-commit/OAT 检查体系 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/cannbot/issues/16 ## 描述 #### ✨ 特性增强 仓内无提交期检查(Issue #16)。引入 pre-commit + OAT 检查体系(skills-dev PR#191 同款实现,经本仓 --all-files 全量实测校准),8 文件 +923。 | 件 | 内容 | |---|---| | .pre-commit-config.yaml | 五套钩子(同上体系) | | OAT.xml | **以本仓定制版为底**(保留 vendor/cannbot-skills 子模块、script/ MIT 安装器豁免),增量:Huawei 版权策略项 + yaml/yml/csv/png/mjs 豁免;后补 script/.* 入头策略过滤器(MIT 文件双标修正)、*.golden(测试基准件)、*.jsonl 豁免 | | scripts/ | 三件套(同上) | | .clang-format | Google 基线 + 指针左对齐 | | docs/pre-commit_guide.md | 使用指南 | | .gitignore | 忽略 pre-commit_reports/ | ### 校准结果(--all-files 实测) 私钥/JSON/YAML/OAT 全过;codespell 白名单补 pre-empt 系列与 unparseable(合法变体)后仅余 2 条真 typo;ruff 残留全真问题(F821 37/F841 23/E741 23/F401 6);OAT 豁免后残留为 sh/CMakeLists/py 缺头真实存量债。 ### 检视意见驱动的后续修复(已并入本提交) - **oat_check.sh**:① 批扫描修复——-f argv 逗号串超 MAX_ARG_STRLEN 即 E2BIG 且异常退出曾被当"通过"(大文件量静默失效),改为 120KB 自动分批 + 失败阻塞;② eval 改数组传参加引(防 ()/&/[] 路径打断 shell);③ done-marker 补第四处守卫("无报告"分支限无参落盘,防 args 子集冒充全量) - **format_cpp.sh**:排除目录尾斜杠致 find -path 永不匹配、prune 失效(@Huang-Peng 检视)——去尾斜杠 - **.clang-format**:PointerAlignment: Left(int* p 指针随类型,领导确认口径,引用同规则)+ 年份 2026 - 顺带:脚本乱码 ??→→;OAT.xml *.mjs 重复豁免去重 ## 测试 - 本提交自身过全部钩子(含 OAT 分批真实扫描);yaml/xml/bash 语法全过 - 残留命中均为真实存量债(缺头),按增量消化(不建议 --all-files 翻旧账) ## 类型标签 - [x] ✨ 特性增强 See merge request: cann/cannbot!51 | 1 个月前 | |
迁移 CANNBot 插件编排与交付仓库 Co-authored-by: chendunyang<chendunyang1@huawei.com> # message auto-generated for no-merge-commit merge: !1 merge migration/import-cannbot-test into master 迁移 CANNBot 插件编排与交付仓库 Created-by: qq_37913898 Commit-by: chendunyang Merged-by: cann-robot Description: ## 迁移说明 将 CANNBot 插件编排、交付能力和静态插件门户迁移至 cann/cannbot。 ## 主要内容 - 导入官方插件、统一安装器和 npm 发布工程; - 将算子测试插件切换为 ascendc-st-design,对应 ops/ascendc-st-design Skill,支持参数定义、测试因子、约束分析及 L0/L1/L2 ST 用例与覆盖报告; - 引入 vendor/cannbot-skills submodule,通过 gitlink 锁定可复现的 Skill 版本; - 支持同一项目安装多个官方插件,独立管理指令区块和安装记录; - 为组装包和安装目标随附插件与 Skills 许可证,明确 npm 混合许可证边界; - 增加发布前完整测试和实际 tgz/npm-bin smoke test; - 补齐 npm 新仓元数据、Skills 显式更新命令、HTTPS 插件链接和发布文档; - 纳入静态网站,更新算子测试卡片、插件文档、中英文文案和五客户端安装命令; - 已发布 npm 1.3.2,后续从 cann/cannbot 发布和维护; - 将全部迁移内容整理为基于目标仓 master 的单个提交。 ## 验证 - cd script && npm test:40 项测试全部通过; - cd script && npm run pack:check:npm dry-run 打包通过; - cd script && npm run pack:smoke:实际 tgz 安装和 cannbot npm bin 验证通过; - cd script && npm run prepublishOnly:完整发布前门禁通过; - 从公共 npm registry 全新下载 1.3.0,OpenCode、Codex、Claude Code、TRAE、DSH 五种安装目标全部通过; - 公共包内 ascendc-st-design Python 生成脚本可启动; - 网站已部署至 https://cann.cannbot.cn,首页、ascendc-st-design 插件直达页和静态资源公网验收通过; - GitCode 服务端 Hooks 检查通过。 See merge request: cann/cannbot!1 | 2 个月前 | |
infra(pre-commit): 引入 pre-commit/OAT 检查体系 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !51 merge pre-commit into master infra(pre-commit): 引入 pre-commit/OAT 检查体系 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/cannbot/issues/16 ## 描述 #### ✨ 特性增强 仓内无提交期检查(Issue #16)。引入 pre-commit + OAT 检查体系(skills-dev PR#191 同款实现,经本仓 --all-files 全量实测校准),8 文件 +923。 | 件 | 内容 | |---|---| | .pre-commit-config.yaml | 五套钩子(同上体系) | | OAT.xml | **以本仓定制版为底**(保留 vendor/cannbot-skills 子模块、script/ MIT 安装器豁免),增量:Huawei 版权策略项 + yaml/yml/csv/png/mjs 豁免;后补 script/.* 入头策略过滤器(MIT 文件双标修正)、*.golden(测试基准件)、*.jsonl 豁免 | | scripts/ | 三件套(同上) | | .clang-format | Google 基线 + 指针左对齐 | | docs/pre-commit_guide.md | 使用指南 | | .gitignore | 忽略 pre-commit_reports/ | ### 校准结果(--all-files 实测) 私钥/JSON/YAML/OAT 全过;codespell 白名单补 pre-empt 系列与 unparseable(合法变体)后仅余 2 条真 typo;ruff 残留全真问题(F821 37/F841 23/E741 23/F401 6);OAT 豁免后残留为 sh/CMakeLists/py 缺头真实存量债。 ### 检视意见驱动的后续修复(已并入本提交) - **oat_check.sh**:① 批扫描修复——-f argv 逗号串超 MAX_ARG_STRLEN 即 E2BIG 且异常退出曾被当"通过"(大文件量静默失效),改为 120KB 自动分批 + 失败阻塞;② eval 改数组传参加引(防 ()/&/[] 路径打断 shell);③ done-marker 补第四处守卫("无报告"分支限无参落盘,防 args 子集冒充全量) - **format_cpp.sh**:排除目录尾斜杠致 find -path 永不匹配、prune 失效(@Huang-Peng 检视)——去尾斜杠 - **.clang-format**:PointerAlignment: Left(int* p 指针随类型,领导确认口径,引用同规则)+ 年份 2026 - 顺带:脚本乱码 ??→→;OAT.xml *.mjs 重复豁免去重 ## 测试 - 本提交自身过全部钩子(含 OAT 分批真实扫描);yaml/xml/bash 语法全过 - 残留命中均为真实存量债(缺头),按增量消化(不建议 --all-files 翻旧账) ## 类型标签 - [x] ✨ 特性增强 See merge request: cann/cannbot!51 | 1 个月前 | |
feat(triton-op-generator): 从 cannbot-skills 迁移 Triton 算子生成插件为官方插件,知识切换 cannbot-knowledge Co-authored-by: w00934874<wujiaping@huawei.com> # message auto-generated for no-merge-commit merge: !130 merge feat/triton-op-generator-migration-1012 into master feat(triton-op-generator): 从 cannbot-skills 迁移 Triton 算子生成插件为官方插件,知识切换 cannbot-knowledge Created-by: w00934874 Commit-by: w00934874 Merged-by: cann-robot Description: ## 描述 【Triton】triton-op-generator 插件从 cannbot-skills 仓迁入,成为官方插件并接入统一安装;知识卡片全部由 cannbot-knowledge 知识库供给(安装时自动克隆,用户零感知 cannbot-skills / cannbot-knowledge 两仓)。 ### 改动内容 - **新增 plugins-official/triton-op-generator/**: - .claude-plugin/plugin.json / .codex-plugin/plugin.json(v1.0.0)、plugin-sources.json(8 个 triton 系列 Skill + knowledge-query + ops-knowledge-ingest,全部来自 vendor/cannbot-skills,symlink 模式)、薄 init.sh(统一安装器入口); - plugin-install.json:声明 cannbot-knowledge 依赖仓,安装时自动浅克隆到 <项目>/.cannbot/dependencies/triton-op-generator/cannbot-knowledge(离线告警跳过,CANNBOT_SKIP_DEPENDENCY_REPOS=1 可关); - hooks/hooks.json + guard 脚本:基线防篡改 PreToolUse hook 改标准布局,由安装器注册进 settings.json(allowlist 增 .cannbot/dependencies/,self_guard 同步新路径,test_guard 22/22 通过); - AGENTS.md(Phase 0-7 编排):知识触点全部切换 KB——Phase 0 新增知识库自举(KB_ROOT 解析 + 索引懒构建);Phase 2 门禁直读 $KB_ROOT/ops/triton/guides/constraints/{category}_constraints.md(attention 家族走路由卡),precheck.json loaded_via=kb_explicit_path(+preflight);Phase 4 checklist 改读 KB debug_checklist 卡;Phase 7 经验写回 KB constraints/runbooks(本地草稿,上游合入走贡献流程);固定配置改为内嵌默认值 + 项目根 triton_op_generator.config.json 覆盖; - utils/ 批跑工具随迁(默认 scripts 路径改 vendor 布局),workflows/render_session.py 供 Phase 6 会话导出; - **marketplace.json**:注册 triton-op-generator 及两个 git-subdir skills ; ## 关联的Issue / 配套 PR cannbot-skills 配套 PR:https://gitcode.com/cann/cannbot-skills/pulls/1353 ## 文档更新 README.md 官方插件表、plugins-official/README.md、CHANGELOG.md、插件 quickstart.md。 ## 类型标签 - [x] 🌟 新特性 - [x] ♻️ 代码重构 See merge request: cann/cannbot!130 | 23 天前 | |
迁移 CANNBot 插件编排与交付仓库 Co-authored-by: chendunyang<chendunyang1@huawei.com> # message auto-generated for no-merge-commit merge: !1 merge migration/import-cannbot-test into master 迁移 CANNBot 插件编排与交付仓库 Created-by: qq_37913898 Commit-by: chendunyang Merged-by: cann-robot Description: ## 迁移说明 将 CANNBot 插件编排、交付能力和静态插件门户迁移至 cann/cannbot。 ## 主要内容 - 导入官方插件、统一安装器和 npm 发布工程; - 将算子测试插件切换为 ascendc-st-design,对应 ops/ascendc-st-design Skill,支持参数定义、测试因子、约束分析及 L0/L1/L2 ST 用例与覆盖报告; - 引入 vendor/cannbot-skills submodule,通过 gitlink 锁定可复现的 Skill 版本; - 支持同一项目安装多个官方插件,独立管理指令区块和安装记录; - 为组装包和安装目标随附插件与 Skills 许可证,明确 npm 混合许可证边界; - 增加发布前完整测试和实际 tgz/npm-bin smoke test; - 补齐 npm 新仓元数据、Skills 显式更新命令、HTTPS 插件链接和发布文档; - 纳入静态网站,更新算子测试卡片、插件文档、中英文文案和五客户端安装命令; - 已发布 npm 1.3.2,后续从 cann/cannbot 发布和维护; - 将全部迁移内容整理为基于目标仓 master 的单个提交。 ## 验证 - cd script && npm test:40 项测试全部通过; - cd script && npm run pack:check:npm dry-run 打包通过; - cd script && npm run pack:smoke:实际 tgz 安装和 cannbot npm bin 验证通过; - cd script && npm run prepublishOnly:完整发布前门禁通过; - 从公共 npm registry 全新下载 1.3.0,OpenCode、Codex、Claude Code、TRAE、DSH 五种安装目标全部通过; - 公共包内 ascendc-st-design Python 生成脚本可启动; - 网站已部署至 https://cann.cannbot.cn,首页、ascendc-st-design 插件直达页和静态资源公网验收通过; - GitCode 服务端 Hooks 检查通过。 See merge request: cann/cannbot!1 | 2 个月前 | |
feat(cake): 引入 CAKE2 社区插件与 plugins-community 通道 Co-authored-by: Junyifannnn<fan.junyi@huawei.com> # message auto-generated for no-merge-commit merge: !15 merge feat/add-plugins-community-channel into master feat(cake): 引入 CAKE2 社区插件与 plugins-community 通道 Created-by: gcw_P2Mh5H1S Commit-by: Junyifannnn Merged-by: cann-robot Description: ## 概述 三个提交,建议逐个评审: 1. b55ef86 — 打通 plugins-community/ 通道(7 个文件)。打包器与安装器原先写死 plugins/,plugins-community/ 下只有 .gitkeep 且全仓无代码读取。 2. c1bfbc1 — 引入 CAKE2 社区插件(19 技能),内容取自 cann/cannbot-skills 已合入 master 的同一份副本,逐字节一致。 3. aec2069 — 按开源软件成分扫描结果更正第三方署名(47 个文件)。 第 2 个提交是内容现状,第 3 个提交是全部许可相关改动。**评审许可问题只需读第 3 个提交。** ## 一、通道(b55ef86,7 文件) 社区插件的目录名与清单 name 不要求一致——cake 的目录是 collaborative-agent-kernel-evolution,清单 name 是 cake——因此社区通道按清单 name 建索引,目录名只作存放位置。plugins/ 保持原规则:目录名即插件 id,不一致即报错。 | 文件 | 内容 | |---|---| | script/lib/plugin-bundle.js | 新增 findPluginDirectory;社区根按清单 name 匹配,官方根保留目录名与 name 一致的断言;社区插件不套用插件根许可 | | script/bin/cannbot.js | resolvePluginDir 增加 plugins-community 与 dist/plugins-community;新增 agent/workflow 正文的技能路径改写;新增跨插件技能重名判定 | | script/test/install.test.js | 辅助函数插件根参数化;marketplace 断言按 source 前缀区分官方与社区;每个 git-subdir 条目一律断言 source.sha === gitlink;新增 6 项用例 | | script/scripts/assemble-plugins.js、plugins/README.md、docs/repository-guide.md、CHANGELOG.md | 日志、文档与变更记录 | 三项行为变更:**技能路径改写**(agent 正文的 skills/<name>/ 改写为安装后的绝对路径,只匹配已解析出的技能名,散文不受影响);**跨插件技能重名按解析后的源路径判定**(源路径相同放行,即合法复用;不同则报错点名。安装记录新增 skillSources 字段,记录中路径已不存在时视为过期记录);**preserveSkillInvocationPolicy 开关**(置真时技能的 disable-model-invocation 保留作者原值;不设该键时行为与现状一致)。 ## 二、cake 内容(c1bfbc1,498 文件) 495 个文件与 cann/cannbot-skills 02e9a93f 的同名文件逐字节一致(diff -r 验证)。唯一差异是 .claude-plugin/plugin.json 的三行:version 由 0.1.1 改为 0.2.0(使两仓并存期间两份副本在坐标上可区分),homepage 与 repository 改指 cannbot。 新增登记文件(cake 在 cannbot-skills 侧没有这些):plugin-sources.json(skillInstallMode 为 symlink,skills 为空数组——19 技能版本不引用 submodule 中的任何技能,因此本 PR 不涉及 gitlink;preserveSkillInvocationPolicy 置真)、init.sh(并补 CANN-2.0 许可头,所照的模板自身缺头)、.codex-plugin/plugin.json、marketplace 条目、OAT.xml 的 Chart.js filteritem。 TileLang、EasyAsc、CV 三条轨道的其余 12 个技能另行提交。 ## 三、第三方署名更正(aec2069,47 文件) 扫描共 50 项命中、48 个文件。**41 项登记为第三方,9 项申请判定误报。** ### 登记(41 项) **40 个文件取自 just-it/ascendopgenagent**(commit d530e7b,按 Apache-2.0 提供)。实测该仓库对应文件最早提交为 2026-03-14 至 03-16,CAKE2 侧为 2026-03-18,由同一次提交一次性引入。原「Copyright (c) 2026 Huawei Technologies Co., Ltd. + CANN-2.0」头替换为: Derived from https://github.com/just-it/ascendopgenagent (commit d530e7b), which distributes this content under the Apache License, Version 2.0. See LICENSE-APACHE in the plugin root for the full text of that License. Modifications Copyright (c) 2026 Huawei Technologies Co., Ltd. **署名只陈述取得途径、不陈述权利归属。** 理由:该仓库文件内无任何版权头,其 LICENSE 的版权人字段留空未填;且它并非所记述 DSL 的源头——该 DSL 使用 Triton 的 tl.* 接口,另含 tl.num_vec_cores()、tl.copyout 等昇腾扩展,二者在 TileLang-Ascend 与 EasyAsc 中均不存在,其 README 自述为「基于 Triton/AscendC」并设有 AKG-Triton Agent。本次扫描本身两次把下游副本报成来源(见下),因此不以扫描结果作为权利归属的依据。写「取自何处、按何许可提供」在任何情况下都为真;若日后查明更上游的来源,补一行即可,不必撤回已公开的版权声明。 **skills/reference-generation/references/hardtanh.py** 改写自 Stanford KernelBench 的 KernelBench/level1/32_HardTanh.py(MIT,Copyright (c) 2023 Anne Ouyang, Simon Guo, Azalia Mirhoseini, Scaling Intelligence Lab, Stanford University)。forward 的 9 行文档字符串逐字一致,代码部分只有一行 F.hardtanh 调用。保留 Stanford 版权声明并加修改声明。扫描命中的 sakanaai/robust-kbench 是 KernelBench 的下游(其路径即 tasks/kernelbench/...)。 随本提交交付:LICENSE-APACHE(Apache-2.0 全文,取自上游)、LICENSE-MIT(MIT 全文,含 Stanford 声明)、README.OpenSource(新建,照 cannbot-skills 的 plugins-community/autoresearch 格式,登记三个组件)、OAT.xml(cake filteritem 由 1 条增至 44 条)。 ### 申请判定误报(9 项) **csrc/op.cpp(47%,命中 wzzll123/multikernelbench)与 setup.py(7%×3,命中 ascend/samples 与 evotoolkit×2)**:源头是华为自有的昇腾官方样例 gitee.com/ascend/samples 的 operator/ascendc/0_introduction/1_add_frameworklaunch/CppExtensionInvocation/——扫描自身已将该样例列为 setup.py 的命中来源之一。setup.py 命中区间为第 22–26 行 5 行,与官方样例第 10–14 行逐字节一致;op.cpp 全文 36 行,命中区间 18–34 行即官方样例 csrc/add_custom.cpp 的算子注册块,连中文注释都一致,差异只有算子名,且该样例文件自带 Copyright (C) 2024-2025. Huawei Technologies Co., Ltd. 头。multikernelbench 与 evotoolkit 同为该样例的下游。 **linear_softplus.py(12%,命中 mindspore-ai/akg)**:无逐字一致内容。概述句描述的运算不同(本项目为 linear + softplus,akg 为 weight-normalized linear 且不含 softplus),形参说明本项目用方括号、akg 用圆括号,代码行分别为 F.linear(x, self.weight) 与 self.linear(x)。相同的只是 Google 风格文档字符串骨架。akg 的该文件位于其自身 thirdparty/ 目录下,akg 亦非来源。 **cake-docs-search/scripts/ 下 4 个文件(72–93%,命中 ascend-ai-coding/awesome-ascend-skills)**:本项目在先。CAKE2 于 2026-03-24(commit e03610da)引入 ascendc-docs-search,对方对应文件最早提交为 2026-05-19,晚约 8 周且该路径仅有 1 个提交;命中路径为 external/cannbot/ops/ascendc-docs-search/scripts/,即对方将本项目内容收录进其「外部依赖」目录;对方仓库无许可文件。同一批脚本此前已在 cannbot-skills 侧提交过同样的审核意见。 ## 四、需要评审确认的一项 **合入本 PR 即等于接受:从 40 个文件上移除华为版权声明、降为修改声明,并承认这些内容取自 ascendopgenagent。** 这不是机械改动,请明确确认。 ## 五、与 cannbot-skills 的差异说明 aec2069 使 cake 不再与 cannbot-skills 的同名文件逐字节一致:41 个文件的许可头不同,另新增 3 个文件。这是有意更正。cannbot-skills 侧的同一批文件仍带原署名并已公开,按迁移计划由后续步骤整体删除该副本——在该仓修改不能使已公开的旧版本失效(按 SHA 仍可取到),因此未在该仓另行提交。 .gitignore 的运行期产物条目不在本 PR:与在途 PR !14 在同一处重叠,待其合入后另行提交。 ## 六、验证 - npm --prefix script test:**48 / 48 通过**(含新增 6 项)。 - npm --prefix script run build:plugins:组装为 plugins-community/cake,19 技能——目录名与清单 name 不一致的解析路径由此在真实内容上走通,而非只在夹具上。 - 五种客户端各安装一次(opencode / codex / claude / trae / dsh):均为 19 技能 + 3 个 agent,退出码 0。 - 19 个技能逐个比对源文件与 dist 产物中 disable-model-invocation 的取值:**差异 0**。 - claude 下 hooks 注册到 settings.json:Stop、PostToolUse、PostToolUseFailure 各一条。 - npm --prefix script run pack:check:通过,tarball 内 plugins-community 条目数为 **0**。 - OAT.xml 登记的 44 个路径逐一存在;自行编写文件的 git diff --check 为 0 行。 - 基线 c82cd77,落后 0 个提交。 ## 七、已知项 导入内容中有 845 行尾随空格,git diff --check 会报出。这些行与 cannbot-skills 已合入的字节一致,未作改动——aec2069 之外不引入与来源无关的差异。本次自行编写的文件中该检查为 0 行。 See merge request: cann/cannbot!15 | 1 个月前 | |
feat(triton-op-generator): 从 cannbot-skills 迁移 Triton 算子生成插件为官方插件,知识切换 cannbot-knowledge Co-authored-by: w00934874<wujiaping@huawei.com> # message auto-generated for no-merge-commit merge: !130 merge feat/triton-op-generator-migration-1012 into master feat(triton-op-generator): 从 cannbot-skills 迁移 Triton 算子生成插件为官方插件,知识切换 cannbot-knowledge Created-by: w00934874 Commit-by: w00934874 Merged-by: cann-robot Description: ## 描述 【Triton】triton-op-generator 插件从 cannbot-skills 仓迁入,成为官方插件并接入统一安装;知识卡片全部由 cannbot-knowledge 知识库供给(安装时自动克隆,用户零感知 cannbot-skills / cannbot-knowledge 两仓)。 ### 改动内容 - **新增 plugins-official/triton-op-generator/**: - .claude-plugin/plugin.json / .codex-plugin/plugin.json(v1.0.0)、plugin-sources.json(8 个 triton 系列 Skill + knowledge-query + ops-knowledge-ingest,全部来自 vendor/cannbot-skills,symlink 模式)、薄 init.sh(统一安装器入口); - plugin-install.json:声明 cannbot-knowledge 依赖仓,安装时自动浅克隆到 <项目>/.cannbot/dependencies/triton-op-generator/cannbot-knowledge(离线告警跳过,CANNBOT_SKIP_DEPENDENCY_REPOS=1 可关); - hooks/hooks.json + guard 脚本:基线防篡改 PreToolUse hook 改标准布局,由安装器注册进 settings.json(allowlist 增 .cannbot/dependencies/,self_guard 同步新路径,test_guard 22/22 通过); - AGENTS.md(Phase 0-7 编排):知识触点全部切换 KB——Phase 0 新增知识库自举(KB_ROOT 解析 + 索引懒构建);Phase 2 门禁直读 $KB_ROOT/ops/triton/guides/constraints/{category}_constraints.md(attention 家族走路由卡),precheck.json loaded_via=kb_explicit_path(+preflight);Phase 4 checklist 改读 KB debug_checklist 卡;Phase 7 经验写回 KB constraints/runbooks(本地草稿,上游合入走贡献流程);固定配置改为内嵌默认值 + 项目根 triton_op_generator.config.json 覆盖; - utils/ 批跑工具随迁(默认 scripts 路径改 vendor 布局),workflows/render_session.py 供 Phase 6 会话导出; - **marketplace.json**:注册 triton-op-generator 及两个 git-subdir skills ; ## 关联的Issue / 配套 PR cannbot-skills 配套 PR:https://gitcode.com/cann/cannbot-skills/pulls/1353 ## 文档更新 README.md 官方插件表、plugins-official/README.md、CHANGELOG.md、插件 quickstart.md。 ## 类型标签 - [x] 🌟 新特性 - [x] ♻️ 代码重构 See merge request: cann/cannbot!130 | 23 天前 |
CANNBot
🚀 概述
CANNBot 是 CANN 社区的 Infra 智能体层,用 Agent 完成 AscendC/PyPTO/TileLang/Triton 等各类语言的算子开发、模型迁移与推理优化,并延伸至图模式、Runtime 等更多 CANN 开发场景。
本仓(cannbot)是其应用仓与用户入口,提供工作流编排与场景插件;仓群还包括 cannbot-skills、cannbot-knowledge、cannbot-dsl、cann-bench、cannbot-sentry 等仓库,结构如下。

⚡ 快速开始
npm 安装
npx @cannbot-plugin/cannbot@latest install ${plugin} --tool opencode
源码安装
git clone --recurse-submodules --shallow-submodules https://gitcode.com/cann/cannbot.git
cd cannbot/plugins-official/${plugin}
bash init.sh
${plugin}:插件名称,见官方插件,例如 ops-direct-invoke。
📦 官方插件
| 插件 | 能力 |
|---|---|
ops-direct-invoke |
Ascend C 直调算子开发:以 <<<>>> 直接调用核函数的方式接入 |
ops-registry-invoke |
Ascend C 注册算子开发:经 ACLNN / GEIR 接入框架,以标准算子形式调用 |
model-infer-optimize |
NPU 模型迁移、精度对齐与推理性能优化 |
hccl-op-generator |
HCCL AICPU 标准通信算子开发,四 Agent 状态机工作流 |
triton-op-generator |
Triton-Ascend 算子代码生成与优化(Phase 0-7 直接执行模式),知识卡片由 cannbot-knowledge 知识库供给 |
🧩 社区插件
社区插件属实验孵化性质,清单与完整介绍见 社区插件介绍。