游乐游手机版
首页/AI教程/文章详情

nanobot源码解析第五篇技能系统详解助力AI秒变专家

时间:2026-05-29 17:34
说实话,第一次看到 nanobot 的 Skills 系统,我的第一印象就是:这也太简洁直观了吧?传统的 AI 框架里,要让 Agent 学会一个新工具——比如查询天气、操作 GitHub——通常需要编写复杂的 Python 类、定义 JSON Schema,还要处理各种回调逻辑。但在 nanobo

说实话,第一次看到 nanobot 的 Skills 系统,我的第一印象就是:这也太简洁直观了吧?传统的 AI 框架里,要让 Agent 学会一个新工具——比如查询天气、操作 GitHub——通常需要编写复杂的 Python 类、定义 JSON Schema,还要处理各种回调逻辑。但在 nanobot 中,你只需要创建一个 Markdown 文件。

没错,就是 Markdown。今天我们就来深入解析一下这个系统的设计理念,看看它如何实现“Markdown 即代码”的巧妙机制。

1. 技能的本质:提示词工程

在 nanobot 中,一个技能就是一个文件夹,核心文件是 SKILL.md。内置技能存放在 project_path/nanobot/skills 下,用户自定义的技能则位于 workspace/.nanobot/skills。以 weather 技能为例:路径是 nanobot/skills/weather/SKILL.md,里面的内容并非复杂的 Python 逻辑,而是直接告诉 AI:“想查天气?运行 curl wttr.in/城市名”。

这个设计思路非常巧妙:既然大模型已经能够理解文档、编写代码,那为什么不直接给它一份操作手册,让它自主执行呢?这正是 Skills 系统最核心的哲学——将技能定义为文本,让 AI 通过阅读来掌握能力。

2. 核心机制:渐进式加载

如果把所有技能的详细说明一股脑儿塞进 Prompt,上下文窗口很快就会耗尽。nanobot 采用了渐进式加载策略,分为两个阶段执行。

第一阶段:技能索引

Agent 启动时,SkillsLoader 会扫描所有技能,提取 SKILL.md 顶部的 YAML 元数据(由前后两个 --- 包裹的部分),其中两个字段最为关键:name(技能名称)和 description(技能描述,简要说明技能的功能)。随后,工作区技能和内置技能的元数据会被合并,生成一个技能索引(采用 XML 语法表示),并插入到系统提示词中。主 Agent 在思考时仅能看到这个索引——它知道有哪些技能可用,但看不到具体内容。

第二阶段:按需读取

当用户询问天气问题时,Agent 会从索引中发现 weather 技能,并调用 read_file 工具读取完整的 SKILL.md。读完它便学会了如何用 curl 查询天气,然后立即执行。下面是一段实际运行日志:

nanobot 源码解析(五):Skills 系统——让 AI 秒变专家

