1. 为什么我要给 WorkBuddy 设一个“十点半闹钟”
每天早上到工位,第一件事是打开各种信息源:项目群消息、待办清单、行业动态、昨天没跑完的自动化任务日志。信息一多,人就容易陷入“先刷半小时再说”的状态,真正开始干活已经快十一点了。我试过用待办软件、日历提醒、甚至手机闹钟,但都解决不了一个核心问题——信息是散的,闹钟只能提醒我“该看信息了”,却不能把信息整理好送到我面前。
后来我把 WorkBuddy 接进了自己的工作流,给它设了一条规则:每天上午十点半,自动生成一份 AI 日报,推送到微信。这件事听起来像个小把戏,但实际跑起来之后,它改变的不只是“省了几分钟”,而是把“信息收集—整理—分发”这条链路彻底自动化了。我现在每天十点半收到的不是一条冷冰冰的提醒,而是一份已经归类好的日报:昨天自动化任务跑了几条、哪些失败了、今天有哪些待办、行业里有什么值得关注的新动态。
这篇文章就是把这套东西从头到尾拆开讲清楚。WorkBuddy 是一个 AI 任务编排工具,核心能力是让你用自然语言定义任务、设定触发条件、对接外部服务。它和 CodeBuddy 这类偏代码补全的工具定位不同,WorkBuddy 更像一个“会干活的助手”,你告诉它什么时候做什么,它就按规则执行。适合谁来参考?三类人:一是每天被信息淹没、想给自己减负的职场人;二是正在折腾 AI Agent 自动化、想找一个落地场景的开发者;三是做自动化测试、运维、数据整理,想把重复劳动交给机器的人。
我踩过的坑先放前面:别一上来就追求“全自动”,先把一条链路跑通,再逐步加规则。我最初想让它同时抓五个信息源、生成三种格式、推送到两个平台,结果调试了一整晚,最后发现是某个接口的返回格式没对齐。后来我改成“先跑通一个源、一种格式、一个推送目标”,半小时就搞定了。这个思路后面会反复提到。
2. 整体设计思路:把“日报”拆成可编排的流水线
2.1 核心需求拆解:日报到底要解决什么
很多人做自动化日报,第一反应是“抓新闻”。但我实际用下来发现,真正有价值的日报不是新闻聚合,而是把“我需要知道的事”和“我需要做的事”分开呈现。新闻是背景,待办是行动。所以我的日报结构是这样的:
- 昨日回顾:昨天自动化任务执行结果、失败项、耗时统计
- 今日待办:从任务队列里拉出来的待处理项,按优先级排序
- 行业动态:从指定信息源抓取的关键词相关内容,限制条数
- 异常提醒:如果有任务连续失败,单独标红提示
这个结构不是拍脑袋定的。我观察了自己一周的工作习惯,发现早上最消耗时间的不是“看新闻”,而是“回忆昨天干了什么、今天要干什么”。所以日报的第一价值是减少上下文切换成本,第二价值才是信息获取。
2.2 为什么选 WorkBuddy 而不是自己写脚本
自己写脚本当然可以,Python 加个定时任务,调几个 API,推送到微信,技术上完全可行。但我选 WorkBuddy 有几个实际考量:
| 对比维度 | 自己写脚本 | WorkBuddy |
|---|---|---|
| 开发成本 | 需要写代码、调试、维护 | 自然语言定义任务,改规则不用改代码 |
| 触发机制 | 需要自己搭 cron 或调度器 | 内置定时触发,支持多种触发条件 |
| 外部对接 | 每个平台都要单独写适配 | 内置常用服务连接器 |
| 失败处理 | 需要自己写重试和告警 | 有基础的重试和日志 |
| 灵活性 | 极高,想怎么改就怎么改 | 受限于平台能力边界 |
我自己的判断是:如果这条链路是长期稳定运行的,用 WorkBuddy 更省心;如果是一次性或者高度定制化的,自己写脚本更合适。日报这件事是每天都要跑的,而且规则会经常调整(比如加一个信息源、改一下推送时间),用 WorkBuddy 的“改规则不用改代码”特性就很舒服。
2.3 十点半这个时间点是怎么定的
十点半不是随便选的。我试过几个时间点:
- 九点:太早,很多系统还没跑完当天的初始化任务,抓到的数据不完整
- 十点:还是偏早,有些外部信息源更新有延迟
- 十一点:太晚,已经进入工作状态了,看日报反而打断节奏
- 十点半:刚好是“晨会结束、正式开工”的节点,数据也基本稳定了
这个时间点还考虑了一个因素:微信推送的到达率。十点半大部分人已经到工位,手机在身边,推送能及时看到。如果是八点,可能还在通勤路上,看到了也没法处理。
2.4 整体架构:从触发到推送的完整链路
整条链路我画成文字版是这样的:
定时触发(每天10:30) ↓ WorkBuddy 执行任务编排 ↓ 并行执行三个子任务: ├─ 拉取昨日任务执行日志 ├─ 读取今日待办队列 └─ 抓取行业动态(关键词过滤) ↓ 汇总生成日报文本(Markdown 格式) ↓ 推送到微信(通过微信机器人或小程序消息) ↓ 记录执行日志,失败则重试这里有个关键设计:三个子任务是并行执行的,不是串行。因为拉日志、读待办、抓动态这三个操作互不依赖,串行会浪费时间。WorkBuddy 支持并行任务编排,这一点比我自己写脚本要方便,不用手动管理线程池。
3. 核心细节解析:每个环节的实操要点
3.1 WorkBuddy 的任务定义规则怎么写
WorkBuddy 的任务定义用的是自然语言加结构化配置的混合方式。我实际写出来的规则大概长这样:
任务名称:每日AI日报 触发条件:每天 10:30 执行动作: 1. 调用内部API获取昨日任务日志,筛选状态为 failed 的记录 2. 读取待办队列中优先级为 high 和 medium 的条目 3. 从指定RSS源抓取最近24小时内容,按关键词过滤 4. 将以上内容按模板拼接成Markdown文本 5. 通过微信机器人推送到指定群组 失败处理:重试2次,间隔5分钟,仍失败则记录日志这里有几个细节值得说:
第一,关键词过滤要设白名单和黑名单。我一开始只设了白名单,结果抓回来一堆无关内容。后来加了黑名单,把“广告”“推广”“招聘”这类词过滤掉,质量明显提升。
第二,待办队列的优先级要提前定义好。我用的规则是:截止日期在24小时内的标为 high,48小时内的标为 medium,其余为 low。日报只推 high 和 medium,low 的不推,避免信息过载。
第三,失败重试不是越多越好。我试过重试5次,结果有一次某个接口挂了,重试了5次还是失败,反而产生了5条错误日志。后来改成重试2次,间隔5分钟,基本能覆盖临时性故障。
3.2 微信推送的几种方式对比
把日报推送到微信,有几种常见方式,我逐一试过:
| 推送方式 | 实现难度 | 稳定性 | 适用场景 |
|---|---|---|---|
| 微信机器人(群组) | 低 | 中 | 团队共享日报 |
| 微信小程序订阅消息 | 中 | 高 | 个人接收,需要用户授权 |
| 企业微信应用消息 | 中 | 高 | 企业内部使用 |
| 邮件转微信 | 高 | 低 | 不推荐,链路太长 |
我最终选的是微信机器人推送到个人群组。原因很简单:实现快、调试方便、支持 Markdown 格式。小程序订阅消息虽然更“正规”,但需要用户授权、有模板限制,调试起来麻烦。企业微信适合团队场景,个人用有点重。
注意:微信机器人的消息频率有限制,不要设得太频繁。日报一天一条刚好,如果设成每小时一条,容易被限制。
3.3 日报模板的设计技巧
模板设计我改了大概五版,最后定下来的结构是:
# AI日报 - {日期} ## 昨日回顾 - 任务总数:{total} - 成功:{success} | 失败:{failed} - 失败详情:{failed_details} ## 今日待办 {priority_high_items} {priority_medium_items} ## 行业动态 {news_items} ## 异常提醒 {alerts}几个设计要点:
第一,失败详情要具体。不要只写“3个任务失败”,要写清楚哪个任务、什么原因、建议怎么处理。我一开始只写数量,后来发现还得去翻日志,等于没省时间。
第二,行业动态限制条数。我设的是最多5条,超过就截断。信息太多反而没人看。
第三,异常提醒单独成块。如果有任务连续失败,或者待办积压超过阈值,单独标出来。这个块平时是空的,一旦出现就说明有问题。
3.4 关键词过滤的实操配置
关键词过滤是决定日报质量的关键。我的配置分三层:
- 必须包含:AI、自动化、测试、部署、模型
- 可以包含:工具、框架、实践、案例
- 必须排除:广告、推广、招聘、培训、课程
匹配逻辑是:标题或摘要中包含“必须包含”中任意一个词,且不包含“必须排除”中任意一个词,才纳入日报。如果包含“可以包含”中的词,优先级提升。
这个配置不是一次定好的。我每周会看一次日报,把明显不相关的内容对应的词加到排除列表里。跑了三周之后,准确率大概能到80%左右。
4. 实操过程:从零搭建到稳定运行
4.1 环境准备与基础配置
开始之前需要准备几样东西:
- WorkBuddy 账号:注册后进入工作台,创建一个新的任务空间
- 微信机器人:可以用现成的机器人服务,拿到 webhook 地址
- 信息源:RSS 地址、API 接口地址、或者数据库连接信息
- 待办数据源:我用的是一个简单的 JSON 文件,也可以用 Notion、飞书表格等
配置顺序建议是:先配信息源,再配 WorkBuddy 任务,最后配微信推送。因为信息源是最容易出问题的环节,先把它调通,后面就顺了。
我实际配置时遇到的一个坑:RSS 源的编码格式不统一。有的用 UTF-8,有的用 GBK,WorkBuddy 默认按 UTF-8 解析,遇到 GBK 就会乱码。解决办法是在抓取配置里显式指定编码,或者先用一个转换服务统一转成 UTF-8。
4.2 任务编排的详细步骤
第一步,在 WorkBuddy 里创建任务,选择“定时触发”,设置时间为每天 10:30。
第二步,添加第一个子任务:拉取昨日日志。配置如下:
动作类型:HTTP请求 方法:GET URL:{内部API地址}/tasks/logs?date={yesterday} 认证:Bearer Token 返回处理:筛选 status=failed 的记录第三步,添加第二个子任务:读取待办队列。
动作类型:文件读取 路径:/data/todos.json 返回处理:筛选 priority in [high, medium]第四步,添加第三个子任务:抓取行业动态。
动作类型:RSS抓取 源地址:{RSS地址} 时间范围:最近24小时 过滤规则:包含[AI,自动化,测试],排除[广告,招聘] 最大条数:5第五步,添加汇总任务:把三个子任务的输出按模板拼接。
第六步,添加推送任务:调用微信机器人 webhook,发送 Markdown 消息。
第七步,设置失败处理:重试2次,间隔5分钟,记录日志。
整个配置过程大概需要30到40分钟,如果熟悉了之后15分钟就能搞定。
4.3 参数计算与选择过程
有几个参数需要根据实际情况计算:
重试间隔:我设的是5分钟。计算逻辑是:临时性故障(如网络抖动)通常在1到2分钟内恢复,5分钟足够覆盖大部分情况。如果设太短,比如30秒,可能故障还没恢复就重试完了;设太长,比如30分钟,日报就延迟了。
日报最大长度:微信消息有长度限制,我实测下来,Markdown 格式的消息控制在2000字以内比较安全。所以行业动态限制5条,每条摘要不超过100字。
待办优先级阈值:high 是24小时内截止,medium 是48小时内。这个阈值可以根据自己的工作节奏调整。如果你的事情周期比较长,可以放宽到48小时和72小时。
日志保留天数:我设的是30天。太短了查不到历史,太长了占空间。30天刚好覆盖一个月的回顾周期。
4.4 实际运行记录与效果
跑了一个月之后,我统计了一下数据:
- 日报成功推送:28天(成功率93%)
- 失败原因:2天是信息源接口超时,1天是微信机器人限流
- 平均生成时间:12秒
- 平均阅读时间:从原来的15分钟降到3分钟
最明显的变化是早上不再焦虑了。以前打开电脑不知道先看什么,现在日报已经把优先级排好了,直接照着做就行。还有一个意外收获:因为日报里会记录失败任务,我发现自己有些自动化任务其实一直在失败,只是以前没注意到。修好之后,整体任务成功率从85%提升到了96%。
5. 常见问题与排查技巧实录
5.1 推送失败怎么办
推送失败是最常见的问题,排查顺序如下:
- 检查 webhook 地址是否有效:用 curl 手动发一条测试消息
- 检查消息格式:微信机器人对 Markdown 支持有限,某些特殊字符会导致发送失败
- 检查频率限制:如果短时间内发了多条,可能被限流,等几分钟再试
- 检查网络:WorkBuddy 所在环境是否能访问微信接口
我遇到过一次推送失败,排查了半天发现是消息里有一个特殊字符(某个 emoji 的变体),微信机器人解析不了。后来在推送前加了一个字符过滤步骤,把非 ASCII 字符统一替换掉,就再没出过问题。
5.2 信息源抓取为空怎么排查
抓取为空有几种可能:
- RSS 源本身没有更新:先手动打开源地址看看有没有新内容
- 时间范围设置太窄:如果设的是“最近1小时”,而源是每天更新一次,就会为空。改成“最近24小时”
- 过滤规则太严:关键词设太多,把内容都过滤掉了。先放宽规则,确认能抓到内容后再逐步收紧
- 编码问题:前面提到的 GBK 乱码,会导致解析失败,表现为“抓到了但内容为空”
5.3 日报内容质量不稳定的优化
内容质量不稳定通常是因为过滤规则没有持续维护。我的做法是:
- 每周回顾一次:看哪些内容不该出现、哪些该出现没出现
- 维护关键词库:把新出现的无关词加到排除列表
- 设置反馈机制:如果某条内容明显不相关,在日报里标记一下,下次自动排除
这个维护成本大概每周10分钟,但能让日报质量保持在一个可用的水平。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 日报没收到 | 任务未触发 | 检查定时配置,确认时区正确 |
| 日报内容为空 | 信息源无更新或过滤太严 | 放宽过滤规则,检查源地址 |
| 推送失败 | webhook 失效或格式错误 | 手动测试 webhook,过滤特殊字符 |
| 内容乱码 | 编码不统一 | 显式指定编码,或加转换步骤 |
| 任务执行超时 | 某个子任务卡住 | 设置子任务超时时间,避免整体卡死 |
| 重复推送 | 重试机制触发 | 检查是否已成功但被判定为失败 |
提示:建议在正式启用前,先用测试模式跑三天,每天检查输出结果,确认稳定后再开启正式推送。
6. 进阶玩法:让日报更懂你
6.1 根据反馈自动调整优先级
我在日报里加了一个简单的反馈机制:每条待办后面跟一个“重要/不重要”的标记,我每天花10秒点一下。WorkBuddy 记录这些反馈,一周后自动调整优先级规则。比如某个类型的任务我连续标了三次“不重要”,它就自动降级。
这个功能不是 WorkBuddy 自带的,是我用它的“规则引擎”加了一个简单的统计逻辑实现的。核心思路是:把人的判断变成数据,再用数据优化规则。
6.2 多端同步:微信之外还能推到哪里
微信是主要推送渠道,但我也配了备用渠道:
- 邮件:作为存档,方便搜索历史日报
- 飞书/钉钉:如果团队在用,可以同步到团队群
- 本地文件:每天存一份 Markdown 到本地,方便离线查看
多端同步的关键是内容格式要统一。我统一用 Markdown,然后每个渠道做一次格式转换。微信机器人直接发 Markdown,邮件转成 HTML,本地存原始 Markdown。
6.3 和自动化测试链路的结合
这是我最近在折腾的方向:把日报和自动化测试链路打通。具体做法是:
- 测试任务执行完后,把结果写入一个日志文件
- WorkBuddy 日报任务读取这个日志,统计通过率、失败用例、耗时
- 如果失败率超过阈值,日报里单独标红,并触发一个告警
这样日报就不只是“信息汇总”,而是“质量看板”。我试跑了一周,发现有两个测试用例其实一直不稳定,以前没注意到,现在每天都能看到,很快就修好了。
6.4 用 DeepSeek 做内容摘要
行业动态部分,原始内容往往比较长。我接了一个 DeepSeek 的 API,对每条动态做一次摘要,控制在100字以内。这样日报更紧凑,阅读体验更好。
调用逻辑很简单:
import requests def summarize(text): response = requests.post( "https://api.deepseek.com/v1/chat/completions", headers={"Authorization": "Bearer YOUR_KEY"}, json={ "model": "deepseek-chat", "messages": [ {"role": "system", "content": "用100字以内总结以下内容"}, {"role": "user", "content": text} ] } ) return response.json()["choices"][0]["message"]["content"]这个摘要步骤是可选的,如果不想接外部 API,WorkBuddy 本身也有基础的文本处理能力,可以做截断和关键词提取。
7. 我踩过的坑和最后分享的几个技巧
第一个坑:不要把所有信息都塞进日报。我一开始想把所有能抓的东西都放进去,结果日报变成了“信息垃圾场”,自己都不想看。后来砍掉了80%的内容,只保留最核心的四块,阅读率反而上去了。
第二个坑:定时任务的时间要避开系统维护窗口。我有一次把时间设在凌晨3点,结果那个时间段正好是服务器维护,连续三天没跑成功。后来改到上午10:30,再没出过问题。
第三个坑:重试机制要加幂等判断。有一次推送其实成功了,但 WorkBuddy 没收到成功响应,触发了重试,结果我收到了两条一样的日报。后来加了一个“发送前检查是否已发送”的逻辑,解决了这个问题。
最后分享一个小技巧:日报的标题加上日期和一句话摘要。比如“AI日报 2025-01-15:3个任务失败,2条重要动态”。这样即使不打开日报,在微信通知栏也能看到关键信息,决定要不要马上处理。
这套东西跑了一个多月,我现在已经离不开它了。每天早上十点半,微信一响,我就知道今天该干什么、昨天有什么没干完、行业里发生了什么。省下来的时间,够我多写两段代码,或者多喝一杯咖啡。