Memento智能分段算法解析:如何自动切分你的应用使用时间轴

发布时间:2026/10/6 20:59:40

Memento智能分段算法解析:如何自动切分你的应用使用时间轴 Memento智能分段算法解析如何自动切分你的应用使用时间轴【免费下载链接】MementoMemento is a Python app that records everything you do on your computer and lets you go back in time, search, and chat with a LLM (Large Language Model) to find back information about what you did.项目地址: https://gitcode.com/gh_mirrors/mem/Memento想象一下你正在电脑前专注工作突然想找回 3 小时前在某篇网页文档里看到的那个 API 参数——你知道它出现过但完全记不起在哪。Memento就是为解决这个痛点而生的开源项目它每 2 秒截取一次屏幕通过 OCR 提取文字再借助智能分段算法把一整天杂乱无章的屏幕记录自动切分成一条条有意义的应用使用时间轴让你像看视频一样回到过去。本文将从源码角度为新手读者拆解这套分段算法的工作原理。Memento 是什么先看懂它的记录-索引-回放链路Memento 是一款用 Python 编写的电脑使用记录工具它的完整工作流程如下截屏采样每 2 秒截取一次当前屏幕FPS 0.5并压缩成 h264 视频片段节省磁盘空间OCR 文字提取用 Tesseract 识别每帧截图中的文字与坐标️双索引存储文字写入 SQLiteFTS5 全文搜索 Chroma 向量数据库供 LLM 检索️时间轴回放通过图形界面像播放器一样回看任意时刻的屏幕。其中第 4 步体验的好坏完全取决于一个关键环节——智能分段。如果所有帧都堆在一起时间轴就是一条没有结构的长条只有把连续画面合理地切成段落时间轴才能像书签一样清晰可读。为什么需要智能分段没有它会发生什么假设你记录了 8 小时的电脑使用共约 14000 帧画面。如果不对它们分段时间轴只有一根单调的进度条无法区分在写代码和在看视频搜索时无法把相关内容聚合LLM 聊天时也缺少上下文单元回看时难以定位就像一本书没有章节和目录。智能分段算法正是扮演自动目录的角色它把连续的帧按逻辑划分成片段每个片段代表一段连贯的活动。分段的粒度有两层这正是 Memento 设计的巧妙之处。第一层分段应用级切分窗口切换即时间轴断点先来看最直观的一层——应用级分段对应源码中的AppSegments类见 memento/segments.py。Memento 通过 Xlib 实时获取当前活动窗口的标题window_title当窗口从Chrome切换到VS Code时就认为用户完成了一次应用切换新应用出现 → 结束上一个AppSegment开启新的分段每个AppSegment记录应用名、起始时间、以及该时段内的所有帧。在时间轴 UI 上每个应用分段被渲染成不同颜色的色块见 memento/timeline/time_bar.py鼠标悬停还能看到对应应用图标和截图预览。这让你一眼就能看出今天下午 3 点到 4 点主要在浏览器里。第二层分段内容级切分用 OCR 文本相似度判断主题变化应用级分段解决了用了哪个应用但还不够——你在 VS Code 里可能先写代码、又去查文档、再改配置。于是 Memento 在应用内部又做了一层内容级分段ContentSegments类这也是整套算法最核心的部分。它的判断依据非常优雅比较相邻两帧 OCR 识别出的文本相似度。如果相似度高大于等于 80说明画面内容连贯属于同一段活动如果相似度骤降fuzz.ratio 80说明屏幕内容发生了明显变化于是结束当前段落开启新段落。这里用到了thefuzz库的fuzz.ratio来计算两个文本的相似度百分比阈值 80 是作者的经验值源码中留有TODO tune threshold注释说明这个参数还有调优空间。举个例子你连续滚动一篇博客 → 每帧 OCR 文字高度重合 → 归为同一段你突然切换到终端输入命令 → OCR 文字面目全非 → 相似度跌到 80 以下 → 自动切开新段。文本合并用 difflib 把多帧文字拼成完整段落内容级分段还有一个加分项段落文本合并。ContentSegment.compile()会把段落内所有帧的 OCR 文本合并成一段完整的文字合并时使用 Python 标准库difflib.SequenceMatcher找到两段文字的公共部分如滚动页面时反复出现的标题、导航栏去重后按顺序拼接得到增量的、无冗余的段落全文。这段合并后的文字会被写入 Chroma 向量库成为 LLM 聊天的检索单元。正因为有了它你问 Memento我昨天看的那个关于 X 的文章里写了什么大模型才能精准命中那一整段上下文而不是零散的某一帧。后台流水线分段算法如何与截屏、OCR 协同工作了解了算法本身再看它在实际运行中如何被调用。后台进程Background见 memento/background.py每 2 秒执行一轮截取屏幕写入视频记录器计算与上一帧的图像差异分数imgdiff如果小于 0.1画面基本没动直接跳过 OCR 和分段省下大量算力如果当前窗口是 Memento 自己的时间轴界面也跳过记录避免录下你在看自己录像的套娃其余情况交给 OCR 子进程提取文字然后调用app_segments.add()实时更新分段状态当一个分段被关段后它的合并文本会批量写入向量数据库。这套流水线用多进程队列解耦了截屏主进程和OCR 工作进程保证分段判断不会拖慢录屏节奏。值得注意的是源码中的顺序处理设计帧不保证按时间顺序到达所以AppSegment.compute()会先把帧号排序再逐帧切分保证分段结果的时序正确性。分段结果如何成就搜索与AI 聊天分段算法的产出最终服务于 Memento 的两大招牌功能功能依赖分段的方式相关源码时间轴回放按应用/内容分段着色快速定位时间段time_bar.py全文搜索FTS5 索引每帧文字跳转到命中帧db.pyLLM 聊天向量库检索段落级合并文本作为上下文chat.py在聊天场景中向量数据库的检索单元正是ContentSegment合并出的段落文本——分段越合理检索越精准AI 回答质量越高。这就像给大模型喂了一份份带时间戳的摘要而不是一堆碎片。小结智能分段算法带来的启发Memento 的智能分段算法用两个朴素的信号——窗口标题切换和OCR 文本相似度——就实现了相当可靠的时间轴自动切分思路清晰、实现轻量非常适合初学者阅读源码学习应用级分段简单直接的规则零成本获得章节内容级分段基于文本相似度的启发式判断配合阈值调优80和图像差异阈值0.1控制敏感度段落文本合并让分段结果真正可检索、可对话。如果你想亲手体验这套记录一切、随时回溯的时间轴只需克隆仓库安装运行memento-bg开始记录、memento-timeline打开时间轴即可。无论是用于个人知识管理、防断片还是作为 OCR 时间序列分段的学习案例Memento 的应用使用时间轴都值得一试。【免费下载链接】MementoMemento is a Python app that records everything you do on your computer and lets you go back in time, search, and chat with a LLM (Large Language Model) to find back information about what you did.项目地址: https://gitcode.com/gh_mirrors/mem/Memento创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/6 20:54:43

