本地AI记忆助手:隐私优先的电脑活动追踪与智能回顾工具
2026/5/11 9:47:55 网站建设 项目流程

1. 项目概述:一个完全本地的AI记忆助手

你有没有过这样的时刻?想不起来上周三下午自己到底在电脑上捣鼓了些什么,或者上周看过的那个特别有用的技术视频教程,关键词死活想不起来。我们每天在电脑前产生海量的数字足迹——浏览的网页、使用的软件、观看的视频——这些信息转瞬即逝,大脑根本记不住。Nex Life Logger 就是为了解决这个问题而生的。它是一个隐私至上、完全本地运行的电脑活动追踪器,就像一个24小时在线的私人数字记忆官。

简单来说,它是个在后台默默运行的小程序,每隔30秒就“看一眼”你在做什么:你打开了哪个浏览器标签、正在使用哪个软件、在YouTube上看了什么视频。所有这些数据,一丝一毫都不会离开你的电脑,全部加密存储在你本地硬盘的一个SQLite数据库里。然后,你可以通过自然语言,像问一个朋友一样,向它提问:“我昨天下午在研究什么?”“我这个月在Docker上花了多少时间?”它会利用本地AI模型(或你配置的API)从你的历史数据中找出答案,并生成智能摘要。

这不仅仅是另一个数据收集工具。它的核心设计哲学是“Local-First”“Privacy by Design”。没有云同步,没有用户账号,没有遥测数据。你的数字生活日志,只属于你一个人。对于开发者、研究者、知识工作者,或者任何希望量化、回顾自己数字生活的人来说,它是一个强大的元认知工具。

2. 核心功能与隐私设计解析

2.1 它具体追踪什么?

Nex Life Logger 的追踪是精细且克制的,并非无差别记录所有窗口,这体现了其“增强生产力”而非“监控”的设计初衷。

  1. 浏览器历史:支持主流的 Chromium 内核浏览器(Chrome, Edge, Brave)和 Firefox。它会记录你访问的URL、页面标题和访问时间戳。
  2. 活动窗口焦点:记录你当前正在前台使用的应用程序窗口标题。例如,“Visual Studio Code - life-logger/viewer.py” 或 “Chrome - GitHub Dashboard”。
  3. YouTube视频与字幕:这是它的一个亮点功能。当检测到你在观看YouTube时,它不仅记录视频链接和标题,还会利用 YouTube Transcript API 抓取视频的完整字幕文本。这意味着你日后可以通过视频里的任意一句台词来搜索这个视频。
  4. 搜索引擎查询:自动从主流搜索引擎(Google, Bing, DuckDuckGo等)的URL中提取你的搜索关键词。比如,从https://www.google.com/search?q=python+sqlite+fts5中提取出 “python sqlite fts5”。

2.2 它坚决不追踪什么?——隐私过滤机制

隐私保护不是口号,而是通过多层过滤机制实现的。这是我最欣赏的设计,它主动帮你规避了隐私风险。

  1. 通讯应用全局排除:系统内置了一个“聊天应用黑名单”,包括 WhatsApp, Discord, Slack, Telegram, Signal, Microsoft Teams 等。只要窗口标题或URL匹配到这些应用,该条活动根本不会被写入数据库。你和朋友的私聊内容、工作群的讨论,都不会被记录。
  2. 敏感窗口智能跳过:通过关键词匹配,系统会自动跳过如密码管理器(Bitwarden, 1Password)、银行网站、医疗健康等敏感窗口。这些信息永远不会进入日志。
  3. 内容分类过滤器:项目内置了一个基于规则和关键词的内容分类器。它会将活动分为“生产性”(如编程、设计、学习)和“非生产性”(如娱乐、新闻、政治)。在默认配置或摘要生成时,可以选择性地过滤掉非生产性内容,让你的回顾聚焦在真正有价值的事情上。这个分类器是规则驱动的,你可以查看和修改content_filter.py中的规则来适应自己的需求。

2.3 数据存储与安全

所有数据都存放在~/.life-logger/(Linux/macOS)或C:\Users\[用户名]\.life-logger\(Windows)目录下。核心是一个activity.db的 SQLite 数据库文件。

  • SQLite的考量:选择SQLite而非更复杂的数据库,是“Local-First”理念的完美体现。它轻量、单文件、无需服务、跨平台,并且通过 FTS5 扩展提供了强大的全文搜索能力。你的所有历史记录,就是一个可以随身携带的.db文件。
  • API密钥安全:项目使用secure_key.py模块来处理AI服务的API密钥。在Windows上,它利用Windows Credential Manager;在macOS上,使用Keychain;在Linux上,则使用Secret Service API (libsecret)。这意味着你的API密钥以系统级的安全方式加密存储,而不是明文写在配置文件里,安全性大大提升。

