OpenClaw+飞书实战:我的PLM任务从分散到聚焦的自动化实践分享
自AI持续爆火以来,不论是个人还是企业均加大了AI的投入力度。上周内部小组分享AI应用案例后,有位小伙伴的应用场景非常Nice,于是便在周末开启了实战。

引用《AI 碾压一切:2026 是生死分界点》文中语录:“AI 不会替代人,但会替代不会用 AI 的人;时代不会淘汰努力的人,但会淘汰跟不上时代的人。”此前关联文章:
告别只用AI进行搜索:已成功用OpenClaw打造个人专属公众号写手
OpenClaw&飞书实用技巧:如何向指定用户发送飞书消息?
995:用OpenClaw创建Windchill用户失败了,求助!
OpenClaw与Windchill实战:查询用户&新建文件夹
一、背景:PLM实施人的「信息焦虑」
作为一名深耕PLM实施领域的顾问,我每天都要面对多项目并行的节奏——A项目PLM蓝图汇报、B项目风险同步、C项目PLM二期部署……而日程、任务、群消息等各类信息,散落于飞书的各个角落。

核心痛点有三个:
-
分散:日程存于飞书日历、任务归于飞书任务、待办藏在各群聊的@消息中,缺乏统一视图,无法一眼掌控所有工作;
-
滞后:依赖记忆或手动整理任务,每天清晨都要花费大量时间回顾昨日工作、规划当日安排;
-
断裂:不同数据源之间毫无关联,同一个事项可能被多次录入,导致统计出现重复或遗漏。
在小伙伴的启发下,这个周末我决定动手解决这个困扰已久的问题。

二、思路:从「哪里有数据」到「我要管什么」
最初的想法很简单——每天早上9点,向我的飞书推送一份「任务日报」,清晰告知我三件事:
-
昨日完成了什么
-
当前还有哪些待办
-
今日有什么新增事项
但落地时我发现,真正的难点不在于「收集数据」,而在于如何避免重复录入。我梳理了四类核心数据源:
|
数据源 |
内容 |
录入特点 |
|---|---|---|
|
飞书日历 |
各类会议/汇报 |
有明确的时间边界,适合以结束时间判断是否完成 |
|
飞书任务 |
我创建或参与的任务 |
有明确的状态(待办/已完成) |
|
@消息 |
群聊中@我的事项 |
无结构化状态,需要AI判断是否属于「任务」 |
|
手工录入 |
上述3类手动补充的数据 |
需要OpenClaw对话录入或者飞书任务多维表格手工录入 |
这三类数据的格式、时间规则及状态判断逻辑各不相同,若简单粗暴地每条数据都录入一行,同一个事项会被重复创建,最终导致统计与实际脱节,出现「好像哪里不对」的混乱情况。
三、核心设计:唯一标识 + 时间链
3.1 唯一标识:每个事项只创建一行
解决方案十分直接:以唯一标识作为主键,同类事项再次出现时,不新建行,仅更新有变化的内容。
|
数据源 |
唯一标识 |
说明 |
|---|---|---|
|
飞书日历 |
event_id |
日程在全球范围内唯一 |
|
飞书任务 |
task_guid |
任务在飞书内唯一 |
|
@消息 |
message_id |
每条消息在全球唯一 |
|
手工录入 |
系统自动生成 |
确保与其他数据源不重复 |
新事项首次出现 → 插入新行;后续再出现 → 仅当状态/数据发生变化时更新,否则直接跳过。
3.2 时间链:「收集开始」和「收集结束」
为解决「什么时候该更新、什么时候该跳过」的问题,我设计了一个简单却关键的机制——给每条记录设置两个时间字段:
-
收集开始:该事项首次被录入表格的时间
-
收集结束:该事项最近一次被确认/更新的时间
每天12:50和20:50,系统会自动执行一次收集动作,具体逻辑如下:
-
遍历三类数据源,按唯一标识比对表格中的已有记录;

-
已存在的记录:检查是否有数据变化,无变化则直接跳过;
-
状态≠已完成的记录:无条件将「收集结束」时间更新至本次收集时间;
-
已完成的记录:保持所有信息不变,不再推进「收集结束」时间。
这样设计的好处的是——时间链条永远不会断裂,且已完成的事项不会因时间推进而被误操作。
四、落地实现:存储 + 收集 + 推送
4.1 存储:飞书多维表格
选用飞书多维表格作为存储层,原因很实际:
-
原生集成飞书生态,数据无需跨平台流转,对接更便捷;
-
多维表格的视图筛选功能,可满足日报展示的基本需求;
-
权限管理成熟,适配个人日常工作场景。
表格核心字段设计如下:

