乐于分享
好东西不私藏

【实战篇】用 OpenClaw 搭建你的"数字打工人"

【实战篇】用 OpenClaw 搭建你的"数字打工人"

前面六篇文章,我们学会了 OpenClaw 的原理、技能、记忆、定时任务、子 Agent。现在,是时候把这些能力串联起来,搭建一个真正能干活的”数字打工人”了。这篇文章不讲概念,只讲实战——从需求到落地的完整过程。


一、实战目标:一个完整的”数字打工人”

我们要搭建一个自动运维助手,它具备以下能力:

能力
具体功能
用到的技术
主动汇报
每天早上 9 点推送服务器状态
定时任务 + 天气 Skill
监控告警
每小时检查服务器存活,挂了告警
定时任务 + Shell 脚本
自动修复
检测到问题后自动尝试重启
子 Agent + SSH
日报生成
每天下班前生成运维日报
定时任务 + 文档 Skill
智能分析
遇到复杂问题时自动查资料分析
子 Agent + 联网搜索

最终效果:你只负责看推送,它负责干活。


二、第一步:搭建监控基础

2.1 创建监控脚本

需求:检查服务器是否存活

方案:用 Shell 脚本 + curl

#!/bin/bash# 保存为 ~/scripts/check-server.shSERVER="https://your-server.com"TIMEOUT=10# 健康检查RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" --max-time $TIMEOUT $SERVER/health)if [ "$RESPONSE" = "200" ]; then  echo "✅ 服务器正常 (HTTP $RESPONSE)"  exit 0else  echo "🚨 服务器异常 (HTTP $RESPONSE 或无法连接)"  exit 1fi

说明

  • curl -s 静默模式,不输出进度
  • -o /dev/null 丢弃响应体,只保留状态码
  • -w "%{http_code}" 只输出 HTTP 状态码
  • --max-time $TIMEOUT 超时 10 秒

2.2 测试脚本

# 添加执行权限chmod +x ~/scripts/check-server.sh# 测试~/scripts/check-server.sh# 输出:✅ 服务器正常 (HTTP 200) 或 🚨 服务器异常

三、第二步:创建定时监控任务

3.1 需求分析

  • 频率:每小时检查一次
  • 通知:有问题才通知,正常时静默
  • 渠道:微信

3.2 创建定时任务

使用内置 cron 工具:

{  "action": "add",  "job": {    "name": "服务器存活监控",    "agentId": "main",    "schedule": {"kind":"every","everyMs":3600000},    "sessionTarget": "isolated",    "payload": {      "kind": "agentTurn",      "message": "执行 ~/scripts/check-server.sh。如果输出包含「异常」,立即告警:服务器可能挂了,请检查。如果输出包含「正常」,不输出任何内容。要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 只在异常时输出 (4) 告警内容控制在 1 句话"    },    "delivery": {"mode":"announce"}  }}

关键设计

  • everyMs: 3600000 = 每小时(1小时 = 3600秒 = 3600000毫秒)
  • sessionTarget: "isolated" = 独立会话,不污染主对话
  • message 中的条件判断 = “正常时不输出”

3.3 验证任务创建

openclaw cron list

输出示例:

job_xxx  服务器存活监控  every 1h  enabled  next: 10:00

四、第三步:添加自动修复能力

4.1 需求分析

监控只是发现问题,真正有用的是自动修复

场景:服务器进程挂了,自动重启

4.2 创建修复脚本

#!/bin/bash# 保存为 ~/scripts/fix-server.shSERVER="user@your-server.com"SERVICE="nginx"echo "尝试重启 $SERVER 上的 $SERVICE..."# SSH 远程执行(需要提前配置免密登录)ssh $SERVER "sudo systemctl restart $SERVICE && echo '重启成功' || echo '重启失败'"

前提条件

  • 本地已配置 SSH 免密登录
  • 服务器上 sudo 免密码(或在 sudoers 中配置)

4.3 创建自动修复子 Agent

方案:当监控发现异常时,启动子 Agent 执行修复

在定时任务中修改 message:

