免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

OpenClaw Skill × DuckDB:一个会自动进化的电商销售分析预测是怎么炼成的

发布日期:2026-03-10 18:24:10 浏览次数: 1531
作者:阿里云开发者

微信搜一搜,关注“阿里云开发者”

推荐语

OpenClaw Skill系统让AI从"纸上谈兵"到"真枪实干",只需一本Markdown操作手册就能教会AI执行新任务。

核心内容:
1. OpenClaw Skill系统的工作原理与核心优势
2. Skill从创建到执行的五步流水线详解
3. 渐进式披露技术如何解决token限制难题

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

一、OpenClaw的操作手册——Skill 系统是什么?

先说一个反直觉的事实:

AI 什么都懂,但什么都"不会做"。

你问 ChatGPT"北京明天天气怎么样?",它答不上来。不是它笨,而是它没法联网查实时数据。它的知识停留在训练数据截止的那一刻。它就像一个博学多才但被关在图书馆里的学者,读了很多书,但看不到窗外是晴天还是下雨。

不只是天气。你让 AI 帮你关灯、帮你查 GitHub 上的 issue、帮你发一条消息,它都做不到。它知道这些事情是什么,但它没有手脚去做。

OpenClaw 解决这个问题的方式很巧妙:给 AI 一本操作手册(Skill)。

什么是 Skill?就是一个 Markdown 文件(SKILL.md),里面用人类语言写着操作步骤。比如一本"查天气"Skill,核心内容就几行:

  • 用户问天气时,执行 curl wttr.in/Beijing 这个命令

  • 拿到结果后,用自然语言回复用户

OpenClaw 读到 SKILL.md 后就会照着做,就像实习生拿到了 SOP,不需要额外培训就能上手。

OpenClaw 内置了 50 多本这样的Skill,覆盖天气查询、GitHub 操作、智能家居控制,甚至"指挥其他 AI 写代码"。但更厉害的是,你可以自己写新的 Skill,教 AI 做任何你想让它做的事。

每本 SKILL.md 从"放进去"到"被 AI 使用",经过 5 步流水线,加上 1 条后台常驻的监听线程:

阶段

在做什么

产出

Discovery

扫描 6 个目录找到所有 SKILL.md,按优先级合并,自定义的会覆盖内置的

Skill[]

Parse

读取 YAML 封面,提取名字、描述、依赖条件等结构化信息

SkillEntry

Filter

过三道关:用户禁用了吗?依赖工具装了吗?系统兼容吗?不通过直接丢弃,AI 看不到它

过滤后的 SkillEntry[]

Inject

把通过筛选的 Skill 打包成一段 XML 塞进系统提示词,每个 Skill 只有摘要,约 100 词

SkillSnapshot

Runtime

用户提问时 AI 扫描摘要匹配,命中后读取完整 SKILL.md 正文执行

Watch

文件保存 → change 事件 → 版本号递增 → SkillSnapshot 过期 → 下次对话自动重建,全程无需重启

 SkillSnapshot

纵向看"产出"那一列:Skill[] → SkillEntry → SkillSnapshot,这就是一条 SKILL.md 在内存里的完整变身路径。

这套流程的精髓是渐进式披露(Progressive Disclosure),不一次性把所有 SKILL.md 的 body 塞给 AI(那样会超出 token 限制),而是先注入 description 摘要(约 100 词/个),匹配命中后才读全文。

本文中,我们会通过创建一个基于 RDS DuckDB 分析型实例的商品分析与预测 Skill 来详细介绍下 OpenClaw 的 Skill 原理。

二、电商数据分析与预测的烦恼

2.1 先从一个简单的场景说起

张大爷在菜市场卖了 20 年菜。每天下午他都会想:明天进什么货?

凭经验,他知道:周末排骨好卖、下雨天叶子菜不好卖、春节前牛肉必须多进。这就是最原始的购买预测,靠人脑、靠经验。

但如果张大爷不是一个菜摊,而是一家日均百万订单的电商平台呢?

