AI编程助手数据聚合分析工具Agentlytics:本地化统一管理与团队协作
1. 项目概述为什么我们需要一个统一的AI编程助手分析工具如果你和我一样每天在Cursor、Windsurf、Claude Code、VS Code Copilot这些AI编程助手之间反复横跳那你一定也深有同感我们的对话历史、代码片段、甚至那些灵光一现的解决方案全都散落在不同的编辑器里像一个个信息孤岛。我经常遇到这种情况上周在Cursor里和AI讨论了一个复杂的API设计这周在Claude Code里想参考一下却死活想不起来具体是怎么聊的只能重新问一遍。更别提想看看自己到底在AI上花了多少钱、哪个编辑器用起来最顺手、或者团队里其他人最近在用什么模型解决类似问题了——这些数据要么没有要么得手动去每个编辑器里扒拉费时费力。这就是Agentlytics要解决的问题。它不是一个云端SaaS服务而是一个100%运行在你本地的命令行工具。你只需要一条命令它就能自动扫描你电脑上所有主流AI编程助手的历史会话数据把它们统一到一个美观、功能强大的仪表盘里。所有数据都在你本地处理不上传任何云端彻底打消隐私顾虑。无论你是独立开发者想优化自己的AI使用习惯还是团队技术负责人想了解团队的AI辅助编程现状这个工具都能给你提供一个前所未有的全局视角。2. 核心设计思路本地优先与无侵入式数据采集Agentlytics的设计哲学非常明确这也是它最吸引我的地方本地优先、无侵入、零配置。这意味着它不需要你修改任何编辑器的设置不需要你安装任何插件更不需要你把数据托付给第三方。它的工作原理是直接读取各个编辑器在本地磁盘上存储的会话日志文件。2.1 数据来源与适配器模式每个编辑器存储AI会话数据的方式都不一样。Cursor可能把数据存在~/Library/Application Support/Cursor/User/globalStorage下的某个SQLite数据库里VS Code Copilot的数据可能在~/.vscode的扩展目录中而Claude Code又有自己的一套格式。Agentlytics通过一个精巧的“编辑器适配器”editors/*.js架构来解决这个问题。每个适配器都是一个独立的模块专门负责与一种特定的编辑器交互。它的任务很清晰探测检查该编辑器是否安装在当前系统上通过查找特定的应用路径或配置文件。定位找到该编辑器存储会话数据的具体文件路径。解析理解该文件的格式可能是JSON、SQLite、或某种专有格式并将原始数据转换为Agentlytics内部统一的“会话”Chat和“消息”Message数据模型。这种设计的好处是扩展性极强。社区想要支持一个新的AI编辑器只需要按照接口规范编写一个新的适配器文件放入editors/目录即可核心系统完全不需要改动。项目目前已经支持了16种编辑器从主流的Cursor、Windsurf到一些新兴的如Zed、OpenCode覆盖面相当广。2.2 数据处理流水线从原始日志到分析仪表盘数据采集只是第一步。Agentlytics背后有一套高效的数据处理流水线确保海量会话数据能被快速分析和呈现。原始编辑器文件 - 各编辑器适配器解析 - 统一数据模型 - SQLite缓存数据库 - Express REST API - React前端仪表盘解析与标准化各适配器读取原始文件将所有会话、消息、工具调用、模型名称、token数量等信息映射到一套预定义的数据模型字段中。这步是关键它把五花八门的数据格式变成了“普通话”。缓存与聚合标准化后的数据会被写入一个本地的SQLite数据库默认位于~/.agentlytics/cache.db。SQLite在这里扮演了数据仓库的角色。Agentlytics并不是每次打开仪表盘都重新扫描所有编辑器文件那样太慢了。它会先检查缓存的新鲜度只增量更新有变动的数据。同时大量的聚合计算如按日统计消息数、按模型统计token消耗也是在数据库层面通过SQL查询完成的效率远高于在内存中处理。API服务层一个轻量的Node.js Express服务器启动提供一系列只读的RESTful API端点。例如GET /api/overview返回仪表盘的总览数据GET /api/chats提供分页的会话列表GET /api/deep-analytics则提供工具和模型的深度分析。前端的所有数据都通过调用这些API获得。前端可视化一个React单页面应用SPA作为用户界面通过调用上述API获取数据并利用图表库项目本身未指明但通常是Recharts或类似方案渲染成交互式的图表和列表。整个界面设计得非常开发者友好深色主题信息密度高。这个架构保证了工具的核心优势快速依赖缓存、灵活前后端分离API清晰、安全数据不出本地。3. 从安装到洞察完整实操指南理论说得再多不如动手跑一遍。下面我以macOS系统为例带你完整走一遍从安装到深度使用的流程并分享一些我踩过坑才得到的经验。3.1 环境准备与一键启动Agentlytics对运行环境的要求很宽松。你需要操作系统目前主要支持macOS。Linux和Windows支持已在路线图中但可能需要社区贡献来适配不同的文件路径。运行时Node.js (版本 20.19 或 22.12)。这是运行完整仪表盘模式所必需的。安装其实根本不需要“安装”。得益于npxNode Package Runner你可以直接运行远程的npm包。打开你的终端输入以下命令npx agentlytics就这么简单。第一次运行时会自动下载所需的依赖包然后立即开始扫描你的系统。你会看到终端里飞快地闪过检测到的编辑器列表和会话数量(● ●) [● ●] Agentlytics {● ●} ● ● Unified analytics for your AI coding agents Looking for AI coding agents... ✓ Cursor 498 sessions ✓ Windsurf 20 sessions ✓ Claude Code 6 sessions ✓ VS Code 23 sessions ...and 6 more (● ●) [● ●] {● ●} ● ● ✓ 691 analyzed, 360 cached (27.1s) ✓ Dashboard ready at http://localhost:4637扫描完成后它会自动在浏览器中打开http://localhost:4637你的专属AI编程分析仪表盘就呈现在眼前了。实操心得首次扫描与缓存机制第一次运行扫描时间可能会稍长几十秒到几分钟取决于你的会话历史总量。这是因为它在建立完整的SQLite缓存。但之后的启动会变得极快因为工具会优先读取缓存并只同步新增或修改的会话。如果你强制想重新全量扫描可以在启动命令后加上--no-cache参数或者直接在仪表盘页面寻找“刷新数据”的按钮通常对应调用/api/refetch端点。3.2 仪表盘核心功能深度解析登录仪表盘后你会看到一个信息量巨大的界面。我们分区域来解读3.2.1 总览Overview与关键指标KPIs仪表盘顶部通常是一排关键指标卡片这是你AI编程活动的“健康度”速览。总会话数你和所有AI助手对话的总次数。这个数字能直观反映你对AI的依赖程度。总消息数所有会话中消息你提问AI回复的总和。平均每个会话的消息数可以反映对话的深度。总Token消耗估算这是非常实用的一个功能。Agentlytics会根据每条消息的token数如果编辑器日志提供了的话和对应的模型定价例如GPT-4 Turbo、Claude 3.5 Sonnet等估算出你的总花费。虽然对于使用订阅制如GitHub Copilot的编辑器是固定费用但对于按Token付费的模型这个估算能帮你警惕那些“不知不觉”产生的高消费会话。项目数AI会话所涉及的不同代码项目/文件夹的数量。可以看出你的AI助手是集中用于少数项目还是分散在很多尝试性的小项目中。使用的编辑器数量你实际活跃使用的AI编辑器种类。像我同时用Cursor和Claude Code这里就会显示2。3.2.2 活动热力图与模式分析总览下方往往是一个类似GitHub贡献图的活动热力图按日显示你的AI会话频率。这能帮你一眼看出活跃周期你是在周末更依赖AI还是工作日是连续多天高强度使用还是间歇性的项目冲刺期热力图上颜色最深的那几天很可能对应着你正在攻坚某个重要功能或项目。回头结合“项目”视图能精准复盘那段时间的思考过程。工具启用时间你可以清楚地看到从哪一天开始你频繁使用某个新的编辑器比如Windsurf从而评估这个新工具是否真正融入了你的工作流。3.2.3 编辑器对比与效率分析这是Agentlytics的杀手锏功能之一。它会用一个环形图或条形图展示各个编辑器在你总会话/消息/Token中的占比。不仅仅是使用量更重要的是有些视图可能会尝试计算“效率比”。例如平均每个会话在编辑器A中解决了多少行代码的修改在编辑器B中又需要多少轮对话这个功能需要编辑器日志提供更细粒度的代码变更数据属于进阶分析。成本对比结合Token估算你可以清晰地看到虽然你在Cursor上会话最多但可能因为用了更多便宜的GPT-3.5模型总花费反而低于会话数少但全用Claude 3.5 Sonnet的Claude Code。这直接为你的订阅和模型选择提供了数据决策依据。3.2.4 会话列表与全文搜索仪表盘的主体部分通常是一个可按时间、编辑器、项目、模型过滤的会话列表。点击任何一个会话可以展开侧边栏看到完整的、带语法高亮的对话历史。搜索功能在顶部搜索框你可以输入关键词例如“如何实现JWT认证”、“Python异步爬虫”。Agentlytics会跨所有编辑器搜索你的历史会话消息瞬间找到当时AI给出的解决方案。这彻底解决了文章开头提到的“信息孤岛”问题让你的AI对话历史变成了一个可检索的私人知识库。上下文回顾重读过去的对话不仅能找回代码片段更能回顾当时的解题思路。AI是如何一步步引导你分解问题的它提出了哪些你没想到的方案这种复盘对提升你自身解决问题的能力至关重要。3.2.5 项目视图与深度分析“项目”视图将数据按代码仓库或工作目录进行聚合。你可以看到每个项目的AI使用强度哪个项目最依赖AI辅助项目内常用的模型和工具在前端项目里你是不是更常用Claude来写CSS而在后端项目里更常用GPT-4来设计API钻取查看点击某个项目可以进一步查看该项目下的所有会话列表进行针对性分析。 “深度分析”视图则提供了更技术性的洞察例如工具调用热力图你最常让AI调用哪些工具是文件读写、终端命令还是网络搜索这反映了你的工作模式。模型分布在不同类型的任务中你下意识选择的模型是否有规律可循3.3 高级功能Relay模式与团队协作对于团队而言Agentlytics的Relay中继模式是一个革命性的功能。它允许团队成员在本地、安全地共享AI会话的上下文。3.3.1 如何搭建团队共享中继假设你是团队负责人想在内部搭建一个共享知识库。在一台大家都能访问的机器比如一台内网服务器甚至就是你开着的笔记本电脑上启动Relay服务器npx agentlytics --relay为了安全强烈建议设置密码RELAY_PASSWORDour_team_secret npx agentlytics --relay启动后终端会显示Relay服务器的地址如http://192.168.1.100:4638和一个用于队友连接的加入命令。将加入命令和密码告知团队成员。每个成员在自己的电脑上进入某个项目目录运行cd /path/to/our-project RELAY_PASSWORDour_team_secret npx agentlytics --join 192.168.1.100:4638运行后工具会提示你选择当前目录下的哪些项目会话愿意共享到中继。选择后你的本地Agentlytics客户端会每30秒自动同步所选项目的会话数据到Relay服务器。3.3.2 MCP集成让AI助手也能访问团队知识库这是最精彩的部分。Relay服务器同时暴露了一个MCPModel Context Protocol服务器端点例如http://192.168.1.100:4638/mcp。 你可以将这个端点配置到你或你团队成员的AI编程助手如Cursor、Claude Code中。配置完成后当你在AI对话中提问时你就可以这样问“我们团队之前在‘用户认证’项目里关于OAuth2.0流程是怎么讨论的” 或者 “Alice上周在解决‘数据库连接池泄漏’问题时AI给了什么建议”你的AI助手会通过MCP协议去查询Relay服务器服务器则会搜索所有团队成员共享的会话历史将相关的对话上下文返回给AIAI再基于这些真实的、来自团队的历史对话来回答你的问题。这相当于为你的团队AI赋予了一个“集体记忆”极大地提升了知识复用和问题解决的效率。注意事项安全与隐私Relay模式设计用于可信的本地网络。虽然提供了密码保护但它本身不提供强加密的端到端传输。因此请务必在安全的内部网络中使用并妥善保管RELAY_PASSWORD。共享时也要注意每个成员只选择分享适当的项目避免敏感信息泄露。3.4 轻量级选择Deno沙盒扫描如果你只需要一个快速的统计报告不想启动完整的Node.js服务和React前端Agentlytics提供了基于Deno的“沙盒版”。它几乎零依赖权限要求极低。deno run --allow-read --allow-env https://raw.githubusercontent.com/f/agentlytics/master/mod.ts这条命令会直接从GitHub拉取最新的脚本在严格的沙盒权限下只允许读文件和读环境变量运行扫描你的编辑器并直接在终端输出一份汇总报告。它不写SQLite缓存不启动服务器纯粹是一个只读的检查工具。对于自动化脚本或只是想看一眼统计数据的场景非常方便。加上--json参数就能输出结构化的JSON数据方便集成到其他工具中。4. 常见问题与排查技巧实录在实际使用和向团队推广Agentlytics的过程中我遇到并解决了一些典型问题。这里记录下来希望能帮你绕过这些坑。4.1 扫描不到某个编辑器的会话数据可能原因1编辑器未运行。对于Windsurf、Windsurf Next和Antigravity项目明确说明需要应用程序本身正在运行。因为它们的数据是通过ConnectRPC从语言服务器进程获取的而不是直接读取磁盘文件。请确保在扫描前打开了这些编辑器。可能原因2非标准安装路径。Agentlytics的适配器基于常见的macOS应用安装路径如/Applications或~/Applications和标准的数据存储目录如~/Library/Application Support/来查找。如果你把编辑器安装在了其他自定义位置或者使用了MacPorts/Homebrew的某些非标准版本可能会导致探测失败。排查步骤首先确认编辑器是否有活跃的AI会话历史。新建一个会话并保存。尝试手动寻找该编辑器的数据存储目录。可以在网上搜索“[编辑器名]data directory macos”。如果找到了路径可以检查Agentlytics项目中对应的适配器文件如editors/cursor.js看其getChats函数中的路径定义对比是否一致。这是一个为开源项目做贡献的好机会可以提交PR修复路径。4.2 Token成本估算不准根本原因成本估算严重依赖于两个数据消息的Token数和对应模型的每千Token定价。Token数并非所有编辑器都在日志中记录每条消息的精确Token数。有些可能只记录大概长度有些可能完全不记录。Agentlytics的适配器会尽力从日志中提取如果提取不到可能会使用一个基于字符数的粗略估算公式这必然会产生误差。模型定价AI模型的价格是变动的而且不同供应商OpenAI, Anthropic, Google价格不同。Agentlytics内部需要维护一个模型名称到当前市场价格的映射表。如果它没有识别出你使用的某个新模型或私有模型或者价格表未及时更新估算就会偏差。应对策略将成本估算视为一个相对参考值和趋势指标而非绝对精确的账单。它的核心价值在于帮你对比“用编辑器A比用编辑器B大概贵了多少”、“这个月比上个月的使用量增长了多少”以及定位“那个消耗了异常多Token的昂贵会话是哪一次”。4.3 Relay连接失败或同步中断网络问题确保运行Relay服务器的机器和所有Join客户端在同一局域网下且防火墙没有阻止4638端口的TCP连接。可以尝试用ping和telnet host 4638命令测试基础连通性。密码不一致这是最常见的原因。确保服务器启动时设置的RELAY_PASSWORD环境变量与所有客户端连接时使用的完全一致包括大小写。客户端项目路径问题Join客户端需要在你想要共享的项目根目录下运行。它依靠当前目录来识别项目。如果你在错误的目录下运行可能无法正确关联和共享会话。查看日志无论是服务器端还是客户端在启动命令后添加--verbose或-v参数如果支持通常能输出更详细的连接和同步日志帮助定位问题。4.4 仪表盘加载缓慢或数据不更新缓存机制首次加载后前端大量数据来自缓存。如果你在编辑器里进行了新的对话但仪表盘没显示可以尝试手动触发刷新。通常仪表盘上会有一个“刷新”或“重新扫描”按钮其背后是调用GET /api/refetch端点。点击它会触发后台重新扫描所有编辑器并更新缓存。浏览器缓存有时前端资源JS、CSS会被浏览器缓存。可以尝试强制刷新页面CmdShiftR / CtrlShiftR。会话数量巨大如果你有上万条会话某些聚合查询可能会变慢。考虑在Agentlytics的配置中如果未来提供设置更长的扫描间隔或者只关注最近一段时间如最近90天的数据。目前优化大数据量性能也是开源社区可以贡献的方向。4.5 如何支持新的AI编程编辑器这是Agentlytics生态扩展的核心。如果你心仪的编辑器不在支持列表里可以尝试自己添加支持。探索数据存储首先找到该编辑器在本地存储会话数据的位置和格式。macOS上通常使用lsof命令或Console.app查看应用日志寻找文件读写路径也可以直接在~/Library/Application Support/,~/Library/Caches/,~/.config/等目录下搜索编辑器名称。理解数据格式用文本编辑器或数据库工具打开找到的文件分析其结构。是JSON、SQLite还是其他二进制格式编写适配器参考项目中editors/目录下已有的适配器如cursor.js模仿其结构编写一个新文件。核心是实现detect,getChats等方法将原始数据转换为标准格式。测试与提交编写完成后在本地测试扫描功能是否正常然后向项目的GitHub仓库提交Pull Request。详细的开发指南可以参考项目中的CONTRIBUTING.md文件。Agentlytics解决了一个非常具体但普遍存在的痛点——AI编程助手数据的碎片化。它用极简的方式一条命令实现了强大的聚合分析能力并且坚守了本地优先的原则让人用得放心。无论是个人用于复盘和优化自己的AI使用习惯还是团队用于构建可检索的集体编程智慧它都提供了一个优雅的起点。工具本身也在快速迭代路线图中的离线Windsurf支持、LLM驱动的深度洞察分析都让人充满期待。如果你也厌倦了在多个AI助手之间迷失不妨现在就打开终端输入npx agentlytics开始掌控你自己的AI编程数据流。