[嵌入式AI从0开始到入土]23_jiuwenclaw+cannskills,让小艺辅助ascendc开发
如何通过jiuwenclaw平台集成CANN Skills技能库(14个Ascend开发相关技能模块)和智能代理,帮助开发者提升NPU开发效率。提供了docker和pip两种安装方式,并演示了模型服务化配置方法。该系列适合昇腾NPU平台开发者,可实现"动嘴指挥AI助手完成算子开发"的高效工作模式。
[嵌入式AI从0开始到入土]嵌入式AI系列教程
注:等我摸完鱼再把链接补上
可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。
往期回顾:我的专栏
文章目录
前言
openJiuwen作为开源Agent平台,致力于提供灵活、强大且易用的AI Agent开发与运行能力。
小艺开放平台依托HarmonyOS生态,为开发者打造全链路智能体开发解决方案。
CANNBot 是面向CANN开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的Skills模块,目前已实现 Ascend C / PyPTO 算子开发全流程覆盖,未来将拓展至 CANN 更多技术领域。
如果你是以下之一,我觉得你非常需要本文,毕竟无缝接入华为设备,动动嘴指挥小艺帮你写算子,查api还是很舒服的。
- CANN 社区开发者
- 昇腾 NPU 平台 AI 应用开发者
- Ascend C / PyPTO 算子开发者
按照本文的步骤,你能实现类似下面的效果。
一、CANNBot Skills包含的主要内容
1.1 Skills 技能库
1.1.1 Ascend C 算子开发
| Skill | 功能 |
|---|---|
| ascendc-api-best-practices | API 使用最佳实践、参数限制 |
| ascendc-npu-arch | NPU 架构知识、芯片型号映射 |
| ascendc-docs-search | API 文档索引 + 在线搜索 |
| ascendc-env-check | NPU 设备查询、CANN 环境验证 |
| ascendc-tiling-design | Tiling和Kernel 设计方法论,按算子类别分类 |
| ascendc-precision-debug | 精度调试,症状-原因速查、常见陷阱 |
| ascendc-runtime-debug | 运行时错误调试,错误码解析、Kernel 挂起排查 |
| ascendc-ut-develop | UT 开发与覆盖率增强 |
| ascendc-st-design | aclnn 接口测试用例设计、L0/L1 用例生成 |
| ascendc-code-review | 代码检视方法论、5 大类别规范 |
| ascendc-task-focus | 任务聚焦,解决长任务"迷失在中间"问题 |
| ascendc-whitebox-design | 白盒测试用例生成 |
| ascendc-registry-invoke-to-direct-invoke | 注册调用算子转 <<<>>> kernel 直调 |
| ascendc-direct-invoke-template | Kernel 直调工程模板,提供验证过的样例工程和修改指南 |
| ops-profiling | NPU 性能采集与分析,CSV 指标解读、瓶颈定位、优化建议 |
| ops-precision-standard | 算子精度标准,按 dtype 分类提供 atol/rtol 精度比对标准 |
| ascendc-docs-gen | 算子文档写作参考,支持需求分析、详细设计等多个标准模版 |
1.1.2 PyPTO 算子开发
| Skill | 功能 |
|---|---|
| pypto-op-design | 算子方案设计生成 |
| pypto-op-develop | 算子代码实现与测试 |
| pypto-golden-generate | Golden 参考实现生成 |
| pypto-intent-understand | 需求意图理解与规格生成 |
| pypto-api-explore | API 可行性探索与分析 |
| pypto-precision-debug | 精度问题代码层排查 |
| pypto-precision-compare | 精度中间结果对比分析 |
| pypto-op-perf-tune | 算子性能分析与自动调优 |
1.2 Agents 智能代理
1.2.1 Ascend C 算子开发
| Agent | 功能 |
|---|---|
| ascendc-ops-architect | 算子架构师,支持需求分析和方案设计两种场景 |
| ascendc-ops-reviewer | 代码检视专家,支持快速检视和全功能检视两种模式 |
| ascendc-kernel-architect | Kernel直调架构师,支持需求分析、API验证、方案设计 |
| ascendc-kernel-developer | Kernel直调开发者,支持代码实现、编译测试、性能采集、文档编写 |
| ascendc-kernel-reviewer | Kernel直调审查者,支持独立构建验证、7维度评分、精度验证 |
1.2.2 PyPTO 算子开发
| Agent | 功能 |
|---|---|
| pypto-op-analyst | 需求分析与方案设计 |
| pypto-op-developer | 算子代码实现与精度调试 |
| pypto-op-perf-tuner | 性能分析与调优 |
二、jiuwenclaw安装
注:openclaw也可以,步骤差不多。但是jiuwenclaw的界面相对来说简洁很多。
2.1 docker
- 这里我已经全部打包好了,直接在终端中执行下面的命令即可。
- 未安装cann-toolkit的版本,可以安装ascendc算子文档查询等skills。
docker run --name jiuwenclaw -it -d --net=host \ -v /tmp:/tmp \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \ swr.cn-north-4.myhuaweicloud.com/toolsmanhehe/jiuwen:0.1.8-py311-ubuntu22.04- 安装了cann-9.0.0-beta.2的版本,支持调用CANNBot Skills通过CPU和NPU进行自动算子开发和测试。注意,需要手动补充nnal和硬件对应的ops包才能在NPU上进行模型适配等工作。
docker run --name jiuwenclaw -it -d --net=host \ -v /tmp:/tmp \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \ swr.cn-north-4.myhuaweicloud.com/toolsmanhehe/jiuwen:0.1.8-cann9.0.0-py311-ubuntu22.04-x86 - 然后使用浏览器访问
http://localhost:5173,局域网使用http://{ip}:5173。
2.2 pip安装
如果不想用容器的话,按照下面的步骤执行也可以。
# 确认python:>=3.11,<3.14
python3 --version
# 安装 JiuwenClaw
pip install jiuwenclaw
# 初始化 JiuwenClaw (首次启动)
jiuwenclaw-init
# 启动 JiuwenClaw
jiuwenclaw-start
# 如需远程访问需要在两个终端中分别执行下面的命令
jiuwenclaw-app
jiuwenclaw-web --host 0.0.0.0 --port 5173
三、CANNBot Skills安装
CANNBot Skills仓库在26年4月经历了一次更新,commit 05fbb2fa之后的版本skills目录不在仓库的根目录下了,导致通过源安装会出现明明添加了源但是看不到skills的问题。此时,我们可以通过手动导入的方式安装。
3.1 从源安装
- 在jiuwenclaw的web页面上找到技能页面,点击源管理。

