我正在构建一个常驻内存代理,它会全天监视我的屏幕,而它的记忆存储在 SQLite 而非模型中。来告诉我它在哪些地方会出问题。

Reddit r/AI_Agents 工具

摘要

作者描述了他正在构建一个在 Mac 上本地运行的常驻内存代理,它能监视屏幕并可选地监听音频,将所有内容通过 OCR 或转录转换为结构化 Markdown 存储在 Obsidian 库中,并以 SQLite 作为数据来源。他邀请大家对设计选择提出反馈,例如使用 SQLite 而非向量/图数据库、成本以及此类系统的持久性。

我搭建的每个“第二大脑”最终都变成了坟场。上千条笔记,华丽的图谱视图,却没有一个真正让我的决策变得更好。问题始终在我自己——我必须停下来把事情写下来,而我从来都不做。所以我正在构建一个无论我是否费心记录都能自动抓取的系统。它运行在我的 Mac 上,监视屏幕上的一切(可选地还有麦克风和系统音频),通过 OCR 或转录将所有内容转换为结构化 Markdown 并存入 Obsidian 库。关键点在于捕捉那些我自己永远不会记下的东西:那些不经意间做出的微小决策,以及到第二天早上就消失的上下文。有点像 Rewind 在被 Meta 收购之前做的事情,只不过它不是一个搜索框,而是一个自我维护的维基,而且除非我插入自己拥有的 API 密钥,否则没有任何内容会离开我的机器。以下是我真正希望你们吐槽的地方:数据库是真实来源,Markdown 是可丢弃的。所有真正的状态(身份、去重、搜索、成本跟踪、脱敏守卫)都存储在 SQLite 中。Obsidian 库——即每日笔记、时间线叙述以及每个人员/项目/主题的维基页面——只是我从数据库中重新生成的投影。删掉库文件我可以重建。模型从不拥有记忆,它只是对存储提供的数据进行推理。我之所以这样做,是因为见过太多代理依赖聊天历史“记住”内容,然后在跨会话时完全崩溃。脱敏机制是故障时关闭的。屏幕文本在发送给 LLM 之前会被清除秘密信息,每次发送都会记录到一个只追加的文件中。如果清除器无法运行,则不会向外发送任何内容。绝对如此。自带 API 密钥。支持 Anthropic、OpenAI、OpenRouter,或通过 Ollama 完全本地运行。没有账户,没有托管云。每个文件都有“勿动”和“自由发挥”区域。LLM 只会在标记之间重写其自己的部分。我在这些标记之外输入的任何内容都保持原样,这样我们就不会互相覆盖。我真正不确定的地方:将“DB 作为真实来源,Markdown 作为缓存”是否明智?还是说当我需要真正的检索时,会希望自己使用向量/图数据库?目前我只用 SQLite 加全文搜索,没有嵌入。始终开启的捕获会产生大量近乎相同的文本。我在将内容交给 LLM 之前会压缩近似重复项,但肯定也丢失了一些信号。全天候捕获的成本迅速变得惊人。你们是如何让始终在线的代理保持低成本的?在调用昂贵的模型之前使用更多本地模型分流?真正的问题是:有什么办法能让记忆系统在两个月后依然持续使用,而不是变成只写不读?我独自在构建这个,很乐意在评论中深入探讨任何部分。主要是想听听设计上哪些地方比较天真。
查看原文

相似文章