#自动化记录行为解决方案:从屏幕采样到 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 查看讨论