【openclaw+claude系列08】让 AI 替你打工——自动化工作流与定时任务
前面几篇都是"你说,AI 做"的模式,但真正的高级玩法是让 AI 自己知道什么时候该做什么。本文从零搭建一套基于 Python + APScheduler 的自动化任务调度系统,实现每日晨间日报自动生成、代码质量定时检查、系统健康监控、Git 提交周报等 5 大高频自动化场景。还包含条件触发、链式任务、文件监控等进阶玩法,以及邮件/钉钉/Webhook 多渠道结果推送。读完本文,你的 AI 助手将
关注公众号:weelinking | 访问官网:weelinking.com
📅 发布日期:2026年02月14日
🏷️ 标签:自动化 | 定时任务 | 工作流
⏱️ 阅读时长:20分钟
📚 系列文章:手机指挥电脑干活系列 - 第8篇
📄 文章摘要
前面几篇都是"你说,AI 做"的模式,但真正的高级玩法是让 AI 自己知道什么时候该做什么。本文从零搭建一套基于 Python + APScheduler 的自动化任务调度系统,实现每日晨间日报自动生成、代码质量定时检查、系统健康监控、Git 提交周报等 5 大高频自动化场景。还包含条件触发、链式任务、文件监控等进阶玩法,以及邮件/钉钉/Webhook 多渠道结果推送。读完本文,你的 AI 助手将从"被动执行"进化为"主动工作"。
关键词: #自动化 #定时任务 #APScheduler #工作流 #weelinking
一、前言:从"指挥 AI"到"AI 自己干"
前面几篇都是"你说,AI 做"的模式。
但更高级的玩法是:让 AI 自己知道什么时候该做什么。
比如:
- 每天早上 8 点自动生成工作日报
- 每小时检查服务器状态,异常时告警
- 每周五自动整理本周代码提交
- 文件变更时自动触发测试
真正的被动收入(划掉)——被动办公!
💡 本文所有操作均在 weelinking 上完成——国内可丝滑直连 Claude,无需魔法。
二、定时任务系统设计
2.1 实现方案
我们使用 Python + APScheduler 实现定时任务调度。
架构:
⏰ APScheduler 调度器
├─ Cron 触发器(定时执行)
├─ Interval 触发器(间隔执行)
└─ Date 触发器(一次性任务)
↓
💻 调用 Claude API
↓
📱 结果推送到手机
2.2 创建调度服务
创建文件 scheduler_service.py:
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.cron import CronTrigger
from apscheduler.triggers.interval import IntervalTrigger
import anthropic
import os
from datetime import datetime
import json
# Claude 配置
API_KEY = "你的API_KEY"
BASE_URL = "https://api.weelinking.com/v1"
client = anthropic.Anthropic(api_key=API_KEY, base_url=BASE_URL)
WORK_DIR = os.path.expanduser("~/claude_workspace")
# 创建调度器
scheduler = BackgroundScheduler()
def call_claude(prompt):
"""调用 Claude 执行任务"""
try:
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
except Exception as e:
return f"错误: {str(e)}"
def save_result(task_name, result):
"""保存任务结果"""
log_dir = os.path.join(WORK_DIR, "task_logs")
os.makedirs(log_dir, exist_ok=True)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
log_file = os.path.join(log_dir, f"{task_name}_{timestamp}.txt")
with open(log_file, 'w', encoding='utf-8') as f:
f.write(f"任务: {task_name}\n")
f.write(f"时间: {datetime.now()}\n")
f.write("-" * 50 + "\n")
f.write(result)
print(f"✓ {task_name} 完成,结果已保存: {log_file}")
# ========== 任务定义 ==========
def morning_report():
"""每日晨间工作日报"""
prompt = f"""
生成今日工作日报(Markdown 格式):
1. 日期: {datetime.now().strftime('%Y-%m-%d')}
2. 查看工作目录 {WORK_DIR} 下昨天修改的文件
3. 生成今日待办事项建议
4. 检查是否有未完成的任务
格式:
# 工作日报 - YYYY-MM-DD
## 昨日工作
- ...
## 今日计划
- ...
## 注意事项
- ...
"""
result = call_claude(prompt)
save_result("morning_report", result)
# 可选: 发送到手机(通过邮件/webhook等)
# send_notification("早安!今日工作日报已生成", result)
def code_quality_check():
"""代码质量检查"""
prompt = f"""
对工作目录 {WORK_DIR} 进行代码质量检查:
1. 扫描所有 .py/.js/.java 文件
2. 检查:
- 代码复杂度过高的函数
- 过长的函数(>50行)
- 潜在的 bug
- TODO/FIXME 注释
3. 生成质量报告
格式化为 Markdown 表格输出
"""
result = call_claude(prompt)
save_result("code_quality", result)
def system_health_check():
"""系统健康检查"""
prompt = """
执行系统健康检查:
1. 磁盘使用情况
2. 内存使用情况
3. 运行中的进程数
4. 网络连接状态
如果发现异常(如磁盘>90%),标记为【警告】
"""
result = call_claude(prompt)
save_result("health_check", result)
# 检查是否有告警
if "【警告】" in result:
print("⚠️ 发现系统异常,请及时处理!")
def git_summary():
"""Git 提交周报"""
prompt = f"""
生成本周 Git 提交总结:
1. 切换到 {WORK_DIR}
2. 执行 git log --since="1 week ago"
3. 统计:
- 总提交次数
- 修改文件数
- 新增/删除代码行数
- 主要功能模块
4. 生成 Markdown 格式的周报
"""
result = call_claude(prompt)
save_result("git_weekly", result)
def file_organizer():
"""文件整理助手"""
prompt = f"""
整理工作目录 {WORK_DIR}:
1. 扫描所有文件
2. 按类型分类:
- 文档(.md, .txt, .pdf)
- 代码(.py, .js, .java)
- 数据(.csv, .json, .xml)
- 其他
3. 建议整理方案(不要直接执行,只是建议)
4. 标记出超过 30 天未使用的文件
输出整理建议清单
"""
result = call_claude(prompt)
save_result("file_organize", result)
# ========== 任务调度配置 ==========
# 每天早上 8:00 - 生成工作日报
scheduler.add_job(
morning_report,
CronTrigger(hour=8, minute=0),
id="morning_report"
)
# 每 3 小时 - 系统健康检查
scheduler.add_job(
system_health_check,
IntervalTrigger(hours=3),
id="health_check"
)
# 每天晚上 18:00 - 代码质量检查
scheduler.add_job(
code_quality_check,
CronTrigger(hour=18, minute=0),
id="code_quality"
)
# 每周五 17:00 - Git 周报
scheduler.add_job(
git_summary,
CronTrigger(day_of_week='fri', hour=17, minute=0),
id="git_weekly"
)
# 每周日 20:00 - 文件整理建议
scheduler.add_job(
file_organizer,
CronTrigger(day_of_week='sun', hour=20, minute=0),
id="file_organize"
)
# ========== 主程序 ==========
def main():
print("=" * 60)
print("🤖 Claude 自动化任务调度器")
print("=" * 60)
print("已加载任务:")
for job in scheduler.get_jobs():
print(f" ✓ {job.id}: {job.next_run_time}")
print("=" * 60)
# 启动调度器
scheduler.start()
print("调度器已启动,按 Ctrl+C 退出")
try:
# 保持程序运行
import time
while True:
time.sleep(1)
except (KeyboardInterrupt, SystemExit):
scheduler.shutdown()
print("\n调度器已停止")
if __name__ == "__main__":
main()
2.3 安装依赖
pip install apscheduler anthropic
2.4 启动调度服务
python scheduler_service.py
输出:
============================================================
🤖 Claude 自动化任务调度器
============================================================
已加载任务:
✓ morning_report: 2026-02-15 08:00:00
✓ health_check: 2026-02-14 12:00:00
✓ code_quality: 2026-02-14 18:00:00
✓ git_weekly: 2026-02-16 17:00:00
✓ file_organize: 2026-02-18 20:00:00
============================================================
调度器已启动,按 Ctrl+C 退出
现在,AI 会自动在设定的时间执行任务!
🔗 开始使用 Claude
文中的所有操作,你现在就可以上手。
推荐使用 weelinking 访问 Claude:
| 优势 | 说明 |
|---|---|
| 🇨🇳 国内直连 | 无需任何网络配置,打开即用 |
| 💰 按量付费 | 用多少花多少,不浪费 |
| 🎁 新用户福利 | 注册即送体验额度 |
| ⚡ 稳定可靠 | 账号池技术,不掉线 |
三、5 个高频自动化场景
场景1:每日站会助手
def daily_standup():
"""生成站会发言稿"""
prompt = """
基于昨天的工作,生成今日站会发言稿:
- 昨天完成: (从 Git 提交记录获取)
- 今天计划: (从 TODO 列表获取)
- 遇到的问题: (如果有)
简洁专业,3 分钟内能说完
"""
result = call_claude(prompt)
save_result("daily_standup", result)
# 每个工作日早上 9:00
scheduler.add_job(
daily_standup,
CronTrigger(day_of_week='mon-fri', hour=9, minute=0)
)
场景2:依赖安全检查
def dependency_security_scan():
"""检查依赖包安全漏洞"""
prompt = """
扫描项目依赖的安全漏洞:
1. 读取 requirements.txt 或 package.json
2. 列出所有依赖包
3. 检查是否有已知漏洞(基于常见漏洞库)
4. 给出升级建议
如果发现高危漏洞,标记【严重】
"""
result = call_claude(prompt)
save_result("security_scan", result)
if "【严重】" in result:
# 发送紧急通知
print("🚨 发现严重安全漏洞!")
# 每天凌晨 2:00
scheduler.add_job(
dependency_security_scan,
CronTrigger(hour=2, minute=0)
)
场景3:学习笔记汇总
def weekly_learning_summary():
"""汇总本周学习笔记"""
prompt = """
汇总本周学习内容:
1. 查找所有 .md 笔记文件
2. 提取关键知识点
3. 分类整理:
- 技术知识
- 问题解决
- 最佳实践
4. 生成思维导图(Markdown 格式)
输出为精美的周学习总结
"""
result = call_claude(prompt)
save_result("learning_summary", result)
# 每周日晚上 21:00
scheduler.add_job(
weekly_learning_summary,
CronTrigger(day_of_week='sun', hour=21, minute=0)
)
场景4:数据备份自动化
def auto_backup():
"""自动备份重要文件"""
prompt = f"""
执行数据备份:
1. 备份目标:
- 所有 .py .js 源码文件
- 配置文件 (.json, .yaml, .env)
- 文档文件 (.md, .txt)
2. 创建备份目录: backups/backup_YYYYMMDD/
3. 复制文件并压缩
4. 生成备份清单
返回备份结果报告
"""
result = call_claude(prompt)
save_result("auto_backup", result)
# 每天凌晨 3:00
scheduler.add_job(
auto_backup,
CronTrigger(hour=3, minute=0)
)
场景5:性能监控报告
def performance_monitor():
"""性能监控与分析"""
prompt = """
生成性能监控报告:
1. 分析应用日志,提取:
- API 响应时间统计
- 慢查询记录
- 错误率统计
2. 与昨天对比,找出异常
3. 性能瓶颈分析
4. 优化建议
如果发现性能下降>20%,标记【性能告警】
"""
result = call_claude(prompt)
save_result("performance", result)
# 每 6 小时
scheduler.add_job(
performance_monitor,
IntervalTrigger(hours=6)
)
四、进阶玩法:条件触发
4.1 文件监控触发
使用 watchdog 监控文件变化:
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class CodeChangeHandler(FileSystemEventHandler):
def on_modified(self, event):
if event.src_path.endswith('.py'):
print(f"检测到代码变更: {event.src_path}")
# 触发代码质量检查
code_quality_check()
observer = Observer()
observer.schedule(CodeChangeHandler(), WORK_DIR, recursive=True)
observer.start()
4.2 条件触发任务
def smart_health_check():
"""智能健康检查"""
# 执行检查
prompt = "检查系统资源使用率"
result = call_claude(prompt)
# 根据结果决定下一步
if "CPU > 80%" in result:
# 触发性能分析
call_claude("分析CPU高占用的进程,给出优化建议")
if "磁盘 > 85%" in result:
# 触发磁盘清理建议
call_claude("找出大文件和临时文件,给出清理建议")
4.3 链式任务
def deploy_pipeline():
"""自动化部署流水线"""
# 步骤1: 运行测试
test_result = call_claude("运行所有单元测试")
if "All tests passed" in test_result:
# 步骤2: 构建项目
build_result = call_claude("执行项目构建")
if "Build successful" in build_result:
# 步骤3: 部署
deploy_result = call_claude("部署到测试环境")
# 步骤4: 通知
print("✓ 部署成功!")
else:
print("✗ 构建失败,停止部署")
else:
print("✗ 测试失败,停止流程")
五、任务结果推送
5.1 邮件推送
import smtplib
from email.mime.text import MIMEText
def send_email(subject, content):
"""发送邮件通知"""
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = 'your_email@example.com'
msg['To'] = 'your_phone@example.com' # 手机邮箱
with smtplib.SMTP('smtp.example.com', 587) as server:
server.starttls()
server.login('your_email', 'password')
server.send_message(msg)
# 在任务中调用
def morning_report():
result = call_claude(...)
send_email("每日工作日报", result)
5.2 Webhook 推送
import requests
def send_to_phone(title, content):
"""通过 webhook 推送到手机"""
webhook_url = "http://your-phone-ip:5000/api/notification"
requests.post(webhook_url, json={
"title": title,
"content": content,
"timestamp": datetime.now().isoformat()
})
5.3 钉钉/企业微信推送
def send_to_dingtalk(content):
"""发送到钉钉机器人"""
webhook = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
data = {
"msgtype": "text",
"text": {"content": content}
}
requests.post(webhook, json=data)
六、运维与管理
6.1 任务管理 Web 界面
from flask import Flask, render_template, jsonify
app = Flask(__name__)
@app.route('/jobs')
def list_jobs():
"""列出所有任务"""
jobs = []
for job in scheduler.get_jobs():
jobs.append({
"id": job.id,
"next_run": str(job.next_run_time),
"trigger": str(job.trigger)
})
return jsonify(jobs)
@app.route('/job/<job_id>/run', methods=['POST'])
def run_job_now(job_id):
"""立即执行任务"""
job = scheduler.get_job(job_id)
if job:
job.func()
return jsonify({"success": True})
return jsonify({"error": "Job not found"}), 404
@app.route('/job/<job_id>/pause', methods=['POST'])
def pause_job(job_id):
"""暂停任务"""
scheduler.pause_job(job_id)
return jsonify({"success": True})
app.run(port=5001)
访问 http://localhost:5001/jobs 查看和管理任务。
6.2 日志查看
@app.route('/logs')
def view_logs():
"""查看任务日志"""
log_dir = os.path.join(WORK_DIR, "task_logs")
files = sorted(os.listdir(log_dir), reverse=True)[:20]
logs = []
for file in files:
with open(os.path.join(log_dir, file), 'r') as f:
logs.append({
"filename": file,
"content": f.read()
})
return jsonify(logs)
6.3 后台运行
Linux/Mac:
# 使用 nohup
nohup python scheduler_service.py > scheduler.log 2>&1 &
# 或使用 systemd
sudo systemctl start claude-scheduler
Windows:
使用任务计划程序或创建Windows服务。
七、总结与下期预告
本期实现的自动化
- ✅ 每日工作日报自动生成
- ✅ 代码质量定时检查
- ✅ 系统健康监控
- ✅ Git 提交周报
- ✅ 文件整理建议
- ✅ 条件触发任务
- ✅ 结果推送到手机
你的 AI 助手现在能
- 自己知道什么时候该干什么
- 定时执行重复性任务
- 监控异常并告警
- 生成各类报表
- 24/7 不间断工作
下期预告
第9篇:多平台制霸——微信、钉钉、飞书全渠道接入
- 接入企业微信机器人
- 接入钉钉机器人
- 接入飞书机器人
- 多渠道统一管理
- 国内环境一键部署
不只是手机 App,微信、钉钉都能指挥 AI!
🔗 开始使用 Claude
文中的所有操作,你现在就可以上手。
推荐使用 weelinking 访问 Claude:
| 优势 | 说明 |
|---|---|
| 🇨🇳 国内直连 | 无需任何网络配置,打开即用 |
| 💰 按量付费 | 用多少花多少,不浪费 |
| 🎁 新用户福利 | 注册即送体验额度 |
| ⚡ 稳定可靠 | 账号池技术,不掉线 |
🔜 下期预告
「多平台制霸——微信、钉钉、飞书全渠道接入」
不只是手机 App,微信、钉钉、飞书都能指挥 AI!下一篇实现企业微信机器人、钉钉机器人、飞书机器人接入,一个后端多个入口,Docker 一键部署,国内环境无缝使用。
👉 点击关注,下篇第一时间通知你。
📖 推荐阅读
如果这篇对你有帮助,以下文章你也会喜欢:
- [Claude Skill 从入门到精通 - 第7篇:Skill 的调试与测试方法论] — 系统化的调试测试方法
- [零基础用 Claude 开发应用 - 第4篇:用 Claude 开发一个自动化脚本工具箱] — 更多自动化开发实战
- [产品经理用 Claude 实现产品 - 第4篇:用 Claude 自动生成产品文档] — 自动化文档生成
📦 本篇配套资源
- ✅ 完整 scheduler_service.py 源码
- ✅ 5 个高频自动化场景代码模板
- ✅ APScheduler 配置速查表
- ✅ 多渠道推送配置指南
- 📷 需补充:调度器运行效果截图
📌 系列导航: 手机+OpenClaw+Claude实现远程AI编程系列大纲
⏩ 上一篇: 第7篇:通勤路上修 Bug——手机远程操控 Claude 写代码实战
⏩ 下一篇: 第9篇:多平台制霸_微信钉钉飞书全渠道接入
💡 本系列全程使用 weelinking 访问 Claude,国内可丝滑上手
🚀 整个系列的核心理念:你不需要变成程序员,你只需要从"找人做"变成"自己能做"。
更多推荐



所有评论(0)