TimeTrace.

AI 用的 · 本地活动记忆层

让你的 AI 伙伴“能看见”并且“能记住”你某时某刻在做什么。

heshaohong·2026.06.03 ← →翻页
起因 · 我遇到的麻烦

组里推荐用 OpenClaw 写日报,
可它根本不知道我今天干了啥

想让 AI 帮我写日报、帮我回答"我今天都忙了些什么"——结果每次都得我自己把事儿一条条敲给它。AI 看不见我的屏幕,它只能等我投喂。

我 😪脑子里记着今天干了啥
手动一条条敲给它
🤖 OpenClaw一无所知,只能干等
我的记性非常差,并且晚上通常下班都比较晚,每天都来回忆一遍就有点太费时了。
我现在的办法

写了个 /archive skill,
让 Claude Code 自己总结、自己归档。

做完一个任务,在对话框里面再打一行 /archive,cc 就按我定的规矩把过程总结&归档成一份 markdown,然后我再把这份 md 甩给 OpenClaw。

干完一段活
打 /archive
总结 + 归档
生成 .md
手动甩给 OpenClaw
写着写着,冒出一个念头

能不能让 OpenClaw 干脆自己「看见」我在做什么?

日报这事点醒了我。我真正想要的,是让 OpenClaw 能直接、主动地看到我某时某刻在干嘛,而且长期记着。顺着这个念头,做出了 TimeTrace——一层给 OpenClaw 用的本地记忆。它就做两件朴素的事:老老实实地记录,再配上一套高级的检索。这样一来,OpenClaw 从一个等我投喂的工具,长成了能看我屏幕、有长期记忆的伙伴。

我的屏幕某时某刻在干啥
自动记录·描述·分类
本地记忆层持久 · 可检索
主动翻阅
AI 伙伴
如果把 OpenClaw/Hermes 当伙伴的话,这东西也许就有点用。
完整架构 · 从你的屏幕,到 AI 的眼睛
① 客户端 · 你的电脑(采集端)
采集活跃窗口 · 关键帧截图 · 时间
隐私过滤黑名单 / 暂停
Outbox 队列幂等 · 断点续传
托盘 · 多路径选路
③ 服务端 · 家里小主机(常驻 · RTX 3080)· 数据不出门
API(FastAPI)
存储SQLite + 本地文件
分析 WorkerVLM 看图 → 描述 + 分类
本地模型VLM 35B · Embedding
三路检索关键词 FTS5 · 以图搜图 pHash · 语义向量
分析队列状态机 · 崩了自愈
看板生成器定时出 AI 报告
④ 谁在用它
你 → Web(域名 · 登录)时间轴 · 看板 · 搜索
AI → Agent 问答 · MCP 导出OpenClaw / Claude Code 主动来读
看板报告示例
架构跑完,你每天看到的看板就长这样 👆
两个 AI 入口 · 定位不一样

💬 Agent · 你问,它答

Agent 问答
用大白话问,它自己调工具去翻你的活动记忆,再回答你。 例:今天主要用了哪些应用?各花了多久?

📊 看板 · 它主动给你看

看板报告
每 30 分钟自动出一份「最近在干嘛」的洞察,像网易云年报。你打开就看,不用开口问。
看板洞察卡片
很会抓特点
摸鱼大师…?
看板实时生成
全程 AI 实时生成
调工具 → 落笔写报告
可能可以问他什么

从随口一问,到有点刁钻的,它都能接。

「我最近 1 小时有没有在摸鱼?」

摸鱼问答

「昨天上班 10–21 点,有没有跟人聊天?什么软件、跟谁?」

聊天问答
这周工作多久?
写代码 vs 开会?
最近 3 小时在干嘛?
用得最多的 app?
一点小美化?

手机(竖屏)也能看,白天黑夜双主题也有。

☀️ 白天模式
手机白天 · 时间轴 手机白天
🌙 夜间模式
手机夜间 · 搜索 手机夜间
取舍 · 为什么搭得这么大

我的决定:隐私第一

🔒

隐私第一

不调任何外来模型——描述、分类、问答全用自己显卡(RTX 3080)上的本地模型。数据一步都不出门。

🖥️

服务端常驻 → 客户端/服务端分离

服务端在家里小主机后台一直跑。电脑关了,它照样消化白天堆积的分析、照样出看板;手机打开网站也能看。

🛣️

多路径 · 两条线自动切

在家走局域网 192.168.*.*(最快);在外走域名 → VPS → FRP 隧道(因为没有公网 IP 所以得绕一圈)。带宽比延迟更重要。

隐私的代价 · 与未来

模型只能跑在自己卡上,
那怎么让小小的量化模型回答正确?

为了隐私,只能用本地这张卡跑得动的、还经过量化的小模型。让其作为能够「调工具 → 查记忆 → 回答」agent 的模型基座感觉还是很难的……我现在主要是2方面的想法:① 在 prompt 里仔细引导它该怎么做;② 在数据构成上下功夫(目前还只有帧级别的原始数据)。