{  "action": "add",  "job": {    "name": "服务器存活监控+自动修复",    "agentId": "main",    "schedule": {"kind":"every","everyMs":3600000},    "sessionTarget": "isolated",    "payload": {      "kind": "agentTurn",      "message": "执行 ~/scripts/check-server.sh。如果输出包含「异常」:(1) 先告警:服务器异常,正在尝试自动修复 (2) 执行 ~/scripts/fix-server.sh (3) 再次检查 (4) 汇报最终结果。如果输出包含「正常」,不输出任何内容。要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 每步操作简短汇报"    },    "delivery": {"mode":"announce"}  }}

工作流程

检查 → 异常 → 告警 → 修复 → 再检查 → 汇报

五、第四步:每日晨报

5.1 需求分析

每天早上 9 点,自动推送:

  • 昨日服务器运行情况
  • 今日天气
  • 今日待办

5.2 创建晨报任务

{  "action": "add",  "job": {    "name": "每日晨报",    "agentId": "main",    "schedule": {"kind":"cron","expr":"0 9 * * *"},    "sessionTarget": "isolated",    "payload": {      "kind": "agentTurn",      "message": "生成今日晨报,包含:(1) 昨日服务器监控结果(查 ~/logs/server.log 最后 20 行)(2) 今日天气(查北京天气)(3) 今日待办(查 ~/notes/todo.md)。格式:简洁清晰,每项 2-3 句话。要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出晨报内容"    },    "delivery": {"mode":"announce"}  }}

cron 表达式说明

  • 0 9 * * * = 每天 9:00
  • 格式:分 时 日 月 星期

5.3 效果示例

📊 今日晨报 (2026-05-08)🖥️ 服务器状态:昨日运行正常,无异常记录🌤️ 天气:北京晴,15-25℃,适合户外活动📝 待办:- 完成项目文档整理- 下午 3 点代码评审- 晚上健身房

六、第五步:每日日报

6.1 需求分析

每天下午 6 点,自动生成运维日报:

  • 今日告警次数
  • 处理结果统计
  • 需要人工跟进的事项

6.2 创建日报任务

{  "action": "add",  "job": {    "name": "每日运维日报",    "agentId": "main",    "schedule": {"kind":"cron","expr":"0 18 * * 1-5"},    "sessionTarget": "isolated",    "payload": {      "kind": "agentTurn",      "message": "生成今日运维日报,包含:(1) 今日告警次数(grep 统计 ~/logs/alerts.log)(2) 自动修复成功次数 (3) 需要人工跟进的事项。格式:表格 + 简要说明。要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出日报内容"    },    "delivery": {"mode":"announce"}  }}

cron 表达式说明

  • 0 18 * * 1-5 = 周一到周五 18:00
  • 1-5 = 周一到周五

七、第六步:智能分析能力

7.1 需求分析

遇到复杂问题时,自动查资料分析。

场景:服务器 CPU 持续 100%,需要分析原因

7.2 创建分析子 Agent

方案:手动触发,但可以集成到告警流程中

你:分析服务器 CPU 高的原因OpenClaw:启动分析子 Agent...

实际操作:

{  "task": "服务器 CPU 持续 100%,请:(1) 搜索「Linux CPU 100% 排查方法」(2) 列出常见原因和排查步骤 (3) 生成排查清单。要求:简洁清晰,控制在 300 字以内",  "runtime": "subagent",  "mode": "run",  "timeoutSeconds": 300}

自动触发版本(在告警 message 中加入):

{  "message": "如果 CPU 持续 100% 超过 10 分钟:(1) 告警 (2) 启动子 Agent 分析原因 (3) 推送分析结果"}

八、完整架构图


九、配置文件清单

9.1 脚本文件

文件
用途
位置
check-server.sh
服务器存活检查
~/scripts/check-server.sh
fix-server.sh
自动修复脚本
~/scripts/fix-server.sh

9.2 日志文件

文件
用途
位置
server.log
服务器运行日志
~/logs/server.log
alerts.log
告警记录
~/logs/alerts.log

9.3 数据文件

文件
用途
位置
todo.md
待办事项
~/notes/todo.md

十、进阶:让”数字打工人”更智能

10.1 加入记忆能力

在 OpenClaw 的记忆文件中记录:

  • 常见问题和解决方案
  • 服务器历史数据
  • 个人偏好

示例:在 MEMORY.md 中加入:

## 服务器运维记录### 常见问题- CPU 100%:通常是 Node.js 死循环,重启 pm2- 内存泄漏:检查日志中的 "out of memory",重启服务- 磁盘满:清理 /var/log 和 /tmp### 个人偏好- 告警时间:工作日 9:00-18:00- 告警频率:同类型问题 1 小时内不重复告警

10.2 加入自定义 Skill

把常用操作封装成 Skill:

示例:创建 server-health Skill

skills/server-health/├── SKILL.md          # 技能说明├── scripts/│   ├── check.sh      # 检查脚本│   ├── fix.sh        # 修复脚本│   └── report.sh     # 报告脚本└── references/    └── common-issues.md  # 常见问题库

10.3 加入 MCP 扩展

通过 MCP 协议连接更多工具:

  • 数据库监控
  • 云服务 API
  • 监控平台(Prometheus、Grafana)

十一、踩坑指南

11.1 SSH 免密登录配置

问题:执行远程脚本时提示输入密码

解决:配置 SSH 免密登录

# 生成密钥对ssh-keygen -t rsa -b 4096# 复制公钥到服务器ssh-copy-id user@your-server.com# 测试ssh user@your-server.com "echo 'SSH OK'"

11.2 cron 时区问题

问题:任务比预期早/晚 8 小时

解决:检查时区

# 查看系统时区date +%z# 输出:+0800# 使用正确的 ISO 时间# 错误:2026-05-08T09:00:00# 正确:2026-05-08T09:00:00+08:00

11.3 脚本执行权限

问题:提示 “Permission denied”

解决:添加执行权限

chmod +x ~/scripts/*.sh

11.4 日志文件不存在

问题:grep 报错 “No such file”

解决:先创建文件

touch ~/logs/server.logtouch ~/logs/alerts.log

十二、最佳实践

12.1 告警分级

级别
条件
处理方式
P0 紧急
服务完全不可用
立即告警 + 自动修复
P1 严重
部分功能异常
告警 + 记录日志
P2 一般
性能下降
记录日志 + 下班汇报

12.2 静默时段

避免深夜告警打扰:

{  "message": "如果是 23:00-08:00,只记录日志不告警。其他时间正常告警。"}

12.3 失败重试

配置任务失败时的重试策略:

{  "job": {    ...    "failureAlert": {      "mode""announce",      "after"2    }  }}

含义:失败 2 次后才告警,避免误报。


十三、效果验证

13.1 模拟服务器故障

# 临时停止服务sudo systemctl stop nginx# 等待下一次检查(最多 1 小时)# 或手动触发:openclaw cron run <jobId>

预期效果

  1. 收到告警:服务器异常,正在尝试自动修复
  2. 收到修复结果:重启成功/失败
  3. 收到最终状态:服务器已恢复/需要人工介入

13.2 检查日志

# 查看监控日志tail -f ~/logs/server.log# 查看告警日志tail -f ~/logs/alerts.log

十四、总结

组件
作用
技术实现
监控脚本
检测服务器状态
Shell + curl
定时任务
定期执行监控
cron 工具
自动修复
问题自动处理
子 Agent + SSH
晨报/日报
信息汇总推送
定时任务 + Skill
智能分析
复杂问题诊断
子 Agent + 联网搜索

从零到一的完整路径

需求分析 → 脚本编写 → 定时任务配置 → 子 Agent 集成 → 测试验证 → 持续优化

下一步方向

  • 加入更多监控维度(内存、磁盘、网络)
  • 接入云服务 API(阿里云、腾讯云)
  • 搭建可视化监控面板(Grafana)

系列文章完结

至此,OpenClaw 系列文章全部完成:

文章
核心内容
入门篇
安装配置 + 基础使用 + 安全风险
技能篇
Skill 概念 + 使用 + 自定义
记忆篇
三层架构 + MEMORY.md + 维护技巧
原理篇
Gateway + Agent + Channel + 数据流
进阶篇
定时任务 + 子 Agent + 自动化
实战篇
完整案例:数字打工人

从认识 OpenClaw,到用它解决实际问题,希望这个系列对你有帮助。

点点赞和关注不迷路,后续还会分享更多 AI 效率工具。

👨‍💻 H先生出品 | 专注 AI 工具与效率提升