开发SKILL并被OpenClaw使用

更新时间:
复制为 MD 格式

背景、问题和解决思路

企业客户在使用OpenClaw等桌面Agent时会面对如下问题:

  • 准确性低,无法满足企业客户要求。目前Agent在操作企业使用的软件时,无法保证操作结果的准确性,但错误的结果会直接为企业带来真金白银的损失。如供应链的准备报关单过程,电商运营的商品上架过程。

  • 执行速度慢,无法使用在企业客户的生产流程中。Agent运行过程中需要经历无数个“感知-规划-动作”循环,在操作企业相关软件时容易陷入长时间的无效尝试、或很慢才能完成部分工作。

  • 消耗大量Token,性价比低。Agent运行过程时,即便是重复性的任务,也需要模型的全程参与。

因此本文提供一种解决思路

  • 首先将企业内各种标准操作过程使用RPA开发为可重复执行的自动化流程,并能够被AgentSKILL方式集成。

  • 企业员工在使用Agent时,Agent可使用这些SKILL,真正为企业带来业务价值。

案例介绍

案例背景

  • 运营Agent用来服务电商运营岗位人员,以云端方式运行,运营人员使用时不影响使用自己办公电脑。

  • 本文介绍该Agent提供的一个日常工作SOP(标准操作过程)的实现过程。该SOP运营人员的工作过程如下图所示,目的是分析前一天销售情况,确定新下一步行动计划。

image

Agent构成:

  • OpenClaw:员工使用钉钉IM方式与Agent进行交互,下发任务、收到运行结果

  • 企业SKILL:根据SOP,SKILL至少需要提供两个功能:

    • 自动获取该企业在各个平台上的店铺商品销售数据

    • 将日报自动填入到企业使用的日报系统

  • 运行结构

    image

开发SKILL并集成到OpenClaw的操作过程:

  1. 安装OpenClaw,并完成与钉钉的对接配置。

  2. 使用RPA开发如上两个自动化流程,并发布为MCP Tool。

  3. 使用RPA服务型机器人,作为SKILL的运行时。

  4. OpenClaw中启用mcporter,并添加相应的MCP Server配置。

  5. OpenClaw中增加SKILL。

运营人员的使用过程:

  • 通过钉钉完成与OpenClaw的交互,完成目标的SOP。

操作过程

安装OpenClaw

本章节使用轻量应用服务器完成OpenClaw的安装、配置和钉钉集成,操作过程详见:

配置成功后,可在钉钉的聊天窗口中与OpenClaw进行沟通。

开发自动化流程并发布为MCP Tool

  1. 使用RPA开发自动化流程的过程详见 开发一个自动化流程

  2. SOP所需的两个自动化流程的流程输入和输出如下:

    自动化流程

    流程输入(入参)

    流程输出

    自动获取店铺商品销售数据

    • statis_date:查询指定日期的商品销售数据

    • 获取的商品数据为JSON格式,包含每个店铺的商品id、商品名称、风格标签、销售数量、单价、收藏人次等

    • 自动化流程将获取的数据使用task_result保存

    提交日报

    • record_datetime:填报日期

    • content:日报内容

    重要

    由于每个企业客户使用的电商平台、所需的数据、操作的软件各不相同,本例中的2个自动化流程的具体实现内容不具有通用性。可参考 开发一个自动化流程 ,开发符合企业经营过程的自动化流程。

  3. 将两个自动化流程发布为RPA应用

    image

  4. 发布为MCP Tool。操作过程可参考 发布为MCP Tool,发布后的MCP Tool信息如下

    自动获取店铺商品销售数据

    image

    提交日报

    image

准备SKILL运行时

本例中,使用RPA服务型机器人作为SKILL的运行时。

服务型机器人需要使用无影云电脑,可参考 服务形式运行自动化流程进行配置。创建成功后如下图,后续步骤会使用该服务型机器人运行SKILL。

image

OpenClaw中添加mcp

