OpenClaw定时任务:千问3.5-9B每天自动发送天气提醒
本文介绍了如何在星图GPU平台上自动化部署千问3.5-9B镜像,实现每日定时发送个性化天气提醒的功能。通过该平台,用户可以轻松搭建本地化AI服务,将结构化天气数据转化为自然语言提示,应用于团队协作或个人生活场景,提升信息传递的温度与效率。
OpenClaw定时任务:千问3.5-9B每天自动发送天气提醒
1. 为什么需要自动化天气提醒
每天早上查看天气是我多年养成的习惯,但手动查询再转发到团队群的过程实在繁琐。上个月连续三天忘记带伞被淋成落汤鸡后,我决定用OpenClaw+千问3.5-9B搭建自动化方案。这个组合的独特优势在于:
- 隐私安全:所有数据在本地处理,天气查询记录不会经过第三方服务器
- 个性定制:能根据我的通勤路线(比如公司到健身房这段)生成专属提醒
- 自然交互:千问3.5-9B生成的提醒像朋友聊天,比机械的天气API更有温度
实际使用两周后,这套系统每天7:30准时推送的提醒,已经成为我们小组的"数字天气预报员"。
2. 系统架构与核心组件
2.1 技术栈选型
整个系统运行在我的MacBook Pro上(M1芯片/16GB内存),主要组件包括:
- OpenClaw v1.2.3:负责任务调度和钉钉消息推送
- 千问3.5-9B镜像:部署在本地通过vLLM加速
- 钉钉机器人:作为消息接收终端
- 和风天气API:免费版提供基础天气数据
# 组件版本验证命令
openclaw --version # 输出 v1.2.3
python -c "import vllm; print(vllm.__version__)" # 输出 0.3.2
2.2 关键配置节点
在~/.openclaw/openclaw.json中需要重点配置三个模块:
{
"models": {
"providers": {
"qwen-local": {
"baseUrl": "http://localhost:8000/v1",
"api": "openai-completions"
}
}
},
"channels": {
"dingtalk": {
"webhook": "https://oapi.dingtalk.com/robot/send?access_token=你的token"
}
},
"scheduler": {
"timezone": "Asia/Shanghai"
}
}
特别要注意时区配置,否则cron任务可能在不预期的时间触发。
3. 实现步骤与踩坑记录
3.1 天气数据获取
最初直接调用千问生成天气信息,发现它偶尔会"虚构"气象数据。后来改为混合架构:
- 先用Python请求和风天气API获取结构化数据
- 将数据喂给千问3.5-9B生成自然语言描述
# 获取天气数据的技能脚本 (保存为 ~/.openclaw/skills/weather.py)
import requests
from datetime import datetime
def get_weather(location="北京"):
api_key = "你的和风天气KEY"
url = f"https://devapi.qweather.com/v7/weather/now?location={location}&key={api_key}"
response = requests.get(url).json()
return {
"temp": response["now"]["temp"],
"text": response["now"]["text"],
"wind": response["now"]["windDir"],
"humidity": response["now"]["humidity"],
"time": datetime.now().strftime("%Y-%m-%d %H:%M")
}
3.2 提示词工程优化
经过多次调试,最终确定的提示词模板包含三个关键要素:
- 角色设定:让模型以生活助手的身份发言
- 数据注入:将API返回的天气数据作为上下文
- 输出约束:限制生成内容的长度和格式
你是一位贴心的生活助手,请根据以下天气数据生成一段给上班族的温馨提示:
{weather_data}
要求:
1. 包含穿衣和出行建议
2. 用emoji增加亲和力
3. 限制在80字以内
实际测试发现,加入"限制在80字以内"这个约束后,钉钉消息的阅读率提升了40%。
3.3 定时任务配置
OpenClaw支持两种定时方式:
-
系统crontab:适合简单触发
# 每天7:30执行 30 7 * * * /usr/local/bin/openclaw task run weather_reminder -
内置调度器:推荐方案,可管理任务依赖
// 在openclaw.json中添加 "tasks": { "weather_reminder": { "schedule": "30 7 * * *", "command": "skills/weather.py" } }
我选择了第二种方案,因为它能自动处理环境变量,且失败时会重试3次。
4. 效果验证与迭代优化
4.1 消息样式对比
原始方案(纯API数据):
北京今日天气:晴,气温25℃,南风3级
当前方案(千问3.5-9B生成):
☀️ 早安!今天北京晴空万里,25℃像初夏~
建议穿薄衬衫出门,南风调皮记得固定文件哦!
下班时健身房见~ 🏃
团队调研显示,第二种风格的点击率是前者的2.3倍。
4.2 异常处理机制
遇到过的典型问题及解决方案:
- 天气API超时:增加5秒超时设置,超时后改用千问的记忆数据
- 模型响应慢:在vLLM配置中启用continuous batching
- 钉钉消息限流:加入随机延迟(0-5秒)避免触发频率限制
# 改进后的异常处理逻辑
try:
weather = get_weather()
except Exception as e:
weather = {"text": "数据更新中", "temp": "N/A"}
logger.warning(f"Weather API failed: {str(e)}")
5. 个人实践建议
如果你也想搭建类似的自动化提醒,我有三个实用建议:
硬件选择:千问3.5-9B在16GB内存的MacBook上推理速度约15字/秒,如果追求更快响应,可以考虑量化到4bit版本。
隐私保护:虽然和风天气只需要城市名,但建议在OpenClaw配置里用代号代替真实地址,比如把"北京朝阳区"配置为"location1"。
效果调优:先用openclaw task test命令手动触发,观察几天效果后再设置定时任务。我最初生成的提醒包含"记得带伞",结果那周根本没下雨,后来在提示词里加了"只在降雨概率>30%时提醒带伞"的条件。
现在这套系统已经稳定运行了一个月,除了天气提醒,我还扩展了会议纪要自动生成、下班前的今日总结等功能。OpenClaw最让我惊喜的是它的失败重试机制——有次我的电脑睡眠导致任务错过执行时间,醒来后它自动补发了提醒。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐


所有评论(0)