注意:虽然数据在本地,但请务必做好常规的电脑安全防护(如全盘加密、强密码)。.life-logger目录包含了你的详细活动历史,应被视为敏感数据。

3. 两种使用模式与详细配置指南

Nex Life Logger 提供了两种形态,适应不同场景的用户。

3.1 桌面应用程序模式(推荐大多数用户)

这是功能最全的模式,包含系统托盘图标、原生视图窗口、图表分析等功能。

安装与运行:

  1. 环境准备:确保你的系统已安装 Python 3.11 或更高版本。
  2. 获取代码:从GitHub仓库克隆项目。
    git clone https://github.com/NexaiGuy/nex-life-logger.git cd nex-life-logger
  3. 安装依赖:项目依赖项在requirements.txt中。建议使用虚拟环境。
    # 创建虚拟环境(可选但推荐) python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/macOS: source venv/bin/activate # 安装依赖 pip install -r requirements.txt
    这里会安装核心依赖,如pystray(托盘图标)、pywebview(桌面窗口)、youtube-transcript-api等。
  4. 首次运行与配置
    python tray.py
    首次运行,程序会创建数据库和配置文件。你需要右键点击系统托盘图标(通常是一个大脑或日志形状的图标),选择“设置”“配置AI”

核心配置步骤:

  1. 设置AI提供商:这是启用智能搜索和摘要的关键。以使用 OpenAI 为例,你需要在配置中填入:
    • API Base URL:https://api.openai.com/v1
    • API Key: 你的OpenAI API密钥(会安全存储)。
    • Model: 例如gpt-4o-mini(性价比高)或gpt-4o。 程序也支持本地运行的 Ollama,将API Base URL设为http://localhost:11434/v1,模型设为如llama3.2,API Key留空即可。
  2. 调整追踪间隔:默认30秒采集一次。在config.py中,你可以修改POLL_INTERVAL_SECONDS。不建议低于15秒,以免过度消耗资源。
  3. 自定义过滤规则:如果你有特定不想追踪的网站或应用,可以编辑user_filters.py文件,在相应的BLACKLIST_URL_PATTERNSBLACKLIST_WINDOW_TITLES列表中添加正则表达式规则。

桌面应用功能一览:

  • 系统托盘控制:暂停/恢复追踪、手动触发摘要生成、快速打开AI聊天窗口。
  • 原生视图器(viewer.py):提供三种UI主题(赛博朋克、行政日志、霓虹脉冲),以时间线方式浏览活动,内置图表展示时间分配。
  • AI聊天界面(ai_chat.py):一个集成了数据库上下文的聊天窗口。你可以直接问:“我上周关于Kubernetes都看了些什么?”AI会在回答前,自动在本地历史中检索相关信息。
  • 自动启动:Windows用户可以通过Setup Auto-start选项,将程序添加到开机启动项,实现无感追踪。

3.2 AI Agent技能模式(为效率极客打造)

这是该项目最酷的部分之一。它被打包成了一个ClawHub/OpenClaw Skill。OpenClaw 是一个开源的AI Agent框架,而 ClawHub 是其技能市场。这意味着你可以将你的“数字记忆”能力赋予任何一个通过OpenClaw连接的AI Agent,比如一个Telegram机器人、Discord机器人或WhatsApp助手。

安装与集成:

  1. 前提:你需要一个已经搭建好的OpenClaw AI Agent。假设你的Agent已在运行并连接了Telegram。
  2. 安装技能:在你的Agent服务器上执行:
    npx clawhub install nex-life-logger bash setup.sh
    这个命令会从ClawHub拉取技能包,并运行安装脚本,将nex-life-loggerCLI工具链接到你的Agent环境。
  3. 使用:安装后,你就可以直接在Telegram里和你的AI助手对话了:
    你: “嘿,我昨天下午2点到4点都在干嘛?” AI助手: *在后台自动执行 `nex-life-logger activities --last 1d --from 14:00 --to 16:00` * AI助手: “昨天下午2点到4点,你主要在进行前端开发。你访问了React官方文档,在VS Code中修改了‘user-profile’组件,并在Stack Overflow上搜索了‘useEffect cleanup function’的问题。”

这种模式的强大之处在于:你无需打开任何额外软件,在日常的聊天环境中就能随时查询自己的数字记忆,实现了真正的“无感回顾”和“自然交互”。这对于远程工作、深度专注时不想切换窗口的场景尤其有用。

4. 数据库结构与CLI工具深度使用

理解其数据存储方式,能让你更自如地查询和利用这些信息。

4.1 数据库表结构详解