几千万用户、几十万 SKU,每天产生上亿条浏览、收藏、加购、下单记录,不同地区、不同季节、不同促销活动,规律完全不同。人脑搞不定了。需要让 AI 来当张大爷,翻阅所有人的购买记录,找到规律,预测谁在未来 7 天会买什么。

2.2 但 AI 翻账本存在大问题

电商的交易数据存在 MySQL 数据库里。MySQL 是一个非常优秀的记账员,每秒处理几万笔交易,稳如老狗。但它的存储方式是行存储(一行一行地存),适合写入一笔订单、查一个用户的最近订单这类操作。可如果我们问它"过去 90 天,按品类统计所有用户的购买频次和金额",这需要扫描几亿行数据。MySQL 可能要跑几个小时,甚至直接超时。

行存储就像一本按日期排列的流水账。我们要查"过去 3 个月所有人的零食消费",就得从头到尾一页一页翻,因为零食消费散落在每一天的各种订单里。

而我们可以通过 RDS DuckDB分析实例可以实现了复杂分析查询性能百倍跃升。通过列式存储压缩技术,显著降低存储成本,为企业在海量数据规模场景下提供高性价比的实时分析能力,提升企业数据驱动型决策效能。更多介绍请参考附录 DuckDB分析实例

三、OpenClaw + DuckDB 完成商品售卖分析与预测

场景描述:

使用 eCommerce behavior data from multi category store 这个公开数据集中的 7 个月的数据,来验证和完成自动进化的商品售卖分析与预测 Skill。在该部分中,我们会根据商品分析与预测 Skill 来剖析 openClaw 的 Skill 能力。 

3.1:环境准备

创建并配置 OpenClaw

在 RDS Custom 上简单、快速部署 OpenClaw。详情请参考附录 RDS Custom集成OpenClaw。

创建 RDS MySQL DuckDB 分析型实例
免费试用
企业用户与个人用户均可免费试用DuckDB分析实例。更多细节,请参见附录免费试用与体验。
创建并连接DuckDB分析主实例
请参见附录创建并连接DuckDB分析主实例。
也可以直接让 OpenClaw 在学习 Aliyun Cli 后,根据该官方文档,直接创建规格为 myduck.n2.large.1 RDS DuckDB 分析型实例。
*注意实例最好与 ECS 在同一可用区,使用同一个 VPC。
1.先学学习Aliyun CLi2.根据 https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/create-and-connect-to-a-duckdb-based-analytical-primary-instance?spm=a2c4g.11186623.help-menu-26090.d_3_4_0_2.325a17e86coqAu 以及其他官方文档,创建一个规格为 8.0版本、规格为myduck.n2.large.1、磁盘大小为100G的RDS DuckDB分析型实例3. 创建完成后需要创建高权限账号、数据库以及验证数据库连通性,根据RDS官网自行解决连接不上的问题。

3.2:下载并导入数据

  • 下载数据:可以通过 附录 中的天池数据集或者 Kaggle 平台进行下载。
  • 使用 MySQL 工具 LOAD DATA 导入数据。
  • 或者直接让 OpenClaw 帮你编写脚本导入数据到 DuckDB 实例中
通过<该处填写附录中下载地址>下载数据集并解压。编写脚本通过MySQL load data 工具加速导入 csv 文件到<rm-xx该处填写3.1中创建的DuckDB实例名>

3.3 构建商品分析预测 Skill

