1 分•作者: jerryliu12•8 个月前
大家好!我一直在开发 Dayflow,这是一款 macOS 应用,可以自动追踪你实际在做什么(不仅仅是哪些应用是打开的)。
它的功能如下:
- 创建你一天的语义时间线;
- 通过理解你屏幕上的内容来实现(使用本地或云端视觉语言模型);
- 让你无需手动记录就能确切地看到你的时间都花在了哪里。
传统的计时器会告诉你“在 Chrome 上花了 3 小时”,这并没有什么帮助。Dayflow 实际上可以理解你是在阅读文档、调试代码,还是在浏览 HN。例如,你得到的结果不是“Chrome:3 小时”,而是“审查 PR 评论:45 分钟”、“阅读关于 Rust 的 HN 帖子:20 分钟”、“调试身份验证流程:1.5 小时”。
我曾是 Rewind 的早期用户,但很少使用它的检索功能。我开发 Dayflow 是因为我看到了屏幕数据的其他有趣用途。我发现它能帮助我保持工作状态——我每隔几个小时就会查看一下,确保我把时间花在了我希望的方式上——如果不是,我会尝试纠正。
关于隐私,你需要了解以下几点:
- 100% 在本地运行,使用 qwen2.5-vl-3b (~4GB 模型)
- 不上传到云端,无需账户
- 完整的源代码可在 MIT 许可证下获取 (<https://github.com/JerryZLiu/Dayflow>)
- 可选:自带 Gemini API 密钥以获得更好的质量(存储在钥匙串中,并提供免费层绕过方案以防止对你的数据进行训练)
技术栈非常简单,使用 SwiftUI 和本地 sqlite 数据库。使用原生 macOS API 进行高效的屏幕截图。由于大多数在本地运行 LLM 的人已经有了他们自己的选择工具(Ollama、LLMStudio 等),我决定不在 Dayflow 中嵌入 LLM。
到目前为止,最大的挑战是从 Gemini 2.5 Pro 等 SOTA 视觉模型适应到小型本地模型。我的限制是它必须占用 <4GB 的内存并具有视觉能力。我不得不做大量的评估,才发现 Qwen2.5VL-3B 是大小和质量的最佳平衡,但仍然需要接受相当大的质量折衷。我还创造性地使用了采样率和提示分块来处理 100 倍小的上下文窗口。处理一个 15 分钟的片段需要大约 32 次本地 LLM 调用,而 Gemini 只需要 2 次调用!
我接下来要做的事情:
蒸馏:使用 Gemini 的高质量输出来作为训练数据,以教导本地模型它需要的模式,希望能缩小质量差距。
自定义仪表板,你可以在其中跟踪任何问题的答案,例如“我在 HN 上花了多长时间?”或“距离我今天第一次深度工作还有几个小时”
我很乐意听取你的想法,特别是如果你在生产力追踪方面遇到过困难,或者对这类工具的功能有什么想法。