本文主要介绍Nanobot Skil是让 AI Agent 更专业的技能模块。
一、什么是 Skill?
Skill(技能) 是 Nanobot 系统中的核心概念,它是一种模块化、自包含的包,用于扩展 AI Agent 的能力。可以把 Skill 理解为 Agent 的"入职培训手册"------它让一个通用型的 Agent
转变为具备特定领域专业能力的专家。
比如,一个没有 skill 的 Agent 可能知道什么是 Arduino,但不知道如何在 UNO Q 上正确编写 Bridge 通信代码。而加载了 arduino-uno-q skill 后,Agent 就能:
1,正确使用 Wire1 而非 Wire 进行 Qwiic I2C 通信,
2,用 Bridge.call() 而非 subprocess 调用 MCU,
3,启动应用后立即检查状态并查看日志。
一句话定义:Skill 是封装了领域知识、工作流程和工具的模块,让 Agent 在特定场景下"像专家一样工作"。
二、Skill 的核心特征
- 渐进式披露设计
Skill 采用三层加载机制,高效利用 Agent 的上下文窗口:

这就像一本书的目录始终可见,正文在需要时才翻开,附录资料更是仅在用到时才查阅。
- 简洁原则
默认假设:Agent 已经很聪明。 只添加 Agent 不知道的知识。每一行内容都要问自己:"这真的值得占用 token 吗?"
- 适当的自由度设置
根据任务特性匹配控制粒度:

三、Skill 的作用
Skill 为 Agent 提供四大能力:

四、以 arduino-uno-q 为例:一步一步制作 Skill
步骤 1:理解具体需求
首先明确 skill 的使用场景。对于 arduino-uno-q,核心问题是:
-
用户会如何触发?"帮我写个温度监测应用"、"点亮 LED"、"读取 SHT45"
-
Agent 需要知道什么?双架构(MPU/MCU)、Bridge 通信、I2C 设备地址
-
常见错误有哪些?用 Wire 而非 Wire1、用 subprocess 而非 Bridge.call
步骤 2:规划可复用资源
分析需求后,确定 skill 需要哪些资源:

步骤 3:初始化 Skill 目录
使用初始化脚本创建骨架:
scripts/init_skill.py arduino-uno-q --path skills/public --resources scripts,references,assets
生成的目录结构:
arduino-uno-q/
├── SKILL.md # 必需:技能说明(含 frontmatter)
├── scripts/ # 可选:CLI 脚本
├── references/ # 可选:参考文档
└── assets/ # 可选:模板文件
步骤 4:编写 SKILL.md
Frontmatter(触发机制的关键):
---
name: arduino-uno-q
description: Arduino UNO Q App Lab 自主编程
metadata: {"nanobot":{"emoji":"🔧","requires":{"bins":["arduino-app-cli"]},"always":true}}
---
description 是触发机制的核心,必须清晰描述:
- 做什么:UNO Q 编程
- 触发词:编程、传感器、LED、温度、湿度...
Body(核心指令):
# UNO Q 自主编程
UNO Q 双架构:**Linux (MPU)** + **MCU (STM32U585)**
## 核心原则
| 必须 | 禁止 |
|------|------|
| MCU 侧控制硬件(sketch.ino) | Python 侧操作 I2C/GPIO |
| `Bridge.call()` 通信 | subprocess/os.system 调用 bridge |
## Bridge 通信协议
Python → MCU:
Bridge.call("function_name", arg1, arg2)
MCU → Python:
Bridge.notify("event_name", data1, data2)
保持简洁,详细内容放入 references/。
步骤 5:添加捆绑资源
scripts/ - 可执行脚本:
# create_app.sh
#!/bin/bash
mkdir -p "$1"/{python,sketch}
cp assets/*.template "$1/"
references/ - 详细文档:
# programming_guide.md
## 硬件架构
- MPU: Qualcomm QRB2210 (Debian Linux)
- MCU: STM32U585 (Zephyr RTOS)
...
assets/ - 输出模板:
# app.yaml.template
name: App Name
icon: 🔧
description: ""
步骤 6:打包 Skill
验证并打包为 .skill 文件:
scripts/package_skill.py skills/arduino-uno-q
脚本会自动验证:
- YAML frontmatter 格式
- 命名规范
- description 质量
- 文件组织
生成 arduino-uno-q.skill(实际上是 zip 包)。
步骤 7:迭代优化
基于实际使用反馈迭代:
1. 发现 Agent 常用错误 → 添加到"禁止"列表
2. 新传感器支持 → 更新 I2C 地址表
3. 新功能需求 → 添加新的脚本/模板
---
五、Skill vs 传统方案对比

六、进阶:创建更复杂的 Skill
以 unoq-yolo 为例,它扩展了 arduino-uno-q,专门处理 YOLO 目标检测:
unoq-yolo/
├── SKILL.md # YOLO 检测指令
├── scripts/
│ ├── create_yolo_app.sh # 专用创建脚本
│ ├── install_deps.sh # 依赖安装
│ └── download_model.sh # 模型下载
├── references/
│ └── yolo_deployment_guide.md # NPU 加速、模型优化
└── assets/
└── classes.txt # COCO 类别标签
Skill 可以继承和组合,形成技能生态。
总结
Skill 是让 AI Agent 从"通用助手"进化为"领域专家"的关键机制。它的核心价值:
-
知识固化:一次创建,永久可用
-
流程可靠:脚本保证操作一致性
-
上下文高效:渐进式披露节省 token
-
易于迭代:单点维护,全局生效