OpenClaw Skill 标准开发模板:10个实用Skill源码+阿里云/本地部署与大模型API配置教程

简介: OpenClaw作为轻量化AI智能体平台,其核心扩展能力来自自定义Skill开发,对于新手而言,掌握标准化Skill结构、可直接运行的实用源码、系统的调试避坑方法,就能快速开发出满足文件操作、办公自动化、开发辅助等场景的专属技能。本文提供统一通用的OpenClaw Skill标准模板,包含10个可直接复制使用的新手Skill源码,覆盖文件处理、日常办公、开发辅助三大高频场景,同时完整补充2026年阿里云服务器部署、MacOS/Linux/Windows11本地部署流程,以及阿里云千问大模型API与免费Coding Plan API的配置方法,搭配全场景常见问题解决方案,让零基础用户也能稳定开发

OpenClaw作为轻量化AI智能体平台,其核心扩展能力来自自定义Skill开发,对于新手而言,掌握标准化Skill结构、可直接运行的实用源码、系统的调试避坑方法,就能快速开发出满足文件操作、办公自动化、开发辅助等场景的专属技能。本文提供统一通用的OpenClaw Skill标准模板,包含10个可直接复制使用的新手Skill源码,覆盖文件处理、日常办公、开发辅助三大高频场景,同时完整补充2026年阿里云服务器部署、MacOS/Linux/Windows11本地部署流程,以及阿里云千问大模型API与免费Coding Plan API的配置方法,搭配全场景常见问题解决方案,让零基础用户也能稳定开发、部署、运行自定义Skill。
OpenClawo.png

一、OpenClaw Skill 标准结构模板(全平台通用)

该模板整合必选字段、异常捕获、跨系统兼容逻辑,所有Skill均可基于此模板修改,外层结构固定不可修改,仅需替换核心业务逻辑,支持Windows/MacOS/Linux全系统运行。目前阿里云部署 OpenClaw 只需两步,全网最简单,步骤流程 访问阿里云OpenClaw一键部署专题页面 了解。
OpenClaw部署教程图1.png

const fs = require("fs");
const path = require("path");
const os = require("os");

module.exports = {
   
  id: "skill_unique_id",
  name: "技能名称",
  triggers: ["触发词1", "触发词2", "触发词3"],
  description: "详细功能说明与使用场景描述",
  parameters: [
    {
   
      name: "paramName",
      type: "string",
      required: true,
      default: "",
      description: "参数说明",
      example: "./Desktop/example",
    },
  ],
  timeout: 30000,
  category: "文件操作",
  async execute(params) {
   
    try {
   
      const {
    paramName } = params;
      const getDesktopPath = () => {
   
        return os.platform() === "win32"
          ? path.join(process.env.USERPROFILE, "Desktop")
          : path.join(process.env.HOME, "Desktop");
      };
      const checkAndCreateDir = (dirPath) => {
   
        if (!fs.existsSync(dirPath)) {
   
          fs.mkdirSync(dirPath, {
    recursive: true });
        }
      };
      const resultMsg = "技能执行成功";
      return {
   
        success: true,
        message: resultMsg,
        data: {
   },
      };
    } catch (error) {
   
      return {
   
        success: false,
        message: `技能执行失败:${
     error.message},错误码:${
     error.code || "无"}`,
      };
    }
  },
};

二、10个新手实用Skill源码(直接复制可用)

文件操作类6个

