每天早上十点半之前我大概率都在做同一件事把十几个网页标签页挨个点一遍看今天 AI 圈又出了什么新东西。看多了以后我发现真正被我记住的信息没几条收藏夹倒是越来越长。后来我换了个思路给 WorkBuddy 设了个闹钟——每天 10:30让它自动把一份 AI 日报送进我的微信。跑通之后我省下的不只是每天早上那半小时而是那种“生怕错过什么”的焦虑。这篇内容就是完整的落地记录。我尽量写得具体一点因为配置这类定时任务最怕的就是看了一堆概念回去还是不知道先点哪里。整个过程涉及三个核心环节数据采集、AI 汇总、微信推送。如果你也想给自己配一个类似的每日自动化信息流这篇文章应该能帮你省不少弯路。1. 为什么要把 AI 日报变成“定时任务”而不是“AI 聊天窗口问一句”1.1 你需要的不是更多信息而是一个固定的信息接收时刻先说我自己的背景。我平时的工作跟大模型应用相关每天要看的信息源很多Hacker News、GitHub Trending、arXiv 的上新论文、几个行业公众号、还有各种产品发布。我以前的习惯是“随看随存”结果就是注意力被切成碎片早上刚坐下来就刷了四十分钟真正该做的事反而被拖到十一点。后来我意识到一个反常识的点我不是缺少信息渠道而是缺少一个“信息接收时刻”。就像老一辈人习惯晚上七点看新闻联播那个时间节点一到整个世界发生了什么半小时内就有了框架。对我来说这个固定时刻就是工作日上午十点半。十点半正好是上午第一个工作阶段的尾巴看完日报既不会耽误进入状态的黄金时间又能为中午或者下午的决策提供输入。所以这不是单纯把搜索行为自动化而是重新设计自己的信息摄入节奏。定时推送的核心价值是让获取信息从一个“主动动作”变成一个“被动环境”——你不需要想起来才去看到点它会来找你。1.2 先把“日报”拆成可以自动化的三个环节我在动手配置之前先把“AI 日报”这个大目标拆成了三个独立环节采集从指定数据源抓取当天新增内容。生成用 AI 对采集到的内容做过滤、归纳和排序。投递把最终结果推送到微信。这个拆法很重要。很多人一上来就想做一个“什么都能干”的超级任务结果最后定时任务是跑了但内容像大杂烩过三天自己都不想点开。拆开之后每一个环节都可以单独测试先测采集能不能拿到数据再测 AI 汇总好不好读最后测推送能不能出现在微信里。任何一个环节出了问题定位起来都很快。如果你想复现建议不要一上来就追求什么“个性化推荐”“智能学习你的兴趣”。那样听起来很酷但维护成本极高。第一版就做“固定数据源 固定提示词 固定时间推送”先跑两周再根据实际阅读情况慢慢调。自动化的第一原则永远是先把最简单的那条链路跑通。2. WorkBuddy 的定时能力、技能机制和微信推送我到底用了哪几层2.1 WorkBuddy 到底是什么给没接触过的人一个坐标系WorkBuddy 这个名字和 CodeBuddy 属于同一个产品家族。你可以把它理解成一个“AI 工作台”它不只是对话框里跟你聊天还能通过定时触发、技能调用、消息通道这些方式去完成一些不需要人盯着的任务。我用它的方式比较朴素把它当作一个“带闹钟的 AI 助理”。闹钟响的那一刻它会按照我预设好的技能指令去抓取信息、生成内容、再推给我。整个过程中我不需要打开电脑手机上收到微信就说明这一次的任务跑完了。如果你之前完全没用过这类工具也别被术语吓住。它的核心模型就三个词触发器Trigger、技能Skill、输出通道Channel。触发器决定什么时候干活技能决定怎么干活输出通道决定干完活怎么通知你。后面配置的时候脑子里一直想着这三个词就够了。2.2 “每天 10:30 推送”不是简单定时而是“触发器 技能 输出通道”的组合很多人一听定时任务第一反应是 cron然后自己找服务器搭一个再写脚本调 API。技术上完全可以但维护成本不低。WorkBuddy 这类工具的价值是把你从服务器运维里解放出来让你能把精力集中在“内容怎么做”这件事上。我用到的三层是这样的触发器设定为每天 10:30 触发同时可以排除周末。技能一个名为“daily_ai_brief”的技能。技能里写清楚数据源清单、要生成什么风格的日报、输出格式是什么。输出通道微信。任务跑完以后把生成的文本发送到我的微信。这三层缺一层都不行。触发器再准时如果技能指令写得稀烂推过来的内容就是垃圾。同理技能写得再好输出通道没走通日报也只会静静地躺在任务日志里没人看。2.3 微信推送的几种可行路径以及我为什么选“低侵入”的方式这里要提醒一句在国内现网环境里个人微信没有官方对外开放的“主动发消息”接口这一点无论用什么工具都一样。所以在设计推送路径时要优先选那些合法合规、不被风控的方式。WorkBuddy 自己带的微信推送通道本质上是走消息模板、企业微信机器人或者 Webhook 这类正规渠道。我之前也试过自己搭 Server 酱、PushPlus 之类的推送服务它们在微信里的呈现方式是通过公众号或企业微信应用来触达效果也还行。从稳定性角度来说我更推荐 WorkBuddy 原生集成的通道少一个中间环节就少一处可能断掉的地方。至于那些以“解密数据库”“模拟登录个人微信”为卖点的方案我强烈不建议碰。信息接收而已没必要把账号安全搭进去。定时任务的底层逻辑是很朴素的信息源合规、推送通道合规、内容合规这才能长期稳定地跑下去。3. 配置“每日 AI 日报”的完整操作从数据源到微信模板3.1 先准备数据源没有好素材AI 汇总就是垃圾进垃圾出这一步我排在最前面因为数据质量直接决定日报质量。AI 再聪明也没办法把一个质量很差的源变成一个高质量源。所谓 Garbage In Garbage Out在一个自动化任务里会被放大十倍——因为你会习惯性信任机器筛选过的内容。我第一版的日报数据源控制在 6 个覆盖这几类数据源抓什么更新频率Hacker News 热榜技术社区热点、创业产品讨论实时GitHub Trending今日 Star 增长快的开源项目每日arXiv cs.AI 新论文最新学术动态工作日几个行业 RSS头部博主和媒体的长文每日内部知识库/周报团队动态工作日前一天用 RSS 的地方尽量用 RSS因为 RSS 自带时间字段和链接做去重和时效过滤都很方便。拿 Python 写一个简单的采集脚本大概长这样import requests import feedparser from datetime import datetime, timedelta SOURCES [ https://hnrss.org/frontpage, https://github.com/trending, https://export.arxiv.org/rss/cs.AI, ] def fetch_rss(url): feed feedparser.parse(requests.get(url, timeout10).content) items [] for entry in feed.entries[:10]: items.append({ title: entry.get(title, ), link: entry.get(link, ), published: entry.get(published, ), source: url, }) return items def fetch_all(): all_items [] for url in SOURCES: try: all_items.extend(fetch_rss(url)) except Exception as e: print(ffetch {url} failed: {e}) return all_items这里做了几件事每个源最多取 10 条、失败不影响其他源、统一字段结构方便后续传给 AI。实际跑起来以后你大概率会发现还有些数据源要用 HTML 抓取那就再加一步解析但第一版尽量用 RSS 和 JSON API别一上来就写爬虫。3.2 写一段“日报生成指令”让 WorkBuddy 每次都知道自己要干嘛数据源准备好以后真正的灵魂在提示词里。这个过程别写成“帮我整理今天的 AI 新闻”这种一句话需求否则 AI 会给你发挥出一篇没有信息来源的“正确的废话”。我用的指令大致是这个结构你是一个资深 AI 领域编辑。以下内容来自多个信息源请从中筛选出最有价值的 5-7 条生成一份中文日报。 要求 1. 只选与 AI 技术、产品、开源项目、论文相关的内容 2. 剔除纯舆论八卦和明显软文 3. 每条用一句话说明“为什么值得关注”不能只是复述标题 4. 按“今日焦点 / 值得关注 / 一句话补充”三个栏目组织 5. 全文不超过 800 字适合在微信里阅读 6. 必须给出原文链接。 输入素材 {raw_items}注意里面加了三个硬约束数量限制、栏目结构、字数上限。这三个约束比“要专业、要有洞察”这种虚词有用得多。AI 汇总类任务的通病就是追求全面结果面面俱到等于什么都没讲。你把限制给死它反而能交出更像人编辑出来的东西。在 WorkBuddy 里我把这段指令保存成了一个技能取名为 daily_ai_brief。以后每次触发任务时只需要在任务配置里引用这个技能名再传入当天的采集结果。3.3 创建定时任务每天 10:30工作日还是每天配置定时任务时我一开始想得比较简单选了个“每天 10:30”。跑了三天就发现问题周六周日推过来的日报我基本不会点开还占用通知栏位置真正需要的信息漏掉时反而更难发现。后来我把触发器改成“工作日 10:30”周一至周五推送周末不推。WorkBuddy 的任务配置里也支持这种周期规则。一份典型配置长这样trigger: type: schedule cron: 0 30 10 * * MON-FRI timezone: Asia/Shanghai job: skill: daily_ai_brief params: raw_items: {{ fetch_rss_result }} delivery: channel: wechat target: my_work_wechat这里的 cron 表达式是标准的五段式0 30 10 * * MON-FRI表示周一到周五每天 10:30 触发。时区一定要显式指定否则任务会默认跑在服务器时区到时候比预期晚 8 个小时你就很困惑了。首次配置完不要直接等第二天WorkBuddy 里一般都支持“手动运行一次”。先手动触发确认采集、生成、推送全链路没问题再开启自动定时。这个习惯帮我避开了很多坑。3.4 设计微信推送消息的呈现形式微信收消息这件事有一个很影响体验的细节长文本和短文本的呈现差别很大。如果推过来一篇 3000 字的长文微信里大概率是被折叠的你要点进去才能看这个附加动作会杀掉大部分阅读欲望。所以我最终推送的格式是 AI 日报 · 10月18日 星期四 【今日焦点】 1. 标题一句话说明为什么重要 链接xxx 【值得关注】 2. 标题一句话说明为什么重要 链接xxx 【一句话补充】 3. 标题最短摘要 ...正文控制在 800 字以内结构清晰前三条消息就能看完重点。链接放在每条后面想深入了解就点不想点也不影响信息摄入。这里有个小诀窍推送内容里尽量不要用《》这种标题符号也不要加太多加粗。微信适配的富文本风格比较简洁纯文本加适量换行是最好的。你可以在配置里加一个提示词约束“不要加 Markdown 加粗、不要用 emoji 标题符号使用纯文本换行”。4. 实测两周踩过的坑自动日报没推送、推送了但我不看、内容越来越水4.1 坑一定时任务“静默失败”没有日志提示这是最容易让人血压升高的问题。第一天配置好后我美滋滋地等着 10:30 的推送结果十点半到了微信安静得像凌晨三点。去翻任务配置它显示“已运行”但就是没推过来。排查链路是这样的先看任务日志确认任务是不是真的在 10:30 被触发了。再看采集环节手动跑一次 fetch_all确认数据源是不是超时了。有些 RSS 源偶尔会超时需要给请求加更长的 timeout。再看生成环节确认提示词引用的技能名有没有拼写错误。最后看推送通道确认目标微信有没有绑定好。最后发现我的问题出在一个很蠢的地方我配置了工作日触发但当天是周六日志自然显示“已运行”实际上什么都没干。这个属于我对节假日的预期判断失误不算 bug。但这个排查过程很有价值它让我养成了看任务日志的习惯。任何定时任务日志就是你的第一现场。4.2 坑二日报标题很吸引人点进去发现只是旧闻重发跑了三四天后我发现日报开始出现一个很讨厌的问题一些所谓“热门内容”实际上是之前已经推过好几轮的旧讨论只是换了个角度重新上榜。RSS 源里有时间字段但 AI 汇总的时候没有做“文章发布时间必须晚于上次运行时间”的过滤导致新旧信息混杂。解决办法有两个层面第一层在采集环节做硬过滤。只保留发布时间在最近 24 小时内的数据代码里加一行CUTOFF datetime.now() - timedelta(hours24) items [i for i in items if i[published] CUTOFF]第二层在提示词里做软约束“如果发现内容与本周已推过的内容主题重复优先选择时效性更强或角度更新的一条。”这一招可以避免新闻里的“回锅肉”问题。还有一个更省事的做法把上次成功运行的时间记录下来作为下一次采集的起始时间戳。很多任务工具都支持在每轮任务之间传一个 state你可以用它来记住“上次跑到哪了”。4.3 坑三微信里 5000 字的日报根本没人看我一开始贪心觉得日报嘛信息越多越值。结果第一版推了 1500 字我自己看到都头疼更别提每天坚持读。我后来做了一个很刻意的改变把日报上限压到 800 字每条内容必须能一句话讲清为什么重要。800 字的日报告诉我什么信息必须留、什么信息可以丢。这个“判断力”比任何技术配置都重要。真正的 AI 信息过滤不是把所有内容都塞进来而是把你不会错过的三件事挑出来放在最前面。宁可让日报看起来短也不能让它变成收藏夹里的另一个负担。4.4 坑四周末收到日报比工作日骚扰更严重这个我在前面提到了。周末的日报打开率几乎为零还容易让微信通知栏变得很拥挤其实工作日早上的那种“信息新鲜感”都被稀释掉了。改成MON-FRI之后周末不再推送。如果你像我一样有补课需求可以把周六的日报改成“周六早晨九点汇总一周精华”而不是简单复制每日格式。4.5 坑五提示词写得太开放日报变成了“正确的废话”有一版日报让我印象很深。它每条都很通顺但读下来完全不知道今天到底发生了什么实质变化。“多个团队发布了新的模型能力”“部分开源项目获得社区关注”——这种话说了等于没说。问题出在提示词缺少两个东西一是缺少“必须基于具体事实”的约束二是缺少“避免抽象概括”的反面示例。我在提示词里加了一句避免下列写法“多个团队发布了新模型”“本周 AI 领域动态活跃”。 如果一条信息无法用具体名称、具体数据或具体链接来表达就丢弃它。加了这个约束以后日报质量有了明显提升。你会发现AI 汇总类任务中负面影响最大的往往不是能力不够而是指令里没有给它“什么不该写”的边界。5. 日报跑通之后我又把哪几个 WorkBuddy 定时任务加进了早晨流程日报这件事跑稳以后我开始有点“上瘾”。同样的触发器、技能、输出通道模式稍作修改就能套用到好多场景。我这里列几个我已经在用的早晨任务它们不是一次性做完的而是每周迭代加进去的。5.1 周报素材自动整理每周五下午 4 点WorkBuddy 会把我这周提交过的代码评论、团队协作记录和技术讨论内容拉出来生成一份“本周工作素材草稿”推给我做人工润色。以前我写周报要回忆半小时现在 5 分钟就能搞定草稿。这个任务的提示词核心就一句话“基于输入内容提取本周完成的事、遇到的问题、下一步计划不要虚构工作内容。”5.2 竞品动态和 GitHub Star 变化盯梢每天上午日报之后第二个任务会追踪几个重点竞品项目的最新更新包括 GitHub 每日 Star 数变化、新 Release 公告和 README 更新。这个不追求全面只追求“变化”。生成的样式类似“XX 项目今天新增 12 个 Star发布 v0.3.2主要更新新增多模态接口”一眼就能看清楚市场动态。5.3 会议纪要归档与待办提醒WorkBuddy 本身可以和一些会议工具联动把转写文本自动整理成三段式纪要结论、行动项、负责人。我设置每天 9:30 检查一次待办事项把今天超过截止时间的任务单独提醒一次。这个任务技术含量不高但带来的松弛感是实打实的——再也不用在脑子里反复记“下午三点有会”。5.4 我的建议自动化再好也要留一条“人工确认”的口子最后我想提醒一个很多人会忽略的点定时任务的最大风险不是失败而是“你开始无脑相信它”。AI 日报做得再顺它也只是这轮信息筛选的一个环节。我保留了每天早上读完日报后的一个动作如果有两条以上内容和我业务直接相关我会亲自点开原文再读一遍。这不是不信工具而是我清楚地知道自动化的价值在于省时间而不在于替我做最终判断。以后我大概率还会继续扩展这类任务但每加一个定时推送我都会问自己一句这条消息如果真的让我看到了我会后悔吗如果答案是“会”那它就有必要推送如果答案是“不会”那就说明它只是噪音。这句话送给所有想给自己做信息流系统的人比任何配置技巧都实用。