我用 OpenClaw 搭建了一套全自动 AI 行业简报系统,每天零干预推送至飞书
最近我一直在琢磨一件事:每天早晨打开手机,不再需要花费 20 分钟刷各种 AI 资讯来源——OpenAI 发布了什么、Anthropic 又推出了哪些新动态、GitHub 上有哪些值得关注的新项目。刷完之后还常常遗漏重要信息,或者看到的内容已经被转了好几手,夹杂着大量营销和夸大成分。

于是萌生了一个想法:能不能让 AI 自动帮我完成这件事?每天早晨生成一份客观、高质量的行业简报,我起床就能直接查看?
想法很直接,但真正动手去实现时,才发现坑一个接一个。
第一版:直接让 AI 搜索,然后呢?
最初的思路非常朴素——给 OpenClaw 一个 prompt,让它“搜索过去 24 小时最重要的 AI 进展,生成一份简报”。
结果翻车得非常彻底:
- 收录了一个月前的新闻,还标注着“最新发布”
- GitHub 项目只给了一个 awesome-list,没有具体项目
- Star 数写的是“1k+”——一个占位符,实际根本查不到这个数字
- 同一个事件连续两天重复出现
- 时间表述全是“近日”“近期”“本周”这类模糊词,完全不知道是哪天的事
核心问题并非 AI 不够聪明,而是要求不够具体。像“信息要准确”这种模糊指令,AI 根本无法落地。它需要的是可以机械判断的规则。
第二版:引入 7 条红线规则
痛定思痛之后,我为简报系统设计了一套严格的“红线规则”——任何一条违规,直接丢弃这条信息,没有商量余地:
- 14 天时效:事件超过 14 天?丢弃。
- 来源白名单:来源不在白名单内,或链接指向泛页面?丢弃。
- GitHub 真实性:收录的是 awesome-list、论文合集、资源导航?丢弃。
- Star 数真实:写的是“1k+”“数千”这种占位符?丢弃。
- 四要素完整:Who(谁)、When(什么时候)、What(做了什么)、Impact(影响)缺一不可,When 禁止用“近日”“近期”?丢弃。
- 日期可追溯:来源文章的时间表述模糊,且无法通过额外搜索确认具体日期?丢弃。
- 跨天去重:过去 7 天已经出现过的?不再收录。
关键转变在于:把“写得准确”这个模糊要求,拆解成了 7 条可以机械执行的规则。AI 不需要理解什么是“准确”,它只需要逐条检查、通过或丢弃。
效果立竿见影。之前那种“1 月份的新闻出现在 4 月简报”的问题彻底消失。
架构设计:生成和审查必须分开
第一版还有一个致命问题:生成和审查混在同一个任务里。AI 一边搜索一边判断质量,经常搜到一半就开始“自言自语”地总结,结果后面该搜的没搜、该查的没查。
果断拆成两个独立的定时任务:
08:00 生成任务(独立会话)
├─ 读取最近 7 天历史简报(去重用)
├─ 逐一检查 8 个重点关注信息源(OpenAI、Anthropic、Google 等)
├─ 执行兜底搜索(学术、GitHub、行业新闻)
├─ 逐条红线过滤 + web_fetch 验证
├─ 最终自检
└─ 保存为文件
08:10 审查任务(独立会话)
├─ 读取今日简报 + 红线规则
├─ 逐条审查(7 条红线逐项核对)
├─ 发现问题直接修正
└─ 输出最终简报 → 推送飞书
为什么这样拆?
- 单一职责:生成负责“找得多”,审查负责“选得准”,目标不同就不该混在一起
- 质量保障:审查任务完全不受生成过程的上下文干扰,不会被“先入为主”影响判断
- 容错:生成失败不影响审查(审查发现没文件就安静退出),审查发现问题也能直接修正
搜索策略:重点关注 + 主流兜底
信息源分两层:
第一层:重点关注——国内外 8 家主要 AI 机构的官方渠道,每天逐一检测是否有新动态:
| 机构 | 检测方式 |
|---|---|
| Google Gemini | site:blog.google Gemini |
| OpenAI | site:openai.com/news |
| Anthropic | site:anthropic.com/news |
| 阿里 Qwen | site:alibabacloud.com/blog Qwen |
| DeepSeek | site:deepseek.ai |
| 智谱 GLM | site:zhipuai.cn |
| 月之暗面 Kimi | site:moonshot.cn |
| 稀宇 MiniMax | site:minimaxi.com |
第二层:主流兜底——无论第一层是否命中,每天固定执行:
- 学术(1 轮):arxiv.org + Hugging Face Papers
- GitHub(1 轮):trending + 最近活跃项目
- 行业新闻(2 轮):国际(TechCrunch/VentureBeat/The Verge)和中文(36kr/机器之心/量子位)各选至少 1 个,两轮不重复
这样既不担心漏掉大厂的重大发布,也能捕捉 GitHub 上的新开源项目。
技术实现
基于 OpenClaw Agent 平台搭建——这是一个开源 AI Agent 运行时,支持定时任务(Cron)、工具调用(web_search、web_fetch 等)和多会话隔离。
第一步:安装技能
openclaw skills install daily-ai-briefing
这个技能包包含了完整的红线规则、搜索策略、信息源白名单和输出模板。
第二步:创建简报存储目录
mkdir -p ~/Desktop/daily_ai_briefing
生成的简报会保存为 ~/Desktop/daily_ai_briefing/YYYY_MM_DD.md,用于去重审查和历史回溯。
第三步:配置生成定时任务
每天 08:00 运行,完整 cron 配置如下:
name: daily-ai-briefing-gen
schedule: "0 8 * * *"
timezone: Asia/Shanghai
sessionTarget: isolated # 独立会话,不污染主会话上下文
model: zhipu/glm-5-turbo # 工具调用链稳定(见踩坑 #1)
timeout: 600s # 多轮搜索 + 多次 web_fetch 耗时较长
payload:
kind: agentTurn
message: "读取 ~/.openclaw/skills/daily-ai-briefing/SKILL.md,严格按其中定义的步骤执行。执行到步骤6时,只需将简报保存至文件(~/Desktop/daily_ai_briefing/YYYY_MM_DD.md),不要输出简报内容作为回复。你的回复只需一句话确认已完成生成和保存。"
delivery:
mode: none # 生成阶段不推送,由审查任务统一推送(见踩坑 #2)
关键配置说明:
| 配置 | 值 | 原因 |
|---|---|---|
| sessionTarget | isolated | 不污染主会话上下文 |
| model | GLM-5-Turbo | 实测 GLM-5.1 执行多步任务时容易“断链”,Turbo 更稳定 |
| timeout | 600s | 要跑多轮搜索 + 多次 web_fetch |
| delivery.mode | none | 生成阶段只存文件,不推送 |
第四步:配置审查定时任务
每天 08:10 运行,给生成任务留下 10 分钟缓冲。完整 cron 配置如下:
name: daily-ai-briefing-review
schedule: "10 8 * * *"
timezone: Asia/Shanghai
sessionTarget: isolated
model: zhipu/glm-5-turbo
timeout: 300s
payload:
kind: agentTurn
message: |
你是早报审查员。请执行以下步骤:
1. 读取今天的简报文件 ~/Desktop/daily_ai_briefing/YYYY_MM_DD.md(用今天的日期)
2. 读取 ~/.openclaw/skills/daily-ai-briefing/SKILL.md 中的红线规则和自检清单
3. 逐条严格审查简报中的每一个条目,重点检查:
- ⛔ 红线第5条:When 是否为具体日期或明确相对时间?是否有“近日”“近期”“本周”“两周内”等模糊表述?
- ⛔ 红线第6条:来源文章的时间表述是否模糊?如果是,是否有确认过具体日期?
- ⛔ 红线第2条:来源是否在白名单内?链接是否指向具体页面?
- ⛔ 红线第3条:GitHub项目是否为独立软件项目(非awesome-list/论文合集)?
- ⛔ 红线第4条:Star数是否为真实数字(非占位符)?
- ⛔ 红线第7条:是否与过去7天简报重复?
- 字数是否≤200字?
- 是否有营销词汇?
4. 如发现问题,直接修正文件内容
5. 修正完成后,读取最终版文件,将完整Markdown内容一字不差地作为你的最终回复输出(这是推送内容,不要添加任何额外说明)
delivery:
mode: announce # 审查通过后自动推送到飞书
channel: feishu
to: <你的飞书用户ID> # 替换为你的飞书 open_id
第五步:配置飞书推送
确保 OpenClaw 已配置飞书 channel,且 to 字段填写你的飞书 open_id。如果不确定 open_id,可以通过飞书机器人发一条消息获取。
踩坑总结
坑 1:模型选错,工具调用链断裂
最初用 GLM-5.1,执行多步任务时频繁出现:不遵循指令、工具调用链断裂(搜到一半就停了)、不执行文件写入。换用 GLM-5-Turbo 后稳定下来。
教训:不是越强的模型越适合做 Agent 任务。Agent 需要的是“指令遵循能力”和“工具调用稳定性”,而不是“聊天能力”。
坑 2:推送全部失败,搞了半天是配置写错了
前 4 天简报全部推送失败(状态显示 not-delivered),还以为是飞书 API 的问题。查了半天才发现,原来生成任务的 delivery.mode 设成了 "none"。
虽然生成任务确实不需要推送(只存文件),但审查任务必须设为 "announce" 才能推送到飞书。两个任务的配置不同,一开始没注意到。
坑 3:模糊规则 = 没有规则
初期红线规则写的是“信息要准确”“来源要可靠”这类定性描述,AI 根本执行不了。后来逐条改成可机械判断的规则,比如“禁止使用‘近日’‘近期’‘本周’‘两周内’等模糊时间表述”,质量立刻稳定。
教训:给 AI 写规则,要像写正则表达式一样精确。模糊的要求等于没有要求。
坑 4:跨天重复
同一个事件(比如某个模型发布)连续两天出现在简报里。解决方法是:生成前强制读取最近 7 天历史简报,列出所有已出现的项目名/事件名,逐条比对去重。
坑 5:信息来源单一
有时候一天全是 TechCrunch 的新闻。解决方案是建立重点关注信息源列表 + 固定兜底搜索策略,确保国内外主流渠道都有覆盖。
最终效果
上线一个月后,简报系统每天早上 8:10 稳定推送到飞书。每份简报:
- 只收录过去 14 天内的真实事件,附具体日期
- 每条信息都有可追溯的来源链接
- 同一事件不会在不同天重复出现
- 任何一条目违反红线就直接丢弃,宁缺毋滥
整个过程零人工干预。
开源
这套系统的完整 Skill 已开源,可以直接复现:
- GitHub:github.com/tino-chen/o…
- 安装:
openclaw skills install daily-ai-briefing
配合本文的配置步骤,完全能直接复现。
