乐于分享
好东西不私藏

OpenClaw+飞书实战:我的PLM任务从分散到聚焦的自动化实践分享

OpenClaw+飞书实战:我的PLM任务从分散到聚焦的自动化实践分享

    自AI持续爆火以来,不论是个人还是企业均加大了AI的投入力度。上周内部小组分享AI应用案例后,有位小伙伴的应用场景非常Nice,于是便在周末开启了实战。

    引用《AI 碾压一切:2026 是生死分界点》文中语录:“AI 不会替代人,但会替代不会用 AI 的人;时代不会淘汰努力的人,但会淘汰跟不上时代的人。”此前关联文章:

告别只用AI进行搜索:已成功用OpenClaw打造个人专属公众号写手

如何将OpenClaw回复的内容创建为飞书在线文档?

OpenClaw&飞书实用技巧:如何向指定用户发送飞书消息?

995:用OpenClaw创建Windchill用户失败了,求助!

大胆点:用OpenClaw打造个人本地安全知识库

OpenClaw与Windchill实战:查询用户&新建文件夹


一、背景:PLM实施人的「信息焦虑」

    作为一名深耕PLM实施领域的顾问,我每天都要面对多项目并行的节奏——A项目PLM蓝图汇报、B项目风险同步、C项目PLM二期部署……而日程、任务、群消息等各类信息,散落于飞书的各个角落。

    核心痛点有三个:

  1. 分散:日程存于飞书日历、任务归于飞书任务、待办藏在各群聊的@消息中,缺乏统一视图,无法一眼掌控所有工作;

  2. 滞后:依赖记忆或手动整理任务,每天清晨都要花费大量时间回顾昨日工作、规划当日安排;

  3. 断裂:不同数据源之间毫无关联,同一个事项可能被多次录入,导致统计出现重复或遗漏。

    在小伙伴的启发下,这个周末我决定动手解决这个困扰已久的问题。

二、思路:从「哪里有数据」到「我要管什么」

    最初的想法很简单——每天早上9点,向我的飞书推送一份「任务日报」,清晰告知我三件事:

  • 昨日完成了什么

  • 当前还有哪些待办

  • 今日有什么新增事项

    但落地时我发现,真正的难点不在于「收集数据」,而在于如何避免重复录入。我梳理了四类核心数据源:

数据源

内容

录入特点

飞书日历

各类会议/汇报

有明确的时间边界,适合以结束时间判断是否完成

飞书任务

我创建或参与的任务

有明确的状态(待办/已完成)

@消息

群聊中@我的事项

无结构化状态,需要AI判断是否属于「任务」

手工录入

上述3类手动补充的数据

需要OpenClaw对话录入或者飞书任务多维表格手工录入

    这三类数据的格式、时间规则及状态判断逻辑各不相同,若简单粗暴地每条数据都录入一行,同一个事项会被重复创建,最终导致统计与实际脱节,出现「好像哪里不对」的混乱情况。

三、核心设计:唯一标识 + 时间链

3.1 唯一标识:每个事项只创建一行

    解决方案十分直接:以唯一标识作为主键,同类事项再次出现时,不新建行,仅更新有变化的内容。

数据源

唯一标识

说明

飞书日历

event_id

日程在全球范围内唯一

飞书任务

task_guid

任务在飞书内唯一

@消息

message_id

每条消息在全球唯一

手工录入

系统自动生成

确保与其他数据源不重复

    新事项首次出现 → 插入新行;后续再出现 → 仅当状态/数据发生变化时更新,否则直接跳过。

3.2 时间链:「收集开始」和「收集结束」

    为解决「什么时候该更新、什么时候该跳过」的问题,我设计了一个简单却关键的机制——给每条记录设置两个时间字段:

  • 收集开始:该事项首次被录入表格的时间

  • 收集结束:该事项最近一次被确认/更新的时间

    每天12:50和20:50,系统会自动执行一次收集动作,具体逻辑如下:

  1. 遍历三类数据源,按唯一标识比对表格中的已有记录;

  2. 已存在的记录:检查是否有数据变化,无变化则直接跳过;

  3. 状态≠已完成的记录:无条件将「收集结束」时间更新至本次收集时间;

  4. 已完成的记录:保持所有信息不变,不再推进「收集结束」时间。

    这样设计的好处的是——时间链条永远不会断裂,且已完成的事项不会因时间推进而被误操作。

四、落地实现:存储 + 收集 + 推送

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项目实施有启发,欢迎留言交流。