本地SQLite数据库 (activity.db) 包含四张核心表,设计得非常清晰:

  1. activities (活动表):核心表,存储每一条原始记录。

    • id: 主键
    • timestamp: 活动发生的时间(UTC)
    • kind: 类型 (url,app_focus,youtube,search)
    • source: 来源 (chrome,vscode,youtube等)
    • title: 窗口或页面标题
    • url: 访问的URL(如果是浏览器活动)
    • domain: 从URL提取的域名
    • content: 附加内容(如搜索关键词、视频ID)
    • category: 内容分类器打上的标签 (tool,learning,entertainment等)
  2. summaries (摘要表):存储AI生成的各级摘要。

    • period_start: 摘要周期的开始时间
    • period_type: 周期类型 (daily,weekly,monthly,yearly)
    • content: AI生成的摘要文本
    • model_used: 生成摘要所用的AI模型
  3. keywords (关键词表):自动从活动标题和内容中提取的关键词、主题、工具名、编程语言等。

    • keyword: 关键词本身
    • category: 分类 (tool,language,project,topic)
    • frequency: 出现频率
    • first_seen,last_seen: 首次和最近出现时间
  4. transcripts (字幕表):存储YouTube视频的完整字幕。

    • video_id: YouTube视频ID
    • transcript_text: 完整的字幕文本
    • video_title: 视频标题
    • accessed_at: 观看时间

4.2 CLI命令实战指南

无论你是否使用桌面版或Agent版,nex-life-logger命令行工具都是进行高级查询和数据管理的利器。以下是一些高频和进阶用法:

基础查询:

# 查看过去2小时的所有活动 nex-life-logger activities --last 2h # 只看过去一天内观看的YouTube活动 nex-life-logger activities --last 1d --kind youtube # 查看上周所有的搜索记录 nex-life-logger activities --last 7d --kind search

全文搜索(最强大的功能):数据库使用SQLite FTS5扩展建立全文搜索索引,支持相关性排序。

# 在所有历史中搜索“Docker”相关内容 nex-life-logger search "docker containers" # 搜索三月份以来关于“机器学习”的浏览器历史,限制来源为Chrome,最多50条 nex-life-logger search "machine learning" --since 2024-03-01 --kind url --source chrome --limit 50 # 搜索应用焦点中与“Python”相关的记录(比如VS Code编辑Python文件) nex-life-logger search "python" --kind app_focus # 以JSON格式输出结果,便于用其他工具(如jq)处理 nex-life-logger search "kubernetes" --output json | jq '.'

摘要与统计:

# 查看AI生成的昨日、本周、本月摘要 nex-life-logger summary daily nex-life-logger summary weekly nex-life-logger summary monthly # 手动触发生成一份本周至今的摘要(比如周五想回顾一下) nex-life-logger generate weekly # 查看总体统计:活动总数、最活跃的日期、最常用的应用等 nex-life-logger stats # 查看提取出的Top 20工具关键词 nex-life-logger keywords --top 20 --category tool

数据导出与备份:定期导出数据是个好习惯。

# 导出所有活动为JSON,用于备份或自定义分析 nex-life-logger export json --output backup_$(date +%Y%m%d).json # 导出为CSV,用Excel或Numbers打开分析 nex-life-logger export csv --output report.csv # 导出一个漂亮的HTML报告,包含图表,可以直接在浏览器打开分享(不包含敏感详情) nex-life-logger export html --output weekly_report.html

服务管理(Linux/macOS):如果你在服务器上以服务形式运行无头模式。

nex-life-logger service status nex-life-logger service start nex-life-logger service stop

5. 高级技巧与个性化定制

5.1 优化AI摘要提示词

摘要的质量很大程度上取决于发送给AI模型的提示词(Prompt)。项目的提示词模板在summarizer.py中。你可以根据你的偏好进行微调,让生成的摘要更符合你的阅读习惯。

例如,默认的每日摘要提示词可能类似于:

“请根据以下用户某一天的电脑活动列表,生成一段连贯的、总结性的段落,描述用户当天的主要工作、学习和研究焦点。避免罗列清单,侧重趋势和主题。”

你可以修改为:

“请以第一人称‘我’的口吻,写一段日记风格的总结,回顾我一天在电脑上的主要活动。突出我花费时间最多的三个任务,并提及我遇到或搜索过的任何有趣的技术概念。语气保持专业但略带随意。”

5.2 集成到个人工作流

  • 与笔记软件联动:你可以写一个简单的脚本,每天定时运行nex-life-logger summary daily,将输出结果追加到你的日记软件(如Obsidian, Logseq)或笔记中,自动生成“数字日记”。
  • 周报自动化:结合nex-life-logger summary weekly --output json和 Python 脚本,将数据解析后填充到你的周报模板里,节省大量回忆和整理时间。
  • 项目时间追踪:虽然它不是精确的时间追踪工具,但通过搜索项目相关关键词(如项目代号、主要技术栈),可以大致估算你在不同项目上的时间投入分布。

5.3 处理误判与调整过滤器

