Engram:零摩擦行为数据采集与AI分析,打造个人效率外部大脑
1. 项目概述Engram一个为你自动记录行为模式的“外部大脑”如果你和我一样尝试过无数次用各种习惯追踪App、手写日记来记录自己的工作模式但最终都因为“记录”这个行为本身需要消耗意志力而放弃那么Engram的出现可能会彻底改变你的认知。这不是另一个需要你手动填写的待办清单也不是一个复杂的量化自我工具。Engram的核心哲学是真正的行为洞察应该源于无感的观察而非刻意的记录。作为一个长期与代码和项目打交道的开发者我深知“心流”状态的可贵也深知“时间都去哪儿了”的困惑。我们常常高估自己的专注时长低估了上下文切换带来的隐形损耗。传统的解决方案是“更努力地记录”但这恰恰把问题复杂化了——建立“记录的习惯”本身就是一个需要消耗认知资源的新习惯。Engram绕过了这个死循环。它像一个沉默的助手在后台静静地观察你在Git、终端、AI对话如Claude Code、Cursor、浏览器乃至各个应用中的真实活动然后在每晚你休息时将这些原始数据合成一份关于“你究竟是如何工作”的深度报告。想象一下周一早上你打开Claude Code准备继续上周未完成的认证重构。无需任何回忆和复述AI助手已经通过Engram昨晚写入的简报清楚地知道你已经改了哪些文件卡在了哪个具体的Token撤销逻辑上甚至记得你昨天离开时的一句嘀咕“这里可能需要检查回滚机制”。这种无缝的上下文延续将“每日站会”的成本降为零。更关键的是每周日你会收到一份用《原子习惯》框架解读的周报它会冷酷而精准地指出你在周三的产出是周二的9.2倍而原因可能仅仅是那天早上你屏蔽了所有通讯工具的前90分钟。Engram的价值在于它将“自我认知”从主观感受变成了可验证的数据事实。2. 核心设计思路构建一个零摩擦的“行为数据层”Engram的架构设计紧紧围绕一个核心原则零用户输入Zero Manual Input。它的目标不是成为另一个需要你服用的“数字药丸”而是成为你数字工作环境中一个自然存在的“感官层”。为了实现这一点其设计思路可以拆解为以下几个关键部分。2.1 多源无感数据采集从“做了什么”到“如何做的”大多数工具只关注结果如完成了几个任务而Engram关注过程和行为模式。它通过聚合多个数据源构建一个立体的行为画像Git仓库这是开发者的“事实记录”。Engram会扫描你本地所有的Git仓库收集提交频率、时间分布、活跃仓库数量、文件变更模式等。它不仅能告诉你“这周提交了329次”更能分析出“你的提交集中在两天其余五天近乎静默”这样的深度模式。Shell历史与终端活动你常用的命令序列、进入的目录、启动的服务都揭示了你的工作流和工具链。频繁的git status可能意味着焦虑或分支管理混乱特定的构建命令组合可能标志着一个特定项目的开始。AI会话日志Claude Code/Cursor这是你的“思考过程”的外部化。Engram会解析你与AI助手的对话提取讨论的主题、做出的技术决策、遇到的阻塞问题以及标记的待办事项。这是实现“无缝上下文传递”的关键。应用使用时长通过ActivityWatch或macOS脚本你真正在IDE、浏览器、通讯软件上花了多少时间理想中的“6小时深度工作”和现实中的“2小时实际编码”之间的差距在这里一目了然。浏览器历史与标签页研究性工作、文档查阅、问题排查的轨迹都被记录。这有助于关联“学习探索”与后续的“产出实现”。所有这些收集都在后台静默完成无需任何主动干预。数据在本地经过严格的脱敏处理如用正则表达式擦除可能的密钥、令牌确保隐私安全。2.2 基于AI的夜间合成从数据到洞察原始数据本身没有意义。Engram的核心魔法发生在每晚23:45可配置。它会将当天收集的所有数据发送给Claude AI如果已配置且在线进行合成分析。这个设计非常巧妙结构化输出AI不是生成一篇散文日记而是按照预设的模板将信息填充到几个核心的Markdown文件中。例如consciousness.md记录非显而易见的洞察和思维模型转变patterns.md更新行为模式weaknesses.md标记重复出现的问题。原子习惯框架周报会用詹姆斯·克利尔James Clear的《原子习惯》四大定律来解读你的数据。“使其显而易见”Make it Obvious——Engram自动让你看到模式“使其有吸引力”Make it Attractive——报告本身因充满个人化的洞察而有趣“使其简便易行”Make it Easy——零操作成本“使其令人愉悦”Make it Satisfying——看到长期行为历史的积累带来满足感。离线降级即使没有AI API比如在飞机上Engram也能基于规则引擎生成基础的数据摘要和报告保证核心功能不中断。这个夜间批处理模式符合“采集-分析-报告”的最佳实践不干扰日间工作又能提供晨间所需的全部上下文。2.3 双向桥接洞察如何赋能工作流数据洞察如果不能反哺实践就是空中楼阁。Engram通过两个关键桥接实现闭环桥接至AI工作流合成后的关键洞察和待办事项会被写入~/.claude/projects/目录下的特定位置。当你在新的一天启动Claude Code时它会自动读取这些文件从而实现跨会话的“记忆”继承。你不再需要说“昨天我们做到了哪里”AI已经知道了。engram智能代理在Claude Code的会话中你可以直接使用engram来查询你的“行为记忆”。例如engram 我上周二在做什么或engram 我以前遇到过这个错误吗。这相当于为你的AI助手配备了一个关于你工作历史的专属搜索引擎。这种设计使得Engram不仅仅是一个分析工具更是一个提升现有工具尤其是AI编程助手效能的“力量倍增器”。3. 实战部署与配置详解Engram的安装力求简洁但为了让它完美融入你的系统并稳定运行理解每一步背后的原理至关重要。以下是在macOS系统上的详细部署指南。3.1 环境准备与一键安装最快捷的方式是使用官方的一键安装脚本。打开终端执行以下命令curl -fsSL https://raw.githubusercontent.com/lessthanno/engram-agent/main/scripts/quickstart.sh | bash这个脚本会完成以下几件事克隆仓库将Engram的代码克隆到你的~/engram-agent目录。依赖检查确保你的系统有Python 3.10。macOS通常预装但脚本会验证版本。交互式配置询问你几个关键问题主要是你的“记忆仓库”路径一个用于存储所有分析报告的Git仓库路径默认为~/engram-memory以及是否配置Claude CLI用于AI合成。安装启动代理创建一个LaunchAgent~/Library/LaunchAgents/com.user.engram.plist让Engram能在后台定时运行默认每晚23:45并在用户登录时自启。注意在运行任何curl ... | bash命令前养成好习惯可以先curl查看脚本内容curl -fsSL URL确认其安全性。Engram是开源项目其安装脚本逻辑清晰主要操作是文件复制和LaunchAgent配置。安装完成后强烈建议运行验证脚本确保一切就绪bash ~/engram-agent/scripts/verify.sh这个脚本会检查关键目录是否存在、LaunchAgent是否加载、以及必要的可执行权限。3.2 核心配置解析让Engram真正理解你安装只是第一步配置才是让Engram发挥威力的关键。配置文件位于~/engram-agent/config.yaml。让我们深入几个核心配置项# ~/engram-agent/config.yaml 示例 paths: memory_repo: ~/my-memory # 你的“外部大脑”存储位置。建议用一个专用的Git仓库管理。 claude_context_dir: ~/.claude/projects # Claude Code读取上下文的目录 collection: sources: git: true shell: true claude_code: true # 需要指定Claude Code日志路径通常为 ~/Library/Logs/Claude/ cursor: true # 需要指定Cursor日志路径 apps: true # 依赖ActivityWatch或macOS screentime数据 browser: true # 依赖浏览器历史导出如Chrome的History文件 # 可以设置忽略的路径或关键词保护隐私 ignore_patterns: - **/node_modules/** - **/.git/** - password - api_key synthesis: enabled: true # 优先使用Claude CLI如果未安装则回退到直接调用API需配置API_KEY最后是离线模式 provider: claude_cli # 或 api, offline claude_model: claude-3-5-sonnet-20241022 # 控制分析的“粒度”和“风格” instructions: | 你是一个敏锐的行为分析师。请基于提供的每日数据以冷静、数据驱动的口吻识别模式、矛盾点和潜在杠杆点。避免空洞的鼓励聚焦于可操作的事实。 schedule: daily_synthesis_time: 23:45 # 每日合成时间 weekly_report_day: sun # 周报生成日期配置要点与经验memory_repo强烈建议将此目录初始化为一个Git仓库git init。这样你不仅有了行为记录还有了完整的版本历史可以回溯查看任何一天的分析。这也是“100%本地数据自主”理念的体现。数据源开关如果你暂时不想收集某些数据比如觉得浏览器历史过于敏感可以将其设为false。Engram会优雅地降级用已有数据进行分析。Claude集成这是获得高质量分析的关键。推荐先安装Claude CLI (brew install claude)然后通过claude auth登录。这样Engram就能以最稳定、低成本的方式调用Claude进行合成。如果使用API方式需在环境变量中设置ANTHROPIC_API_KEY。忽略模式务必仔细配置ignore_patterns加入包含敏感信息如密钥、密码、个人身份信息的目录和文件模式。Engram的脱敏逻辑是第二道防线主动排除是第一道。3.3 数据源集成实战Engram的强大源于多数据源但每个源都需要正确配置才能采集到数据。Git无需配置Engram会自动递归查找指定目录通常是家目录下的所有.git文件夹。确保你工作的项目都在它可扫描的路径下。ShellEngram会读取你的Shell历史文件如~/.zsh_history或~/.bash_history。确保你的Shell配置了足够大的历史记录保存。Claude Code / Cursor需要找到这些应用存储会话日志的路径。对于Claude Code路径通常是~/Library/Logs/Claude/。你需要在config.yaml中准确配置claude_code_log_path。Cursor的日志路径可能类似。首次配置后可以检查memory_repo中的raw/目录下是否出现了对应的日志文件以确认采集成功。应用使用时长 (Apps)推荐方案安装开源工具ActivityWatch。它是一个强大的跨平台时间追踪器。安装后Engram可以读取ActivityWatch的数据库通常位于~/Library/Application Support/activitywatch获取精确到秒的应用和窗口活动记录。备用方案使用macOS自带的screentime数据导出如果未来版本支持或简单的AppleScript脚本来记录前台应用。浏览器历史Engram支持从Chrome/Edge的SQLite历史文件中读取。你需要授权Engram访问~/Library/Application Support/Google/Chrome/Default/History这样的文件。由于浏览器可能正在使用该文件Engram通常会在浏览器关闭时或定时尝试复制一份快照来读取。一个常见的踩坑点权限问题。在macOS上从Terminal运行的脚本访问~/Library/Logs或Application Support下的某些文件可能会受到系统完整性保护SIP或隐私权限的限制。如果发现某个数据源没有数据首先检查配置文件中的路径是否正确然后检查终端是否有权限读取该路径。对于ActivityWatch确保其服务正在运行。4. 日常使用、查询与报告解读安装配置完成后Engram便开始默默工作。你的日常交互主要分为三种接收每日/每周报告、在AI会话中使用engram查询、以及通过命令行工具进行主动检索。4.1 理解你的每日处方与周报Engram的产出不是冰冷的数据堆砌而是具有强烈指导性的“洞察”。每日晨间简报当你启动终端时可能会看到Engram输出的简短提示或者你可以手动运行python3 ~/engram-agent/mind_sync.py --report来获取。它会给出“今日处方”Today‘s Prescription这是基于你昨日模式提出的一个具体、微小的行为建议。例如“保护前90分钟10:30前不开Slack。” 这直接对应《原子习惯》中的“执行意图”Implementation Intention将抽象目标转化为具体情境下的行动。每周行为报告每周日你会在memory_repo/reports/目录下找到一份名为week-YYYY-Www.md的Markdown文件。这份报告是精华所在通常包含焦点分数 (Focus Score)一个基于深度工作时段、上下文切换频率等计算的综合评分1-10分。不要过分纠结绝对值关注其变化趋势。模式检测 (Pattern Detected)这是Engram的“高光”功能。它会用算法找出与你基线行为显著不同的日子。比如原文中的“4月13日提交量是日均的9.2倍”。报告会提示你“你拥有一个9倍效率日但你不知道原因。这就是问题所在。” 并建议你进行简单的归因记录如“两行日志”从而找到触发高效状态的“开关”。时间现实 (Time Reality)对比你“计划”的深度工作时间和“实际”的深度工作时间。这个差距是提升时间感知力的起点。开放循环 (Open Loops)从你的AI会话和笔记中提取的、已开始但未结束的任务线程。帮助你可视化“认知负债”。唯一要事 (One Thing)基于本周数据提出下一周最应该关注的一个杠杆点。解读报告的心得不要试图在第一周就做出巨大改变。首先抱着好奇的心态观察接受数据呈现的事实即使它与你感觉中的自己不符。其次关注“模式”而非“单点”。一两天的高产或低效可能是偶然但连续几周都显示“会议日产出减半”这就是一个需要系统性解决的信号。最后利用“每日处方”进行微实验。如果处方是“上午第一件事先写最难代码”就尝试一周看下周报告中的“焦点分数”和“深度工作时间”是否有改善。4.2 掌握engram查询的魔法在Claude Code或其他集成的AI编辑器会话中engram是你的行为记忆搜索引擎。基础查询engram What was I working on last Tuesday?我上周二在做什么—— 快速回顾上下文。engram What are my open tasks for project X?项目X我有哪些开放任务—— 聚焦特定项目。engram When am I most productive this month?我这个月什么时候效率最高—— 寻找最佳状态时段。高级查询问题诊断engram Have I seen this error “ConnectionTimeout” before?我以前见过“连接超时”这个错误吗—— Engram会在你的会话日志、终端历史甚至代码提交信息中搜索告诉你上次遇到是什么时候、在什么上下文、以及可能的解决记录。engram What’s my usual output after a context switch?上下文切换后我的通常产出如何—— 帮你量化切换成本。模式询问engram What patterns are emerging in my git commits?我的Git提交正在出现什么模式—— 获得关于提交频率、时间、规模的洞察。engram Compare my focus score this week to last week.对比我本周和上周的焦点分数。使用技巧问题问得越具体回答越精准。与其问“我效率怎么样”不如问“我这周在Y项目上的深度工作时间和上周比有什么变化”。engram的背后是检索你本地的记忆文件因此它的“知识”完全来源于Engram已经为你分析和存储的内容。4.3 命令行工具与高级操作除了自动化和AI集成Engram也提供了实用的命令行接口CLI。生成即时报告python3 ~/engram-agent/mind_sync.py --report。这会在终端生成一个格式精美的快照包含今日处方、开放任务和本周摘要无需等待AI合成速度极快。手动触发夜间合成python3 ~/engram-agent/mind_sync.py --sync。如果你在非预定时间如下午进行了一次重要的工作总结可以手动运行此命令立即生成截至当前的分析并更新记忆文件。数据健康检查bash ~/engram-agent/scripts/verify.sh。当你觉得数据不对劲时运行此脚本检查所有数据源连接和后台服务状态。导出与分享python3 ~/engram-agent/mind_sync.py --share。这会生成一个美化后的、可分享的周报摘要通常是文本或简单图片方便你在不暴露全部细节的情况下在社区如GitHub Discussions分享有趣的发现。5. 常见问题排查与进阶技巧即使设计再精良在实际使用中也可能遇到问题。以下是一些常见情况的排查思路和资深用户积累的技巧。5.1 安装与运行故障排查问题现象可能原因解决方案一键安装脚本执行失败网络问题、Git未安装、权限不足1. 检查网络连接。2. 尝试分步执行先git clone仓库再进入目录运行bash scripts/install.sh。3. 确保对/usr/local等目录有写入权限通常需要。验证脚本 (verify.sh) 报错LaunchAgent未加载、Python路径错误、内存仓库路径不存在1. 运行launchctl list | grep engram查看服务状态。使用launchctl load ~/Library/LaunchAgents/com.user.engram.plist手动加载。2. 确认which python3指向3.10版本。3. 检查config.yaml中memory_repo路径是否存在或手动创建。夜间合成没有发生memory_repo无新文件LaunchAgent定时任务未触发、Claude API调用失败、合成进程出错1. 查看系统日志log show --predicate subsystem “com.user.engram” --last 1d。2. 检查~/engram-agent/logs/下的日志文件查看错误信息。3. 手动运行--sync测试合成流程看是否报错如API密钥无效。engram在Claude Code中无响应Claude上下文目录路径配置错误、记忆文件格式问题、Claude Code版本过旧1. 确认config.yaml中claude_context_dir路径正是Claude Code读取项目上下文的目录。2. 检查memory_repo中claude/目录下的文件是否为Claude可读的格式。3. 确保Claude Code已更新到支持自定义上下文注入的版本。5.2 数据采集与隐私平衡技巧敏感信息泄露担忧这是最重要的顾虑。Engram的脱敏逻辑在src/scrubber.py中。它使用正则表达式匹配并替换常见的密钥、令牌模式。但这不是万无一失的。最佳实践是充分利用ignore_patterns将包含敏感配置、密码管理器的目录彻底排除在扫描之外。使用环境变量所有密钥、密码都应通过环境变量管理Engram不会采集环境变量。定期审计memory_repo偶尔用grep -r “password\|key\|token” ~/your-memory-repo/快速扫描一下确认没有漏网之鱼。本地存储就是一切记住所有数据都在你本地。不联网不外传。这是最大的安全保障。数据量过大导致分析缓慢如果运行数月后发现夜间合成时间变长。清理旧数据Engram本身不自动清理原始数据。可以定期如每季度归档或清理memory_repo/raw/目录下过于陈旧的日志文件。分析文件如patterns.md是累积的通常无需清理。调整AI分析指令在config.yaml的synthesis.instructions中可以要求AI“仅总结与前一周相比的新变化或显著模式”以减少输入令牌数加快速度并降低成本。5.3 最大化Engram价值的进阶心法给Engram“喂”更好的数据你的行为数据质量决定洞察质量。有意识地在一段时间内比如上午进行“单任务深度工作”Engram就能更清晰地捕捉到这种模式并与你碎片化工作的日子形成对比从而在报告中给出更强烈的信号。与“记忆仓库”互动不要只读报告。把你的memory_repo当作一个第二大脑。当你从周报中获得一个启发比如“周三效率高是因为没开会”可以手动在consciousness.md里追加一条笔记“假设无会议晨间是高效关键。实验下周尝试屏蔽周二上午。” 这样这条假设也会成为未来AI分析的一部分。创建个人化的“模式触发器”Engram v2路线图中有“自定义触发器”。在此之前你可以利用现有文件手动创建。例如如果你怀疑“喝咖啡后两小时”是高效期可以在每天那个时间段后手动在终端执行一个简单的命令在记忆仓库中留下一个标记。Engram虽然不会自动识别这个标记但你可以通过查看原始时间数据与标记的相关性来验证假设。结合其他工具形成系统Engram是出色的“观察者”和“分析者”但它不直接“执行”。将它的洞察输入到你的任务管理系统如Todoist、日历 blocking 工具如Fantastical或习惯执行应用如Streaks中。例如将“每日处方”设为Todoist的每日重复任务或将“最佳深度工作时间”在日历上固定为不可预约时段。Engram不是一个安装即忘的“银弹”。它更像是一面镜子一面极度诚实、数据驱动的镜子。起初照镜子可能会让你感到不适——原来我并没有自己想象中那么专注原来我的高效如此依赖于某些未被察觉的条件。但正是这种不适才是改变的起点。通过它你不再依赖于模糊的感觉和破碎的记忆而是基于自己产生的、无可辩驳的行为数据做出微小而精准的调整。这或许就是现代知识工作者所能拥有的最理性的自我进化工具。