ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

WorkBuddy定时AI日报:每天十点半自动推送微信

WorkBuddy定时AI日报:每天十点半自动推送微信 1. 为什么我要给 WorkBuddy 设一个“十点半闹钟”每天早上到工位第一件事是打开电脑、翻聊天记录、看邮件、刷各种群把昨天遗留的问题和今天要跟进的事项在脑子里过一遍。这个过程看起来不起眼实际上每天要吃掉我将近四十分钟而且经常漏东西——某个群里提的需求、某封邮件里的截止时间、某个同事半夜发来的文件一不留神就沉底了。后来我开始用 WorkBuddy 做日常任务管理把待办、笔记、日程都往里丢。用了一阵子发现一个问题工具是好工具但我得主动去打开它、主动去翻。它不会主动告诉我“今天有什么值得关注的”。这就像你买了一个很贵的记事本但它永远安安静静躺在抽屉里你不翻开它就等于不存在。于是我给自己定了一个目标每天上午十点半让 WorkBuddy 自动生成一份 AI 日报直接推送到微信上。十点半这个时间点是刻意选的——早上的紧急消息已经处理完一轮午饭前的整块时间还没被会议切碎正好用一份日报把当天的主线理清楚。推送渠道选微信理由更简单我一天里打开频率最高的 App 就是它日报送到微信等于送到了我眼皮底下不需要额外养成“去某个工具里看”的习惯。这套东西做出来之后我实测跑了三周多每天早上十点半手机准时弹出一条消息里面是当天待办摘要、昨日完成情况、需要重点关注的条目以及 AI 根据我近期记录自动归纳的提醒。整个过程不需要我手动触发也不需要我打开任何额外页面。下面我把整套方案的思路、选型、配置步骤、踩过的坑全部拆开讲。适合两类人看一类是已经在用 WorkBuddy、想把它从“被动记录工具”变成“主动推送助手”的人另一类是单纯想搞一套个人自动化日报系统、对具体工具不挑的人。哪怕你最后不用 WorkBuddy这套“定时触发 AI 归纳 微信推送”的骨架也能直接搬到别的场景里。2. 整体方案设计与选型思路拆解2.1 这套系统到底由哪几块拼起来先把架构说清楚不然后面配置的时候容易迷路。整套东西拆开就是四个环节串成一条流水线定时触发每天上午十点半准时启动不需要人管。我用的是系统自带的任务计划能力Windows 上是任务计划程序macOS 上是 launchdLinux 上是 cron。选哪个取决于你 WorkBuddy 跑在哪台机器上。数据拉取触发之后脚本去 WorkBuddy 里把当天的待办、昨天的完成记录、近期笔记捞出来。这一步的关键是拿到结构化的数据而不是一堆乱糟糟的文本。AI 归纳把捞出来的原始数据丢给大模型让它压缩成一份人话日报——今天重点是什么、昨天哪些没做完、有什么需要提前注意的。这里我用的是 DeepSeek 的接口原因后面细说。微信推送把 AI 生成的日报通过微信推给自己。推送方式有好几种我选的是最稳、最不折腾的一种下面会讲清楚为什么。这四块里最容易出问题的是第二块和第四块。数据拉取容易因为字段变动、权限过期而失败微信推送容易因为频率限制、消息格式不对而收不到。定时触发和 AI 归纳反而最省心配好之后基本不用动。2.2 为什么选 DeepSeek 做归纳而不是别的模型AI 归纳这一步模型选择直接决定日报质量。我前后试过三个方案最后定在 DeepSeek理由有三条都是实测出来的第一中文归纳能力强废话少。日报这种东西最怕模型给你写一堆“您今天有若干项任务需要处理建议您合理安排时间”这种正确的废话。DeepSeek 在中文语境下做摘要和提炼输出更紧凑该省略的会省略该突出的会突出。我拿同一批待办数据喂给几个模型对比过DeepSeek 出来的日报我基本不用改直接能看。第二接口调用简单成本可控。它的 API 格式是标准的用 Python 的 requests 库几行就能调通不需要装一堆 SDK。而且日报这种场景每天就调一次token 消耗很小一个月的成本基本可以忽略。对于个人自用来说这一点很重要——你不想为了一个日报功能去研究复杂的计费和配额体系。第三对结构化输入的处理稳定。我喂给它的数据是 JSON 格式的待办列表包含标题、状态、截止时间、标签这些字段。DeepSeek 能比较准确地理解这些字段的含义不会把“截止时间”当成正文内容混进去。这一点在我试过的模型里表现最好。提示模型选择没有绝对标准如果你手头已经有习惯用的模型接口完全可以替换。核心是保证它能稳定处理结构化输入、输出简洁中文、接口调用不折腾。2.3 微信推送为什么不用花里胡哨的方案微信推送这块网上能搜到很多方案但大部分要么不稳定要么配置复杂到劝退。我最后选的是一个最朴素的思路通过微信官方的消息能力把日报推送到自己的对话里。具体来说我走的是微信服务号或者企业微信应用消息的路子。个人自用的话企业微信自建应用是最省事的——注册一个企业微信个人也能注册建一个自建应用拿到应用的 ID 和密钥然后调用它的消息推送接口就能把消息发到自己的微信上。整个过程不需要服务器备案不需要域名不需要复杂的鉴权流程。为什么不选其他方案我列个对比你就明白了推送方案配置难度稳定性是否需要额外条件我的评价企业微信自建应用低高注册企业微信首选个人可用服务号模板消息中中需要认证服务号门槛偏高第三方推送平台低低依赖第三方不稳定不推荐邮件转微信中中需要邮箱配置绕弯延迟高企业微信自建应用的好处是消息直接进微信和普通聊天消息一样有红点提醒不需要你额外打开任何 App。而且它的接口文档清晰调用方式简单出错信息也明确排查起来不费劲。2.4 十点半这个时间点是怎么定下来的时间点的选择不是拍脑袋。我观察了自己两周的工作节奏记录了几个关键时间9:00 到 9:30到工位处理隔夜消息这时候信息最杂不适合看日报。9:30 到 10:00开早会或者处理紧急事项注意力被占满。10:00 到 10:30紧急事项处理得差不多开始规划当天工作。10:30 到 12:00整块时间适合做需要专注的事。十点半正好卡在“规划当天工作”的尾巴上。这时候一份日报进来能帮我把当天的主线定下来然后带着清晰的优先级进入整块工作时间。如果太早日报里的信息可能还没更新完如果太晚就错过了规划窗口。注意这个时间点因人而异。如果你习惯下午才开始进入状态可以把触发时间往后挪。核心原则是——日报要在你“需要做规划”的那个时间点之前几分钟到达而不是在你已经忙起来之后才弹出来。3. 核心细节解析与实操要点3.1 WorkBuddy 数据怎么捞出来这是整套流程里最需要耐心的一步。WorkBuddy 的数据存在本地或者云端取决于你用的是哪个版本。我用的版本数据是本地存储的所以可以直接读它的数据文件。如果你用的是云端版本那就需要走它的开放接口或者导出功能。我的做法是先手动导出一份数据看清楚结构再写脚本自动读。具体步骤在 WorkBuddy 里找到导出功能把待办和笔记导出成 JSON 或 CSV 格式。用文本编辑器打开看清楚每个字段的含义。重点关注任务标题、状态未完成/已完成、截止时间、创建时间、标签、优先级。根据字段结构写一个 Python 脚本去读取数据源。如果是本地文件直接读文件如果是接口用 requests 调。这里有个关键点不要试图一次性把所有数据都捞出来。日报只需要三类数据今天到期的待办昨天完成的任务最近三天新增的、还没处理的条目把范围缩小脚本逻辑简单出错概率也低。我一开始贪心想把所有数据都拉出来让 AI 总结结果 AI 被大量无关信息干扰日报质量反而下降。import json from datetime import datetime, timedelta def load_tasks(filepath): with open(filepath, r, encodingutf-8) as f: data json.load(f) return data def filter_tasks(tasks): today datetime.now().date() yesterday today - timedelta(days1) three_days_ago today - timedelta(days3) today_tasks [] yesterday_done [] recent_new [] for task in tasks: due task.get(due_date) status task.get(status) created task.get(created_at) if due and datetime.strptime(due, %Y-%m-%d).date() today: today_tasks.append(task) if status done and created: created_date datetime.strptime(created, %Y-%m-%d).date() if created_date yesterday: yesterday_done.append(task) if created: created_date datetime.strptime(created, %Y-%m-%d).date() if created_date three_days_ago and status ! done: recent_new.append(task) return { today_tasks: today_tasks, yesterday_done: yesterday_done, recent_new: recent_new }这段代码的逻辑很直白读数据、按日期和状态过滤、返回三个列表。你可以根据自己 WorkBuddy 的实际字段名调整。实操心得字段名一定要以你实际导出的数据为准。我一开始照着网上搜到的字段名写结果跑起来全是空值排查了半天才发现版本不同字段名不一样。先导出、先看、再写代码这个顺序不能省。3.2 喂给 AI 的提示词怎么写才不废话数据捞出来之后下一步是构造提示词。这一步决定了日报的“人味”够不够。我试过很多版本最后稳定下来的提示词结构是这样的你是一个个人助理负责把原始任务数据整理成一份简洁的日报。 要求 1. 用中文输出语气自然像同事之间说话。 2. 分成三块今日重点、昨日回顾、提醒事项。 3. 今日重点不超过5条按优先级排序。 4. 昨日回顾只列完成的任务一句话带过。 5. 提醒事项只写需要特别注意的没有就不写。 6. 不要写“您”“请”“建议”这类客套词。 7. 总字数控制在300字以内。 原始数据 {data}这个提示词的关键在于约束输出格式和语气。如果不加约束模型很容易写成一份正式的汇报文档读起来累。加了“像同事之间说话”“不要客套词”这些约束之后输出就自然多了。另外总字数限制很重要。日报不是越长越好300字以内逼着模型做取舍只留最重要的信息。我试过不限制字数结果模型把每条待办都展开说一遍日报变成了一篇小作文反而没人看。3.3 微信推送的配置细节企业微信自建应用的配置流程我按实际操作顺序列一遍注册企业微信。个人也能注册填基本信息就行不需要营业执照。进入管理后台找到“应用管理”创建一个自建应用。应用名称随便填比如“每日日报”。创建完成后记下三个关键信息企业 IDcorpid、应用 Secretcorpsecret、应用 AgentId。这三个是调用接口的凭证。在应用设置里找到“接收消息”或者“可信 IP”相关配置把你的服务器或者本机 IP 加进去。这一步是为了让接口调用不被拦截。调用接口获取 access_token然后用 access_token 发送消息。发送消息的接口调用逻辑import requests def get_access_token(corpid, corpsecret): url fhttps://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid{corpid}corpsecret{corpsecret} resp requests.get(url) return resp.json().get(access_token) def send_message(access_token, agentid, content): url fhttps://qyapi.weixin.qq.com/cgi-bin/message/send?access_token{access_token} payload { touser: all, msgtype: text, agentid: agentid, text: { content: content } } resp requests.post(url, jsonpayload) return resp.json()touser填all就是发给企业里所有人个人自用的话就你一个人效果一样。消息类型用text最简单也最稳。注意access_token 有有效期一般是两小时。如果你每天只跑一次每次跑之前重新获取一次就行不用做缓存。但如果你的脚本会频繁调用就要考虑缓存 token避免频繁请求被限制。3.4 定时触发怎么配才靠谱定时触发这块我用的是 Windows 的任务计划程序。配置步骤打开任务计划程序创建基本任务。触发器设置为“每天”时间填 10:30。操作设置为“启动程序”程序填 python.exe 的路径参数填你的脚本路径。在“条件”选项卡里取消勾选“只有在计算机使用交流电源时才启动”避免笔记本拔电源就不跑。在“设置”选项卡里勾选“如果任务失败按以下频率重新启动”间隔设 5 分钟最多重试 3 次。这几步里第 4 步和第 5 步最容易漏。不取消电源限制笔记本一拔电任务就不触发不设重试网络抖动一次当天就没日报了。我踩过这个坑某天早上断网脚本第一次跑失败因为没有重试机制那天就没收到日报直到中午才发现。如果你用的是 macOS对应的配置在 launchd 里写一个 plist 文件放到~/Library/LaunchAgents/目录下。Linux 就更简单crontab 一行搞定30 10 * * * /usr/bin/python3 /path/to/your/script.py /path/to/log.txt 21把输出重定向到日志文件方便出问题的时候排查。4. 完整实操流程与关键环节实现4.1 从零到跑通的完整步骤清单把前面几块拼起来完整的落地流程是这样的。我按实际操作顺序列你照着做就行确认 WorkBuddy 数据位置。打开 WorkBuddy找到数据存储目录或者导出功能导出一份样本数据。分析数据结构。用编辑器打开样本确认字段名和格式记录下来。写数据过滤脚本。用前面的 Python 代码做基础改成你实际的字段名跑一遍看输出对不对。注册企业微信并创建自建应用。拿到 corpid、corpsecret、agentid 三个凭证。写推送脚本。先用一条固定文本测试推送能不能收到确认通道通了再往下走。接入 DeepSeek 接口。申请 API Key写调用代码把过滤后的数据喂进去看输出质量。串联全流程。把数据过滤、AI 归纳、微信推送串成一个脚本手动跑一遍确认端到端通了。配置定时任务。按前面的步骤配好触发器把时间设成 10:30。观察三天。看日报到达时间是否稳定、内容质量是否达标、有没有漏推。调优。根据观察结果调整提示词、过滤条件、重试策略。这十步里第 5 步单独测试推送非常关键。很多人喜欢把所有东西写完再一起跑结果出问题的时候不知道是哪一环挂了。先把推送通道单独跑通后面排查问题就简单一半。4.2 数据过滤的参数怎么定过滤条件直接决定日报的内容范围。我现在的配置是这样的数据类别过滤条件用途今日待办截止日期 今天日报的“今日重点”昨日完成状态 已完成 且 完成日期 昨天日报的“昨日回顾”近期新增创建日期在近3天内 且 状态 ≠ 已完成日报的“提醒事项”这三个条件是我调了好几轮才定下来的。一开始“近期新增”我设的是近 7 天结果日报里堆了一堆陈年旧账看着就烦。改成 3 天之后只保留真正新鲜的条目日报清爽很多。“今日待办”这一块我还加了一个优先级排序有截止时间的排前面没截止时间的排后面同是有截止时间的按创建时间倒序。这样日报里的重点条目顺序更符合直觉。实操心得过滤条件不要一次定死先跑几天看看日报里哪些内容是多余的、哪些该有的没出现再回头调。我前后调了四次才稳定下来。4.3 AI 归纳环节的完整代码把数据过滤和 AI 调用串起来核心代码长这样import requests import json def call_deepseek(api_key, prompt): url https://api.deepseek.com/v1/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } payload { model: deepseek-chat, messages: [ {role: system, content: 你是一个个人助理负责整理日报。}, {role: user, content: prompt} ], temperature: 0.3, max_tokens: 500 } resp requests.post(url, headersheaders, jsonpayload, timeout30) result resp.json() return result[choices][0][message][content]几个参数说明一下temperature设 0.3是为了让输出稳定。日报这种场景不需要创意需要的是每次输出风格一致。设太高的话每天日报的语气都不一样读起来别扭。max_tokens设 500配合提示词里的 300 字限制双保险防止输出过长。timeout设 30 秒避免网络慢的时候脚本卡死。4.4 端到端串联与异常处理把三块串起来的主脚本结构是这样的def main(): try: # 1. 捞数据 tasks load_tasks(DATA_PATH) filtered filter_tasks(tasks) # 2. 构造提示词 prompt build_prompt(filtered) # 3. 调 AI report call_deepseek(API_KEY, prompt) # 4. 推送微信 token get_access_token(CORPID, CORPSECRET) result send_message(token, AGENTID, report) # 5. 记录日志 log(f推送成功: {result}) except Exception as e: log(f执行失败: {str(e)}) # 失败时推送一条告警 try: token get_access_token(CORPID, CORPSECRET) send_message(token, AGENTID, f日报生成失败: {str(e)}) except: pass这里有个设计细节失败的时候也推一条消息。这样即使日报没生成成功你也能收到通知知道出了问题而不是傻等。我加了这个机制之后有一次 API 额度用完当天就收到了失败告警及时处理了。5. 常见问题与排查技巧实录5.1 日报没收到怎么一步步排查这是最常见的问题。我的排查顺序是这样的从外到内先看定时任务有没有触发。Windows 任务计划程序里有“上次运行结果”一栏如果显示失败说明脚本根本没跑起来。检查 Python 路径、脚本路径、权限。再看脚本日志。我在脚本里加了日志输出每次运行都写一行到 log 文件。看日志里有没有报错报错在哪一步。检查 access_token 是否过期。如果日志显示推送接口返回 token 相关错误重新获取一次 token 再试。检查 IP 白名单。企业微信自建应用如果配了可信 IP换网络环境之后 IP 变了会被拦截。日志里会显示 IP 不在白名单。检查 AI 接口额度。如果日志显示 AI 调用失败去后台看额度是不是用完了。这个顺序的逻辑是先确认脚本跑了没再确认跑到哪一步挂了。很多人一上来就怀疑 AI 接口结果折腾半天发现是定时任务根本没触发。5.2 常见问题速查表现象可能原因排查方法解决方法完全没收到消息定时任务未触发看任务计划程序的上次运行结果检查路径、权限、电源设置收到失败告警脚本执行报错看日志文件按日志提示修复消息内容为空AI 返回空或数据过滤为空看日志里 AI 返回内容检查数据源和提示词消息乱码编码问题看日志里的原始输出统一用 UTF-8 编码推送延迟很久网络或接口限流看日志时间戳加重试机制错开高峰token 获取失败凭证错误或 IP 限制看接口返回的错误码核对 corpid 和 secret检查 IP 白名单这张表是我踩坑踩出来的基本覆盖了 90% 的常见问题。遇到问题先查表能省很多时间。5.3 几个我踩过的坑和对应的解法坑一笔记本合盖之后任务不触发。我一开始用笔记本跑这套东西晚上合盖休眠第二天早上十点半任务没触发。解法是在电源设置里把“合盖时”设为“不采取任何操作”或者干脆换一台常开的机器跑。坑二AI 输出格式不稳定。有时候日报分三块有时候分两块有时候干脆写成一大段。解法是在提示词里把格式要求写死并且加一句“严格按照上述格式输出不要添加额外内容”。加了这句之后稳定多了。坑三微信消息太长被截断。企业微信的文本消息有长度限制超过会被截断。解法是在提示词里限制 300 字并且在推送前做一次长度检查超长就截断加省略号。坑四同一天收到两条日报。有一次任务重试机制触发第一次其实成功了但返回超时重试又发了一遍。解法是在脚本里加一个“当天已推送”的标记推送成功就写一个标记文件重试前先检查标记。实操心得标记文件这个技巧很实用。用一个简单的文本文件记录当天日期脚本启动时先读这个文件如果日期是今天就直接退出。这样即使重试机制触发也不会重复推送。5.4 日报质量怎么持续调优跑通只是第一步日报质量需要持续调。我的调优方法是每周回顾一次日报标记哪些内容有用、哪些没用然后针对性调整。具体来说我会在周末翻一遍这一周的日报问自己三个问题哪些条目我看了之后真的去处理了哪些条目我扫一眼就跳过了有没有我事后想起来觉得“这个应该出现在日报里但没出现”的根据这三个问题的答案调整过滤条件和提示词。比如我发现“近期新增”里的某些标签的任务我从来不关注就在过滤条件里把这些标签排除掉。又比如我发现日报里缺少“今天有哪些会议”这一块就在数据源里把日程数据也加进去。这个过程听起来麻烦但实际上每周只花十分钟效果很明显。调了四周之后我的日报从“扫一眼就关”变成了“每天必看”。6. 关于 WorkBuddy 规则配置的补充经验6.1 给 WorkBuddy 定规则让后续任务都生效标题里提到“给 WorkBuddy 定几条规则后续对所有任务都生效”这一点值得单独说一下。WorkBuddy 本身支持配置一些全局规则比如默认优先级、默认标签、默认提醒时间。我的做法是把日报系统需要的字段规范写进规则里这样新任务创建的时候就自动带上这些字段不需要我手动填。具体来说我定了三条规则所有新任务默认带“日报”标签方便脚本过滤。所有新任务默认优先级为“中”需要调整的时候手动改。所有新任务的截止时间默认为创建当天避免出现没有截止时间的任务。这三条规则定下来之后数据过滤脚本的逻辑简化了很多因为字段缺失的情况基本消失了。6.2 规则配置的注意事项定规则的时候有两点要注意第一规则不要定太多。我一开始定了七八条结果创建任务的时候要填一堆东西反而变麻烦了。最后精简到三条够用就行。第二规则要能覆盖大部分场景但不能太死。比如“默认截止时间为当天”这条对于大部分日常任务合适但对于一些长期项目就不合适。我的处理方式是规则只设默认值具体任务创建的时候可以手动覆盖。这样既保证了字段完整性又保留了灵活性。6.3 后续可以扩展的方向这套系统跑稳之后我陆续加了一些扩展周报自动生成每周五下午触发一次把这一周的日报汇总成一份周报。关键词告警如果待办里出现特定关键词比如“紧急”“今天必须”单独推送一条提醒。完成率统计每月统计一次任务完成率附在月初的日报里。这些扩展都是在原有骨架上加逻辑不需要改架构。核心的“定时触发 数据过滤 AI 归纳 微信推送”这条流水线不变只是换不同的数据源和提示词。我个人在实际操作中的体会是自动化工具的价值不在于功能多而在于它能不能在你需要的时候主动出现。WorkBuddy 本身是个好工具但它不会主动找你。加了这个十点半的闹钟之后它从一个“我记东西的地方”变成了“每天提醒我该干什么的助手”。这个转变带来的效率提升比工具本身的功能升级要大得多。最后再分享一个小技巧如果你也想做类似的东西但觉得配置太麻烦可以先从最简单的版本开始——只做“定时把待办列表推送到微信”不加 AI 归纳。跑通之后再逐步加 AI、加过滤、加格式。先跑起来再优化这个顺序比反过来要省力得多。
返回列表