本文主要介绍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 的核心特征

1. 渐进式披露设计
Skill 采用三层加载机制,高效利用 Agent 的上下文窗口:
 


这就像一本书的目录始终可见,正文在需要时才翻开,附录资料更是仅在用到时才查阅。

2. 简洁原则
默认假设:Agent 已经很聪明。 只添加 Agent 不知道的知识。每一行内容都要问自己:"这真的值得占用 token 吗?"
3. 适当的自由度设置
根据任务特性匹配控制粒度:

三、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 从"通用助手"进化为"领域专家"的关键机制。它的核心价值:
1. 知识固化:一次创建,永久可用
2. 流程可靠:脚本保证操作一致性
3. 上下文高效:渐进式披露节省 token
4. 易于迭代:单点维护,全局生效

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