我用 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 平台搭建。OpenClaw 是一个开源的 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
审查任务的输出就是最终简报内容。
mode: announce会将输出自动推送到飞书。如果你用其他 IM(Telegram、Discord 等),改channel和to即可。
第五步:配置飞书推送
确保 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
配合本文的配置步骤,可以直接复现。