最近在研究各种龙虾产品啊,觉得时间真的不够用。但是,不管怎么样,先从基本的入手,看看这些skills怎么创建、能解决什么问题、怎么跟业务结合。

今天尝试了一个简单的例子,通过自然语言与AI互动,连接关系型数据库MySQL 8 ,从表中查询数据,展示结果,生成图表。

一、本地MySQL数据库

事先已经建好,并创建了数据库实例,设计了两张表,初始化了数据。

准备好数据库连接:IP、端口、用户名(生产上用只读)、密码

表个字段结构信息。

二、创建Skill

以下内容让AI帮你生成,后续自己微调。

在.copaw\active_skills目录下,创建数据查询skill的目录dataquery

进入dataquery文件夹,创建skill的核心配置,包括skill.md,每个skill都需要这样一个md文件需要有正确的 YAML frontmatter(name, description, tools)、角色定义清晰。还包括一些py script可能要调用的能力脚本

2.1Skill.md文件

---
name: 数据分析助手
description: 能够根据用户提问,查询 MySQL 数据库并分析元数据情况。
tools:
  - name: query_mysql
    description: 执行标准的 MySQL 查询语句。
---

# 角色定义
你是一个数据分析专家。你的任务是将用户的自然语言转换为正确的 SQL 语句。

# 数据库结构说明
你拥有 `t_meta_table` 表的访问权限:
- `ID`: 主键
- `TABLE_NAME`: 表名
- `CN_NAME`: 中文表名
- `IS_DATABASE`: 所属数据库
- `OWER`: 所有者

你拥有 `t_meta_col`表的访问权限:
- `ID`: 修改人
- `TABLE_NAME`: 表名
- `CODE_NAME`: 代码名称
- `DATA_TYPE`: 数据类型
- `DATA_LENGTH`: 数据长度
- `CREATE_TIME`: 创建时间
- `CREATOR_ID`: 创建人
- `IS_UNIQUE`: 是否唯一
- `IS_PRIMARY`: 是否主键

### 总结
1. 完整还原了表中所有字段的注释,对无官方注释的字段补充了合理的通用说明(如扩展字段、数据库名称);
2. 两张表的 `TABLE_NAME` 可做关联字段


# 工作流程
1. **生成 SQL**: 根据用户问题(如“查询表的元数据信息”、“查询字段元数据信息”)生成 SQL。
   - 示例:`SELECT TABLE_NAME,CN_NAME,OWER FROM t_meta_table `
   - 示例:`SELECT TABLE_NAME,CODE_NAME,DATA_TYPE,DATA_LENGTH,DB_NAME FROM t_meta_col`
2. **执行函数**: 调用 `query_mysql` 工具。
3. **展示结果**: 
   - 使用 Markdown 表格展示数据。
   - 如果数据包含趋势,请用文字简要分析(如:同比去年增长 20%)。

# 限制
- 只允许执行 SELECT 语句。
- 严禁执行 DELETE, DROP, 或 UPDATE。

# 环境要求

请确保安装以下 Python 库:
```bash
pip install pymysql pandas

2.2function.py脚本

import pymysql
import pandas as pd

def query_mysql(sql_query: str):
    """
    执行 SQL 查询并返回结果。
    """
    # 安全检查:只允许 SELECT 语句
    sql_upper = sql_query.strip().upper()
    allowed_keywords = ['SELECT', 'SHOW', 'DESCRIBE', 'EXPLAIN']
    
    if not any(sql_upper.startswith(kw) for kw in allowed_keywords):
        return "❌ 错误:只允许执行 SELECT/SHOW/DESCRIBE 查询"
    
    # 禁止危险关键字
    dangerous_words = ['DELETE', 'DROP', 'UPDATE', 'INSERT', 'TRUNCATE', 'CREATE', 'ALTER', 'GRANT', 'REVOKE']
    for word in dangerous_words:
        if f'{word} ' in sql_upper or f' {word}' in sql_upper:
            return f"❌ 错误:不允许执行 {word} 操作"
    
    config = {
        'host': 'xxx',
        'user': 'xxx', # 务必使用只读账号!
        'password': 'xxx',
        'database': 'xxx'
    }
    
    try:
        connection = pymysql.connect(**config)
        # 使用 pandas 方便处理表格和图表数据
        df = pd.read_sql(sql_query, connection)
        connection.close()
        
        # 返回 Markdown 表格
        return df.to_markdown(index=False)
    except Exception as e:
        return f"查询出错: {str(e)}"

当然创建Skill也可以直接在聊天中让龙虾自己创建,你描述清楚需求就行,会自动在相应目录下生成。

三、控制台查看Skill

以上文件创建好以后,重新启动服务,打开控制台。在【技能】菜单中,可以找到我们自创建的dataquery技能。

在.copaw\active_skills文件夹下的都是“已启用”的技能,在.copaw\customized_skills文件夹下的都是“未启用”的技能。

点击该技能,查看配置文件。注意:后端API不支持编辑技能。您只能查看或切换启用/禁用状态。

四、Skill的应用

回到聊天界面,可以直接通过自然语言进行对话,自动调用创建的技能。

以下过程比较长,特别地消耗tokens哈,注意注意!

当然也能生成可视化图表

四、总结

这是一个基本的Skill的案例,目的是熟悉整个创建流程,后续会有更多更复杂的技能会开发出来,武装龙虾,让他发挥更加强大的能力。

另外,不管是CoPaw还是OpenClaw,技能Skill的开发都是差不多,甚至都可以服用,一次开发多处使用。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