1. 单文件重命名

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "file_rename_single",
  name: "单文件重命名",
  triggers: ["重命名单个文件", "修改文件名", "文件改名"],
  description: "修改单个文件名称,支持跨系统路径",
  parameters: [
    {
   
      name: "oldPath",
      type: "string",
      required: true,
      description: "原文件路径",
      example: "./Desktop/old.txt",
    },
    {
   
      name: "newName",
      type: "string",
      required: true,
      description: "新文件名",
      example: "new.txt",
    },
  ],
  category: "文件操作",
  async execute(params) {
   
    try {
   
      const {
    oldPath, newName } = params;
      if (!fs.existsSync(oldPath)) throw new Error(`原文件不存在:${
     oldPath}`);
      const newPath = path.join(path.dirname(oldPath), newName);
      if (fs.existsSync(newPath)) throw new Error("文件已存在");
      fs.renameSync(oldPath, newPath);
      return {
    success: true, message: `重命名成功:${
     newPath}` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

2. 桌面新建文本文件

const fs = require("fs");
const path = require("path");
const os = require("os");
module.exports = {
   
  id: "file_create_desktop_txt",
  name: "桌面新建文本文件",
  triggers: ["新建文本文件", "桌面创作文档", "生成txt文件"],
  description: "在桌面快速创建文本文件,支持自定义内容",
  parameters: [
    {
   
      name: "fileName",
      type: "string",
      required: true,
      description: "文件名",
      example: "note.txt",
    },
    {
   
      name: "content",
      type: "string",
      required: false,
      default: "OpenClaw自动生成",
      description: "文件内容",
    },
  ],
  category: "文件操作",
  async execute(params) {
   
    try {
   
      const {
    fileName, content } = params;
      if (!fileName.endsWith(".txt")) throw new Error("必须是txt文件");
      const desktop = os.platform() === "win32"
        ? path.join(process.env.USERPROFILE, "Desktop")
        : path.join(process.env.HOME, "Desktop");
      const target = path.join(desktop, fileName);
      fs.writeFileSync(target, content, "utf8");
      return {
    success: true, message: `创建成功:${
     target}` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

3. 批量删除桌面空文件

const fs = require("fs");
const path = require("path");
const os = require("os");
module.exports = {
   
  id: "file_delete_desktop_empty",
  name: "批量删除桌面空文件",
  triggers: ["删除桌面空文件", "清理空文本文件", "删除空文档"],
  description: "删除桌面大小为0的txt文件",
  parameters: [],
  category: "文件操作",
  async execute() {
   
    try {
   
      const desktop = os.platform() === "win32"
        ? path.join(process.env.USERPROFILE, "Desktop")
        : path.join(process.env.HOME, "Desktop");
      const files = fs.readdirSync(desktop).filter(f => {
   
        const p = path.join(desktop, f);
        return f.endsWith(".txt") && fs.statSync(p).size === 0;
      });
      files.forEach(f => fs.unlinkSync(path.join(desktop, f)));
      return {
    success: true, message: `清理空文件:${
     files.length}个` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

4. 批量重命名目录文件

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "file_rename_batch",
  name: "批量重命名指定目录文件",
  triggers: ["批量重命名文件", "统一修改文件名", "文件批量改名"],
  description: "按前缀+序号批量重命名文件",
  parameters: [
    {
   
      name: "fileDir",
      type: "string",
      required: true,
      description: "目录路径",
      example: "./Desktop/images",
    },
    {
   
      name: "prefix",
      type: "string",
      required: false,
      default: "file_",
      description: "文件名前缀",
    },
  ],
  category: "文件操作",
  async execute(params) {
   
    try {
   
      const {
    fileDir, prefix } = params;
      if (!fs.existsSync(fileDir)) throw new Error("目录不存在");
      const files = fs.readdirSync(fileDir).filter(f => fs.statSync(path.join(fileDir, f)).isFile());
      files.forEach((f, i) => {
   
        const ext = path.extname(f);
        const newName = `${
     prefix}${
     i+1}${
     ext}`;
        fs.renameSync(path.join(fileDir, f), path.join(fileDir, newName));
      });
      return {
    success: true, message: `批量重命名:${
     files.length}个` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

5. 复制文件到指定目录

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "file_copy_to_dir",
  name: "复制文件到指定目录",
  triggers: ["复制文件", "文件拷贝", "把文件移到指定文件夹"],
  description: "复制文件到目标目录,不存在则自动创建",
  parameters: [
    {
   
      name: "sourcePath",
      type: "string",
      required: true,
      description: "源文件路径",
    },
    {
   
      name: "targetDir",
      type: "string",
      required: true,
      description: "目标目录",
    },
  ],
  category: "文件操作",
  async execute(params) {
   
    try {
   
      const {
    sourcePath, targetDir } = params;
      if (!fs.existsSync(sourcePath)) throw new Error("源文件不存在");
      if (!fs.existsSync(targetDir)) fs.mkdirSync(targetDir, {
    recursive: true });
      const name = path.basename(sourcePath);
      const target = path.join(targetDir, name);
      fs.copyFileSync(sourcePath, target);
      return {
    success: true, message: `复制成功:${
     target}` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

6. 读取文本文件内容

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "file_read_txt_content",
  name: "读取文本文件内容",
  triggers: ["读取文件内容", "查看txt内容", "读取文本文件"],
  description: "读取txt文件内容并返回",
  parameters: [
    {
   
      name: "filePath",
      type: "string",
      required: true,
      description: "文件路径",
    },
  ],
  category: "文件操作",
  async execute(params) {
   
    try {
   
      const {
    filePath } = params;
      if (!fs.existsSync(filePath)) throw new Error("文件不存在");
      if (!filePath.endsWith(".txt")) throw new Error("仅支持txt");
      const content = fs.readFileSync(filePath, "utf8");
      return {
    success: true, message: content, data: {
    content } };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

办公自动化类2个

7. 生成今日工作日报模板

const fs = require("fs");
const path = require("path");
const os = require("os");
module.exports = {
   
  id: "doc_create_work_report",
  name: "生成今日工作日报模板",
  triggers: ["生成工作日报", "创建日报模板", "今日工作汇报"],
  description: "在桌面生成带日期的日报模板",
  parameters: [],
  category: "办公自动化",
  async execute() {
   
    try {
   
      const d = new Date();
      const dateStr = `${
     d.getFullYear()}${
     d.getMonth()+1}${
     d.getDate()}日`;
      const desktop = os.platform() === "win32"
        ? path.join(process.env.USERPROFILE, "Desktop")
        : path.join(process.env.HOME, "Desktop");
      const filePath = path.join(desktop, `日报_${
     dateStr}.txt`);
      const content = `日报 ${
     dateStr}\n一、今日完成\n1.\n二、明日计划\n1.\n三、问题\n`;
      fs.writeFileSync(filePath, content, "utf8");
      return {
    success: true, message: `日报已生成:${
     filePath}` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

8. 批量创建文件夹

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "dir_create_batch",
  name: "批量创建文件夹",
  triggers: ["批量创建文件夹", "新建多个目录", "创建文件夹组"],
  description: "批量创建子目录,父目录不存在则自动创建",
  parameters: [
    {
   
      name: "parentDir",
      type: "string",
      required: true,
      description: "父目录",
    },
    {
   
      name: "dirNames",
      type: "array",
      required: true,
      description: "目录名,逗号分隔",
    },
  ],
  category: "办公自动化",
  async execute(params) {
   
    try {
   
      const {
    parentDir, dirNames } = params;
      const list = Array.isArray(dirNames) ? dirNames : dirNames.split(",").map(s => s.trim());
      if (!fs.existsSync(parentDir)) fs.mkdirSync(parentDir, {
    recursive: true });
      list.forEach(name => {
   
        const p = path.join(parentDir, name);
        if (!fs.existsSync(p)) fs.mkdirSync(p);
      });
      return {
    success: true, message: `创建文件夹:${
     list.length}个` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

开发辅助类2个

9. 创建Node.js基础文件

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "dev_create_node_file",
  name: "创建Node.js基础文件",
  triggers: ["创建node文件", "生成js基础模板", "新建Node.js文件"],
  description: "创建带注释的Node.js模板文件",
  parameters: [
    {
   
      name: "targetDir",
      type: "string",
      required: true,
      description: "目录",
    },
    {
   
      name: "fileName",
      type: "string",
      required: true,
      description: "文件名.js",
    },
  ],
  category: "开发辅助",
  async execute(params) {
   
    try {
   
      const {
    targetDir, fileName } = params;
      if (!fileName.endsWith(".js")) throw new Error("必须是js文件");
      if (!fs.existsSync(targetDir)) fs.mkdirSync(targetDir, {
    recursive: true });
      const target = path.join(targetDir, fileName);
      const code = `// ${
     fileName}\nmodule.exports = {};`;
      fs.writeFileSync(target, code, "utf8");
      return {
    success: true, message: `创建成功:${
     target}` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

10. 生成.gitignore基础文件

const fs = require("fs");
const path = require("path");
module.exports = {
   
  id: "dev_create_gitignore",
  name: "生成.gitignore基础文件",
  triggers: ["创建gitignore文件", "生成忽略文件", "git忽略配置"],
  description: "生成项目通用.gitignore",
  parameters: [
    {
   
      name: "targetDir",
      type: "string",
      required: true,
      description: "项目目录",
    },
  ],
  category: "开发辅助",
  async execute(params) {
   
    try {
   
      const {
    targetDir } = params;
      if (!fs.existsSync(targetDir)) throw new Error("目录不存在");
      const target = path.join(targetDir, ".gitignore");
      const content = `node_modules/\ndist/\n.env\n.vscode/\n.DS_Store\n`;
      fs.writeFileSync(target, content, "utf8");
      return {
    success: true, message: `.gitignore生成成功:${
     target}` };
    } catch (error) {
   
      return {
    success: false, message: error.message };
    }
  },
};

三、Skill开发与调试避坑指南

开发常见问题

  1. require is not defined:仅使用Node.js内置模块,不使用浏览器API
  2. 路径不存在错误:统一使用path.join拼接路径,增加文件存在判断
  3. 权限不足:以管理员身份运行终端,避免操作系统目录
  4. 参数解析失败:确保parameters名称与execute解构名称完全一致

使用常见问题

  1. 技能不触发:放入skills目录、重启服务、检查触发词
  2. 跨系统报错:使用os.platform动态获取路径,不写死分隔符
  3. 批量操作中断:增加独立try/catch,单文件失败不影响整体
  4. 报错信息模糊:catch中返回error.message,便于定位

四、2026阿里云部署OpenClaw完整流程

  1. 服务器配置:2核4G、Ubuntu 22.04、放行18789端口
  2. 环境安装

阿里云用户零基础部署 OpenClaw 喂饭级步骤流程

第一步:点击打开访问阿里云OpenClaw一键部署专题页面
openclaw666.png
OpenClaw2.png
OpenClaw02.png
OpenClaw03.png
OpenClaw04.png

第二步:打开选购阿里云轻量应用服务器,配置参考如下:

  • 镜像:OpenClaw(Moltbot)镜像(已经购买服务器的用户可以重置系统重新选择镜像)
  • 实例:内存必须2GiB及以上。
  • 地域:默认美国(弗吉尼亚),目前中国内地域(除香港)的轻量应用服务器,联网搜索功能受限。
  • 时长:根据自己的需求及预算选择。

轻量应用服务器OpenClaw镜像.png
bailian1.png
bailian2.png

第三步:打开访问阿里云百炼大模型控制台,找到密钥管理,单击创建API-Key。

阿里云百炼密钥管理图.png

前往轻量应用服务器控制台,找到安装好OpenClaw的实例,进入「应用详情」放行18789端口、配置百炼API-Key、执行命令,生成访问OpenClaw的Token。
阿里云百炼密钥管理图2.png

  • 端口放通:需要放通对应端口的防火墙,单击一键放通即可。
  • 配置百炼API-Key,单击一键配置,输入百炼的API-Key。单击执行命令,写入API-Key。
  • 配置OpenClaw:单击执行命令,生成访问OpenClaw的Token。
  • 访问控制页面:单击打开网站页面可进入OpenClaw对话页面。

阿里云百炼Coding Plan API-Key 获取、配置保姆级教程:

创建API-Key,推荐访问订阅阿里云百炼Coding Plan,阿里云百炼Coding Plan每天两场抢购活动,从按tokens计费升级为按次收费,可以进一步节省费用!
CodingPlan.png

  • 购买后,在控制台生成API Key。注:这里复制并保存好你的API Key,后面要用。
    image.png
  • 回到轻量应用服务器-控制台,单击服务器卡片中的实例 ID,进入服务器概览页。
    image.png
  • 在服务器概览页面单击应用详情页签,进入服务器详情页面。
    image.png
  • 端口放通在OpenClaw使用步骤区域中,单击端口放通下的执行命令,可开放获取OpenClaw 服务运行端口的防火墙。
    image.png
  • 这里系统会列出我们第一步中创建的阿里云百炼 Coding Plan的API Key,直接选择就可以。
    image.png
  • 获取访问地址单击访问 Web UI 面板下的执行命令,获取 OpenClaw WebUI 的地址。
    image.png
    image.png
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash
sudo apt install -y nodejs git
npm config set registry https://registry.npmmirror.com
  1. 安装与启动
    npm install -g openclaw-cn
    openclaw onboard --install-daemon
    openclaw start
    systemctl enable openclaw
    
  2. 阿里云千问API配置
    vim ~/.config/openclaw/config.json
    
    {
         
    "llm": {
         
     "provider": "aliyun-bailian",
     "api_key": "你的AccessKey ID",
     "api_secret": "你的AccessKey Secret",
     "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
     "model": "qwen3-max-2026-01-23",
     "temperature": 0.3
    }
    }
    
    openclaw restart
    

五、本地全平台部署OpenClaw(MacOS/Linux/Windows11)

MacOS

xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install node@22
brew link node@22 --force
npm config set registry https://registry.npmmirror.com
npm install -g openclaw-cn
openclaw onboard
openclaw start

Linux

sudo apt update && sudo apt install -y nodejs git
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash
npm config set registry https://registry.npmmirror.com
npm install -g openclaw-cn
openclaw onboard --install-daemon
openclaw start

Windows11(管理员PowerShell)

npm config set registry https://registry.npmmirror.com
npm install -g openclaw-cn
openclaw onboard
openclaw start

六、免费Coding Plan API配置

vim ~/.config/openclaw/config.json
{
   
  "llm": {
   
    "provider": "openai-compatible",
    "api_key": "你的Coding Plan API Key",
    "base_url": "https://coding.dashscope.aliyuncs.com/v1",
    "model": "qwen3-coder-free"
  }
}
openclaw restart
openclaw llm test

七、常见问题一站式解答

  1. Skill不加载:重启服务、检查文件格式、确认目录正确
  2. API调用失败:核对密钥、URL、模型名,检查额度
  3. 端口占用:执行openclaw fix --port-conflict
  4. 技能运行卡顿:简化逻辑、增加超时设置、关闭多余技能
  5. Windows乱码:统一使用utf8编码,文件保存为UTF-8
  6. 日志排查:使用console.log打印参数,查看终端输出

八、总结

OpenClaw Skill开发并不复杂,遵循统一标准模板、使用Node.js内置模块、做好异常处理与跨系统兼容,即可稳定实现各类自动化功能。本文提供的10个Skill源码覆盖日常最常用场景,可直接复制使用,也可基于标准模板扩展更多功能。2026年阿里云云端部署与本地三大系统部署流程已完全简化,搭配阿里云千问大模型API与免费Coding Plan API,可快速搭建高性能、稳定、安全的AI智能体环境。掌握Skill开发与调试方法,就能让OpenClaw完全贴合个人需求,实现真正高效的自动化工作流。

目录
相关文章
|
2天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
10251 35
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
14天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
5938 14
|
22天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
23212 120
|
8天前
|
人工智能 JavaScript API
解放双手!OpenClaw Agent Browser全攻略(阿里云+本地部署+免费API+网页自动化场景落地)
“让AI聊聊天、写代码不难,难的是让它自己打开网页、填表单、查数据”——2026年,无数OpenClaw用户被这个痛点困扰。参考文章直击核心:当AI只能“纸上谈兵”,无法实际操控浏览器,就永远成不了真正的“数字员工”。而Agent Browser技能的出现,彻底打破了这一壁垒——它给OpenClaw装上“上网的手和眼睛”,让AI能像真人一样打开网页、点击按钮、填写表单、提取数据,24小时不间断完成网页自动化任务。
1956 4

热门文章

最新文章