1. 项目概述:从AI编码助手到结构化知识库
如果你和我一样,每天花大量时间与Claude Code、Cursor、GitHub Copilot这些AI编码助手“对话”,那你一定有过这样的困惑:聊了这么多,改了几十次需求,最后到底沉淀下了什么?那些在对话中一闪而过的技术决策、踩过的坑、以及灵光一现的提示词(Prompt)优化,是不是都随着聊天窗口的关闭而消失了?我们投入了时间和API费用,却很难系统性地回答:我到底从AI那里学到了什么?哪些提示词是高效的?我的工作流里有哪些重复的摩擦点?
这就是code-insights要解决的核心问题。它不是一个简单的日志记录器,而是一个运行在你本地的“AI编码会话分析师”。它的工作流程非常清晰:自动发现并解析你本地各种AI编码工具(Claude Code, Cursor, Codex CLI等)产生的会话日志,然后利用大语言模型(LLM)对这些原始、杂乱的对话记录进行深度分析,从中提炼出结构化的知识——技术决策及其权衡、学到的经验教训及其根本原因、提示词的质量评分与优化建议。最后,所有分析结果都存储在你本地的一个SQLite数据库中,你可以通过终端命令查看统计数据,或者启动一个内置的Web仪表盘进行可视化探索。
它的核心价值在于“转化”:将一次性的、线性的对话,转化为可检索、可分析、可复用的知识资产。这不仅仅是回顾,更是为了让你下一次与AI协作时更高效、更聪明。对于任何希望将AI从“临时助手”升级为“长期伙伴”的开发者来说,这都是一件值得深入研究的工具。
2. 核心设计理念与架构拆解
2.1 为什么是“本地优先”与“无服务”架构?
在数据隐私日益重要的今天,code-insights选择了最让我安心的技术路线:纯本地化。所有数据,从原始的会话日志到分析后的结构化洞察,都存储在你个人电脑的~/.code-insights/data.db这个SQLite文件里。没有用户账户,没有云端同步,没有数据离开你的机器。这意味着:
- 绝对的数据主权:你的所有编码思路、可能的代码片段、与AI讨论的未公开项目细节,都完全由你掌控。
- 离线可用性:即使没有网络,你依然可以查看历史分析结果,进行本地模式识别。
- 零供应商锁定:工具的价值完全体现在本地处理能力上,不存在服务突然关闭或政策变更导致数据丢失的风险。
这种选择也带来了技术挑战:所有复杂的分析逻辑都必须能在终端用户的机器上高效运行。项目通过模块化的CLI工具和轻量级本地服务器(Hono + React)完美解决了这个问题,将计算负担留在本地,同时提供了不输云端工具的交互体验。
2.2 多工具支持背后的统一抽象层
支持Claude Code、Cursor、Codex CLI、Copilot CLI和VS Code Copilot Chat这五种工具,听起来复杂,但code-insights通过“提供者(Provider)”模式优雅地实现了这一点。每种工具都有其独特的日志格式和存储路径:
- Claude Code:
~/.claude/projects/**/*.jsonl - Cursor: 访问其工作区存储的SQLite数据库(路径因操作系统而异)。
- Codex CLI:
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
项目为每种工具实现了一个独立的“提供者”模块。这些模块的职责是:
- 发现(Discovery):按照已知的路径模式去扫描和定位会话文件。
- 解析(Parsing):将工具特有的JSONL、SQLite或其他格式,解析成
code-insights内部定义的一套统一的“会话(Session)”数据模型。 - 提取(Extraction):从原始数据中提取出关键元数据,如时间戳、使用的模型、项目路径、对话轮次、Token消耗等。
这个设计非常巧妙。作为用户,你无需关心这些差异,只需执行code-insights sync,它就会自动调用所有已安装工具的提供者,完成数据的统一采集和入库。这种可插拔的架构也使得未来支持新的AI工具(如Windsurf、Bloop等)变得相对容易。
2.3 分析引擎:从对话到洞察的“炼金术”
这是code-insights最核心、也最体现其智慧的部分。仅仅存储对话历史是远远不够的,真正的价值在于理解这些对话。项目通过精心设计的LLM提示工程(Prompt Engineering),将非结构化的对话文本“蒸馏”成以下几类结构化洞察:
- 决策(Decisions):识别出你在会话中做出的关键技术选择。例如,“决定使用
Map而不是Object来存储动态键值对”。更重要的是,它会尝试分析出这个决策背后的权衡(Trade-offs)(如“Map提供了更好的迭代性能和键值类型灵活性,但牺牲了极简JSON序列化的便利性”)以及当时考虑的替代方案(Alternatives)。 - 学习(Learnings):捕捉你从AI的回复或自身实践中获得的新知识。例如,“了解了Node.js中
fs.promisesAPI与回调API的性能差异”。它会进一步追问根本原因(Root Cause),帮你把点状的知识连接成线(如“因为阅读了AI提供的Node.js官方文档链接,对比了基准测试”)。 - 提示词质量(Prompt Quality):这是提升AI协作效率的关键。系统会从五个维度对你在会话中使用的提示词进行评分:
- 清晰度(Clarity):意图是否明确无歧义?
- 上下文(Context):是否提供了足够的背景信息(如代码片段、错误信息)?
- 约束(Constraints):是否明确了要求或限制(如“不使用第三方库”)?
- 范围(Scope):问题是否聚焦,还是过于宽泛?
- 可操作性(Actionability):AI是否能直接基于此提示采取行动? 每个维度不仅给出分数,还会生成**“之前/之后(Before/After)”** 的优化建议。例如,它可能会指出:“你的初始提示‘优化这个函数’范围太广。优化后的提示应为:‘分析以下
calculateTotal函数的性能瓶颈,重点检查循环内的parseInt调用,并提供使用Number()或位运算的优化方案,要求保持代码可读性。’”
所有这些分析工作,都通过调用LLM API(或本地Ollama)来完成。code-insights充当了一个智能的“提问者”,向LLM提出一系列结构化的问题,并将回答解析填充到数据库的相应字段中。
3. 核心功能深度体验与实操指南
3.1 零成本入门:为Claude Code用户准备的“自动分析钩子”
如果你是Claude Code用户,那么上手code-insights的体验堪称无缝。它提供了一个革命性的功能:install-hook。
原理是什么?Claude Code在本地存储会话日志时,code-insights通过安装一个“钩子”(Hook),能够监听会话的结束事件。一旦你完成一次Claude Code对话并关闭窗口,这个钩子就会自动触发,执行两个动作:
- 同步(Sync):立刻将刚结束的会话日志导入到
code-insights的数据库中。 - 分析(Analyze):调用你配置的LLM(默认就是你正在使用的Claude API),对这场新鲜出炉的对话进行即时分析。
如何操作?
# 安装CLI工具后,只需一行命令 code-insights install-hook执行后,钩子就安装好了。从此以后,你的每一次Claude Code会话都会在后台被自动分析,完全无需手动干预。分析消耗的API费用,直接计入你的Claude订阅中,对你而言是零额外成本(因为本来对话就已经消耗了Token,分析只是对已有对话内容的再处理)。
注意:安装钩子可能需要终端具有特定的文件系统权限,因为它需要在Claude Code的配置目录中写入监听脚本。在macOS/Linux上,如果遇到权限错误,可能需要使用
sudo,但务必先确认脚本来源可信。Windows用户可能需要以管理员身份运行终端。
3.2 本地大模型集成:拥抱Ollama的完全免费方案
对于不想使用商业API或极度注重隐私的用户,code-insights提供了与 Ollama 的深度集成。Ollama是一个在本地运行大模型(如Llama 3、Mistral、CodeLlama)的出色工具。
配置流程:
- 安装并运行Ollama:从官网下载安装,并确保Ollama服务在后台运行。
- 拉取模型:选择一个适合代码分析和总结的模型。官方推荐
llama3.3,它在逻辑分析和指令跟随上表现均衡。ollama pull llama3.3 - 运行
code-insights:就这么简单!CLI工具会自动检测到本地运行的Ollama服务,并将其作为默认的LLM提供者。npx @code-insights/cli # 或 code-insights
实操心得:
- 性能权衡:本地模型的分析速度取决于你的硬件(尤其是GPU)。对于较长的会话,分析可能需要几十秒到几分钟。但这换来的是绝对的隐私和零费用。
- 模型选择:如果硬件允许,
llama3.3:70b或codellama:70b等更大参数模型在理解复杂技术对话和生成精准洞察方面会表现更好。你可以通过code-insights config llm命令切换Ollama中的不同模型。 - 内存管理:运行大型本地模型会占用大量内存。在进行分析时,建议关闭其他不必要的内存密集型应用。
3.3 终端与仪表盘:两种数据消费界面
code-insights提供了两种互补的交互方式,适应不同场景。
1. 终端分析(CLI Stats):快速获取全局脉搏当你只想快速了解近期概况,或者在没有GUI的服务器环境下,终端命令是你的最佳选择。
# 查看过去7天的核心数据概览 code-insights stats这条命令会输出一个简洁的文本仪表盘,通常包括:
- 会话总数、总时长、Token消耗。
- 按项目活跃度排序。
- 一个小型的ASCII字符活动热力图,直观显示你哪几天与AI协作最频繁。
- 模型使用分布。
2. Web仪表盘(Dashboard):深度探索与可视化对于深度复盘和模式发现,内置的Web仪表盘强大得多。
# 启动本地服务器并打开浏览器 code-insights # 或仅启动服务器 code-insights dashboard仪表盘默认在http://localhost:7890打开,主要功能模块有:
- 会话列表与详情:按时间线浏览所有会话,点击任一会话可查看完整的分析结果,包括提取的决策、学习、提示词质量评分和AI生成的会话摘要。
- 模式识别(Patterns):这是核心价值所在。系统会定期(例如每周)对所有会话进行“反思(Reflect)”,运行一个更高级的LLM分析,旨在发现跨会话的规律。
- 摩擦点(Friction Points):你经常在哪些类型的问题上反复纠结、需要多轮对话才能解决?例如,“在配置Webpack与Babel的集成时频繁出现路径解析错误”。
- 有效模式(Effective Patterns):哪些提示词结构或协作方式总能高效地得到好结果?例如,“先让AI生成一个函数签名和JSDoc,再填充实现细节,成功率很高”。
- 生成规则(Generated Rules):基于有效模式,系统可以自动生成供
CLAUDE.md或.cursorrules文件使用的规则片段,让你能把成功经验固化下来。
- AI流畅度评分(AI Fluency Score):一个有趣的综合指标,它基于你的提示词质量、会话效率、学习收获等维度,生成一个可视化的“编码指纹”,让你直观了解自己与AI协作的熟练程度。
- 分析与成本追踪:通过图表展示你的活动趋势、各项目的Token成本分布、不同模型的使用比例等,对于管理AI预算非常有帮助。
4. 高级使用技巧与深度集成方案
4.1 精细化同步与按需分析
默认的code-insights sync会扫描所有支持的工具。但有时你可能需要更精细的控制。
# 只同步来自Cursor的会话 code-insights sync --source cursor # 同步后,立即对最新同步的会话进行分析 code-insights sync && code-insights analyze --recent # 强制重新分析某个特定会话(例如在更换了更强力的LLM模型后) code-insights analyze --session-id <your-session-id>--source参数在你同时使用多个工具,但只想针对某一个进行数据检查时非常有用。而analyze命令让你可以手动触发分析过程,对于调试或使用不同模型对比分析结果很有帮助。
4.2 跨会话模式合成与知识导出
每周的“反思(Reflect)”是知识沉淀的关键一步。你也可以手动触发或指定回顾周期。
# 手动触发一次跨会话模式分析(默认分析最近一周的数据) code-insights reflect # 分析特定周的数据,格式为 ISO 周 (YYYY-Www) code-insights reflect --week 2025-W15 # 将分析出的“有效模式”导出为 Cursor 规则片段 code-insights reflect --export-rules导出的规则可以直接粘贴到你的项目根目录下的.cursorrules文件中。例如,系统可能生成如下规则:
# 基于历史高效会话生成的规则 - 当要求AI编写单元测试时,总是先提供被测试函数的签名和1-2个典型用例的输入输出预期。 - 在请求代码审查时,明确指示关注点:“请重点检查内存泄漏和异步错误处理,忽略代码风格”。这些由你自己的成功经验提炼出的规则,能让AI助手在未来更好地适应你的个人工作风格。
4.3 配置管理与LLM提供商切换
code-insights支持多种LLM后端进行分析工作。
# 进入交互式配置向导 code-insights config llm # 或使用非交互式方式设置OpenAI API code-insights config set llm.provider openai code-insights config set llm.openai.apiKey your-api-key-here code-insights config set llm.openai.model gpt-4-turbo-preview支持的Provider通常包括:
ollama(默认,如果检测到)openai(GPT系列)anthropic(Claude系列)groq(通过Groq Cloud API快速调用Llama等模型)
重要提示:当你使用商业API时,API密钥仅存储在本地配置文件中,并在发送分析请求时由本地服务器代理转发,不会泄露给前端页面。这是其安全设计的一部分。
5. 常见问题排查与实战经验分享
5.1 会话同步失败或为空
问题现象:运行code-insights sync后,仪表盘中没有会话,或终端提示未找到会话文件。
排查步骤:
- 确认工具已产生日志:首先确保你使用的AI编码工具(如Cursor)确实已经进行过对话并生成了本地日志。有些工具可能需要开启“保存会话历史”的选项(通常在设置中)。
- 检查文件路径:使用
code-insights debug paths命令(如果提供)或手动检查code-insights寻找的默认路径是否存在文件。例如,对于Claude Code,检查~/.claude/projects/目录下是否有.jsonl文件。 - 权限问题:特别是对于Cursor,其会话数据存储在应用内部的SQLite数据库中(如macOS的
~/Library/Application Support/Cursor/User/globalStorage/...)。code-insights需要读取权限。如果CLI工具没有相应权限,你可能需要调整数据库文件的权限,但这需谨慎操作。更安全的方式是确认Cursor是否提供了导出日志的功能。 - 指定源:如果你安装了多个工具但只用了其中一个,尝试用
--source参数指定工具名进行同步。
5.2 LLM分析过程缓慢或失败
问题现象:会话同步成功,但一直处于“待分析”状态,或分析失败报错。
排查步骤:
- Ollama用户:
- 运行
ollama list确认模型已下载。 - 运行
ollama run llama3.3测试模型是否能正常响应。 - 查看系统资源(内存、GPU),分析长会话可能需要大量内存,考虑使用更小的模型(如
llama3.2:3b)或增加交换空间。
- 运行
- API用户:
- 运行
code-insights config get llm检查API密钥和模型配置是否正确。 - 测试网络连接和API可达性。可以尝试在命令行中用
curl直接调用对应API的简单接口。 - 检查API额度是否用尽。
- 运行
- 通用:查看
code-insights的日志输出,通常会有更详细的错误信息。可以通过设置环境变量DEBUG=code-insights:*来开启更详细的调试日志。
5.3 仪表盘无法访问或空白
问题现象:执行code-insights或code-insights dashboard后,浏览器打开localhost:7890无法连接或页面空白。
排查步骤:
- 端口冲突:7890端口可能被其他应用占用。你可以通过
code-insights dashboard --port 8080指定另一个端口。 - 防火墙或安全软件:某些本地防火墙或安全软件可能会阻止本地服务器绑定端口。检查相关设置。
- 构建问题:如果你是从源码运行开发版本,确保前后端都已正确构建。尝试在项目根目录重新执行
pnpm build。
5.4 数据安全与备份建议
虽然数据存储在本地,但丢失风险依然存在。
备份策略:
- 定位数据库文件:主数据库默认在
~/.code-insights/data.db。 - 定期备份:你可以使用简单的cron任务(Linux/macOS)或计划任务(Windows)来定期复制该文件到云存储或其他安全位置。
# 示例:每天凌晨1点备份 0 1 * * * cp ~/.code-insights/data.db ~/Backups/code-insights-$(date +\%Y\%m\%d).db - 版本控制(谨慎):如果你希望追踪洞察内容的变化,可以考虑将数据库文件纳入Git,但要注意SQLite是二进制文件,合并冲突难以处理。更好的方式可能是定期将
code-insights分析出的结构化数据(通过未来可能提供的导出功能)以JSON或Markdown格式导出,再放入版本库。
实战经验:让code-insights融入日常工作流我个人的习惯是,在每天下班前或一个功能开发告一段落时,花5分钟打开code-insights仪表盘,快速浏览一下当天的“模式”面板。看看有没有新出现的“摩擦点”,这常常能提醒我某个开发环节的流程需要优化。同时,我会把“有效模式”里生成的规则片段,有选择地更新到我的项目CLAUDE.md文件中。久而久之,这个文件变成了我个人与AI协作的“最佳实践手册”,显著减少了重复性的提示词调试工作。这个工具的价值不在于一次性的分析,而在于通过持续的、微小的复盘,形成持续改进的飞轮。