2026-03-17 15:06:44.196 | INFO | nanobot.agent.loop:_process_message:357 - Processing message from cli:user: 上海今天天气
2026-03-17 15:14:27.222 | INFO | nanobot.agent.loop:_run_agent_loop:230 - Tool call: list_dir({"path": "/Users/chaoxu.ren/PycharmProjects/nanobot/nanobot/skills/weather"})
2026-03-17 15:18:53.296 | INFO | nanobot.agent.loop:_run_agent_loop:230 - Tool call: read_file({"path": "/Users/chaoxu.ren/PycharmProjects/nanobot/nanobot/skills/weather/SKILL.md"})
2026-03-17 15:22:42.715 | INFO | nanobot.agent.loop:_run_agent_loop:230 - Tool call: exec({"command": "curl -s "wttr.in/Shanghai?format=3""})
2026-03-17 15:27:02.195 | INFO | nanobot.agent.loop:_run_agent_loop:230 - Tool call: exec({"command": "curl -s "https://api.open-meteo.com/v1/forecast?latitude=31.23&longitude=121.47¤t_weather=true""})
2026-03-17 15:36:59.862 | INFO | nanobot.agent.loop:_process_message:449 - Response to cli:user: 上海今天的天气目前气温约为 10.6°C,天气状况显示为小雨(WMO 代码 61)。风速约为 10.8 km/h。

看到了吧?Agent 先列出天气技能目录,然后读取 SKILL.md,再执行两个 curl 命令获取数据,最后整理回答。整个过程既清晰又高效。

3. 技能的“门槛”:依赖检查

有些技能需要特定的运行环境——比如 github 技能需要安装 gh 命令行工具。nanobot 在元数据中定义了相关依赖:

# SKILL.md 顶部
metadata: {"nanobot":{"requires":{"bins":["curl"]}}}

SkillsLoader 会在加载前自动检查系统路径中是否包含 curl。如果缺失,该技能会被标记为“不可用”,并明确告知 AI 缺少什么依赖。这种自愈式的设计极大降低了配置错误的概率。当然,某些 Agent 也可以自行执行命令去安装依赖,但框架至少保证了错误不会莫名其妙地发生。

4. skills 的这种设计真的很高级

  1. 极低的学习成本:任何会写 Markdown 和简单脚本的人,都能为 nanobot 开发新技能。
  2. 极致的灵活性:你随时可以在 ~/.nanobot/workspace/skills 下新建文件夹,放入一个 SKILL.md,Agent 瞬间就获得了新能力,无需重启。
  3. 跨语言能力:由于技能本质上是通过指令教导 AI 运行命令,因此你可以教它执行 Python、Node.js、Go 甚至一段复杂的 Shell 脚本。大语言模型本身与语言无关,只要它会写命令,什么都能做。

5. 开发者视角:如何创造一个新技能?

如果你希望让 nanobot 掌握某项新本领,只需三步:

  1. skills 目录下创建一个文件夹。
  2. 编写一个 SKILL.md,在顶部写好 namedescription
  3. 在正文部分用 Markdown 告诉 AI 如何操作——最好附带代码示例。

⚠️ 如果不确定怎么写,可以利用内置的 skill-creator 技能辅助生成新技能,形成“技能写技能”的闭环。

6. 获取和分享技能:Skills 社区与资源

如果想从零开始,社区里已经有不少现成的技能可供参考:

  • ClawHub:主要的公开 Agent 技能注册中心,支持自然语言搜索,可以轻松为 Agent 查找并安装各种实用工具。
  • SkillsMP:一个技能市场平台,提供丰富的技能供选择和使用。
  • GitHub:GitHub 上有很多开源技能项目,可以根据需求自行选用。

总结

nanobot 的 Skills 系统再次体现了其“以文档为中心”的设计哲学。它充分信任大模型的理解能力,将复杂的逻辑抽象为简单的文档阅读与命令执行。开发者不需要成为框架专家,只要会写 Markdown 和脚本,就能扩展 Agent 的能力。这种极简但强大的思路,值得很多工具链学习借鉴。

来源:https://juejin.cn/post/7618022596126834688
上一篇OpenClaw AI浏览器控制 像真人一样自动化操作 下一篇AI轻松生成大班优质课教案PPT 提升课堂互动参与感
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
ControlNet Mac电脑的详细完整安装教程:Apple Silicon与Intel配置步骤详解
AI教程 · 2026-07-05

ControlNet Mac电脑的详细完整安装教程:Apple Silicon与Intel配置步骤详解

ControlNet是常用AI绘画控制插件,macOS安装需区分AppleSilicon与Intel环境,重点处理Python、WebUI、插件目录、模型文件和启动参数,配置前应做好备份并关注版本兼容。

Krita AI Diffusion 新手入门从下载安装到首次运行保姆级教程
AI教程 · 2026-07-05

Krita AI Diffusion 新手入门从下载安装到首次运行保姆级教程

KritaAIDiffusion适合在Krita中完成文生图、图生图和局部重绘。安装重点是确认Krita版本、导入插件、配置本地或远程后端、下载模型,并在首次运行前检查显存、路径和权限。

Krita AI Diffusion安装失败?常见报错日志排查与升级回滚方案
AI教程 · 2026-07-05

Krita AI Diffusion安装失败?常见报错日志排查与升级回滚方案

KritaAIDiffusion安装异常多与版本不匹配、压缩包结构错误、Python插件未启用、后台服务或模型下载失败有关。可通过日志定位原因,按步骤重装、升级或回滚,避免覆盖配置和模型文件。

Krita AI Diffusion插件安装全流程教程:浏览器、编辑器、扩展市场
AI教程 · 2026-07-05

Krita AI Diffusion插件安装全流程教程:浏览器、编辑器、扩展市场

KritaAIDiffusion可将生成式绘图能力接入Krita,适合草图细化、局部重绘和风格探索。安装需确认版本、下载插件、配置后端服务与模型路径,并注意显卡资源、来源安全和版权合规。

Krita AI Diffusion API密钥配置教程:账号注册、密钥获取与国内网络设置
AI教程 · 2026-07-05

Krita AI Diffusion API密钥配置教程:账号注册、密钥获取与国内网络设置

KritaAIDiffusion配置重点在于确认插件版本、完成服务账号注册、创建并保存APIKey,再结合本地代理、证书、下载源与连接测试解决国内网络不稳定问题,避免密钥泄露和误用。