从零跑通一套 AI Agent 自动复盘工作流
我平时把任务记在滴答清单里长一点的复盘放进 Notion真正执行时还会调用 AI Agent。信息分散以后每天最麻烦的部分变成了复制和整理。我后来把定时触发、任务读取、复盘生成和 Notion 写入接成了一条工作流。这篇文章带你跑通一个经过脱敏的公开版本。第一次运行不需要滴答 token也不会写入 Notion。确认本地输出正常以后再逐步接入真实服务。项目源码 飞书项目案例 完整作品集跑完以后能得到什么你会先在终端生成一份周复盘 Markdown随后可以选择接入滴答清单和 Notion。公开仓库提供四个 Python 脚本、环境变量模板、定时任务结构样例、合成输出和排错文档。数据按下面的顺序流动。定时触发 ↓ 读取未完成任务或已完成任务 ↓ AI Agent 整理任务数据 ↓ 生成复盘 Markdown ↓ 人工检查 dry-run ↓ 可选写入 Notion运行前准备项目要求第一次运行是否必需Python3.10 或更高版本是Git用于克隆仓库是滴答清单 CLI读取未完成任务时使用否滴答官方 MCP token读取已完成任务时使用否Notion Integration写入真实页面时使用否下面以 Windows PowerShell 为例。Linux 和 macOS 的脚本参数相同只需要改环境变量写法。先克隆仓库并进入目录。git clone https://github.com/2268499465q-beep/hermes-auto-workflow.gitSet-Locationhermes-auto-workflowpython--version第一步先做零凭据检查先检查四个脚本能否被 Python 编译。python-m compileall-q scripts如果当前目录不允许生成__pycache__可以把缓存临时放进系统临时目录。$env:PYTHONPYCACHEPREFIX Join-Path$env:TEMPhermes-auto-workflow-pycachepython-m compileall-q scripts随后检查命令入口。运行--help不需要任何 token。python scripts/dida_undone.py--help python scripts/dida_completed_mcp.py--help python scripts/notion_api.py--help python scripts/notion_bridge.py--help四条命令都能显示帮助信息说明 Python 入口和模块导入已经正常。此时还没有访问滴答或 Notion。第二步生成第一份周复盘下面这条命令只生成 Markdown不发出网络请求。python scripts/notion_bridge.py weekly --date 2026-08-08 --highlights完成接口联调|补充异常处理--challenges测试数据不足--actions补齐边界用例|复查输出--dry-run我在公开仓库中实际运行后得到下面的输出。# 周复盘 2026-08-08 ## 本周完成 - 完成接口联调 - 补充异常处理 ## 主要阻塞 - 测试数据不足 ## 下周行动 - 补齐边界用例 - 复查输出参数中的多条内容用竖线分隔。--dry-run存在时脚本打印 Markdown 后退出不检查 Notion 凭据也不会创建页面。第三步接入滴答清单公开脚本不会自动读取.env。仓库里的.env.example只是变量清单真实值需要进入当前进程的环境变量不能写回代码。读取未完成任务先把项目 ID 和显示名写进DIDA_PROJECTS_JSON。下面只有占位符。$env:DIDA_PROJECTS_JSON [{id:PROJECT_ID,name:示例清单}]$env:DIDA_CLI_PATH dida如果滴答 CLI 不在 PATH 中把DIDA_CLI_PATH改成可执行文件的完整路径。随后读取指定清单。python scripts/dida_undone.py --project-names示例清单--redact-titles--redact-titles会把真实标题改成Task 1、Task 2。调试截图和公开演示建议一直保留这个参数。输出结构类似下面这样数量取决于你的清单。 示例清单 (2) [TASK] Task 1 [HIGH] Task 2 TOTAL incomplete: 2读取已完成任务已完成任务通过滴答官方 MCP 读取。token 仍然只放进当前进程。$env:DIDA_API_TOKEN YOUR_DIDA_API_TOKEN$env:WORKFLOW_TIMEZONE_OFFSET 08:00python scripts/dida_completed_mcp.py --start2026-08-01 --end2026-08-08 --redact-titles脚本会逐日查询再解析每条任务的completedTime。它会按本地时间窗口过滤并用任务 ID 去重。日期接口返回成功不代表每条数据都落在目标日期内这一步二次过滤不能省。第四步写入 Notion 测试页面先在 Notion 创建一个测试页面和 Integration再把 Integration 加入测试页面的共享范围。token 有效但页面没有授权时接口仍会返回 403。周、月、年复盘需要下面三个变量中的前两个。日复盘使用第三个页面 ID。$env:NOTION_API_KEY YOUR_NOTION_API_KEY$env:NOTION_PARENT_PAGE_ID PARENT_PAGE_ID$env:NOTION_DIARY_PAGE_ID DIARY_PAGE_ID先保留--dry-run检查日期和正文。确认输出以后再去掉这个参数。python scripts/notion_bridge.py weekly --date 2026-08-08 --highlights完成接口联调|补充异常处理--challenges测试数据不足--actions补齐边界用例|复查输出写入成功时终端会显示新页面 ID。Created review page: PAGE_ID建议第一次只写测试页面。确认标题、层级和列表都正常以后再换成正式父页面 ID。第五步加入定时触发仓库中的examples/cron-jobs.example.json提供了两类任务结构。{name:周复盘草稿示例,schedule:0 9 * * 6,timezone:Asia/Shanghai,enabled:false,command:python scripts/notion_bridge.py weekly --date DATE --dry-run}DATE需要由你的调度器或 Agent 替换为运行日期不能原样复制执行。第一次创建任务时保持enabled为false手动触发一次并检查退出码。确认 dry-run 输出以后再启用正式时间表和外部写入。Windows 任务计划程序需要特别检查三个位置。程序填写实际的python.exe路径。参数填写脚本路径和参数。起始目录填写仓库根目录。定时环境通常不会完整继承交互式终端的 PATH。终端里能运行定时任务里找不到命令时先检查 Python、滴答 CLI 和工作目录的完整路径。常见失败怎样定位现象常见原因处理办法ModuleNotFoundErrorPython 运行时没有正确加入脚本目录拉取最新仓库版本再运行四条--help无法创建__pycache__当前目录只读或权限受限设置PYTHONPYCACHEPREFIX到临时目录未完成任务为零项目名不匹配或 CLI 未登录检查DIDA_PROJECTS_JSON和--project-names已完成任务数量偏多时间窗口或时区不符合预期检查起止日期和WORKFLOW_TIMEZONE_OFFSETNotion 返回 401token 无效或没有进入当前进程重新设置环境变量不要打印 token 排查Notion 返回 403Integration 没有目标页面权限在测试页面的共享设置中添加 Integration定时任务找不到命令PATH 和工作目录不同使用 Python 与 CLI 的完整路径公开版本保留了哪些边界这个仓库来自真实运行过的个人工作流公开版没有携带生产 token、项目 ID、页面 ID、原始任务、运行日志和个人提示词。三个示例文件都是合成内容。我没有逐句清洗生产日志后再上传。日志会同时暴露任务标题、时间、分类和失败命令删掉一两个名字仍然可能还原个人信息。公开示例从零编写风险更可控。如果你准备把自己的自动化脚本放到 GitHub至少检查源码、配置、数据库、日志、运行输出和文档元数据。代码里看不到 token只能说明第一层检查通过。后续从哪里继续完整脚本、环境变量模板、架构图和排错文档放在 GitHub 仓库。项目为什么这样拆分、哪些部分由我完成、公开时删掉了什么放在 飞书项目案例页。建议先跑通第二步的 dry-run再决定是否接入真实任务和 Notion。这样每次只增加一个外部变量报错时也更容易知道问题出在哪一层。