ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AI助力运维——AIGC运维应用实践—玩转龙虾(OpenClaw)之编写SKILL.md技能处理日常运维故障

AI助力运维——AIGC运维应用实践—玩转龙虾(OpenClaw)之编写SKILL.md技能处理日常运维故障 1. 运维故障排查为什么需要 SKILL.md日常运维里最耗时间的不是敲命令而是「每次都要重新想一遍排查路径」。服务器磁盘满了、Java 进程 CPU 飙高、文件系统报 I/O error这些故障的处理逻辑其实高度重复但每次都得从头翻日志、查指标、拼命令。AIGC 工具能帮你写命令可它不知道你们公司的排查规范也不清楚哪些操作在生产环境是红线。OpenClaw 的 SKILL.md 技能文件解决的正是这个问题。它把「一个运维专家遇到某类故障时的完整思路」写成结构化文档包括身份定位、可执行命令范围、判断逻辑、安全约束和输出格式。当你在对话里触发某个技能时OpenClaw 会加载这份文档作为上下文让模型按你定义的流程去采集信息、分析根因、给出方案。适合谁用三类人最直接受益一是手里管着几十台 Linux 服务器、故障处理靠经验积累的运维工程师二是想把团队排查规范沉淀下来、避免新人踩坑的 SRE三是正在用 OpenClaw 做自动化运维、需要把重复流程变成可复用技能的开发者。这篇会从 SKILL.md 的骨架讲起给出 config.toml 配置示例再演示一次「磁盘告警触发技能自动响应」的完整验证动作目标是让你复制配置就能跑通第一个运维技能。2. TaoToken 前置准备拿到 API Key 并接入 OpenClawOpenClaw 本身是一个 Agent 框架它需要调用大模型来完成推理和命令生成。TaoToken 提供兼容 OpenAI 接口规范的模型调用服务你可以把它作为 OpenClaw 的模型后端。整个接入分两步拿 Key、写配置。2.1 获取 API Key访问 TaoToken 控制台的 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite登录后创建一个新的 Key。建议按用途命名比如openclaw-ops方便后续区分。创建后立即复制保存页面关闭后无法再次查看完整 Key。注意API Key 等同于账号凭证不要写进公开的 Git 仓库。生产环境建议用环境变量注入而不是硬编码在配置文件里。2.2 确认模型可用在正式配置 OpenClaw 之前先用一条 curl 命令确认 Key 能正常调用模型。这一步能帮你排除网络、Key 权限、模型名称拼写等基础问题curl -s https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: claude-sonnet-4-20250514, messages: [{role: user, content: 回复 OK 两个字母}], max_tokens: 16 }如果返回的 JSON 里choices[0].message.content包含OK说明 Key 和网络都没问题。你也可以直接在模型对话页面https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite里手动发一条消息验证更直观。2.3 接入文档参考OpenClaw 的模型接入配置涉及 base_url、api_key、model 三个核心字段。TaoToken 的接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite里有完整的参数说明和不同框架的配置示例。如果你用的是 Claude Code 这类编码 Agent可以参考 ClaudeCodeAnthropic 接入说明https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite来配置。3. 可复制配置SKILL.md 骨架与 config.toml这一节是全文的核心。我会先给出 SKILL.md 的通用骨架再给出一份完整的「Linux 磁盘巡检」技能文件最后配上 OpenClaw 的 config.toml 配置。3.1 SKILL.md 的通用骨架一份能跑通的 SKILL.md 需要回答三个问题你是谁、你能看什么、你怎么判断。对应到文件结构就是--- name: 技能唯一标识 description: 技能用途描述Agent 靠这段文字匹配触发场景 license: MIT allowed-tools: - node-connect metadata: skill_id: 技能ID-v1 version: 0.0.1 author: 你的团队名 display_name: 技能显示名称 --- # Role: 角色定位 你是一名拥有 X 年经验的 XXX 专家。 ## 核心原则 1. 只读优先不做任何写操作 2. 先采集信息再分析判断 3. 根因驱动不停留在表象 ## 安全约束强制 - 禁止执行 rm/kill/systemctl stop 等命令 - 所有命令仅使用只读查询类 ## 执行流程 ### 阶段一信息采集 列出具体命令 ### 阶段二分析判断 列出判断逻辑和阈值 ### 阶段三输出报告 定义报告格式 ## 输出格式 结构化报告模板description字段很关键OpenClaw 会根据用户输入和这个描述做语义匹配决定是否加载该技能。写得太泛会导致误触发写得太窄又匹配不上。建议把「适用场景 典型故障类型」都写进去。3.2 完整示例Linux 磁盘巡检技能下面这份 SKILL.md 可以直接复制使用。它实现了磁盘空间和 inode 的巡检当可用空间低于 15% 时触发告警并给出清理建议但不自动执行--- name: linux-disk-space-monitor description: 对 Linux 服务器执行磁盘空间健康检查覆盖块空间使用率、inode 使用率、LVM 逻辑卷状态。当任意分区可用空间低于 15% 或 inode 可用低于 10% 时触发告警并提供专家级清理建议。适用于磁盘告警、No space left on device 等场景。 license: MIT allowed-tools: - node-connect metadata: skill_id: linux-disk-space-monitor-v1 version: 0.0.1 author: OpenClaw Ops display_name: Linux 磁盘空间巡检与告警 --- # Role: Linux 存储运维专家 你是一名拥有 10 年一线经验的 Linux 存储运维专家精通 ext4/xfs 文件系统、LVM 逻辑卷管理和磁盘性能分析。 ## 核心原则 1. 只读优先所有命令仅用于信息采集不执行任何写操作 2. 先看全局再看局部先 df 看整体再 du 定位大目录 3. 告警分级可用空间 15% 为 WARNING 5% 为 CRITICAL 4. 清理建议需人工确认不自动执行删除操作 ## 安全约束强制 - 禁止执行 rm、truncate、shred 等删除命令 - 禁止执行 systemctl stop/restart - 禁止修改 /etc/fstab - 禁止执行 umount - 所有命令仅使用只读查询类 ## 执行流程 ### 阶段一磁盘空间采集 执行以下只读命令 df -hT df -i lsblk -f vgs --units g 2/dev/null lvs --units g 2/dev/null ### 阶段二大目录定位 对使用率超过 85% 的挂载点执行 du -xh --max-depth2 挂载点 2/dev/null | sort -rh | head -20 ### 阶段三已删除未释放文件检查 lsof L1 2/dev/null | grep deleted | head -20 ### 阶段四告警判定与报告 根据采集数据判定告警级别输出结构化报告。 ## 输出格式 磁盘巡检报告需包含 1. 主机名与巡检时间 2. 各分区使用率表格含告警标记 3. inode 使用率 4. 大目录 TOP 10 5. 已删除未释放文件清单 6. 清理建议按优先级排序标注预估释放空间3.3 config.toml 配置示例OpenClaw 的配置文件通常位于~/.openclaw/config.toml。下面是一份最小可用配置把模型后端指向 TaoToken[model] provider openai-compatible base_url https://taotoken.net/api/v1 api_key ${TAOTOKEN_API_KEY} model_name claude-sonnet-4-20250514 max_tokens 4096 temperature 0.3 [agent] name ops-assistant workspace ~/.openclaw/workspace skills_dir ~/.openclaw/workspace/skills auto_load_skills true [security] read_only_mode false confirm_before_exec true command_timeout 30几个关键点说明base_url必须带/v1后缀这是 OpenAI 兼容接口的约定。api_key用${TAOTOKEN_API_KEY}引用环境变量避免明文写在文件里。temperature设低一些0.3运维场景需要稳定输出不需要创意。confirm_before_exec true表示每条命令执行前需要人工确认生产环境强烈建议开启。设置环境变量的方式echo export TAOTOKEN_API_KEY你的Key ~/.bashrc source ~/.bashrc3.4 技能目录结构OpenClaw 加载技能时会扫描skills_dir下的子目录每个子目录里放一份 SKILL.mdmkdir -p ~/.openclaw/workspace/skills/linux-disk-space-monitor # 把上面的 SKILL.md 内容写入该目录 vim ~/.openclaw/workspace/skills/linux-disk-space-monitor/SKILL.md目录名建议和 SKILL.md 里的name字段保持一致方便排查问题。4. 验证请求从故障触发到技能自动响应配置写完了得验证它真的能跑通。这一节演示一次完整的「磁盘告警触发技能自动响应」流程。4.1 确认技能已加载启动 OpenClaw 后先列出已加载的技能openclaw skills list预期输出里应该能看到linux-disk-space-monitor状态为loaded。如果没看到检查 SKILL.md 的 YAML front matter 格式是否正确特别是---分隔符和缩进。4.2 准备测试环境为了验证告警逻辑我在测试机上临时创建了一个小分区并写满模拟磁盘告警场景# 创建 100MB 的临时文件系统用于测试 dd if/dev/zero of/tmp/testdisk.img bs1M count100 mkfs.ext4 /tmp/testdisk.img mkdir -p /mnt/testdisk mount -o loop /tmp/testdisk.img /mnt/testdisk # 写入数据直到可用空间低于 15% dd if/dev/zero of/mnt/testdisk/fill bs1M count90此时df -h /mnt/testdisk显示可用空间约 8%低于 15% 阈值。4.3 触发技能在 OpenClaw 对话里输入用 linux-disk-space-monitor 技能检查一下本机的磁盘空间OpenClaw 会匹配到技能加载 SKILL.md 作为上下文然后按定义的流程执行命令。你会看到它依次执行df -hT、df -i、du等只读命令最后输出一份报告。4.4 预期输出报告应该包含类似这样的内容磁盘巡检报告 - test-host 时间: 2025-01-15 14:32:07 文件系统 类型 容量 已用 可用 使用率 /dev/loop0 ext4 97M 90M 2.1M 98% CRITICAL /dev/sda1 ext4 50G 32G 18G 64% OK 告警详情: [CRITICAL] /mnt/testdisk 可用空间仅 2%需立即处理 大目录 TOP: 90M /mnt/testdisk/fill 清理建议: 1. 检查 /mnt/testdisk/fill 是否为临时文件确认后可删除 预估释放: 90M如果输出里包含了告警标记和清理建议说明技能跑通了。注意技能只给出建议不会自动执行删除——这是安全约束在起作用。4.5 清理测试环境验证完成后清理临时分区umount /mnt/testdisk rm -f /tmp/testdisk.img rmdir /mnt/testdisk5. 本篇常见错排查配置和验证过程中最容易卡在下面几个地方。5.1 技能加载失败YAML 格式错误症状是openclaw skills list里看不到技能或者启动时报failed to parse skill。最常见的原因是 YAML front matter 的缩进用了 Tab 而不是空格或者---分隔符前后有空行。YAML 对缩进极其敏感统一用两个空格。另一个坑是description字段里包含了冒号但没加引号。比如description: 检查磁盘: 空间和inode会被解析成键值对。正确写法是description: 检查磁盘: 空间和inode。5.2 模型调用返回 401如果 OpenClaw 日志里出现401 Unauthorized按顺序检查环境变量TAOTOKEN_API_KEY是否在当前 shell 生效echo $TAOTOKEN_API_KEYconfig.toml 里的${TAOTOKEN_API_KEY}拼写是否正确Key 是否已过期或被删除。可以回到 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite确认 Key 状态。5.3 技能触发了但没执行命令如果 OpenClaw 回复了文字但没有实际执行 shell 命令通常是allowed-tools配置问题。SKILL.md 里的allowed-tools需要包含node-connect否则 Agent 没有权限连接节点执行命令。另外检查 config.toml 里的confirm_before_exec如果设为 true每条命令都需要你手动确认可能看起来像「卡住了」。5.4 命令执行超时command_timeout 30表示单条命令最多执行 30 秒。像du -xh /这种遍历整个根目录的命令在大磁盘上可能超过 30 秒。解决办法是给命令加--max-depth限制深度或者把 timeout 调到 60。但不要设太大否则一条卡死的命令会拖住整个 Agent。5.5 告警阈值不生效如果磁盘已经 95% 了但技能没报 CRITICAL检查 SKILL.md 里阈值判断逻辑的写法。常见错误是把df输出的使用率字段位置搞错了——不同发行版的df -hT输出列数可能不同。建议用df -hT | awk {print $6}先确认使用率在第几列再写判断逻辑。6. 把技能用起来从单机到团队跑通第一个技能后你可以按同样的骨架扩展出更多运维技能。比如把「Java 进程 CPU 飙高排查」写成 SKILL.md内置 Arthas 的thread -n 3、dashboard等只读命令把「文件系统 I/O error 诊断」写成技能内置dmesg、xfs_info、dumpe2fs的采集流程。每个技能都是一份可复用的排查 SOP。如果你需要长期跑编码类或 Agent 类任务比如让 OpenClaw 自动写排查脚本、生成报告模板可以考虑 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite它在长上下文和代码生成场景下有更好的配额支持。日常验证模型输出是否稳定直接在模型对话页面https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite里试就行。最后提醒一句SKILL.md 里的安全约束不是摆设。生产环境的技能一定要把「禁止写操作」写死在 Constraints 里并且开启confirm_before_exec。我见过太多因为 Agent 误执行rm或systemctl restart导致的事故而这些在 SKILL.md 里加一行约束就能避免。
返回列表