构建本地AI记忆中枢:隐私优先的电脑活动追踪与智能查询系统
1. 项目概述你的本地AI记忆中枢你有没有过这样的时刻想不起来上周三下午具体在忙什么项目或者上周看过的那个解决某个技术难题的YouTube视频标题是什么只记得大概内容。我们每天在电脑前产生海量的数字足迹——浏览的网页、使用的软件、观看的视频——但这些信息就像沙滩上的字迹很快就被新的浪潮冲刷殆尽。Nex Life Logger 就是为了解决这个问题而生的。简单来说它是一个隐私优先、完全运行在你本机的电脑活动追踪器。它像一位沉默的助手在后台记录你的浏览器历史、活跃窗口焦点甚至自动抓取YouTube视频的完整字幕。最核心的是它将这些数据全部存储在你自己的硬盘上然后允许你通过自然语言像询问一位无所不知的伙伴一样查询你过去的所有电脑活动。无论是“我昨天下午在忙什么”还是“帮我找出上个月所有和Docker相关的资料”它都能从你的本地数据库中给出答案。这不仅仅是日志更是为你个人定制的、可查询的“数字记忆”。2. 核心设计理念与架构解析2.1 隐私至上的“本地优先”哲学在数据即石油的时代将个人行为数据上传到云端服务器几乎是所有服务的默认选项。Nex Life Logger 反其道而行之确立了“本地优先”的核心原则。这意味着从数据采集、存储、处理到查询整个生命周期都发生在你的计算机内部。项目明确声明“Zero data sent to the cloud”这并非简单的营销话术而是其架构设计的基石。为什么选择本地优先数据主权你的数据完全属于你存储在~/.life-logger/目录下的SQLite数据库中。没有中间服务器不存在数据被第三方分析、售卖或泄露的风险。离线可用所有核心的追踪、存储和基础查询功能无需网络连接。AI总结功能虽然需要调用大模型API但原始数据始终在本地。规避合规风险对于处理敏感信息的从业者如律师、医生、研究员本地存储避免了因使用云端服务可能带来的数据合规性问题。这种设计也带来了挑战比如如何实现跨设备同步项目目前的答案是“不同步”专注于单机体验。这看似是限制实则明确了其定位一个深度服务于你当前工作主机的个人生产力分析工具而非一个全平台同步的生活记录仪。2.2 智能过滤只记录“有价值”的内容全量记录所有活动会产生大量噪音降低后续查询的价值。Nex Life Logger 内置了一套多层过滤机制确保记录的是“生产力”内容而非生活杂音。过滤层级解析应用级黑名单首当其冲的是通讯类应用。chat_filter.py模块会识别并排除如 WhatsApp、Discord、Slack、Telegram、Signal、Teams 等窗口。这意味着你和同事的聊天、私密对话不会被记录从源头保护隐私。敏感窗口排除涉及密码管理器如1Password、Bitwarden、网上银行、加密钱包等窗口会被主动跳过防止密码或财务信息被意外记录。内容分类过滤这是更精细的一层。content_filter.py可能利用关键词或轻量级模型对浏览器访问的URL和页面标题进行分类。其目标是过滤掉娱乐、八卦新闻、政治等“非生产性”内容保留编程、设计、AI、学习等相关的活动。这确保了你的“数字记忆”主题集中AI总结时也能提炼出真正有意义的洞察。注意过滤规则的准确性是关键。过于激进可能漏掉有价值信息比如在休闲时间阅读的一篇优质技术博客过于宽松则会让记录充满噪音。项目允许通过user_filters.py进行自定义配置这是高级用户必须了解的调优点。2.3 双模交互从桌面应用到AI智能体集成项目提供了两种截然不同但互补的使用方式覆盖了从传统图形界面到前沿AI智能体交互的全场景。桌面应用模式这是最直观的方式。运行tray.py后一个图标会驻留在系统托盘。右键菜单提供暂停/继续、查看总结、打开AI聊天窗等控制。其核心是viewer.py构建的本地图形界面提供数据可视化图表、主题切换和自然语言搜索。它适合喜欢在一个集中界面里回顾和分析数据的用户。OpenClaw/ClawHub 技能模式这代表了更未来的交互范式。你将Nex Life Logger作为一个“技能”安装到你的AI智能体例如一个连接到Telegram或Discord的OpenClaw智能体中。之后你可以直接在聊天软件里向你的智能体提问智能体会在后台调用nex-life-loggerCLI工具查询你的本地数据库并返回结果。例如在Telegram里直接问“我上周在React项目上花了多少时间” 这种将个人数据查询无缝嵌入日常对话流的方式极大地降低了使用门槛让查询“数字记忆”变得像问朋友问题一样自然。3. 核心功能模块深度拆解3.1 数据采集引擎默默工作的观察者数据采集是项目的基础由collector.py和youtube_transcript.py等模块协同完成默认每30秒运行一次。这个频率在资源占用和记录粒度间取得了平衡。采集源与实现原理浏览器历史通过访问各浏览器Chrome, Edge, Brave, Firefox的本地历史数据库文件如Chrome的HistorySQLite文件来获取浏览记录。这里的关键是处理不同浏览器的数据路径和格式并注意浏览器进程锁可能导致的读取失败。实现时通常会采用重试机制或读取副本。活跃窗口焦点通过操作系统API获取当前最前端窗口的标题和进程名。在Windows上可能使用pygetwindow或win32gui在macOS上使用AppKit在Linux上使用ewmh通过python-xlib。记录窗口标题能有效捕捉你在IDE、设计工具或文档中的工作内容。YouTube字幕抓取这是项目的亮点功能。当检测到当前浏览器标签页或窗口标题包含“YouTube”且正在播放视频时youtube_transcript.py会尝试通过YouTube的公开接口或youtube-transcript-api这类库获取该视频的完整字幕文本。这为后续基于视频内容的深度搜索提供了可能。实操心得采集模块的稳定性至关重要。在实际部署中我发现需要确保Python进程有足够的权限读取浏览器历史文件。此外对于频繁切换窗口的极端用户30秒的间隔可能会丢失一些短暂的活动但对于记录主要工作任务流来说已经足够。你可以通过config set-poll-interval调整这个频率但更短的间隔会增加系统负载。3.2 存储与索引层SQLite与FTS5的经典组合所有采集到的数据最终汇入storage.py管理的SQLite数据库。选择SQLite而非更复杂的数据库完美契合了“本地单机应用”的定位无需服务、零配置、单个文件、ACID事务支持。数据库表结构精要activities表核心表每条记录代表一个活动事件一次网页访问或一次窗口聚焦。字段可能包括id,timestamp,kind(如url,app_focus),title,url,app_name,domain,category等。67,000条记录主要存储于此。summaries表存储由AI生成的各级总结日、周、月、年。结构可能是id,period_type,period_start,content(AI生成的文本),embedding(可选用于向量搜索)。keywords表由keyword_extractor.py从活动记录中提取的关键词、主题、工具名、编程语言等并记录出现频率。这为“我最常使用什么工具”这类统计查询提供了快速通道。transcripts表存储从YouTube抓取的字幕文本与activities表中的YouTube观看记录关联。FTS5全文搜索这是实现强大搜索功能的核心。SQLite的FTS5全文搜索扩展模块允许对activities表中的title,url,domain等文本字段建立倒排索引。当你执行nex-life-logger search “docker containers”时FTS5会进行分词、计算相关性评分并高效返回结果。CLI中支持的--kind、--source、--category等过滤器则是在FTS5搜索结果之上叠加的SQL过滤条件实现了精准检索。3.3 AI总结与查询引擎从数据到洞察原始日志是冰冷的AI总结赋予了它们意义。summarizer.py和ai_chat.py是这个环节的核心。多级总结流水线总结并非一次性生成而是一个层级递进的管道。每日总结每晚11点系统会将当天的所有活动记录可能先经过关键词提取和聚类发送给配置的AI大模型生成一段关于当日工作重点、学习主题和所用工具的连贯叙述。每周总结每周日系统不会直接分析原始活动数据而是基于过去七天的每日总结文本再次调用AI生成更高阶的周度回顾。这种方式大幅减少了Token消耗并迫使AI进行二次归纳。月度和年度总结同理基于每周总结生成月度报告基于月度总结生成年度报告。这种“总结的总结”架构既保证了宏观视角的连贯性又极大地控制了API调用成本。自然语言查询在桌面应用的AI聊天窗或通过智能体集成你可以进行自由形式的提问。其工作流程可能是1) 将用户问题转换为一个优化的搜索查询可能涉及关键词扩展2) 使用FTS5在数据库中执行搜索3) 将搜索到的相关活动记录片段作为上下文连同用户原问题一起提交给AI要求其组织语言回答。这就是“用你的数据回答你的问题”。配置要点项目支持任何OpenAI兼容的API这提供了极大的灵活性。你可以使用收费的OpenAI GPT-4o追求高质量也可以使用本地的Ollama如Llama 3.2实现完全离线的隐私保护或者使用Groq追求极速响应。通过nex-life-logger config set-provider等命令可以轻松切换。重要提示API密钥通过secure_key.py利用操作系统提供的安全存储Windows凭据管理器、macOS钥匙串、Linux密钥环保存而非明文存储在配置文件中这是专业安全实践的体现。4. 实战部署与个性化配置指南4.1 环境准备与桌面端安装假设你已经在电脑上安装了Python 3.11或更高版本以下是部署桌面应用的详细步骤。步骤一获取项目代码# 克隆仓库 git clone https://github.com/NexaiGuy/nex-life-logger.git cd nex-life-logger步骤二创建并激活虚拟环境强烈推荐使用虚拟环境可以隔离依赖避免污染系统Python环境。# 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate激活后命令行提示符前通常会出现(venv)标识。步骤三安装依赖pip install -r requirements.txt这个requirements.txt文件包含了所有核心依赖如pystray(系统托盘)、Pillow(图标处理)、pywebview(桌面图形界面)、youtube-transcript-api等。安装过程可能需要几分钟。步骤四首次运行与基础配置# 启动系统托盘应用推荐常驻方式 python tray.py首次运行程序可能会在后台初始化数据库。接下来需要进行关键配置# 打开一个新的终端保持tray.py运行进入项目目录并激活同一虚拟环境 # 设置AI提供商和模型 nex-life-logger config set-provider openai # 接下来会交互式提示你输入API密钥它会安全地存储 nex-life-logger config set-api-key # 设置使用的模型 nex-life-logger config set-model gpt-4o-mini完成这些你的基础追踪和AI总结功能就准备就绪了。右键点击系统托盘图标你可以暂停追踪、查看今日总结或打开主界面。4.2 作为ClawHub技能集成与你的AI智能体对话如果你已经在使用OpenClaw或ClawHub平台并拥有一个可通过Telegram/Discord等通信的AI智能体那么将其与Nex Life Logger集成会带来革命性的体验。集成原理ClawHub技能本质上是一个可被AI智能体调用的命令行工具包。安装nex-life-logger技能后你的智能体就获得了执行nex-life-logger所有CLI命令的能力。当你在聊天中提出相关问题智能体会自动理解你的意图选择合适的命令执行并将命令行输出“翻译”成友好的自然语言回复给你。安装与连接步骤在智能体主机上安装技能确保你的ClawHub智能体运行在与你的电脑安装了Nex Life Logger的电脑同一网络环境或者就是同一台机器。# 在智能体运行的环境下执行 npx clawhub install nex-life-logger bash setup.shsetup.sh脚本会处理Python环境、依赖安装以及技能注册。技能配置安装后通常需要在ClawHub的技能管理界面或在智能体的配置中指定nex-life-logger命令的路径如果不在系统PATH中。同时也需要在这里配置AI API密钥等信息或者技能会复用桌面端已存储的配置。开始对话配置完成后你就可以直接在Telegram或Discord里对你的智能体说“帮我查一下昨天看了哪些关于Python异步编程的视频” 智能体在后台执行的逻辑可能就是nex-life-logger search “python async” --kind youtube --last 1d然后将结果整理成句子回复你。这种方式的优势在于你无需打开任何额外应用在常用的聊天场景中就能完成对个人工作历史的查询实现了真正的“无感”人机交互。4.3 高级配置与个性化调优默认设置适合大多数人但为了让它更贴合你的工作流可以考虑以下调整。1. 调整追踪内容与过滤规则修改轮询间隔如果你觉得30秒太粗或太细可以调整。更短间隔如10秒能捕捉更细粒度的活动但会增加CPU和数据库写入。nex-life-logger config set-poll-interval 10自定义应用过滤默认的聊天应用黑名单可能不完整或者你想排除其他干扰应用如股票软件。你需要编辑user_filters.py或项目中的相关配置文件添加或移除应用进程名或窗口标题关键词。调整内容分类器content_filter.py中的分类逻辑决定了什么是“生产力”内容。如果你发现它错误地过滤了你的某个常驻学习网站你可能需要查看其源码了解其分类规则可能是基于URL关键词或轻量级文本分类并进行相应调整。这是一个相对高级的操作。2. 优化搜索体验重建全文搜索索引如果你手动修改了大量历史数据或者搜索出现异常可以重建FTS5索引以确保搜索准确性。nex-life-logger config rebuild-fts探索高级搜索语法FTS5支持更复杂的查询如短语搜索machine learning、前缀搜索pyth*、布尔操作docker AND NOT swarm。虽然CLI可能没有直接暴露所有语法但了解这些有助于你更精准地构思查询问题。3. 数据维护与导出定期备份数据库文件~/.life-logger/activity.db是你所有记忆的载体。建议将其纳入你的常规备份计划。# 导出为JSON备份 nex-life-logger export json --output ~/backups/life-logger-$(date %Y%m%d).json生成可视化报告HTML导出功能可以生成一个独立的、包含图表和列表的网页报告方便你进行周期性回顾或分享在脱敏后。nex-life-logger export html --output ~/Documents/weekly-review.html5. 常见问题排查与使用技巧5.1 安装与运行问题问题运行python tray.py或nex-life-logger命令时提示“命令未找到”或模块导入错误。排查首先确认你是否在项目根目录下并且已经激活了正确的Python虚拟环境命令行前有(venv)。在虚拟环境下再次运行pip install -r requirements.txt确保所有依赖安装成功。有时某些系统级依赖如用于pywebview的Web运行时可能需要单独安装。问题系统托盘图标没有出现或者程序启动后立即退出。排查查看命令行终端是否有错误输出。常见原因包括图标资源丢失确保screenshots/目录或项目指定的图标文件存在。端口冲突桌面应用viewer.py可能启动了一个本地HTTP服务器默认端口被占用。可以尝试重启程序或检查是否有其他应用占用端口。操作系统兼容性pystray在某些Linux桌面环境如Wayland下可能有问题。可以尝试在无头模式python main.py下运行或查阅pystray的文档。5.2 数据采集相关问题问题浏览器历史记录没有被捕获到。排查浏览器支持确认你使用的浏览器在支持列表内Chrome, Edge, Brave, Firefox。Safari或其他小众浏览器可能不支持。浏览器进程锁浏览器正在运行时其历史数据库文件可能被锁定导致无法读取。Nex Life Logger 的采集器应该已经处理了这种情况如尝试读取副本或等待但如果问题持续可以尝试暂时关闭浏览器再测试。文件权限确保运行Nex Life Logger的用户有权限读取浏览器配置文件所在目录。在Linux/macOS上可能需要检查文件权限。问题YouTube字幕无法获取。排查网络问题获取字幕需要访问YouTube。请检查网络连接。视频本身无字幕并非所有YouTube视频都提供字幕尤其是自动生成字幕被上传者关闭的情况。API限制或变更项目可能依赖youtube-transcript-api等第三方库这些库可能因YouTube的改动而暂时失效。查看项目GitHub的Issue页面或相关库的更新。5.3 AI功能相关问题问题AI总结功能不工作或查询时没有AI回复。排查API配置运行nex-life-logger config show检查AI提供商、API基础地址和模型设置是否正确。确保API密钥已正确保存。API密钥有效性测试你的API密钥是否在其他地方可用。对于OpenAI可以尝试一个简单的cURL命令测试。网络连接确保你的电脑可以访问你配置的API端点如api.openai.com或你的本地Ollama地址http://localhost:11434。额度或配额检查你的API账户是否有剩余额度或请求配额是否已用尽。问题AI生成的总结太笼统或不准确。技巧更换模型尝试更强大的模型如从gpt-4o-mini切换到gpt-4o通常能获得更高质量、更细致的总结。提供更具体的上下文在AI聊天窗提问时尽量具体。例如不要问“我上周做了什么”而是问“请总结我上周在‘项目X’相关的编码和文档阅读上的时间分配和主要进展”。调整提示词如有可能如果项目开源且你熟悉代码可以查看summarizer.py中用于生成总结的AI提示词模板微调它可能会改善输出质量。5.4 性能与资源使用问题程序运行导致电脑变慢或耗电增加。排查与优化检查轮询间隔默认30秒是合理的。如果设置得太短如1秒会频繁触发采集和数据库写入增加负载。用config set-poll-interval调回默认值或更长。数据库大小随着时间推移数据库会增长。SQLite在处理数十万条记录时通常依然高效。但如果达到百万级可以考虑使用export功能导出旧数据并清理或者研究是否启用了数据库的WAL模式以获得更好性能。AI总结调度每日、每周、每月的AI总结生成是计划任务。确保它们没有在你不使用电脑的高负载时段如白天工作时间运行。调度时间可以在scheduler.py中配置。一个重要的隐私使用技巧即使程序承诺不记录敏感应用在处理高度机密信息时一个简单的习惯是右键点击系统托盘图标选择“暂停追踪”。这给了你完全的控制权在需要绝对隐私的时段手动关闭记录功能事后再恢复。这种“物理开关”般的控制感是构建信任的关键。