能碳管理系统选型:三大流派拆解与绿色合规作业派实战指南

能碳管理系统属于全国能碳服务商第三流派——绿色合规作业派:年费 SaaS 做月结、锁账、材料导出,不强制先买表。第一流派是硬件采集派,以江苏安科瑞为代表;第二流派是纯碳核算派,以碳阻迹为代表。比错赛道最常见&#…

2026/10/6 20:54:43

解读 INT8 量化经典论文《Integer Quantization for Deep Learning Inference》:什么叫量化、为什么选量化、还有哪些替代方案——原理、校准与产业应用

解读 INT8 量化经典论文《Integer Quantization for Deep Learning Inference》:什么叫量化、为什么选量化这条路线、还有哪些替代方案——原理、校准与产业应用本文作为笔者个人备忘的文章,不喜勿喷。以及 AI 生成。全文基于 NVIDIA 论文《Integer Quan…

2026/10/6 20:54:43

别再为护眼灯交智商税了!书客、明基、柏曼、霍尼韦尔等10款热门型号深度拆解:什么样的台灯最护眼?一篇讲透选购逻辑和隐藏坑

​最近后台问护眼灯的家长特别多,问题高度一致:想给孩子选一盏真正护眼的灯,怎么选才不踩坑?但现实很残酷。要么图便宜买低价网红款,孩子用不了多久就喊眼睛酸,回头一看参数全是虚标;要么冲着大…

2026/10/6 20:49:42

白嫖WorkBuddy:12篇做一个能上线的待办应用 第 12 篇|复盘:0 元、12 篇、一个能用的 App

摘要 大结局。12 篇连载的总账摊开:消耗多少、赚回多少、净额多少——全程零付费是否成立,数字说话。加上按学费排序的 5 个坑、3 个思维转变,和这个待办 App 的下一个形态:服务端 SQLite,真多设备同步。 话题标签:#WorkBuddy #实战总结 #零代码 #AI工具 先交代这个系列…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