技术工程方案

自动化记录行为解决方案:从屏幕采样到 AI 活动时间线

#自动化记录行为解决方案:从屏幕采样到 AI 活动时间线

传统时间管理工具通常只能记录“某个应用使用了多久”。但同样是在浏览器里停留一小时,用户可能是在查资料、写文档、处理邮件,也可能只是在浏览短视频。应用名称无法真正表达行为目的,而手动填写时间记录又容易中断工作。

一种更自然的解决方案,是通过低频屏幕采样和多模态模型,自动还原用户一段时间内的真实活动。

#整体架构

系统可以分为五个阶段:

定时截取屏幕
    ↓
本地压缩与时间索引
    ↓
视觉模型生成观察记录
    ↓
语言模型整理活动卡片
    ↓
时间线、日报、周报和自然语言查询

#1. 低频屏幕采样

系统每隔数秒截取一次当前活跃屏幕,例如每 10 秒采集一张 1080p 图像。

与持续录屏相比,这种方式的优势是:

  • CPU 和磁盘开销较低
  • 不需要保存完整视频帧率
  • 已足够识别应用、文档、网页和操作上下文
  • 便于主动排除密码管理器等敏感应用

采集时还可以记录鼠标键盘的空闲时长,帮助系统识别长时间离开电脑的情况。

#2. 本地压缩与索引

截图不一定需要保存成大量独立图片。可以将连续帧编码进低帧率 HEVC 文件,再通过 SQLite 保存:

  • 截图时间
  • 视频片段路径
  • 帧序号
  • 当时的空闲时长
  • 是否已经完成分析

这样既能降低小文件数量和磁盘占用,也能在用户查看某个活动时快速解码对应帧。

#3. 从截图生成观察记录

系统每累计约 15 分钟的数据,就将截图组成一个分析批次。

视觉模型首先不负责写最终总结,而只负责忠实描述画面,例如:

09:48–09:55
在微信中讨论 LikeSports 远程协助问题。

09:55–10:02
在飞书查看云台测试反馈和相关截图。

10:02–10:06
在文档中整理产品问题和待办事项。

为了减少模型成本,15 分钟内的约 90 张原始截图可以均匀抽取十几张;也可以压缩成一段低帧率视频交给支持视频理解的模型。

这一阶段的目标是“看清发生了什么”,输出结构化、带时间范围的原始观察。

#4. 从观察记录生成活动卡片

第二阶段再将观察记录整理成用户容易理解的活动卡片。

模型的输入通常包括:

  • 当前批次的观察记录
  • 最近约 45 分钟的历史观察
  • 已生成的旧活动卡片
  • 用户定义的工作分类

模型需要按“目标”而不是按“应用”分组。例如,在编辑器中修改代码、在终端运行测试、在浏览器搜索报错,可能都属于同一个“排查登录故障”活动。

最终输出可以包含:

{
  "startTime": "9:48 AM",
  "endTime": "10:06 AM",
  "title": "沟通 LikeSports 远程协助和云台表现",
  "category": "Communication",
  "summary": "沟通远程协助方案,并查看云台测试反馈。",
  "distractions": [],
  "appSites": {
    "primary": "WeChat",
    "secondary": "Feishu"
  }
}

短暂且无关的操作不必生成独立卡片,可以作为 distractions 附着在主要活动中。

#滑动时间窗是关键设计

如果严格每 15 分钟生成一次结果,连续工作很容易被机械地切断。

更好的方式是使用滑动窗口:每次生成新卡片时,重新读取最近约 45 分钟的观察和旧卡片,允许模型重新调整边界。

例如,前一批次生成了:

09:45–10:00 排查录制问题

新数据表明用户一直排查到 10:18,系统便可以将其修正为:

09:45–10:18 排查录制空间不足问题

因此,批次只是计算单位,不是最终行为边界。

#方案巧妙之处

该方案最重要的设计,是将“看懂画面”和“组织时间线”分成两个阶段:

  • 第一阶段强调事实提取,减少总结和推断
  • 第二阶段强调合并、分类和连续性
  • 滑动窗口不断修正早期判断
  • 原始截图保留在本地,方便回放和验证
  • 空闲时间可以通过输入事件直接判断,无需浪费模型调用

最终得到的不是简单的应用使用统计,而是一份可以回忆、搜索和再利用的个人工作日志。

#总结

自动化行为记录的核心并不只是“定时截图”,而是:

稀疏视觉采样
+ 本地时间索引
+ 两阶段语义分析
+ 滑动窗口纠错

这套架构在成本、准确性和可解释性之间取得了较好的平衡,也让时间追踪从“记录打开了什么应用”,进一步发展为“理解这段时间真正完成了什么事情”。

有问题请留言~

在 GitHub 查看讨论