尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OpenClaw Skills 实战指南:让 AI 代理接管本地系统自动化操作

OpenClaw Skills 实战指南:让 AI 代理接管本地系统自动化操作 把日常重复性的本地操作交给 AI 去做这事我琢磨了很久。上个月我终于把 OpenClaw 的 Skills 机制和本地系统彻底打通了现在像系统巡检、文件整理、项目模板生成这类活儿基本都是我用一句话下指令OpenClaw 自己调用 Skill 完成。这篇文章把我从零搭建、踩坑、到最终跑通的完整过程记录下来重点聊聊怎么用 Skills 对接本地系统以及那些文档里不会告诉你的细节。适合正在用或准备用 OpenClaw 的人尤其是想把它从“聊天机器人”变成“本地操作员”的开发者。1. 为什么是 OpenClaw 的 Skills整体设计思路1.1 OpenClaw 是什么Skills 在其中的位置OpenClaw 是一个跑在终端里的 AI 代理Agent定位上和 Claude Code、Codex 类似但更强调“本地操作”和“可扩展性”。它不是一个简单的命令行问答工具而是一个能够自己读文件、执行命令、调用工具、根据结果决定下一步动作的智能体。你给它一个目标它会拆解成多个步骤一步步执行并校验结果。在这个过程中Skills 扮演的角色非常关键。你可以把它理解成一组“预置的操作手册”。大模型本身知道很多知识但它不知道你机器上的具体环境长什么样也不知道你希望它按照什么标准流程来操作。Skills 恰好补齐了这个 gap每个 Skill 都是一份带说明文档的结构化指令模型在遇到相关任务时会读取这份文档然后按照里面的步骤去执行。我见过不少人不理解 Skills 和普通 Prompt 的区别这里多说一句。Prompt 是一次性的对话上下文这次说完下次就没了Skills 是持久化的、可复用的、带触发条件的“技能包”。你可以把一套精心调教过的操作流程写进 Skill然后在任意新会话里让模型自动加载并使用它。这就相当于给模型装了一个又一个“外挂技能”而不是每次重新教它一遍。1.2 对比 Function Calling、插件体系Skills 的优势说到这儿肯定有人会问模型不是本来就有 Function Calling 吗为什么不直接用函数调用我的理解是这样的Function Calling 是模型层面的机制它定义了“模型可以调哪些函数、参数的 schema 是什么”但它有一个天然的限制函数是死的逻辑是写死在代码里的。今天你想让 AI “按新流程整理文件”你得改代码、重新部署。而 Skills 是工程层面的封装它的核心逻辑是一份 Markdown 文档你改文档就等于改技能不需要动程序本体。再对比一下插件Plugin体系。很多 Agent 框架都支持插件但插件通常需要写代码、编译、遵循特定的 API 规范门槛比较高。Skills 则友好得多只要你会写 Markdown 和基本的命令行操作你就能开发一个自己的 Skill。而且 Skills 天然适合放进 Git 仓库做版本管理团队协作时可以直接 clone 一份技能库大家共用同一套操作标准。1.3 对接本地系统的核心思路三层结构这次项目的核心目标是用 Skills 让 OpenClaw 能真正操作我的本地系统。我把整个架构拆成了三层第一层是 Workspace 工作区它圈定了 AI 在文件系统里的“活动范围”第二层是 exec-approvals 审批机制它决定了 AI 能不能执行敏感命令第三层才是 Skills 本身它提供了“做什么、怎么做”的具体指令。这三层缺一不可。没有 Workspace模型可能跑到你不希望它碰的目录里去乱翻没有审批机制模型执行rm -rf的时候你连拦的机会都没有没有 Skills模型面对复杂任务只能临场发挥结果不可控。对接本地系统从来不是“让 AI 能跑命令”这么简单而是要在“能力”和“边界”之间找到一个平衡点。下面我从环境搭建开始逐步把这套体系讲清楚。2. 环境准备从零装好 OpenClaw2.1 Windows / macOS / Linux 安装方式与坑OpenClaw 的安装方式在不同平台上差别不大但坑也不少。我在 Windows 11 上踩过的第一个坑就是 PowerShell 执行策略。在 Windows 上用 PowerShell 安装时默认的执行策略是 Restricted会直接拦截安装脚本。你需要先手动放开限制Set-ExecutionPolicy RemoteSigned -Scope CurrentUser然后执行官方安装脚本。装完后我个人建议把执行策略改回 Restricted或者保持 RemoteSigned 也行看你对安全的要求。还有一个很容易忽略的问题装完之后如果你原来的终端窗口没关会报“无法将 openclaw 项识别为 cmdlet、函数、脚本文件或可运行程序的名称”这是因为 PATH 环境变量没有刷新。关掉终端重新开一个就好不用怀疑是自己装错了。macOS 和 Linux 相对简单一些官方脚本或者包管理器都行。我在一台 openEuler 24.03 LTS 的机器上也测过需要注意的一个点是系统自带的 glibc 版本可能比较老如果运行 openclaw 报缺少共享库很大概率是二进制包和系统库版本不匹配建议直接去官方仓库拉对应发行版的包而不是强行装通用版本。2.2 初始化配置与 Workspace 工作区安装完成后的第一步是运行一次openclaw让它生成默认配置。这个过程会在你的用户目录下创建一个.openclaw文件夹里面包含配置文件、日志目录、以及一个默认的workspace。Workspace 这个概念非常重要。它就是 AI 在本地文件系统上的“专属工作区”。我在 Windows 机器上的默认路径是C:\Users\Administrator\.openclaw\workspace所有我允许 AI 自由读写的文件都放在这个目录里。这样做的好处是如果 AI 在操作过程中产生了什么垃圾文件、或者误删了什么东西影响范围被限制在一个可控的目录内不会波及整个系统。你可以通过配置文件修改 workspace 路径。我个人建议把 workspace 单独放在一个非系统盘的数据分区比如D:\AgentWorkspace这样即使重装系统也不会丢。配置里还可以设置 LLM 的接入方式包括 API 端点、模型名等。如果你有内部的大模型服务可以把 base URL 指过去让对话记录不出内网。2.3 扩展场景接入 NVIDIA NIM 等服务顺着上面说的 LLM 接入再展开一下。最近不少人搜“OpenClaw 配置 NVIDIA NIM”其实就是想让 OpenClaw 使用本地或内网 GPU 推理服务。NVIDIA NIM 提供了一套标准化的模型推理接口你只需要在 OpenClaw 的配置里把 LLM 的 baseURL 换成 NIM 服务的 endpoint再填上对应的模型名就行。这样做的价值在于一方面不用把代码和对话内容发送到外部 API数据安全性更好另一方面推理延迟更低特别是做本地系统操作这种高频交互场景体感会好很多。配置方式本质上就是改一个 URL但要注意 NIM 服务端的模型是否支持工具调用如果不支持OpenClaw 的 Agent 能力会大打折扣Skill 触发也可能失败。3. Skills 的核心机制与原理解析3.1 SKILL.md 结构与 frontmatter一个 Skill 本质上就是一个目录目录里最关键的文件是SKILL.md。它的头部是 YAML 格式的 frontmatter包含name和description两个核心字段。别小看这两个字段它们直接决定了模型“什么时候会想起用这个 Skill”。我拿一个实际例子来说明。假设我写了一个系统信息采集的 Skill它的 frontmatter 长这样--- name: system_info description: 采集本地系统的基础信息包括操作系统版本、CPU/内存占用、磁盘空间、最近运行进程输出为 Markdown 报告。当用户需要检测系统状态、定位资源占用问题时使用。 ---模型在运行过程中会把当前用户的问题和所有 Skill 的 description 做匹配。description 写得越具体、场景越明确模型就越容易在合适的时机调用它。反过来说如果 description 写得太泛比如“这是一个系统工具”模型可能在你问天气的时候也拿出来用完全跑偏。3.2 模型是如何“读懂” Skill 的Frontmatter 下面是正文部分一般是 Markdown 格式的操作步骤。你可以把它理解成给模型的一份 SOP标准作业程序。模型读到这份 SOP 之后会一步步执行里面的指令。这里有一个关键的机制需要理解模型并不会把每个 Skill 的全文都塞进上下文里那样太浪费 token 了。它是先看所有 Skill 的 description发现匹配的才去加载对应的 SKILL.md 全文。所以 description 是“简历”正文是“入职培训手册”。简历写得不好可能连面试机会都没有正文写得再详细也白搭。我在设计 Skill 正文时习惯遵循几个原则第一步先描述任务的输入参数怎么获取第二步列出核心操作步骤第三步告诉你“怎么判断结果是成功的”最后是输出格式要求。这四段式结构对模型的引导效果最好尤其是“怎么判断成功”这一步模型很多时候做完事不知道该怎么汇报你把判断标准写清楚它就能主动去校验结果。3.3 Skills 的扫描加载机制与存放路径OpenClaw 在启动时会扫描指定目录下的 Skills。默认路径通常是~/.openclaw/skills每个子目录对应一个 Skill。除了全局目录你也可以在具体的项目目录下放一个.skills文件夹OpenClaw 会把项目级 Skills 也加载进来。这个设计非常实用全局限定通用的操作技能项目级放和当前代码库相关的专项技能。需要注意的一个坑是如果同名 Skill 同时存在于全局目录和项目目录不同版本的优先级不一样有的版本是项目级覆盖全局有的版本是按字母序取第一个。我建议在团队协作时约定好命名规范避免同名冲突。另外一个经验是Skill 目录里除了 SKILL.md还可以放一些辅助文件比如脚本模板、配置文件样例SKILL.md 里可以通过相对路径引用它们。我做过一个项目模板生成 Skill就是把一套 Vue 项目骨架放在 Skill 目录里模型直接复制过去重命名效率非常高。4. 实战用 Skill 对接本地系统4.1 案例一系统信息采集 Skill光讲原理有点虚我直接拿自己实际在用的 Skill 来拆解。第一个是系统信息采集我在三台机器上都装了它用来做日常巡检。SKILL.md 全文如下略作简化--- name: system_info description: 采集本地系统的基础信息包括操作系统版本、CPU/内存占用、磁盘空间、最近运行进程输出为 Markdown 报告。当用户需要检测系统状态、定位资源占用问题时使用。 --- # 系统信息采集 1. 判断当前操作系统类型Windows 或 Unix-like。 2. 获取系统版本 - Windows: 执行 systeminfo 并提取 OS 名称和版本。 - Unix-like: 执行 uname -a 和 cat /etc/os-release。 3. 获取 CPU 和内存占用 - Windows: 执行 wmic cpu get loadpercentage 和 wmic OS get FreePhysicalMemory,TotalVisibleMemorySize。 - Unix-like: 执行 top -b -n 1 | head -20 和 free -h。 4. 获取磁盘空间 - Windows: 执行 Get-PSDrive C 或 wmic logicaldisk get size,freespace,caption。 - Unix-like: 执行 df -h。 5. 获取最近运行的进程列表按 CPU 占用排序的前 10 条。 6. 将以上信息整理为 Markdown 表格输出每条数据旁边标注机器名和采集时间。这个 Skill 的执行效果非常稳定。关键是第 6 步要求“标注机器名和采集时间”这能让模型自动带上机器的身份标识在多机巡检时非常有用。我当初没有写这一步结果三台机器的报告混在一起根本分不清是哪台后来补上这个要求问题直接解决。4.2 案例二本地文件批量整理 Skill第二个案例是文件整理这个 Skill 解决的是我的一个真实痛点下载目录总是乱七八糟各种安装包、截图、文档混在一起。设计这个 Skill 时我没有把所有逻辑写死而是给模型留了几个参数源目录、文件类型分类规则、归档目录。SKILL.md 里的描述大致是--- name: organize_files description: 按文件类型整理指定目录下的文件将图片、文档、压缩包、可执行文件等分别移动到子文件夹中。当用户觉得某个目录很乱、需要自动分类归档时使用。 --- # 文件整理 1. 确定源目录默认是 workspace 下的 downloads。 2. 扫描目录下的所有文件跳过已经存在的子目录。 3. 按扩展名分类 - 图片.jpg, .jpeg, .png, .gif, .webp - 文档.pdf, .docx, .md, .txt, .xlsx - 压缩包.zip, .rar, .7z, .tar.gz - 可执行程序.exe, .msi, .sh, .AppImage 4. 在源目录下创建对应分类子目录。 5. 移动文件到对应子目录如果遇到同名文件在文件名后加序号保留。 6. 完成后输出一张“移动前后文件数对比表”并列出未能分类的文件。这个 Skill 最需要注意的地方是第 5 条“同名文件加序号保留”这是血的教训。第一次运行的时候没有这条模型直接覆盖了同名文件差点把一份重要文档覆盖了。后来我写任何涉及文件移动或写入的 Skill都会强制要求先检查同名冲突。4.3 权限审批机制exec-approvals.json 的正确打开方式Skill 让 AI 具备了操作本地系统的“能力”但你得给它“授权”。OpenClaw 的安全机制里有一个叫 exec-approvals 的文件通常位于~/.openclaw/exec-approvals.json。它控制着 AI 执行外部命令时是否需要人工审批。默认情况下一些危险命令会被拦截或需要审批。我第一次跑文件整理 Skill 的时候模型准备执行Remove-Item删除一个临时文件结果被安全机制拦了下来整个流程卡住。后来我才意识到这个审批机制不是用来阻碍你的而是给你一个“刹车”的机会。Windows:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser我在实际使用中会把一些高频率、低风险的命令加入白名单比如Get-ChildItem、df、Get-Process这类只读命令。对于Remove-Item、del、rm -rf这类命令我强烈建议不要放进自动放行列表宁可每次让 AI 停下来问你一句。现在 AI 操作失误的案例太多了多一次确认就是多一道保险。另外升级 OpenClaw 版本后我遇到过系统提示legacy exec approvals exist at /root/.openclaw/exec-approvals.json的情况这是旧版本和新版本的审批文件格式不兼容按提示把旧文件备份后重新生成即可不要直接删除万一里面有你配置的白名单呢。5. 进阶玩法Skill 调用 MCP 与复合技能5.1 MCP 是什么我为什么要在 Skill 里接它MCPModel Context Protocol是一个标准化的工具调用协议。简单说它定义了大模型和外部工具之间的“通信协议”让 AI 能以一种统一的方式去操作数据库、文件系统、Git 仓库、各种 API 服务而不是每一个都要单独定制开发接口。那为什么要在 Skill 里接 MCP我的理解是Skill 负责“知道怎么做”MCP 负责“真正去做”。Skill 是一份操作手册它告诉模型流程和标准但当需要真正操作某个外部系统时比如查询数据库、发 HTTP 请求、操作远端服务器模型需要对应的工具接口这就是 MCP 的用武之地。5.2 Skill MCP 协作模式的配置思路在 OpenClaw 里配置 MCP 服务器后模型可以通过类似mcp__服务器名__工具名的方式调用工具。如果你希望在 Skill 里强制使用某个 MCP 工具直接在 SKILL.md 的步骤里写明要调用哪个工具就好。举个例子我接了一个数据库查询的 MCP 服务器然后在本地数据统计的 Skill 里写# 本地数据统计 1. 获取今天的订单文件列表文件系统操作。 2. 使用 MCP 工具 mcp__analytics__query 对数据库执行 SQL 查询统计今日订单量。 3. 对比文件中的订单数与数据库记录数标注差异。 4. 输出统计结论。这样的好处是模型的执行路径完全可控该查文件查文件该查库查库不会自己临场发挥去编造一个不存在的工具。Skill 描述里写明 MCP 工具的调用要求相当于给模型一个“只能用这个工具”的强约束这在操作外部系统时非常重要能避免模型“灵机一动”调用错误 API。5.3 前端开发 Skill 的设计与落地前面提到过我从热词里看到不少人在搜“前端开发 skills”我正好做了一个 Vue 项目模板生成 Skill说下设计思路。这个 Skill 的触发场景是用户说“帮我新建一个管理后台的前端项目”然后模型根据 Skill 里的模板在 workspace 下生成一套完整的 Vue 3 Vite 项目结构。SKILL.md 的步骤大概包括确认项目名称和技术栈、读取 Skill 目录下的模板文件、复制并重命名、按需替换 package.json 里的项目名、执行npm install安装依赖、最后输出项目目录树。做这类 Skill 最关键的一点是模板文件必须随 Skill 一起发布和版本管理。我把一套经过验证的项目模板放在了 Skill 目录的templates/子目录里SKILL.md 通过相对路径引用。这样每次改模板Skill 的行为就跟着变了不需要改动任何代码特别适合团队内部沉淀工程规范。我个人觉得前端开发 Skills 特别适合做两件事一个是快速搭骨架另一个是统一代码规范审查前者省时间后者控质量。5.4 项目文档与流程类 Skill 的思路除了操作类和开发类 Skill文档流程类 Skill 也很有价值。举个例子我做过一个“结构图 Skill”用户说出一个系统或者模块AI 自动生成一张层级结构图对应的 Markdown 清单项目里不让用 Mermaid 就直接用树状缩进表示。还有一个“测试用例 Skill”输入一个功能描述AI 自动输出标准格式的测试用例清单包括用例编号、前置条件、操作步骤、预期结果。这类 Skill 和前面几种有个显著区别它不产生“实际影响系统状态的操作”纯生成文本所以安全性要求低但上下文要求高对模型的理解能力比较考验。实践经验是这类 Skill 的 description 里一定要写清楚“当需要 XXX 时使用”否则模型容易在不需要的时候也来套模板生成一堆没用的东西。6. 常见问题与排查技巧实录6.1 高频问题速查表我把这段时间遇到的问题整理成了一张表方便后来者快速定位现象常见原因解决办法openclaw 命令找不到安装后终端未重启PATH 未刷新关掉终端重新打开或手动刷新 PATHWindows 下安装脚本被拦截PowerShell 执行策略过严先Set-ExecutionPolicy RemoteSigned -Scope CurrentUser再安装Skill 始终不触发description 写得过于宽泛或场景词不匹配重写 description明确“当用户需要XXX时使用”Skill 执行到一半卡住遇到需要审批的命令模型在等待确认查看审批提示或调整 exec-approvals 白名单中文输出乱码终端编码不是 UTF-8Windows 终端执行chcp 65001升级后提示 legacy exec approvals审批文件格式版本不兼容备份旧文件后按提示重新生成Linux 下运行报缺库系统 glibc 版本和二进制包不匹配改用发行版对应的包或自行编译这张表覆盖了大多数入门问题真正用起来之后遇到最多的其实不是安装问题而是 Skill 设计层面的问题。6.2 权限与安全避坑别为了省事放开所有限制对接本地系统是有安全代价的这一点必须先说清楚。我见过有人为了让 AI 更“顺畅”地干活把 exec-approvals.json 里的命令全部设为自动放行这是非常危险的玩法。AI 代理的本质是模型驱动的模型会有幻觉、会有误判一旦它在一个关键目录里执行了错误的删除命令后果是不可逆的。我的安全底线是几条高危命令永远保持审批状态rm/del/format 这类命令不自动放行workpace 目录之外的文件AI 只有读取权限写操作需要审批所有涉及网络请求的工具第一次使用前先手工验证一遍 MCP 服务器配置是否正确。你可以把 AI 当成一个能力很强但偶尔犯迷糊的新同事给它权限之前先想想“如果它做错了我能不能接受这个后果”。6.3 经验心得让 Skill 一次跑通的四个诀窍最后分享几个我自己调 Skill 的经验。第一先小后大新 Skill 先拿一个最小用例测试比如文件整理就先放三个文件进去试跑通再处理真实数据不要一上来就处理几千个文件。第二描述要写边界在 description 里明确“不做什么”比“做什么”更重要能有效避免模型误触发。第三输出要结构化强制要求模型按表格、列表、树状图输出尤其是操作类 Skill结构化的结果是校验成功与否的最直观依据。第四版本控制Skill 目录一定放进 Git 仓库每次改动都提交出了问题可以快速回滚。按这个套路来绝大多数 Skill 都能在第一轮调通哪怕第一次效果不满意你也能很快定位是哪个环节出了问题而不是一头雾水地改来改去。我在实际折腾下来最大的感受是OpenClaw 的 Skills 并不是什么黑魔法它的核心价值是把“模型的智能”和“系统的秩序”连接了起来。模型负责理解和推理Skill 负责把这种理解和推理约束在可控的操作路径里。现在我自己已经养成了一个习惯凡是重复性超过三次的本地操作我都会想这能不能写成一个 Skill。这个方法看起来有点“懒”但积累起来的效果非常惊人几个 Skill 就能覆盖掉我每天至少半小时的重复劳动。如果你也正在用 OpenClaw不妨从一个最简单的系统信息采集开始把你最烦的那件重复事交给它跑通了你会发现这才是 Agent 落地到日常工作的正确姿势。
返回列表