codecompanion-history.nvim
为 Neovim AI 编程插件装上完整记忆系统,支持聊天保存/恢复/摘要/向量语义搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为 Neovim AI 编程插件装上完整记忆系统,支持聊天保存/恢复/摘要/向量语义搜索
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你一定有过这样的经历:花了大半天和 AI 结对编程,解决了某个刁钻 bug,结果第二天打开编辑器,聊天记录空空如也——那些有价值的对话、反复调试的思路、精心设计的提示词,全部随着一次 quit 消失了。这种「AI 用完即弃」的体验,是每一个高频使用 AI 编程工具的开发者共同的痛。
CodeCompanion History 正是为了解决这个问题而生。它是 codecompanion.nvim 的官方扩展,为 Neovim 中的 AI 聊天插件装上了一套完整的历史管理系统——保存、回溯、恢复,无缝衔接。
在介绍 History 扩展之前,有必要先理解它的宿主插件。codecompanion.nvim 是 Neovim 生态中最成熟的 AI 编程助手插件之一,支持 Claude、ChatGPT、Gemini、Grok 等多种大语言模型适配器,并且深度集成了 MCP(Model Context Protocol)工具生态——这意味着它不仅仅是「在编辑器里聊天」,而是能让 AI 直接调用各种开发工具、读取代码库、执行命令。
但插件本身有一个致命短板:不保存聊天历史。每一次新会话都是从零开始,AI 无法记住之前的上下文。对于需要长期迭代的项目来说,这个限制严重削弱了 AI 的价值。
History 扩展的核心设计理念是:保存完整的会话状态,而非仅仅保存文字。当用户恢复一个历史会话时,AI 不仅能看到之前的对话,还能恢复:
这意味着,即使隔了一周再打开历史会话,AI 依然拥有完整的「记忆」来继续工作,而不是一张白纸。
历史一多,管理就成了问题。History 内置了智能标题生成器,会话保存时自动调用 AI 生成一句话概括聊天内容。用户也可以配置刷新频率(比如每 N 条消息刷新一次标题),或者自定义标题格式。对于团队协作场景,这种命名规范让历史记录变成了一份可搜索的知识库。
一个复杂项目的调试过程可能产生成百上千条消息。History 提供了分块摘要生成功能:长对话被拆分成合适大小的块,每块独立摘要,最终合并为一份精炼的总结。用户可以指定使用哪个模型生成摘要,也可以自定义系统提示词来控制摘要风格。摘要生成后配合 gbs 快捷键浏览,非常适合快速定位某个历史决策的背景。
这是整个扩展最令人眼前一亮的特性。结合 VectorCode CLI,History 支持将摘要自动向量化并索引。生成摘要时,插件会自动调用 VectorCode 的向量化和搜索能力,将摘要纳入本地向量数据库。在新会话中,AI 可以通过 @memory 工具根据关键词语义搜索历史摘要——不是简单的字符串匹配,而是真正的语义理解搜索。
这相当于给 AI 装上了一个「私人搜索专家」,可以跨越时间和项目边界,精准找回过去的决策和讨论。
一个容易被忽视但极其实用的功能:History 支持按工作区/项目过滤聊天记录。这意味着你在 A 项目调试数据库迁移的会话,不会和 B 项目的前端重构混在一起。配合项目感知过滤,开发者可以快速定位特定项目的所有相关对话。
项目代码量适中(核心约 160KB Lua 代码),目录结构清晰:
init.lua:插件生命周期管理、命令注册、自动命令设置storage.lua:聊天持久化引擎,处理 JSON 序列化、文件 I/O、自动过期清理ui.lua:界面层,支持多种 picker(telescope / snacks / fzf-lua / default)summary_generator.lua:分块摘要生成逻辑title_generator.lua:AI 驱动的动态标题生成vectorcode.lua:向量搜索集成层types.lua:完整的 Type Annotations(Lua LSP 友好)测试覆盖相当完整(tests/ 下有 11 个测试文件,覆盖存储、摘要、标题生成等核心模块的单元测试),保证了版本迭代中的稳定性。
安装只需两步:通过 lazy.nvim 安装插件,然后在 codecompanion.setup() 中启用扩展即可。核心依赖仅有 Neovim >= 0.8.0 和 codecompanion.nvim,可选依赖(VectorCode、snacks.nvim、telescope 等)按需添加。
没有 Docker 支持,也没有 Web UI——作为纯 Neovim 插件,这是合理的设计取舍。部署难度极低,适合所有使用 Neovim 作为主力编辑器的开发者。
由于深度依赖 CodeCompanion 的内部 API,每次 CodeCompanion 更新都可能引入兼容性问题。作者在 README 中也坦诚提及了这一点。对于追求稳定性的团队,建议在 CodeCompanion 大版本升级后验证历史会话的恢复功能。
另外,Watchers(监视缓冲区状态)仅保存状态,不恢复监视功能——如果你的工作流重度依赖实时文件监视,需要注意这一点。
CodeCompanion History 的出现,反映了 AI 编程工具从「单次会话」向「持续记忆」演进的趋势。随着 Claude Code、Copilot 等工具越来越深度地嵌入开发流程,如何管理 AI 参与过的每一段决策、每一次调试、每一个设计选择,将成为提升团队协作效率的关键课题。
VectorCode 向量搜索的引入,则代表了更长远的方向:让 AI 不仅仅「记得」最近的对话,还能跨越时间语义搜索历史积累的知识。这比简单的聊天记录导出要强大得多。
如果你是 Neovim + AI 编程的重度用户,这个扩展值得加入你的日常工具链。