而关于 Skill 的编写,只用了这么一段话,让 OpenClaw 学习我们上传的商品售卖预测 Skill 即可:
先从Aliyun Cli中学习如何调用接口,然后连接<rm-xx该处填写3.1中创建的DuckDB实例名>RDS MySQL 实例,分析下业务与实际数据,最后根据https://github.com/huanjizhou/ecommerce-predictor这个skill做出合适的调整,构建一个能够自动进化的模型能够分析业务并且预测用户行为
Skill 生成后,我们再查看 Skill.md 能看到如下 FrontMatter:
name: ecommerce-predictordescription: "电商用户行为时间序列预测。GradientBoosting/Lasso 预测 PV、UV、购买量。 Use when: 预测、时间序列、趋势分析、销量预测、电商预测。 NOT for: 实时风控、中国电商双 11/618、非时序分类问题。"metadata: OpenClaw: emoji: "📈"requires: bins: ["python3"]
更多 Skill 细节请参考附录内容。
Skill 的主体我们可以看出来,是通过 「滚动式训练 + 自动验证 + 历史追踪」 实现的预测的自优化:
   ┌─────────────────────────────── ──────────────────────────────┐                                                                                                                                                                                               │  第 1 轮:10 月数据训练 → 11 月验证 → 保存结果                │                                                                                                                                                                                              │         ↓                                                    │                                                                                                                                                                                               │  第 2 轮:10-11 月数据训练 → 12 月验证 → 保存结果             │                                                                                                                                                                                              │         ↓                                                    │                                                                                                                                                                                               │  第 3 轮:10-12 月数据训练 → 1 月验证 → 保存结果              │                                                                                                                                                                                              │         ↓                                                    │                                                                                                                                                                                               │  ...每导入新月份数据,就重新训练一次...                       │                                                                                                                                                                                              │         ↓                                                    │                                                                                                                                                                                               │  模型越来越强!📈                                            │                                                                                                                                                                                               └─────────────────────────────── ──────────────────────────────┘                

3.4: 自优化的四个关键机制

如何让模型越来越聪明,预测越来越准确?关键点在于 Skill 中的四个关键机制:
3.4.1 滚动式训练 (Rolling Training)
  # 每次用「所有历史数据」训练,不是只用最新数据                                                                                                                                                                                                                train_start = '2019-10-01'  # 固定起点                                                                                                                                                                                                                        train_end = '2019-11-01'    # 动态终点(每月推进)                                                                                                                                                                                                                                                                                                                                                                                                                                                                          # 下一轮自动变成:                                                                                                                                                                                                                                            train_end = '2019-12-01'    # 包含 11 月新数据                                                                                                                                                                                                              
这样设计:
  • 保留全部历史模式(季节性、节假日、趋势)
  • 新数据加入后,模型自动学习新规律
  • 不会遗忘旧知识(不是在线学习)
  • 但如果历史数据量变得非常庞大(例如几年甚至十年的分钟级数据),每次训练都包含“所有历史数据”会导致训练时长指数级增加。建议增加一个“窗口滑动”或“权重衰减”机制。
3.4.2 自动验证 (Auto Validation)
  # 用下个月的真实数据验证准确性                                                                                                                                                                                                                                val_start = train_end       # 验证集开始 = 训练集结束                                                                                                                                                                                                         val_end = '2019-12-01'      # 验证集结束                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    # 计算 MAPE、R² 等指标                                                                                                                                                                                                                                        mape = mean_absolute_percentage_error(y _true, y_pred) * 100                                                                                                                                                                                                
这是为了验证:
  • PV(页面浏览量)预测误差
  • 购买量预测误差
  • 黑五/感恩节等特殊节日的预测效果
3.4.3 历史追踪 (History Tracking)
  # 每次验证结果保存到 JSON 文件                                                                                                                                                                                                                                validation_history.json                                                                                                                                                                                                                                       ├── versions: [                                                                                                                                                                                                                                               │   ├── version: "v20260309_134100"                                                                                                                                                                                                                           │   ├── train_days: 31                                                                                                                                                                                                                                        │   ├── best_model: "Lasso"                                                                                                                                                                                                                                   │   ├── pv_mape: 17.50%                                                                                                                                                                                                                                       │   └── purchase_mape: 11.63%                                                                                                                                                                                                                                 │   ├── version: "v20260309_152600"                                                                                                                                                                                                                           │   ├── train_days: 61                                                                                                                                                                                                                                        │   ├── best_model: "GradientBoosting"                                                                                                                                                                                                                        │   └── pv_mape: 8.15%                                                                                                                                                                                                                                        │   ...                                                                                                                                                                                                                                                     
