海山羊
AI时代的代码搜索引擎。 Seagoat是一种本地搜索工具,它利用矢量嵌入使您能够以语义搜索代码库。
为了安装Seagoat,您需要在计算机上安装以下依赖项:
安装bat
后,只要启用颜色,它就会用于显示结果。当将海山羊用作管道的一部分时,使用GREP线输出格式。启用颜色,但没有安装bat
时,海山羊将使用Pygments突出显示输出。建议使用bat
。
要使用pipx
安装Seagoat,请使用以下命令:
pipx install seagoat
应该在任何体面的笔记本电脑上工作。
Seagoat旨在在Linux(测试✅),MacOS(部分测试,帮助)和Windows(需要帮助)上工作。
为了在项目中使用Seagoat,您必须使用以下命令启动Seagoat服务器:
seagoat-server start /path/to/your/repo
如果您运行了服务器,则只需使用gt
或seagoat
命令来查询存储库即可。例如:
gt " Where are the numbers rounded "
您也可以在查询中使用正则表达式,例如
gt " function calc_.* that deals with taxes "
您可以使用以下命令停止运行服务器:
seagoat-server stop /path/to/your/repo
可以通过.seagoat.yml
文件在全球范围内或项目特定的YAML配置文件来根据您的需求量量身定制Seagoat。例如:
# .seagoat.yml
server :
port : 31134 # Specify server port
查看文档以获取更多详细信息!
要求:
克隆存储库后,使用以下命令安装依赖项:
poetry install
poetry run ptw
poetry run pytest . --testmon
poetry run pytest .
您可以在本地开发环境中手动测试任何海绵体命令。例如,要测试seagoat-server
命令的开发版本,您可以运行:
poetry run seagoat-server start ~ /path/an/example/repository
该常见问题解答中的观点表明了海绵体的运作方式,但不是法律合同。 Seagoat已获得开源许可证的许可,如果您对Seagoat的隐私/安全/等含义有疑问,欢迎您检查源代码,提高您的疑虑或创建拉动请求以解决问题。
Seagoat不依赖第三方API或任何远程API,并使用您可以在自己的机器上运行的Seagoat Server在本地执行所有功能。
它不依赖API或“连接到chatgpt”,而是使用称为Chromadb的矢量数据库,默认情况下将禁用本地矢量嵌入引擎和遥测。
除此之外,Seagoat还使用RIPGREP(一种基于常规表达的代码搜索引擎),以便除了“基于AI”的匹配项之外,提供商正则表达式/基于关键字的匹配。
尽管当前版本的Seagoat不会将您的数据发送到远程服务器,但将来可能会有可选的功能可以从中获得任何进一步的改进。
Seagoat需要服务器才能提供快速响应。 Seagoat在很大程度上依赖于矢量嵌入和矢量数据库,目前无法用即时处理文件的架构代替。
值得注意的是,您能够完全在本地运行Seagoat服务器,即使您没有Internet连接,也可以正常运行。此用例不需要您与远程服务器共享数据,您可以在本地使用自己的Seagoat服务器,尽管也可以运行Seagoat服务器并允许其他计算机连接到它,如果您愿意的话。
如果您担心使用AI工具的道德含义,请记住Seagoat不是代码生成器,而是代码搜索引擎,因此它不会创建AI派生的工作。
话虽如此,正在使用语言模型来生成向量嵌入。目前,Seagoat使用Chromadb的默认模型来计算矢量嵌入,我不知道这是一个道德问题。
当前,Seagoat的硬编码仅以以下格式处理文件:
*.txt
)*.md
)*.py
)*.c
, *.h
)*.cpp
, *.cc
, *.cxx
, *.hpp
)*.ts
, *.tsx
)*.js
, *.jsx
)*.html
)*.go
)*.java
)*.php
)*.rb
)由于处理大型存储库的文件可能需要很长时间,因此Seagoat旨在使您在处理文件时使用计算机。这是故意的设计选择,避免阻止/减慢计算机的速度。
该设计决策不会影响查询的性能。
顺便说一句,您可以在处理文件时使用Seagoat查询存储库!当您进行查询并且还没有处理文件时,您将收到警告,并估计结果的准确性。此外,将从一开始就显示正则表达/全文搜索结果!
首选字符编码是UTF-8。大多数其他字符编码也应起作用。仅支持文本文件,Seagoat忽略了二进制文件。
Seagoat存储数据库和缓存取决于您的操作系统的位置。为了方便起见,您可以使用seagoat-server server-info
命令来找出这些文件存储在系统上的位置。
是的,如果您想使用Seagoat而不必在同一台计算机上运行服务器,则可以简单地在另一台计算机或云中使用Seel-Host Seagoat服务器,并配置seagoat
/ gt
命令即可连接到此远程服务器通过互联网。
请记住,Seagoat本身并没有执行任何安全性,因为它主要是为了在本地运行的。如果您有不想泄漏的私人代码,则必须确保只有值得信赖的人才能访问Seagoat服务器。这可以通过仅通过VPN提供,只有您的队友才能访问它。
Seagoat已经忽略了.gitignore
中忽略的所有文件/目录。如果您想忽略其他文件,但请将它们保留在git中,则可以使用服务器配置中的ignorePatterns
属性。了解更多