|
字段 |
类型 |
说明 |
|---|---|---|
|
来源 |
单选 |
飞书日历 / 飞书任务 / 飞书消息 |
|
唯一标识 |
文本 |
event_id / task_guid / message_id |
|
收集开始 |
日期时间 |
首次录入时间 |
|
收集结束 |
日期时间 |
最近更新时间 |
|
任务名称 |
文本 |
事项摘要 |
|
任务详细描述 |
文本 |
具体内容 |
|
截止时间 |
日期时间 |
事项截止时间 |
|
完成状态 |
单选 |
待办 / 进行中 / 已完成 |
|
实际完成时间 |
日期时间 |
实际完成时刻 |
|
优先级 |
单选 |
P0 / P1 / P2 |
4.2 收集:自动定时 + AI判断
定时任务通过OpenClaw Cron实现,每天12:50和20:50自动触发。其中,@消息的处理相对特殊——并非所有@我的消息都属于「任务」。
为此,我设计了一套AI判断规则,精准区分任务类与非任务类消息:

1. 判断为「任务」并写入表格的消息:
-
有明确交付承诺(如“我来做……”);
-
涉及项目风险或需要协调资源;
-
明确指派给他人的事项。
2. 判断为「非任务」仅在日报「飞书消息提醒」区域展示:
-
状态告知、进度同步类消息;
-
单纯提问或日程通知;
-
蓝图修改同步等告知类消息。
4.3 推送:每天8:50日报
每天早上8:50,日报会准时推送到我的飞书私信,包含四个核心板块,无需手动整理:
-
昨日已完成:状态为已完成,且实际完成时间在昨日范围内的任务;
-
当前待办/进行中:状态不为已完成,按优先级排序的任务;
-
昨日新增:收集开始时间在昨日范围内的记录;
-
飞书消息提醒:未判定为任务但值得关注的消息汇总。
五、踩坑实录:三个差点让我放弃的教训
教训一:截止时间用了开始时间
最初设计时图省事,将日程的「截止时间」统一设为飞书日历的start_time(开始时间),导致所有日程的截止时间都比实际早半天——比如14:00开始的会议,截止时间却显示为13:00,整个时间逻辑混乱。
正确做法:飞书日历的「截止时间」= end_time(结束时间),而非start_time。

教训二:时间戳换算的「想当然」
飞书API返回的时间格式是 2026-04-19T20:50:00+08:00,我最初误以为需要“减8小时”转换为UTC时间。但飞书多维表格的DateTime字段本身已处理好时区,直接使用API返回的原始字符串转换即可。
正确做法:使用datetime.fromisoformat(end_time_str).timestamp() * 1000,直接得到UTC毫秒值,写入DateTime字段后,飞书会自动按CST时区显示。

教训三:「已完成」的事项被重复收集
某次定时收集后,表格里突然出现大量重复记录——同一个会议被录入两次。排查后发现,原因是已完成的事项再次被API返回时,我误将其当作新数据处理。
正确做法:对于已完成状态的事项,后续收集时直接跳过,不更新任何字段;其中,唯一标识已存在的判断优先级最高。

六、效果与下一步
目前这套系统已稳定运行,每日9点前日报都会准时推送至我的飞书。从「哪里有数据」到「我要管什么」,我终于对自己的工作有了统一、清晰的视角。
当前已实现功能:

✅ 三数据源自动收集(飞书日历 / 飞书任务 / @消息)
✅ 唯一标识去重,同一事项不重复录入
✅ 每日9点日报推送至飞书DM
✅ 时间链机制确保数据持续更新但不越界
此外,飞书多维表格还通过“AI智能”功能设置了仪表盘,可直观查看任务数据。

下一步计划:
|
序号 |
扩展方向 |
目标 |
|---|---|---|
|
1 |
对接工时系统 |
每天早9点日报即对应昨天的工作成果,可对接“工时填报”系统,自动填写任务基本信息,只需补充具体“投入时间”即可 |
|
2 |
任务详情 |
增加「来源群」「发送者」等字段,让消息类任务可追溯 |
|
3 |
周报 |
每周一推送上周总结,复用同一表格结构 |
|
4 |
月报 |
每月初推送月度汇总,叠加数据即可 |
|
5 |
对接绩效考核系统 |
有了月报,即可根据情况自动对应“绩效考核”基本信息 |
|
6 |
部门管理 |
每个人都有自己的“任务汇总数据”了,部门经理只需抓取个人汇总为部门即可 |
|
7 |
… |
… |
写在最后
以上数据源大多基于飞书,若进一步扩展对接PLM系统,将PLM系统的流程待办、项目活动及交付物任务同步至飞书多维表格,那么PLM+AI+飞书的高度融合,会让用户体验更加友好。
PLM实施的核心能力之一,就是把分散的信息整合成结构化的数据。这套自动化日报系统,本质上也是在做这件事——只不过管理的信息,从制造业的BOM结构,变成了我自己的时间与任务。
如果这个思路对你的PLM项目实施有启发,欢迎留言交流。
夜雨聆风