我正在构建一个常驻内存代理,它会全天监视我的屏幕,而它的记忆存储在 SQLite 而非模型中。来告诉我它在哪些地方会出问题。
摘要
作者描述了他正在构建一个在 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 之前会压缩近似重复项,但肯定也丢失了一些信号。全天候捕获的成本迅速变得惊人。你们是如何让始终在线的代理保持低成本的?在调用昂贵的模型之前使用更多本地模型分流?真正的问题是:有什么办法能让记忆系统在两个月后依然持续使用,而不是变成只写不读?我独自在构建这个,很乐意在评论中深入探讨任何部分。主要是想听听设计上哪些地方比较天真。
相似文章
智能体记忆的可移植文件格式(9分钟阅读)
本文介绍了'memoryfields',一种用于AI智能体记忆的可移植文件格式,它使用Markdown文件和可选的SQLite索引,倡导一种更简单的、数据驱动的方法,而非现有复杂系统。
我为我的AI代理构建了本地长期记忆。4个月的日常使用,一个已发布的应用
一位个人开发者使用markdown文件和本地索引为AI代理构建了一个本地长期记忆系统,实现了跨会话的持久记忆,并包括针对虚假记忆的测试,计划未来可能将其产品化。
我曾以为Markdown记忆对智能体足够用了。结果它变成了提示债。
作者反思了将扁平化Markdown文件用作智能体长期记忆的局限性,随着记忆增长,这导致了提示债,并提倡使用基于图的记忆表示方法,动态检索相关上下文。
我做了一个本地 Markdown 记忆库,OpenClaw 可通过 MCP 查询
作者介绍了 Synapse——一个 MIT 许可的本地 Markdown 记忆库,面向 AI 智能体。它能导入 ChatGPT/Claude 导出的数据,并可通过 stdio MCP 服务器供 OpenClaw 查询,默认保持数据在本地磁盘、离线运行。
独立开发开源 Agent 网格(多个模型,同一个房间)+ 记忆系统。征集想法或有用的功能建议。
一位独立开发者正在构建一个开源 agent 网格,让 Claude、GPT 和 Gemini 的 agent 在共享房间中协作,每个 agent 拥有独立的 Linux 桌面,配备带图书管理员 agent 的双时态记忆、用于审批的决策收件箱、预算护栏以及对抗性陷阱测试。他正在向日常使用多 agent / vibe-coding 的用户征集反馈,以便在公开发布前完善路线图。