目前的局限:只有 5 个工具、50k 上下文窗口小、小模型过度/无限思考,无 subagent / 分层检索。问得复杂一点就会回答不出来。

未来改进方向(?):把数据一层层往上聚合(关键帧 → 片段 → 摘要),agent 想深入哪段就顺着往下钻;让工具更全面更多样;引导 agent 探索路径。让 agent 看到的信息更完整、有粗有细。
问题① · 多模态搜索

三条路一起找,再融合排个序。

🔤 关键词FTS5 trigram · BM25 · 中文友好
🖼️ 以图搜图pHash + BK-tree · 按时间过滤
🧠 语义向量 施工中embedding + 余弦已实现,还没接进搜索入口
RRF 融合
(k=60)
融合排序多条通道同时命中,排得越前
RRF · 倒数排名融合
score = Σ通道 c 1k + rankc
k = 60
某结果在某条通道里排得越靠前(rank 越小),这一票越值钱;几条通道同时把它排前面,总分就越高。k 是个缓冲常数,防第一名一家独大。

关键词 + 以图搜图 + RRF 融合是成功的;语义向量这条基建写好了但还没接进搜索入口。

问题 ② · 几个会被问到的硬问题
Q:一直来回切窗口,岂不是疯狂截图?
你来回切窗口,总不能每切一次就咔一张吧——一分钟能攒一堆废图。所以加了几道闸:切到一个新窗口先等 1.5 秒再拍,这 1.5 秒里你又切走了就干脆不拍(很多切窗只是手滑、找东西,没真停留);就算停下来了,同一个画面最快也得隔 2 秒;要是你人离开了(180 秒没碰键鼠)就直接停止采集、不浪费;但又怕时间轴断档,所以最多 30 秒补拍一帧。说白了:只在你「真的在看某样东西」的时候才记。
Q:程序跑着突然关机 / 崩了,会丢数据吗?
采集到的东西不会马上发走,先落到本地一个「待发件箱」。它是只追加的日志、每写一条都强制刷盘、还用原子改名——意思是写到一半断电,也不会写出半条脏数据。每条都带一个唯一 id,发到服务端后按 id 去重。所以哪怕正写着突然断电:重启后那几条没收到确认的会原样再发一遍,服务端一看是重复的就丢掉——不丢、也不重。服务端那边,分析任务是个状态机(待分析 → 分析中 → 完成),万一卡在「分析中」(比如干活的进程崩了),每 5 分钟有个巡检自动把它打回「待分析」重来。
Q:上传会不会把网占满 / 一直失败死磕?
上传可以限速(默认不限、想限自己配),不会把你的网占满。万一服务端连不上,它不会傻乎乎一直猛敲,而是退一步再试:失败等 1 秒、再失败等 2 秒、4 秒…最多等到 60 秒,一通就立刻恢复。服务端分析这边也一样:一帧失败最多重试 5 次(从 1 分钟退到 10 分钟);要是连着失败 3 次(多半是本地大模型挂了),就触发熔断——先歇 30 秒,派个探针去试探它活没活,活了再恢复,免得对着空气一直撞墙。
问题 ③ · 分类是怎么定的

绕了一圈,最后选了最朴素的那条

一开始想搞复杂的:把画面里的文字抽出来,再用嵌入 / KNN 投票来分类(相当于让它「持续学习」)。后来发现这条路不划算——这种持续学习本身就难调,而且它得靠你不停地给记录打标签来喂数据,可谁会闲到天天给自己打标签呢。其实就 6 个固定分类 + 一个能看懂截图的 VLM,已经够用了。

于是删掉 KNN,改成最朴素的:让 VLM 在描述每一帧时,顺手从 6 类里挑一个;再加上你自己写的规则,规则的分量更重、会盖过 VLM 的猜测(比如把 Vanish 永远归「工作」)。谁说了算,靠一个简单的加权投票——有规则就听规则,没规则才听 AI。

未来:agent 发现一个没见过的新软件,可以在聊天里提醒你、问你归哪类、为什么,然后直接帮你写进规则。
AI Slop?

时间很赶,这个项目完全(100%)是 AI 堆出来的

🧱

大量时间花在重构

客户端 / 服务端分离这套重构占了很多精力,绝大部分(100%)代码是 AI 写的。

🎨

不会前端,也不知道如何驾驭 AI 写前端

很多地方只能靠自己截图 + 描述跟 AI 来回对;后端我也只懂一点点架构和逻辑而已。

🐛

调试靠 AI

全靠 Claude Code + SSH 看日志、远程联调,还有不少小 bug——但目前至少跑得起来。

现状:有域名、有登录、有网站,简单的加密也做了。
结束

希望我还会继续完善这个项目 🙏
继续烧 token

目前刚能跑。剩下的就是堆时间和 Token 把它打磨完整。

随便畅想几个未来的方向 ❓
多设备一起接 ❓
连手机:截图 / 相册文件夹无感知自动上传,做到准实时(手机用得更多)
拍照文件夹也自动传 ❓
桌面摆个小工业摄像头当本地监控——纯本地,不怕隐私 ❓
1 / 1
← → / 空格 翻页