- 源名称可以自己取,这里我用的是
CANNBot Skills,git仓库地址写https://gitcode.com/cann/skills.git,然后点击添加并启用这个源。
- 关闭源管理界面后,就可以在技能页面看到刚刚添加的技能了。我们可以按需启用技能。

3.2 手动安装
-
进入容器后,将CANNBot Skills仓库拉取到本地。
docker exec -it jiuwenclaw bash git clone https://gitcode.com/cann/skills.git -b 9a8fd0f0 -
复制本地地址,将其填入openclaw管理页面的导入本地技能的对话框中,保存即可。以下是笔者测试过能够成功jiuwenclaw,且可以正常调用的。
/root/skills/ops/skills/ascendc-api-best-practices /root/skills/ops/skills/ascendc-code-review /root/skills/ops/skills/ascendc-direct-invoke-template /root/skills/ops/skills/ascendc-docs-gen /root/skills/ops/skills/ascendc-docs-search /root/skills/ops/skills/ascendc-env-check /root/skills/ops/skills/ascendc-npu-arch /root/skills/ops/skills/ascendc-precision-debug /root/skills/ops/skills/ascendc-registry-invoke-to-direct-invoke /root/skills/ops/skills/ascendc-runtime-debug /root/skills/ops/skills/ascendc-st-design /root/skills/ops/skills/ascendc-task-focus /root/skills/ops/skills/ascendc-tiling-design /root/skills/ops/skills/ascendc-ut-develop /root/skills/ops/skills/ascendc-whitebox-design
-
这里不推荐直接复制skills到openclaw的skills目录下,这样卸载的话就只能手动进入skills目录删除文件了。
四、模型配置
- 这里我在本地Ascend310P上用mindie跑了一个模型。服务化配置如下:
"ipAddress" : "0.0.0.0", "allowAllZeroIpListening" : true, "httpsEnabled" : false, "npuDeviceIds" : [[0,1]], "maxSeqLen" : 32768, "maxInputTokenLen" : 65535, "truncation" : true, "modelName" : "Qwen3-30B-A3B-w8a8", "modelWeightPath" : "/models/Qwen3-30B-A3B-w8a8", "worldSize" : 2, "trustRemoteCode" : true, "maxPrefillTokens" : 65536, "maxIterTimes" : 65536, - 在jiuwenclaw的配置信息中进行模型配置。别忘了点保存。

五、对话测试
-
文档查询
这里我使用的测试问题是使用ascendc-api-best-practices这个技能,帮我查询一下datacopy的使用方法
-
编写add算子,这里我使用的提示词是
帮我用ascendc实现一个add算子z=x+y,你需要先source /usr/local/Ascend/ascend-toolkit/set_env.sh然后就可以使用cpu进行仿真了,请自己新建工程,cpu仿真通过后告诉我。 以下是大模型的部分输出:


六、小艺连接
-
访问小艺开放平台,点击立即体验。

-
点击创建

-
选择openclaw模式,下面的名字和描述自己填写就好了。

-
第一次进来这里会提示还没有凭证,我们根据提示创建,key和安全密钥务必保存好,下面要用。创建后回来智能体编辑界面是这样的。

-
进行一些其他的配置,然后上架这个智能体。

-
回到jiuwenclaw的配置界面,在频道中配置小艺。


-
打开手机的小艺app界面,在对话页面就会出现刚刚创建的智能体。

-
我们进行对话测试,我使用的问题是
搜索 asc-devkit 中 Exp API 的使用示例
七、总结
笔者走完整个流程大概花了2个小时,大部分时间被jiuwenclaw安装卡了。。。
CANNBot Skills的安装和使用倒是没遇到什么大问题,不过可能是没有针对opencalw这种模式优化,在使用的时候有概率不调用安装的skill,但是我们通过指定技能的方式能够实现正确的调用。当然,也有可能是因为笔者刚开始调教我的"油闷大虾"哈。
笔者按照cann skill的说明测试了下面几个场景,模型回答的还是比较准确的,基本没什么错误。在调用skill失败的时候,jiuwenclaw也会降级到websearch,就是多消耗亿点token罢了。
| Skill | 功能 |
|---|---|
| ascendc-api-best-practices | API 使用最佳实践、参数限制 |
| ascendc-npu-arch | NPU 架构知识、芯片型号映射 |
| ascendc-docs-search | API 文档索引 + 在线搜索 |
| ascendc-env-check | NPU 设备查询、CANN 环境验证 |
| ascendc-runtime-debug | 运行时错误调试,错误码解析、Kernel 挂起排查 |
最后,还是建议大家在使用的时候,直接指定技能名称,这样可以有效降低token消耗。
更多推荐



所有评论(0)