关于 VectorCode
VectorCode 是一个代码仓库索引工具,为编码 LLM 构建更好的提示词上下文。项目包含命令行工具和 neovim 插件,同时提供用于开发 AI 插件的 API。当前处于 beta 阶段。
主要功能
- 01索引代码仓库并检索相关内容
- 02基于 .gitignore 过滤文件
- 03语法感知的分块,使用 tree-sitter
- 04可配置的查询结果筛选
- 05neovim 插件与 Lua API
- 06支持通过 MCP 进行联合搜索
适用场景
- 01为编码 LLM 注入项目相关上下文以减少幻觉
- 02在 neovim 中为 AI 插件提供仓库检索能力
- 03让 MCP 客户端查询本地代码仓库的索引内容
MCP 相关
VectorCode 通过 MCP 与 codecompanion.nvim 等客户端对接,可供 MCP 客户端调用其仓库检索能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
VectorCode
VectorCode 是一款代码仓库索引工具。它通过为你正在使用的代码仓库建立索引并提供相关信息,帮助你为编码大模型构建更优质的提示词。本仓库还包含相应的 neovim 插件,提供一组 API,供你构建或增强 AI 插件,并集成了一些热门插件。
说明
本项目目前处于 Beta 阶段,正在快速迭代。 我知道还有很多地方有待改进,欢迎任何形式的帮助。
为什么选择 VectorCode?
大模型通常对闭源项目、知名度不高的项目,以及尚未纳入发行版本的前沿开发成果了解有限。它们在这些项目上的能力也相当有限。借助 VectorCode,你可以轻松地(并通过编程方式)将与任务相关的项目上下文注入提示词。这能显著提升模型输出的质量,并减少幻觉。
文档
说明
main分支上的文档反映的是最新提交中的代码。 若要查看你所用版本对应的文档,可以查看相应的标签。
- 关于命令行工具的设置和使用,请参阅 CLI 文档;
- neovim 用户阅读完 CLI 文档后,请参阅 neovim 插件文档(也可以选读 lua API 参考)以了解更多说明。
- 其他资源:
如果你想为本项目做贡献,请阅读贡献指南,其中介绍了一些基本规范以及可能对你有所帮助的建议。
关于版本控制
本项目采用经过调整的语义化版本控制:
- 在发布 1.0.0 之前,主版本号 保持为 0,这表示 本项目仍处于早期阶段,功能/接口可能会时常变更;
- 次版本号 表示 破坏性变更。当我决定移除某项功能/配置选项时,实际移除会在提升次
版本号时进行。因此,如果你想避免破坏正常运行的配置,可以
选择使用类似
"vectorcode<0.7.0"的版本约束; - 补丁版本号 表示 非破坏性变更。这包括新 功能和错误修复。当我决定弃用某些内容时,会发布一个提升补丁版本号的新 版本。在次版本号提升之前,已弃用的功能仍可使用,但你会看到警告。建议 更新配置以适配新功能。
待办事项
- 按
文件路径排除路径查询; - 支持分块;
- 为文件添加元数据;
- 配置分块大小;
- 更智能的分块(基于语义/语法),使用 py-tree-sitter 和 tree-sitter-language-pack 实现;
- 可配置从查询结果中选择文档。
-
NeoVim Lua API:当项目尚未建立索引时使用缓存跳过检索改为返回空数组; - 用于异步缓存的任务池;
- 持久化客户端;
- 完善 远程 Chromadb 支持(包括身份验证等);
- 遵循
.gitignore; - 实现某种项目根目录锚点(例如
.git或自定义的.vectorcode.json),以改进项目根目录的自动检测。 已将项目级.vectorcode/和.git实现为根目录锚点 - 能够查看和删除集合中的文件;
- 联合搜索(部分支持,使用 codecompanion.nvim/MCP);
- 支持 Nix(非官方软件包见此处);
- 查询重写(#124)。
致谢
- 感谢 @milanglacier(以及 minuet-ai.nvim),在本项目仍处于早期阶段时提供支持;
- 感谢 @olimorris,在本项目首次尝试工具调用时提供帮助(包括个人帮助以及来自 codecompanion.nvim 的帮助);
- 感谢 @ravitemer,帮助 VectorCode 接入 MCP;
- 感谢 Nix 社区(尤其是 @sarahec 和 @GaetanLepage)维护 Nix 软件包。
特别感谢
Star 历史
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。