OpenClaw主要使用mcporter作为mcp client工具。本章节主要介绍如何在OpenClaw中配置mcporter。

  1. 使用轻量应用服务器部署的OpenClaw默认没有安装mcporter。可在OpenClaw Gateway Dashboard中查看。

    image

  2. 通过OpenClaw Gateway Dashboard的聊天窗口安装mcporter。输入指令为 执行 npm install -g mcporter 安装mcporter 工具

    image

  3. RPA控制台的MCP Server菜单中,获取MCP Server配置。如下图,该配置同时包含多个MCP Server信息。

    image

  4. 通过OpenClaw Gateway Dashboard的聊天窗口配置mcporter,输入指令为 使用 mcporter 工具,接入MCP Server需要附上上一步的json

    image

OpenClaw中添加SKILL

本章节主要介绍如何在OpenClaw中添加企业SKILL,帮助Agent更好的理解使用者的意图、准确完成任务。

说明
  • 建议完成本章节操作,通过增加SKILL提高Agent使用效果。

  • 上一步完成添加MCP后,OpenClaw已经能够调用到自动化流程。可以通过测试OpenClawmcp tool的理解和执行情况,如果比较准确可跳过本章节操作。

  1. 准备SKILL,共4md文件。

    说明

    本文SKILL内容为针对此SOP示例,您在使用时需要结合具体业务场景进行修改。

    1. SKILL.md

      ---
      name: rpa-skill
      description: |
        运营提效工具合集,包括:1.上报日报到公司系统 2. 查询店铺的商品销售数据。
        触发时机:提交日报、商品运营、商品统计、趋势、价格、销售量
      metadata:
        {
          "openclaw":
            {
              "requires": { "env": ["ALIYUN_RPA_RobotId"] },
              "primaryEnv": "ALIYUN_RPA_RobotId"
            }
        }
      ---
      
      # rpa-skill
      
      统一入口: 使用mcporter调用mcp tool
      
      ## 包含的工具
      | tool | 说明                   |
      |-----|----------------------|
      | `list_product_metrics` | 查询指定日期的所有店铺的商品销售数据 |
      | `daily_report` | 将日报内容自动填入到公司的日报系统中   |
      | `workerSysGetTaskStatus`| 根据taskId查询任务运行状态和结果  |
      
      ## 使用流程
      - 除了`workerSysGetTaskStatus`,其他工具都是异步调用方式,调用后会立即返回一个TaskId
      - 可使用`workerSysGetTaskStatus`查询taskId的任务运行状态和结果
      - 如果需要等待任务结果,可以需要使用`workerSysGetTaskStatus`工具轮询查询该taskId的任务状态和结果,轮询调用的间隔时间5s-10s
      - 如果入参需要RobotId,使用`ALIYUN_RPA_RobotId`
      
      ## 执行前置
      - 首次执行 `list_product_metrics`前,先完整阅读 `references/list_product_metrics.md`
      - 首次执行 `daily_report`前,先完整阅读 `references/daily_report.md`
      - 首次执行 `workerSysGetTaskStatus`前,先完整阅读 `references/workerSysGetTaskStatus.md`
      - 同一会话内后续重复调用同一能力可复用已加载知识;仅在规则冲突或文档更新时重读。
    2. references目录下包含3md,分别如下

      list_product_metrics.md

      # 查询指定日期的所有店铺的商品销售数据
      
      用途:查询指定日期的所有店铺的商品销售数据
      
      ## 调用
      
      使用mcp调用此工具,需要提供以下参数:
      
      | 参数          | 默认 | 说明                               |
      |-------------|----|----------------------------------|
      | robotId     | 必填 | 使用`ALIYUN_RPA_RobotId`           |
      | statis_date | 必填 | 统计指定日期的销售数据,格式为年-月-日,例如2026-11-2 |
      
      ## 输出结构
      
      - 调用成功后返回 `TaskId`
      - 可使用`workerSysGetTaskStatus`查询TaskId的任务执行结果,`taskResult`内容为填写的日报内容,举例如下:
      
      ```json
      {
        "A店铺": {
          "products": [
            {
              "id": "FS-2026-001",
              "name": "新中式提花宋锦外套 (春日限定)",
              "style_tags": [
                "新中式",
                "国潮"
              ],
              "sales": 1850,
              "favorites_and_cart": 6200,
              "avg_transaction_price": 328.0
            }
          ]
        }
      }
      ```
      
      - 结果中`products`的字段含义参考
      
      | 字段                    | 含义           |
      |-----------------------|--------------|
      | id                    | 商品ID         |
      | name                  | 商品名称         |
      | style_tags            | 商品标签         |
      | sales                 | 销售数量,单位(件)   |
      | favorites_and_cart    | 收藏商品的人数      |
      | avg_transaction_price | 平均成交价格,单位(元) |
      
      

      daily_report.md

      # 提交日报
      
      用途:将日报内容自动填入到公司的日报系统中
      
      ## 调用
      
      使用mcp调用此工具,需要提供以下参数:
      
      | 参数              | 默认 | 说明                           |
      |-----------------|----|------------------------------|
      | robotId         | 必填 | 使用`ALIYUN_RPA_RobotId`        |
      | record_datetime | 必填 | 日报对应的日期,格式为年-月-日,例如2026-11-2 |
      | content         | 必填 | 需要填写的日报内容,格式要求为纯文本,最大1000字符  |
      
      ## 输出结构
      
      - 调用成功后返回 `TaskId`
      - 可使用`workerSysGetTaskStatus`查询TaskId的任务执行结果,`taskResult`内容为填写的日报内容,举例如下:
      ```text
      2026-03-23:一、昨日 GMV xx 元,转化率 xx%,UV 略降受推广预算调整影响...
      ```
      

      workerSysGetTaskStatus.md

      # 查询任务运行状态和结果
      
      用途:根据taskId查询任务运行情况
      
      ## 调用
      
      使用mcp调用此工具,需要提供以下参数:
      
      | 参数     | 默认 | 说明             |
      |--------|----|----------------|
      | taskId | 必填 | 调用工具时返回的taskId |
      
      
      ## 输出结构
      
      - 返回json结构
      - 如果任务完成,返回的结果举例如下,`taskResult`对应工具执行结果,详见references/capabilities/下不同工具的md
      
      ```json
      {
        "taskStatus": "complete",
        "taskResult": "工具执行的结果"
      }
      ```
      
      - 如果任务未完成,返回的结果举例如下
      
      ```json
      {
        "taskStatus": "waiting"
      }
      ```
      
      - `taskStatus` 对应的值和含义如下
      
      | 值          | 含义     |
      |------------|--------|
      | waiting    | 任务等待运行 |
      | running    | 任务正在运行 |
      | complete   | 任务正常结束 |
      | terminated | 任务异常结束 |
      
  2. 添加SKILL。OpenClaw中可通过两种方式添加。

    方式1:通过URL安装

    1. 本例使用OSS保存SKILL文件。将上述4个文件提交到OSS后,目录结构如下所示,references中保存另外的3md文件。

      image

    2. OSS控制台上获得SKILL.mdurl,注意该url需要能够公网访问。

    3. 通过OpenClaw Gateway Dashboard的聊天窗口安装SKILL,指令为 安装skill,<填写skill.mdurl>

      image

    方式2:OpenClaw后台安装

    1. 使用轻量应用服务器控制台上的远程连接功能。使用终端登录服务器后台,首先进入 ~/.openclaw/workspace/skills/,并执行命令 mkdir -p rpa-skill

    2. 4md文件按照文件目录上传到rpa-skill目录下。

      image

    3. 执行命令 openclaw gateway restart

    4. 执行命令 openclaw skills list,查看skill的安装情况。

  3. 配置RobotId

    1. 设置SKILL运行所在的机器人,避免业务人员使用时还需要向OpenClaw提供机器人ID信息。

      重要
      • 本文为了简化使用过程,约定所有使用者使用同一个SKILL运行环境(同一个机器人)。

      • 此方式在实际使用时有一定局限性,建议为每个员工配备一个单独的云端数字员工,同时需要增加管理SKILL运行环境(机器人)和员工关系的功能模块。

    2. 通过OpenClaw Gateway Dashboard的聊天窗口进行设置,指令为 设置ALIYUN_RPA_RobotId=<需要修改为前文的服务型机器人ID>

      image

至此,已经完成所有配置工作。

使用效果

使用者在钉钉中与OpenClaw机器人聊天,先要求对数据进行分析,再将总结内容提交日报。如下图所示:

image

说明

本文的商品销售数据为模拟数据。

RPA控制台的“服务型机器人-任务管理”菜单下,也能查看到OpenClaw的两次机器人调用。

image