实时追踪实际上是构建了一个轻量级的 MLOps 实验记录系统(类似 MLflow 的简易版)。它确保我们每一次训练的成功与失败都有迹可循,从而让模型能够从“靠运气瞎猜”进化为“有据可查的持续优化”。
  • 对比不同版本的性能
  • 观察模型是否随数据增加而提升
  • 发现过拟合/欠拟合问题
3.4.4 模型自动选择 (Auto Model Selection)
  # 训练 7 种模型,自动选最佳                                                                                                                                                                                                                                   models = {                                                                                                                                                                                                                                                        'Ridge': Ridge(alpha=1.0),                                                                                                                                                                                                                                    'Lasso': Lasso(alpha=0.01),                                                                                                                                                                                                                                   'RandomForest': RandomForestRegressor(...),                                                                                                                                                                                                                   'GradientBoosting': GradientBoostingRegressor(...),                                                                                                                                                                                                           'XGBoost': xgb.XGBRegressor(...),                                                                                                                                                                                                                             ...                                                                                                                                                                                                                                                       }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           # 自动选择 PV 预测误差最小的模型                                                                                                                                                                                                                              best_model = min(val_results.keys(),                                                                                                                                                                                                                                           key=lambda x: val_results[x]['pv_mape'])                                                                                                                                                                                                   
  • 不同数据量适合不同模型(小样本用 Lasso,大样本用 GradientBoosting)
  • 自动适配数据特征,不需要人工调参

3.5:第一次预测:

我们来简单看下预测结果。在第一次预测中,RDS MySQL 分析型实例中存了 eCommerce behavior data from multi category store 这个公开数据集中的前两个月的数据。让它基于 19 年 10 月的数据构建模型,并且用 19 年 11 月的数据进行验证。

在数据洞察、迭代验证、策略调整阶段,需要连接 RDS DuckDB 实例进行查询。对比普通 MySQL 实例,DuckDB 能够加速约 700 倍。

1. 执行预测
/skill ecommerce-predictor 预测下个月的PV\UV\Purchase\Cart 
2. 结果

指标

数值

说明

PV MAPE 

26.92% 

平均绝对百分比误差 

购买量 MAPE

11.39%

购买量预测误差

黑五误差

45%

黑色星期五期间误差(未考虑节假日)

训练天数

31 天

2019-10-01 ~ 2019-11-01

验证天数

30 天

2019-11-01 ~ 2019-12-01

特征数

5 个

基础时间特征

模型

指数平滑

Baseline 模型 

问题: 黑五预测误差 45%,因为模型不知道 11 月 29 日是黑色星期五。

3. 发现问题、汲取经验教训

1. 未考虑节假日 - 黑五误差 45%

2. 基线建立 - 后续版本可以对比改进

3. 特征太少 - 只有 5 个基础特征,需要增加

可以看到商品预测 Skill 不仅可以分析当前的数据、预测数据,更重要的是,能根据预测结果来优化自身的模型从而使准确率越来越高。

3.6 第二次到第六次预测

之后每导入一个月的数据,Skill 会自动完成“分析-预测-自优化”的三个步骤。

来看 HISTORY.md 中记录的数据:

版本

训练天数

最佳模型

PV 误差

购买量误差

发生了什么

v1.0

31 天

指数平滑

26.92%

11.39%

基线模型,黑五误差 45%

v2.0

61 天

RandomForest

8.15%

23.17%

✅ 训练数据翻倍

v3.0

92 天

GradientBoosting

2.73%

42.28%

✅ PV 预测历史最优

v4.0

123 天

GradientBoosting

2.73%

42.28%

✅ 正式 v1

v5.0

152 天

Ridge

29.99%

36.99%

⚠️ 撞上美国疫情爆发

v6.0

183 天

GradientBoosting

10.03%

12.65%

✅ 购买量预测最优

PV 预测(每日页面浏览量)

指标

v1.0

v6.0 

改进

PV 预测

平均误差

26.92%

10.03%

↓ 62.7%

黑五误差

45%

-

完全解决

- 

0.78

模型解释力优秀

购买量预测

平均误差

11.39%

12.65%

