这篇文章也是用来记录的,在正文开始前先说明一下,上一篇文章的末尾下载了ollama,Ollama 是一个开源的跨平台大语言模型(LLM)运行工具,其核心作用是让用户能够极其简单地在本地个人电脑上运行、创建和管理大型语言模型,我下载了千问的一个免费模型,成功实现了在本地运行该大模型,效果如下,但是由于某些因素,我决定抛弃这个模型,改为直接给openclaw接入智谱的模型

接着开始说明一下我的开发部署过程(可能会有所遗漏,后续可能会补充)

我昨天晚上重新下载了openclaw镜像,指令如下(拉取镜像的过程非常吃内存,建议结束不必要的进程,我的内存是16G,差点爆了,同样,其他配置过程也很有可能占据较多内存,Docker本身就吃内存,建议注意一下这个情况)

docker pull ghcr.io/openclaw/openclaw:latest

指令下载完毕后你可以在应用界面的镜像这一块看到它,左边的绿点表示运行正常,然后创建容器,指令如下(预先声明,这个指令确实可以构建一个容器,但是结合后续操作,可能会删除重新创建,我在这一块反反复复,大家可以先问问ai,一步一步改)

特别注意,这是我的文件路径,大家根据自身条件更改指令!最重要的是不要下在C盘(除非你跟我一样只有一个盘)

docker run -d --name openclaw-agent -p 18789:18789 -v C:\Users\33162\.openclaw:/root/.openclaw -u root --restart unless-stopped ghcr.io/openclaw/openclaw:latest

返回到docker的应用界面,可以看到openclaw-agent容器启动正常,同时,你可以注意到18789字样旁边出现了一个跳转的图标,点击后,你就可以看到网关仪表盘,我当时在配置的时候碰到一个很难处理的问题,容器一直不断重启,这说明json配置文件或网关(gateway)存在问题,我最初是更改了配置文件,后续发现问题依旧存在,还把配置文件给弄坏了,如果说你在更改后还是碰到这些问题,就上网搜寻指令重置配置文件,最后我把网关重装了才解决这个问题

网关使用前台运行

对于本地测试或个人使用,直接在前台运行其实是最不容易出错的。

openclaw gateway --verbose

注意:保持这个 PowerShell 窗口处于打开状态即可,不要关闭它。你可以将其最小化,或者把窗口拖到屏幕边缘不碍事的地方。

我当时使用这个方法解决的,会运行出这么一个界面,这种才是完全正常的(注意,有的时候启动失败很可能是因为你的内存不足,或是硬盘空间不够)

进入了网关仪表盘,然后会要求输入网关令牌(忘记截屏了),网关令牌的话,一般是自动生成的,在openclaw.json文件中可以找到(在.openclaw文件夹中,像我的路径就是"C:\Users\33162\.openclaw\openclaw.json"),下图中我涂掉的那一块就是

当然了,这个时候不太建议各位去测试,因为还没接入模型,在终端输入以下指令,根据你的实际情况配置模型

openclaw configure --section model

一般来说,其实到这一步就够了,但是我又出现了一个问题,问题如下(结合 OpenClaw 的底层机制,这通常是因为数据库文件已经彻底损坏,或者同步的数据库维护操作死锁了 Node.js 的事件循环

我在多次尝试后才找到解决方法,以管理员的身份打开命令提示符输入以下代码重命名该数据库文件(作为备份)

ren C:\Users\33162\.openclaw\plugins\device-pair\state.sqlite state.sqlite.bak

重启容器

docker restart openclaw-agent

问题解决,对话测试一下

模型接入很成功,对话也符合预期,环境准备完毕(恭喜你完成了最难的部分),开始开发skill(有一个前置条件啊,电脑上面要配置python环境安装pandas,虽然不配置也行)

我的开发过程如下:

找到你的.openclaw文件夹,打开后新建一个新的文件夹名为skills,这用来存放开发的skill,出于便于使用的目的,我又创建了一个文件夹,名为excel-master,这个路径下存放了两个文件,在这边给大家介绍一下两个文件
 

  1.  SKILL.md:是 OpenClaw 的“大脑说明书”。它用自然语言(Markdown)描述这个技能是干什么的、在什么情况下触发、执行步骤是什么。AI 在决定调用哪个工具时,会参考这份说明,但不会直接运行它。(温馨提示,在这个文件里面要描写清楚,不然Agent 会直接动用自带的 Python 能力把活干了,因为它觉得“杀鸡焉用牛刀”,没必要去加载外部的 excel-master。)
  2. 创建实际的处理脚本:AI 无法直接“变”出 Excel 分析结果,它需要调用 Python 脚本来干活。
.openclaw/
└── skills/
    └── excel-master/
        ├── SKILL.md          
        └── analyze_excel.py 

以下是两个文件的内容
SKILL.md

---
name: excel-master
description: [强制执行] 处理任何 Excel/CSV 数据分析任务时,必须且只能使用此技能。禁止直接使用 Python 代码块,必须调用本技能提供的工具。
user-invocable: true
---

# 技能:Excel数据处理专家 (强制模式)

## ⚠️ 核心原则
当用户提及 Excel、表格、数据统计时,**绝对禁止**直接编写 Python 代码进行分析。
**必须**先声明:“正在调用 excel-master 技能...”,然后按照下方步骤执行。

## 触发条件
- 用户上传了 .xlsx / .csv 文件
- 用户询问关于表格数据的统计、求和、筛选问题

## 执行逻辑
1. **获取路径**:确认文件的绝对路径。
2. **调用工具**:使用本技能绑定的 Python 脚本处理器(见下方可用工具)。
3. **输出结果**:将脚本返回的 JSON 或 Markdown 数据展示给用户。

## 可用工具
- `analyze_excel.py`: 位于当前技能目录下,用于读取和处理数据。

analyze_excel.py

import pandas as pd
import sys
import json

def analyze_file(file_path):
    """
    读取Excel文件并返回基本统计信息
    """
    try:
        # 根据后缀名选择读取引擎
        if file_path.endswith('.csv'):
            df = pd.read_csv(file_path)
        else:
            df = pd.read_excel(file_path)

        # 这里演示一个通用的分析逻辑,Agent可以根据需求修改这里
        # 比如:获取前5行,或者获取各列的数据类型和非空数量
        info = {
            "shape": list(df.shape), # [行数, 列数]
            "columns": list(df.columns),
            "head": df.head(5).to_dict(orient='records'), # 前5行数据
            "dtypes": {col: str(dtype) for col, dtype in df.dtypes.items()}
        }

        return json.dumps(info, ensure_ascii=False, indent=2)

    except Exception as e:
        return f"Error processing file: {str(e)}"

if __name__ == "__main__":
    if len(sys.argv) > 1:
        path = sys.argv[1]
        print(analyze_file(path))
    else:
        print("Please provide a file path.")
预期效果

Agent 应该能识别到 excel-master 技能,并根据 SKILL.md 的指引,调用 Python 环境去读取该文件,然后告诉你文件有多少行、多少列以及前几行的数据是什么。

我给的测试文件是我上课做的实验文件(直接给出你的文件路径,不需要手动上传文件,下图我的是根据上一则对话给出的指令)

以上是我的运行结果,符合预期,ok到这,睡觉去了,祝各位做个好梦

更多推荐