ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

从零跑通一套 AI Agent 自动复盘工作流

从零跑通一套 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:TEMP"hermes-auto-workflow-pycache"python-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 1Task 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:00"python 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 替换为运行日期,不能原样复制执行。第一次创建任务时保持enabledfalse,手动触发一次并检查退出码。确认 dry-run 输出以后,再启用正式时间表和外部写入。

Windows 任务计划程序需要特别检查三个位置。

  1. 程序填写实际的python.exe路径。
  2. 参数填写脚本路径和参数。
  3. 起始目录填写仓库根目录。

定时环境通常不会完整继承交互式终端的 PATH。终端里能运行,定时任务里找不到命令时,先检查 Python、滴答 CLI 和工作目录的完整路径。

常见失败怎样定位

现象常见原因处理办法
ModuleNotFoundErrorPython 运行时没有正确加入脚本目录拉取最新仓库版本,再运行四条--help
无法创建__pycache__当前目录只读或权限受限设置PYTHONPYCACHEPREFIX到临时目录
未完成任务为零项目名不匹配或 CLI 未登录检查DIDA_PROJECTS_JSON--project-names
已完成任务数量偏多时间窗口或时区不符合预期检查起止日期和WORKFLOW_TIMEZONE_OFFSET
Notion 返回 401token 无效或没有进入当前进程重新设置环境变量,不要打印 token 排查
Notion 返回 403Integration 没有目标页面权限在测试页面的共享设置中添加 Integration
定时任务找不到命令PATH 和工作目录不同使用 Python 与 CLI 的完整路径

公开版本保留了哪些边界

这个仓库来自真实运行过的个人工作流,公开版没有携带生产 token、项目 ID、页面 ID、原始任务、运行日志和个人提示词。三个示例文件都是合成内容。

我没有逐句清洗生产日志后再上传。日志会同时暴露任务标题、时间、分类和失败命令,删掉一两个名字仍然可能还原个人信息。公开示例从零编写,风险更可控。

如果你准备把自己的自动化脚本放到 GitHub,至少检查源码、配置、数据库、日志、运行输出和文档元数据。代码里看不到 token,只能说明第一层检查通过。

后续从哪里继续

完整脚本、环境变量模板、架构图和排错文档放在 GitHub 仓库。项目为什么这样拆分、哪些部分由我完成、公开时删掉了什么,放在 飞书项目案例页。

建议先跑通第二步的 dry-run,再决定是否接入真实任务和 Notion。这样每次只增加一个外部变量,报错时也更容易知道问题出在哪一层。

返回列表