OpenClaw+ollama-QwQ-32B:自动化周报生成与邮件发送实战
OpenClaw+ollama-QwQ-32B:自动化周报生成与邮件发送实战
1. 为什么需要自动化周报系统
每周五下午,我都会陷入同样的焦虑——堆积如山的会议记录、零散的待办事项、杂乱的项目进度需要整理成一份结构清晰的周报。这个过程通常要耗费1-2小时,而且往往在deadline前仓促完成。直到我发现OpenClaw+ollama-QwQ-32B这个组合,才真正从这种重复劳动中解脱出来。
这个方案的核心价值在于:将碎片信息自动整合为专业报告。OpenClaw负责收集本机数据(如会议记录、代码提交、待办清单),ollama-QwQ-32B模型进行信息提炼与结构化,最终自动发送邮件给相关方。整个过程完全在本地运行,敏感数据不会外泄,这对处理内部项目信息尤为重要。
2. 环境准备与基础配置
2.1 部署ollama-QwQ-32B模型服务
首先需要确保ollama服务正常运行。我使用的是星图平台提供的预置镜像,省去了手动部署的麻烦:
# 启动模型服务(端口默认11434) ollama serve验证服务可用性:
curl http://localhost:11434/api/generate -d '{ "model": "QwQ-32B", "prompt": "测试模型响应" }'2.2 OpenClaw基础安装
采用npm方式安装OpenClaw汉化版:
sudo npm install -g @qingchencloud/openclaw-zh@latest openclaw onboard --mode=Advanced在配置向导中关键步骤:
- 模型提供商选择"Custom"
- 填写ollama服务地址:
http://localhost:11434 - 模型ID填写"QwQ-32B"
- 跳过渠道配置(后续通过CLI单独配置邮件功能)
3. 构建周报自动化流水线
3.1 数据收集模块配置
我在~/.openclaw/scripts/下创建了三个采集脚本:
- 会议记录提取器(meeting_scraper.py):
# 从钉钉/飞书本地缓存文件提取本周会议摘要 import json from pathlib import Path def get_meetings(): cache_path = Path('~/Library/Caches/com.dingtalk/meetings.json').expanduser() with open(cache_path) as f: return json.load(f).get('items', [])- 代码提交统计器(git_stats.sh):
#!/bin/bash git log --since="1 week ago" --pretty=format:"%h - %an, %ar : %s" > /tmp/git_logs.txt- 待办事项聚合器(todo_aggregator.js):
// 聚合Todoist、滴答清单等API数据 const fs = require('fs'); const todos = await fetch('https://api.todoist.com/...'); fs.writeFileSync('/tmp/todos.json', JSON.stringify(todos));通过OpenClaw配置文件注册这些工具:
{ "tools": { "meeting_scraper": { "command": "python ~/.openclaw/scripts/meeting_scraper.py", "type": "python" }, "git_stats": { "command": "bash ~/.openclaw/scripts/git_stats.sh", "type": "shell" } } }3.2 周报生成逻辑设计
核心prompt存储在~/weekly_report/prompt.txt:
你是一位专业的IT项目经理,请根据以下材料生成周报: 1. 会议记录:{{meetings}} 2. 代码提交:{{git_logs}} 3. 待办事项:{{todos}} 要求: - 按"项目进展""问题风险""下周计划"三部分组织 - 技术细节要准确 - 风险项需标注负责人 - 使用Markdown格式 - 中文输出通过OpenClaw的预执行钩子(pre-hook)自动填充变量:
openclaw exec --pre-hook=" meetings=$(openclaw tools run meeting_scraper); git_logs=$(cat /tmp/git_logs.txt); todos=$(openclaw tools run todo_aggregator); sed -i 's/{{meetings}}/$meetings/g' ~/weekly_report/prompt.txt "3.3 邮件发送模块集成
安装邮件发送skill:
clawhub install email-sender配置SMTP信息(使用环境变量方式更安全):
export SMTP_SERVER="smtp.office365.com" export SMTP_PORT=587 export EMAIL_USER="yourname@company.com" export EMAIL_PASSWORD="your-password"测试邮件发送:
openclaw skills test email-sender --to=test@example.com --subject="测试" --body="Hello World"4. 全流程自动化实现
4.1 创建自动化任务链
在OpenClaw控制台创建定时任务(每周五16:00执行):
{ "name": "auto-weekly-report", "schedule": "0 16 * * 5", "steps": [ { "type": "tool", "command": "run meeting_scraper" }, { "type": "tool", "command": "run git_stats" }, { "type": "llm", "prompt": "file://~/weekly_report/prompt.txt", "output": "/tmp/report.md" }, { "type": "skill", "name": "email-sender", "params": { "to": "team@company.com", "subject": "【周报】项目组工作汇报-{{date}}", "body": "file:///tmp/report.md", "attachments": ["/tmp/git_logs.txt"] } } ] }4.2 异常处理机制
为应对可能出现的故障,我增加了以下保障措施:
- 执行超时监控:任何步骤超过10分钟即终止
openclaw config set exec.timeout=600- 失败重试逻辑:在任务定义中添加重试策略
{ "retry": { "attempts": 3, "delay": 300 } }- 结果验证:检查邮件是否成功进入发件箱
openclaw tools run check_sent_items --query="subject:周报"5. 实际效果与优化建议
实施这套系统后,我的周报时间从每周2小时缩短到5分钟(主要是检查自动生成的内容)。ollama-QwQ-32B生成的报告结构清晰,甚至能自动关联不同会议中的相关讨论要点。
几个值得注意的优化点:
- 模型温度值调整:通过反复测试,发现temperature=0.3时生成内容最平衡
{ "models": { "providers": { "ollama": { "params": { "temperature": 0.3 } } } } }- 邮件模板个性化:为不同收件人定制摘要深度
openclaw skills config email-sender --template=manager_template.md- 本地缓存利用:避免重复收集相同数据
# 在采集脚本中添加缓存逻辑 if not cache_expired('meetings'): return read_cache()这套方案最适合中小团队的技术负责人。对于更复杂的组织架构,可能需要增加权限控制和内容审核环节。但核心思路不变——让AI处理枯燥的信息整理工作,人类专注于决策与创新。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