有时分类器可能会误判。比如,你把一个编程教学视频网站标记为了“娱乐”,或者某个工作用的内部聊天工具没有被屏蔽。

  1. 检查与修正分类:你可以通过CLI搜索特定域名的活动,查看其被分配的category
    nex-life-logger search "example.com" --output json
  2. 修改过滤规则:直接编辑content_filter.pychat_filter.py文件。例如,在CONTENT_CATEGORIESlearning规则中添加你的教学网站域名,或在CHAT_APP_KEYWORDS中添加你内部聊天工具的名称。
  3. 重建全文搜索索引:在修改了重要配置或进行了大量数据清理后,建议重建FTS索引以确保搜索准确性。
    nex-life-logger config rebuild-fts

5.4 性能与资源考量

  • 数据库增长:长期使用后,activity.db文件可能会增长到几百MB。SQLite在处理几十万条记录时依然表现良好。如果担心性能,可以考虑定期将旧数据(如一年前)导出为JSON归档,然后从数据库中删除。
  • 内存与CPU:后台收集进程非常轻量。主要的资源消耗发生在生成AI摘要时,因为需要调用大语言模型API。如果你使用本地模型(如通过Ollama),则会对本地CPU/GPU有一定压力。建议将摘要生成安排在电脑空闲时(如默认的晚上11点)。

6. 常见问题与故障排除

在实际部署和使用中,你可能会遇到以下问题。这里是我的踩坑记录和解决方案。

Q1: 程序启动失败,提示缺少pystraypywebview模块。A1:这通常发生在没有完整安装桌面版依赖时。请确保你运行的是pip install -r requirements.txt,它包含了所有可选依赖。如果你只需要无头CLI模式,可以尝试一个精简安装,但可能需要手动安装部分核心模块。

Q2: 追踪不到Chrome/Edge浏览器的历史。A2:这可能是最常见的权限问题。

  • Windows/macOS:确保你以当前登录的同一用户运行程序。浏览器历史文件是用户级别的。
  • Linux:情况更复杂一些。Chrome/Chromium的历史文件通常位于~/.config/google-chrome/Default/History(路径可能因发行版和浏览器而异)。你需要确保Python进程有权限读取该文件。有时浏览器会以“锁定”状态打开该文件,导致读取失败。Nex Life Logger 的采集器有重试机制,但如果持续失败,可以尝试检查文件路径是否正确(在collector.py中配置)。

Q3: AI摘要功能报错 “API Error” 或 “Authentication Error”。A3:逐步检查:

  1. 密钥存储:运行nex-life-logger config set-api-key重新设置密钥,确保它被正确存入系统密钥库。
  2. 网络与代理:如果你身处需要网络代理的环境,需要确保Python能正确使用代理访问API。可以设置环境变量HTTP_PROXYHTTPS_PROXY
  3. 模型可用性:确认你配置的模型名称在你的API账户中是可用的。例如,gpt-4ogpt-4o-mini是不同的模型。
  4. 本地Ollama:如果使用Ollama,确保ollama serve服务正在运行,并且模型(如llama3.2)已经通过ollama pull拉取到本地。

Q4: 全文搜索 (search命令) 返回的结果不相关或为空。A4:

  1. 确认索引存在:运行nex-life-logger config rebuild-fts重建全文搜索索引。首次安装或数据库结构变更后需要此操作。
  2. 搜索语法:FTS5支持简单的短语搜索和前缀搜索。尝试用引号搜索完整短语"docker compose",或使用通配符python*来匹配“python”、“python3”等。
  3. 数据存在性:先用activities命令确认你想要搜索的数据确实已被记录。

Q5: 系统托盘图标不显示(Linux桌面环境常见)。A5:Linux上系统托盘支持依赖于桌面环境和特定的DBus服务。确保你安装了libappindicator3libayatana-appindicator3库。例如在Ubuntu/Debian上:

sudo apt-get install libappindicator3-1

如果仍不显示,可以尝试以纯CLI无头模式运行:python main.py,然后通过CLI命令或配置文件来控制。

Q6: 如何彻底卸载或暂停追踪?A6:

  • 暂停:右键点击系统托盘图标,选择 “Pause Tracking”。或者通过CLI:nex-life-logger config set-paused true
  • 彻底停止:退出应用程序即可。后台进程会终止。
  • 卸载:删除项目文件夹即可。你的数据文件在独立的~/.life-logger/目录,如需完全清理,手动删除该目录。

这个项目本质上是一个高度可定制化的数字生活记录仪。它的价值随着使用时间线性增长。刚开始的几周,你可能觉得它只是记录了一堆杂乱的数据。但几个月后,当你能够轻松回溯“去年那个关于微服务的灵感是在哪篇文章里看到的”,或者量化自己“在开源项目上的投入时间趋势”时,你会意识到,它正在帮你构建一份独一无二的、可查询的、私有的数字记忆档案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询