OpenClaw+千问3.5-9B:自动化周报生成与邮件发送

张开发
2026/4/10 4:56:09 15 分钟阅读

分享文章

OpenClaw+千问3.5-9B:自动化周报生成与邮件发送
OpenClaw千问3.5-9B自动化周报生成与邮件发送1. 为什么需要自动化周报工具每周五下午3点我的日历总会准时弹出提醒该写周报了。这个看似简单的任务却常常让我陷入两难——要么对着空白的文档发呆半小时不知从何写起要么花40分钟机械地复制粘贴各种工作日志。直到上个月连续三次错过提交deadline后我决定用技术手段解决这个痛点。传统自动化方案存在明显局限RPA工具需要精确的界面元素定位而工作日志散落在飞书文档、Git提交记录和本地笔记中纯脚本方案又缺乏自然语言处理能力无法将零散信息整合成连贯叙述。这正是OpenClaw千问3.5-9B组合的用武之地——既能像人类一样操作各种软件界面收集数据又能用大模型的理解能力生成结构化报告。2. 环境准备与模型接入2.1 基础环境搭建我的实践环境是一台M1 MacBook Pro已预先安装好Docker。选择OpenClaw的Docker镜像部署方式能避免污染本地环境docker pull openclaw/openclaw:latest docker run -it -p 18789:18789 --name my-claw openclaw/openclaw启动后访问http://localhost:18789即可进入控制台。这里遇到第一个坑官方镜像默认不包含模型连接配置需要手动添加千问3.5-9B的访问端点。我使用的是星图平台提供的模型服务在控制台Model Providers添加以下配置{ provider: qwen, baseUrl: https://your-xingtu-endpoint/v1, apiKey: your-api-key, model: qwen3.5-9b }2.2 权限与安全配置为了让OpenClaw能访问我的工作数据需要谨慎配置权限范围。在~/.openclaw/permissions.json中我只授权了以下操作读取指定目录下的Markdown笔记~/Documents/work_logs/*.md访问飞书开放平台的只读API使用SMTP发送邮件限制发件人地址特别注意要在飞书开发者后台配置IP白名单否则API调用会被拦截。通过curl ifconfig.me获取公网IP后将其添加到飞书应用的安全设置中。3. 工作日志收集的实现3.1 多数据源整合我的工作记录分散在三个主要位置飞书文档中的会议纪要本地VS Code的每日工作日志Git仓库的提交记录通过创建自定义Skill来统一采集这些数据。在OpenClaw的skills目录新建weekly_report文件夹核心采集逻辑如下// 飞书文档爬取 async function fetchFeishuDocs() { const docs await openclaw.feishu.searchDocs({ keyword: 会议记录, dateRange: [getMonday(), getFriday()] }); return docs.map(doc extractKeyPoints(doc.content)); } // 本地日志解析 function parseLocalLogs() { const logs fs.readdirSync(~/Documents/work_logs) .filter(file file.endsWith(.md)); return logs.map(log analyzeLogStructure(log)); }3.2 数据清洗与结构化原始数据需要经过两次处理使用正则表达式过滤掉无关内容如代码片段、临时笔记通过千问3.5-9B提取关键信息这里发现模型在处理时间表达式时需要特别提示。优化后的prompt模板包含明确指令请从以下工作日志中提取有效工作项 1. 忽略私人事务和非工作相关内容 2. 合并相同任务的多次记录 3. 用完成/进行中/受阻标注状态 4. 输出JSON格式 { tasks: [ { name: 任务名称, hours: 耗时, status: 状态, details: 关键细节 } ] }4. 周报生成与邮件发送4.1 报告内容生成将结构化数据喂给千问3.5-9B生成自然语言报告时需要控制模型的自由发挥程度。经过多次调试最终采用的prompt结构包含三个关键部分角色设定你是一位专业的IT项目经理需要撰写简洁明了的技术周报格式要求按已完成工作、进行中任务、风险与问题三部分组织内容风格指导避免技术术语堆砌重点说明业务价值每个条目不超过2句话典型的生成效果如下已完成工作实现订单系统的支付状态同步功能耗时8h解决不同步导致的超额退款问题完成服务器迁移前的压力测试耗时6h确认新集群可承受200%的当前业务量4.2 邮件自动发送配置邮件发送使用Node.js的nodemailer包关键是要处理好多附件的情况。我的实现方案是将周报同时生成PDF和Markdown两种格式对超过1MB的附件自动上传到飞书文档并替换为链接添加邮件发送前的二次确认机制async function sendReport() { const transporter openclaw.email.createTransport({ service: QQ, auth: { user: meqq.com, pass: your-token } }); await transporter.sendMail({ from: 周报助手 meqq.com, to: managercompany.com, subject: [周报] ${getName()} ${getDateRange()}, html: await generateHtmlReport(), attachments: [ { path: ./report.pdf }, { path: ./report.md } ] }); }5. 实际效果与优化建议经过一个月的持续使用这个自动化流程平均每周为我节省2.5小时。最意外的收获是生成的周报比我自己写的更加结构化主管特别表扬了风险预警部分的专业性。但也发现几个待改进点模型响应稳定性约15%的情况下生成的报告会出现重复条目需要添加后处理校验多时区支持跨国团队协作时需要显式指定时区参数敏感信息过滤偶尔会包含内部项目代号正在测试关键词屏蔽列表对于想尝试类似自动化的开发者我的建议是从单一数据源开始验证如先只处理飞书文档为每个处理阶段添加日志输出方便调试在prompt中明确限制输出长度避免生成冗长内容获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章