优秀水平(<15%

训练数据

31 天

183 天

数据量×5.9 

模型稳定性

 

LOO CV 验证

从 v1.0 到 v6.0 的进化:

1. ✅ PV 预测误差下降 62.7%(26.92% → 10.03%)

2. ✅ 购买量预测保持优秀(11.39% → 12.65%,<15%)

3. ✅ 节假日预测完全解决(黑五误差 45% → 完美预测)

4. ✅ 数据量增长 5.9 倍(31 天 → 183 天)

5. ✅ 特征工程完善(5 个 → 20 个核心特征)

6. ✅ 模型稳定性验证(LOO CV MAPE 5.38%)

7. ✅ 全自动优化(无需人工干预)

四、总结

让我们回到第 1 部分开头的那句话:

AI 什么都懂,但什么都"不会做"。

现在,我们有了让 AI"会做事"的方法:

Skill 系统:给 AI 一本操作手册

  • ecommerce-predictor:教 AI 预测购买趋势(完整流程:数据洞察 → 特征工程 → 模型训练 → 验证迭代)

  • 每本 SKILL.md 经过同一套 pipeline:Discovery → Parse → Filter → Inject → Runtime

  • 系统不关心 SKILL.md body 里写的是一条 curl 命令还是一整套机器学习流程

DuckDB:让 AI 能秒级翻账本

  • 分析查询提速 1000+ 倍

  • 不影响线上交易(只读实例隔离)

  • 99.9% 兼容 MySQL 语法(现有 SQL 直接能用)

没有 DuckDB 之前: 查询一次历史数据等 2 小时,一天只能迭代 2 轮,对业务有影响。

有了 DuckDB 之后 查询一次 2 秒,一天可以迭代几十轮,对业务无影响。

DuckDB + OpenClaw 如何帮助我们自动优化模型,预测未来?

1. Skill 系统 解决了"教 AI 按流程做事"的问题,给 AI 一本操作手册,它就能照着做

2. DuckDB 分析型实例 解决了"大数据分析太慢"的问题,秒级查询

3. 两者结合 实现了一个自动化的数据分析迭代闭环,AI 按手册操作,用分析引擎快速翻阅数据、生成预测、验证偏差、调整策略,循环往复,越来越准。

更多信息

附录

1. DuckDB 分析型实例:https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/duckdb-analysis-instance/?spm=a2c4g.11186623.help-menu-26090.d_3_4.4f677453pHXOO7

2. ecommerce-predictor skillhttps://github.com/huanjizhou/ecommerce-predictor

3. 创建并连接DuckDB分析主实例https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/create-and-connect-to-a-duckdb-based-analytical-primary-instance?spm=a2c4g.11186623.help-menu-26090.d_3_4_0_2.325a17e86coqAu

4. 访问天池数据集下载数据:https://tianchi.aliyun.com/dataset/220316

5. 访问 Kaggle 下载数据:https://www.kaggle.com/datasets/mkechinov/ecommerce-behavior-data-from-multi-category-store

6. RDS Custom集成OpenClaw https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/rds-custom-openclaw-integration#section-config-apikey

免费试用

企业用户与个人用户均可免费试用DuckDB分析实例。更多细节,请参见免费试用与体验

https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/duckdb-analysis-instance/#15729b3c4b3ln

更多性能测试

  • 基于标准TPC-H 的全面测试结果,请参见 附录:DuckDB分析只读实例性能测试

  • ClickHouse 官方维护的性能基准测试(Benchmark)仪表板,直观地展示并对比各种主流分析型数据库(OLAP)在处理大规模数据集时的查询速度和性能表现。更多细节,请参见 ClickBench

    https://benchmark.clickhouse.com/#system=-&type=-&machine=-ca2l%7C6t%7Cg4e%7C6ax%7C6ale%7C3al&cluster_size=-&opensource=-&hardware=+c&tuned=+n&metric=cold&queries=-

专家面对面

若您对 DuckDB 有任何问题,可通过钉钉搜索群号入群咨询。您可以直接@群内专家,并附上您要咨询的问题。钉钉群号:106730000316。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询