ZeroOne AI
← 返回文章列表

小龙虾 Skill 技能编写入门:从 Markdown 到工业智能体工具调用

👁 1
分类:工业AI

本文从最简单的 SKILL.md 讲起,系统介绍工业智能体“小龙虾”的 Skill 技能编写方法:功能说明、触发条件、执行流程、工具调用、权限分级,并结合 MES、MQTT、RAG、AGV 等工业场景,说明如何让 AI 从“聊天机器人”进化为能查询实时数据、执行任务的工业智能体。

一、什么是小龙虾 Skill?

在传统软件中,如果希望程序实现一个功能,通常需要编写代码。

例如:

查询设备状态
 ↓
连接数据库
 ↓
执行 SQL
 ↓
处理结果
 ↓
返回数据

而在 AI Agent,也就是"小龙虾"这样的智能体系统中,可以把一个具体能力封装成一个 Skill(技能)。

例如:

设备状态查询 Skill
生产统计 Skill
订单查询 Skill
设备报警 Skill
库存查询 Skill
AGV调度 Skill
MES数据分析 Skill

Skill 的核心作用,就是告诉 AI:什么时候使用这个能力、这个能力解决什么问题、应该按照什么规则执行。

最简单的 Skill,可以仅仅是一个 Markdown 文件。

例如:

skills/
└── device-status/
    └── SKILL.md

二、Skill 和普通 Markdown 有什么区别?

虽然 Skill 经常使用 .md 文件编写,但它并不是普通的知识文章。

普通 Markdown:

# 设备状态

设备状态包括:

- 运行
- 停止
- 报警

它主要是在告诉 AI:设备有哪些状态。

而 Skill 更像是一份"操作说明书":

# 设备状态查询

## 功能

查询MES系统设备当前运行状态。

## 触发条件

当用户询问:

- 设备是否运行
- 哪台设备停机
- 当前设备状态
- 设备报警

时使用本技能。

## 执行流程

1. 获取设备编号
2. 查询MES实时状态
3. 判断设备状态
4. 返回结果

## 注意事项

不能根据历史数据推测当前状态。
必须调用实时接口。

这里已经包含了:

什么时候用 → 怎么用 → 调用什么 → 怎么判断 → 怎么回答

所以可以把 Skill 理解成:给 AI 使用的"功能说明书 + 操作流程 + 使用规则"

三、一个最简单的 Skill

我们先写一个最简单的技能。

目录:

skills/
└── hello/
    └── SKILL.md

SKILL.md:

# Hello Skill

## 功能

用于回答用户的简单问候。

## 触发条件

当用户发送:

- 你好
- hello
- hi

时使用。

## 回复规则

使用中文回复。

示例:

用户:
你好

助手:
你好,我是小龙虾,很高兴为你服务。

这样,一个最简单的 Skill 就完成了。

四、推荐的 Skill 文件结构

实际项目中,建议不要把所有内容都写到一个 Markdown 文件里。

可以采用:

skills/
├── production/
│   ├── SKILL.md
│   ├── examples.md
│   └── rules.md
│
├── device/
│   ├── SKILL.md
│   ├── device-status.md
│   └── alarm-rules.md
│
├── agv/
│   ├── SKILL.md
│   └── task-rules.md
│
└── inventory/
    ├── SKILL.md
    └── inventory-rules.md

其中:

SKILL.md
负责描述技能本身。

例如:
功能
触发条件
执行流程
工具调用
注意事项

而其他 Markdown 文件负责保存详细知识。

五、Skill 的核心组成

一个完整的 Skill,一般可以分成几个部分。

1. 技能名称

例如:

# MES设备状态查询

名称应该简单明确。

不建议:

超级智能工业设备综合分析技能

建议:

MES设备状态查询

六、功能说明

例如:

## 功能

查询MES系统中生产设备的实时运行状态,
包括运行、停止、报警、离线等状态。

这一部分主要告诉 AI:这个 Skill 是干什么的。

七、触发条件

这是 Skill 非常重要的一部分。

例如:

## 触发条件

当用户询问以下内容时使用:

- 设备现在运行吗?
- 1号机状态
- 哪些设备停机?
- 哪台设备报警?
- 当前产线设备状态

这样 AI 就可以判断:

用户问题
 ↓
是否属于设备状态?
 ↓
是
 ↓
调用设备状态 Skill

八、执行流程

例如:

## 执行流程

1. 判断用户查询的设备。
2. 如果用户没有指定设备,则查询全部设备。
3. 调用MES设备状态接口。
4. 获取实时状态。
5. 根据状态码转换成人类可读状态。
6. 返回查询结果。

这里实际上已经开始形成一个 Agent Workflow。

九、工具调用

真正的工业智能体,不能只会"聊天",它必须能够调用实际系统。

例如:

小龙虾
 │
 ├── 查询设备
 ├── 查询订单
 ├── 查询产量
 ├── 查询报警
 └── 查询库存
 │
 ▼
 MES

因此 Skill 可以描述工具:

## 工具

使用:get_device_status

