SeaGOAT 是一款面向 AI 时代的本地代码搜索引擎,其核心用途是让你在本地代码库中进行语义化搜索。它通过向量嵌入技术理解查询意图,而不仅仅是匹配关键字,因此可以按含义查找代码。
主要能力包括:使用向量嵌入进行语义搜索;同时结合 ripgrep 提供基于正则表达式和关键词的匹配结果;提供可选的生成式搜索增强(通过 --generative 标志),默认使用本地 Ollama 服务器,也可配置云端 LLM 提供商,但云端会将代码片段发送给第三方,属于选择性开启,且该设置仅从全局配置文件读取,不会从仓库的 .seagoat.yml 读取;支持通过 YAML 配置文件进行全局或项目级(.seagoat.yml)定制;可使用 seagoat-server server-info 命令查看数据库和缓存的存储位置。
使用方式:首先需要安装 SeaGOAT,前置依赖为 Python 3.10 或更新版本,以及可选的 bat(强烈推荐)。使用 pipx 安装的命令为:pipx install seagoat。安装后需启动 SeaGOAT 服务器,然后即可使用 gt 或 seagoat 命令查询仓库,例如 gt "your query"。查询中可以使用正则表达式。停止服务器也有对应命令。SeaGOAT 还支持忽略文件,默认忽略 .gitignore 中列出的所有文件/目录,也可以通过服务器配置中的 ignorePatterns 属性额外忽略文件(同时保留在 git 中)。
适用场景:适用于在本地代码库中快速查找代码,尤其适合关注隐私、希望数据不出本机的开发者。可在 Linux(已测试)、macOS(部分测试)和 Windows(需要帮助)上运行,设计上可在普通笔记本电脑上工作。
限制与注意事项:当前硬编码仅处理特定文件格式,包括文本文件(.txt)、Markdown(.md)、Python(.py)、C(.c、.h)、C++(.cpp、.cc、.cxx、.hpp)、TypeScript(.ts、.tsx)、JavaScript(.js、.jsx)、HTML(.html)、Java(*.java)。仅支持文本文件,忽略二进制文件;首选 UTF-8 编码,其他大多数字符编码也可工作。处理大型仓库时可能较慢,但设计上允许你继续使用电脑,且查询性能不受影响;在文件尚未处理完成时查询会收到准确度估计警告,但正则/全文搜索结果从开始就可显示。SeaGOAT 本身不强制任何安全措施,主要设计为本地运行;如果要将服务器托管在其他电脑或云端,需自行确保只有受信任的人能访问(例如通过 VPN)。SeaGOAT 是代码搜索引擎而非代码生成器,不产生 AI 衍生作品;但使用语言模型生成向量嵌入,目前使用 ChromaDB 的默认模型。更多细节可查阅官方文档。