CANNBot 工作流安装与使用指南
安装方式
安装 ops-direct-invoke 时,统一安装器按其 plugin-install.json 的 initializeBefore 声明,先完整初始化 ops-perf-optimize,再初始化直调。源码与 npm 安装使用相同顺序、客户端和目标目录;源码两次安装复用同一个已选公共 Skill checkout。性能插件维护自身的 Skill、角色、hooks 和知识依赖,安装记录保留两个插件。
普通用户在目标项目中执行各插件下方的 npx 命令。源码安装进入对应插件目录执行:
cd plugins-official/<plugin>
bash init.sh
对声明公共 Skill 依赖的源码插件,统一安装器会初始化 vendor/cannbot-skills,每次安装从其 origin 获取与 CANNBot 当前分支同名分支的最新提交;远端没有同名分支时回退到 master。CANNBot 处于 detached HEAD 时也使用 master。Skill 软链接到目标项目,不需要先手动初始化子模块。此操作不更新 CANNBot 主仓;主仓更新仍由用户执行。
统一 CLI 和使用通用入口的插件 init.sh 均支持 --skills <SHA|path>:
# 默认同步 cannbot-skills 同名分支,不存在则使用 master
node script/bin/cannbot.js install ops-direct-invoke --source "$PWD" --tool codex --target /absolute/project
# 指定完整提交;本地已存在的提交也可使用 7 位以上短 SHA
bash plugins-official/ops-direct-invoke/init.sh project codex /absolute/project --skills <SHA>
# 使用本地开发仓;相对路径以命令执行目录为基准
bash plugins-official/ops-direct-invoke/init.sh project codex /absolute/project --skills /absolute/cannbot-skills
已有目录优先按路径识别,要求路径是 Git 工作树根目录且含插件声明的 Skill。路径模式不联网、不修改子模块,保留本地未提交内容。SHA 模式只接受 commit 的十六进制 SHA;远端缺失提交需提供完整 SHA,找不到的短 SHA 会报错。显式 --skills 跳过默认分支选择。默认更新和指定 SHA 前会检查子模块工作树,存在未提交修改时停止,不自动清理。远端查询或拉取失败即安装失败,不当作分支缺失触发回退,也不回退旧版本。
公共仓的最新版本可能与某个工作流当前声明的 Skill 名称不一致;缺少声明的 Skill 时安装失败,需通过 --skills 选择与该工作流兼容的提交或本地检出。版本记录用于追溯选择,不代替跨仓兼容性验证。
上述行为仅适用于统一 CLI 和使用通用入口的插件 init.sh;ascendc-port-orchestrator/init.sh 等独立入口未接入,保留原有安装方式。统一安装器对打包安装和不依赖公共 Skill 的插件使用 --skills 会明确报错。npm 打包安装仍复制包内资源。
统一安装记录位于 <目标项目>/<客户端配置目录>/cannbot-plugin.json,例如 .codex/cannbot-plugin.json;同一插件重装会更新记录。source.revisions 保存 CANNBot 主仓 SHA,以及 cannbot-skills 的完整 SHA、选择模式、原始参数、dirty 标志和本地模式的绝对路径。自动选择时 selection 为 latest-branch,requested 保存实际选中的分支名(回退时为 master)。
{
"source": {
"kind": "repository",
"revisions": {
"cannbot": "<主仓完整 SHA>",
"cannbot-skills": {
"selection": "local-path",
"requested": "/absolute/cannbot-skills",
"commit": "<公共仓完整 SHA>",
"dirty": false,
"path": "/absolute/cannbot-skills"
}
}
}
}
默认更新或指定 SHA 可能使子模块 HEAD 与主仓记录的 Gitlink 不同,主仓状态因此显示子模块版本变化。源码安装的软链接指向可变工作树:以后更新该仓,会影响此前安装的项目(指定 SHA 模式也一样)。记录追溯的是安装当时的版本;dirty 为 true 时,SHA 不包含本地未提交内容。需要冻结多个项目的不同版本时,使用独立检出目录并分别通过 --skills <path> 安装。
声明 cannbot-knowledge 依赖的插件在克隆后,统一调用该仓的 install.sh <tool> <target> consumer;仓库更新由统一 CLI 负责,consumer 复用该 checkout。知识仓安装器负责运行依赖、完整仓库 Skill 链接、.cannbot/knowledge.env、资源和索引。统一 CLI 再通过安装后的规范 Query 入口执行只读 discover,确认知识根后将 knowledgeIndex 记为 ready。初始化或检查失败会输出原因和修复命令,保留 pending,不阻断插件安装。
CANNBOT_SKIP_DEPENDENCY_REPOS=1 跳过依赖仓及 consumer;CANNBOT_SKIP_KNOWLEDGE_INDEX=1 仅跳过 consumer 初始化。显式离线、仅消费知识卡时使用 CANNBOT_SKIP_KNOWLEDGE_RESOURCES=1,会映射到 consumer 的 --skip-resources,仍准备并检查检索索引。Python 解释器可通过知识仓支持的 CANNBOT_PYTHON 指定。索引生命周期由知识仓当前安装器管理,旧版 CANNBOT_REBUILD_KNOWLEDGE_INDEX 不再控制索引构建;正常调优与查询不自动重建索引。
算子领域
算子生成
Step 1:一键安装
通过 npm 插件化一键安装。
OpenCode:
npx @cannbot-plugin/cannbot install ops-direct-invoke --tool opencode
Codex:
npx @cannbot-plugin/cannbot install ops-direct-invoke --tool codex
Claude Code:
npx @cannbot-plugin/cannbot install ops-direct-invoke --tool claude
TRAE:
npx @cannbot-plugin/cannbot install ops-direct-invoke --tool trae
DSH:
npx @cannbot-plugin/cannbot install ops-direct-invoke --tool dsh
Step 2:启动 Agent 客户端
在当前项目根目录启动 Agent 客户端。以 OpenCode 为例:
opencode
Step 3:提示词样例
请使用 ops-direct-invoke 工作流,根据当前项目中的算子需求生成完整的 Ascend C Kernel 直调算子。
先分析需求和运行环境,再完成方案设计、代码实现、测试、精度与性能验收。
TileLang 算子开发
npx @cannbot-plugin/cannbot install tilelang-op-orchestrator --tool codex
# 或从源码安装,默认配置写入 TileLang 插件自身目录:
bash plugins-official/tilelang-op-orchestrator/init.sh project codex --skills /absolute/cannbot-skills
--tool 支持 opencode、codex、claude、trae、dsh。启动客户端后描述需求,例如:
使用 tilelang-op-orchestrator 开发一个 float16 的 Abs 算子。先识别本机芯片,按对应平台流程完成设计、生成与测试。
TileLang 源码入口省略安装路径时固定安装到 plugins-official/tilelang-op-orchestrator/,安装后从该目录启动客户端;显式传入路径可选择其他项目。安装时只配置 13 个共享技能、6 个原有角色和完整的 AGENTS.md 入口;工作流保留原来的 workflows/ 目录及正文。会话中依据完整 SoC / NpuArch 证据选择独立的 Ascend910 / Ascend950 工作流,再按该分支准备框架源码与运行环境。详见 TileLang 快速入门。
模型领域
模型迁移与推理优化
Step 1:一键安装
通过 npm 插件化一键安装。
OpenCode:
npx @cannbot-plugin/cannbot install model-infer-optimize --tool opencode
Codex:
npx @cannbot-plugin/cannbot install model-infer-optimize --tool codex
Claude Code:
npx @cannbot-plugin/cannbot install model-infer-optimize --tool claude
TRAE:
npx @cannbot-plugin/cannbot install model-infer-optimize --tool trae
DSH:
npx @cannbot-plugin/cannbot install model-infer-optimize --tool dsh
Step 2:启动 Agent 客户端
在当前项目根目录启动 Agent 客户端。以 OpenCode 为例:
opencode
Step 3:提示词样例
使用 model-infer-optimize,把当前 PyTorch 模型迁移到昇腾 NPU 推理。先建立 CPU 基线,再处理不支持算子和设备适配,最后完成精度对齐、性能分析和优化,并输出可复现的验证命令。