例如:
{
  "device_code": "LA-IM-01"
}

返回:
{
  "device_code": "LA-IM-01",
  "status": "RUNNING",
  "temperature": 203.3,
  "cycle_time": 6.19
}

AI 再把数据转换成自然语言:

LA-IM-01目前运行正常。

当前温度:203.3℃
周期时间:6.19秒
设备状态:运行中

十、为什么不能只使用 Markdown?

这是很多刚开始开发 Agent 的人容易产生的误区。

例如:

# 设备查询

设备状态有:

运行
停止
报警

这只能让 AI"知道设备状态"。

但是用户问:

LA-IM-01现在运行吗?

AI 如果没有实时工具,就无法知道。

因为:

Markdown → 知识
Tool     → 实时数据

所以工业智能体应该采用:

Skill + Knowledge + Tool

三者结合。

十一、Skill + Tool 的完整工作流程

例如老板问:

LA产线现在有几台注塑机报警?

小龙虾首先进行意图识别:

用户问题
 ↓
设备状态查询?
 ↓
是
 ↓
设备报警统计?
 ↓
是
 ↓
调用设备报警 Skill

Skill 告诉 AI:需要调用 get_machine_alarm_status。

然后调用 MES:

小龙虾 → MES API → 设备数据

例如返回:

{
  "line": "LA",
  "total": 11,
  "running": 8,
  "stop": 2,
  "alarm": 1
}

最终:

LA产线目前共有11台注塑机:

运行:8台
停止:2台
报警:1台

这才是真正意义上的工业 AI Agent。

十二、一个完整的 MES Skill 示例

下面设计一个实际可用的 MES 生产统计 Skill。

目录:

skills/
└── mes-production/
    └── SKILL.md

内容:

# MES生产统计 Skill

## 功能

查询MES系统生产数据,
用于回答产量、完成率、生产进度等问题。

## 适用问题

当用户询问以下问题时使用:

- 今天生产了多少?
- 今天产量是多少?
- 当前订单完成多少?
- 生产进度怎么样?
- 哪条产线产量最高?
- 今日完成率多少?

## 数据来源

MES生产数据库。

## 工具

get_production_summary

## 参数

line:产线编号,可为空。
date:查询日期。

## 执行流程

1. 判断用户查询日期。
2. 判断用户是否指定产线。
3. 调用get_production_summary。
4. 获取实际产量。
5. 获取生产计划。
6. 计算完成率。
7. 返回结果。

## 计算规则

完成率:实际产量 / 计划产量 × 100%

## 注意事项

1. 不允许编造生产数据。
2. 实时数据必须通过工具获取。
3. 如果数据库查询失败,需要明确告诉用户。
4. 不允许使用昨天的数据代替今天的数据。

## 输出格式

产线:
计划:
实际:
完成率:
状态:

十三、Skill 可以让 AI 学会"业务规则"

这是 Skill 最重要的价值之一。

例如你的滴灌带 MES 中:

一卷产品
 ↓
生产
 ↓
收卷
 ↓
称重
 ↓
视觉检测
 ↓
压力测试
 ↓
包装
 ↓
入库

你可以编写 roll-traceability/SKILL.md 告诉小龙虾:

# 成品卷追溯 Skill

## 功能

根据成品卷编号查询完整生产履历。

## 查询流程

1. 查询成品卷基本信息。
2. 查询生产设备。
3. 查询生产时间。
4. 查询生产长度。
5. 查询重量。
6. 查询视觉检测结果。
7. 查询压力测试结果。
8. 查询包装记录。

## 判断规则

如果视觉检测不合格:
视觉检测状态 = NG

如果压力测试不合格:
压力测试状态 = NG

只要任意关键检测项目为NG:
最终状态 = 不合格

这样,小龙虾就不只是"查数据库",它开始理解你的工厂业务规则。

十四、Skill 与 RAG 的关系

当 Skill 数量越来越多以后,可以进一步加入 RAG。

例如:

小龙虾
 │
 ┌─────────┴─────────┐
 ↓                 ↓
Skill             RAG
 │                 │
怎么执行任务      查找知识
 │                 │
 ↓                 ↓
Tool            Markdown
 │
 ↓
 MES

例如用户问:

注塑机换网以后需要检查哪些参数?

RAG 可以找到:注塑机换网操作规范.md

而用户问:

LA-IM-02现在温度是多少?

则应该:

Skill → Tool → MES实时数据

两种问题的处理方式不同。

十五、Skill、RAG、Tool 三者区别

组件主要作用
Skill告诉AI怎么完成任务
Markdown提供业务知识
RAG从大量知识中找到相关内容
Tool获取实时数据或执行操作
MES真正的业务系统
LLM理解问题并进行推理

可以简单理解成:

Markdown = 知识
Skill    = 方法
Tool     = 手
LLM      = 大脑
MES      = 工厂系统

十六、进一步加入 MQTT

你的工业网关场景中,还可以让小龙虾通过 MQTT 获取设备数据。

例如:

注塑机 → OPC-DA → MQTT → 工业网关 → MES → 小龙虾

Skill:

# 注塑机状态查询

## 数据来源

MQTT实时设备数据。

## Topic

/injection/{machine}/status

## 查询内容

- 温度
- 压力
- 周期时间
- 产量
- 报警
- 设备状态

例如用户:

LA-IM-02现在温度多少?

Skill 告诉 AI:

查询注塑机状态
 ↓
获取 LA-IM-02
 ↓
读取实时数据

然后得到:

当前温度:203.3℃
设定温度:195℃
周期时间:6.19s

十七、让 Skill 支持"操作型任务"

Skill 不一定只能查询,还可以执行操作。

例如创建生产任务:

用户:
创建一个LA产线生产任务,生产10000米。

小龙虾:
理解任务
 ↓
生产任务 Skill
 ↓
检查参数
 ↓
调用MES API
 ↓
创建生产订单

Skill:

# 创建生产任务

## 参数

产线:
产品:
数量:
单位:
计划开始时间:

## 执行规则

1. 必须确认产线。
2. 必须确认产品。
3. 必须确认数量。
4. 创建前检查产线是否可生产。
5. 创建成功后返回任务编号。

## 安全规则

创建生产任务属于写操作。

如果用户信息不完整,不能自动创建。

这一步非常重要。因为:查询 Skill 可以自动执行,写入/控制 Skill 必须增加权限和确认机制

十八、工业 AI 中建议增加权限等级

例如:

Level 0  普通聊天
Level 1  查询数据
Level 2  数据分析
Level 3  创建业务单据
Level 4  修改业务数据
Level 5  控制设备

例如:

查询设备温度 → 允许自动执行
创建生产订单 → 需要确认
启动设备     → 必须人工确认

这样可以避免 AI 因为理解错误直接控制生产设备。

十九、Skill 的推荐目录

如果最终把"小龙虾"做成一个工业智能体,我建议采用:

xiaolongxia/
│
├── skills/
│   ├── mes/
│   │   ├── production/
│   │   ├── order/
│   │   ├── device/
│   │   ├── quality/
│   │   └── traceability/
│   │
│   ├── erp/
│   │   ├── sales/
│   │   ├── purchase/
│   │   ├── inventory/
│   │   └── finance/
│   │
│   ├── agv/
│   │   ├── dispatch/
│   │   ├── status/
│   │   └── transport/
│   │
│   └── factory/
│       ├── equipment/
│       └── process/
│
├── tools/
│   ├── mes_api/
│   ├── mqtt/
│   ├── erpnext/
│   └── agv/
│
├── knowledge/
│   ├── process/
│   ├── equipment/
│   └── manual/
│
└── config/
    └── config.yaml

最终形成:

小龙虾
 │
 ┌──────┴──────┐
 │            │
Skills     Knowledge
 │            │
 ↓            ↓
Tools        RAG
 │
 ┌───────┼────────┐
 ↓       ↓        ↓
MES     MQTT     AGV
 │
 ↓
工厂数据

二十、Skill 编写的核心思想

刚开始开发 Skill 时,不需要一上来就写复杂系统,可以按照下面的路线:

第一步:Markdown

先写 SKILL.md,让 AI 理解业务。

第二步:增加触发规则

明确什么问题使用这个 Skill?

第三步:增加 Tool

让 AI 能够真正查询 MES、MQTT、ERPNext、AGV、数据库、API。

第四步:增加权限

区分查询、分析、创建、修改、控制。

第五步:增加 RAG

把大量设备手册、工艺文件、SOP、MES文档、产品资料接入知识库。

二十一、最终形成真正的工业智能体

最终的小龙虾不应该只是 ChatGPT + Markdown,而应该是:

┌───────────────┐
│   小龙虾      │
│  AI Agent     │
└───────┬───────┘
        │
┌───────┼───────┐
↓       ↓       ↓
Skills  RAG   Memory
│       │       │
↓       ↓       ↓
Tools  知识库  历史任务
│
┌──────┼───────┬────────┐
↓      ↓       ↓        ↓
MES   MQTT   ERPNext   AGV
│
↓
工厂实时数据

这样,小龙虾才真正从一个"聊天机器人"变成:能够理解工厂业务、查询实时数据、分析生产情况,并通过工具执行任务的工业智能体。

二十二、总结

如果刚开始学习小龙虾 Skill,可以记住一句话:

Markdown 负责告诉 AI"是什么、怎么做",Tool 负责让 AI"真正去做"。

最简单的 Skill:

SKILL.md

进阶:

SKILL.md
 ↓
触发规则
 ↓
业务流程
 ↓
Tool调用
 ↓
MES/API/MQTT

最终:

用户
 ↓
小龙虾
 ↓
Skill选择
 ↓
RAG / Tool
 ↓
MES / ERP / MQTT / AGV
 ↓
实时数据
 ↓
AI分析
 ↓
自然语言回答

这套模式特别适合工业场景,因为工厂知识可以用 Markdown 持续积累,实时数据通过 Tool 获取,AI 负责理解和决策,原有 MES/ERP/设备系统不需要推倒重做。

评论(0