Seagoat
Un moteur de recherche de code pour l'âge de l'IA. SeaGoat est un outil de recherche local qui exploite les intégres vectoriels pour vous permettre de rechercher votre base de code sémantiquement.
Afin d'installer SeaGoat, vous devez avoir les dépendances suivantes déjà installées sur votre ordinateur:
Lorsque bat
est installé, il est utilisé pour afficher les résultats tant que la couleur est activée. Lorsque SeaGoat est utilisé dans le cadre d'un pipeline, un format de sortie Grep-Line est utilisé. Lorsque la couleur est activée, mais bat
n'est pas installée, SeaGoat mettra en évidence la sortie à l'aide de pygments. L'utilisation bat
est recommandée.
Pour installer SeaGoat à l'aide pipx
, utilisez la commande suivante:
pipx install seagoat
Devrait travailler sur n'importe quel ordinateur portable décent.
SeaGoat est conçu pour fonctionner sur Linux ( testé ✅), macOS (partiellement testé, aide ) et Windows ( aide nécessaire ).
Afin d'utiliser SeaGoat dans votre projet, vous devez démarrer le serveur SeaGoat en utilisant la commande suivante:
seagoat-server start /path/to/your/repo
Si le serveur est en cours d'exécution, vous pouvez simplement utiliser la commande gt
ou seagoat
pour interroger votre référentiel. Par exemple:
gt " Where are the numbers rounded "
Vous pouvez également utiliser des expressions régulières dans vos requêtes, par exemple
gt " function calc_.* that deals with taxes "
Vous pouvez arrêter le serveur en cours d'exécution à l'aide de la commande suivante:
seagoat-server stop /path/to/your/repo
SeaGoat peut être adapté à vos besoins via des fichiers de configuration YAML, à l'échelle mondiale ou au projet avec un fichier .seagoat.yml
. Par exemple:
# .seagoat.yml
server :
port : 31134 # Specify server port
Consultez la documentation pour plus de détails!
Exigences :
Après le clonage du référentiel, installez les dépendances à l'aide de la commande suivante:
poetry install
poetry run ptw
poetry run pytest . --testmon
poetry run pytest .
Vous pouvez tester manuellement n'importe quelle commande Seagoat dans votre environnement de développement local. Par exemple, pour tester la version de développement de la commande seagoat-server
, vous pouvez exécuter:
poetry run seagoat-server start ~ /path/an/example/repository
Les points de cette FAQ sont des indications du fonctionnement de SeaGoat, mais ne sont pas un contrat juridique. SeaGoat est autorisé sous une licence open source et si vous doutez des implications de confidentialité / sécurité / etc. de SeaGoat, vous êtes invités à examiner le code source, à soulever vos préoccupations ou à créer une demande de traction pour résoudre un problème.
SeaGoat ne s'appuie pas sur des API tiers ou des API distantes et exécute toutes les fonctionnalités localement à l'aide du serveur SeaGoat que vous pouvez exécuter sur votre propre machine.
Au lieu de s'appuyer sur les API ou de "se connecter à Chatgpt", il utilise la base de données vectorielle appelée ChromAdB, avec un moteur de vecteur local et une télémétrie désactivée par défaut.
En dehors de cela, SeaGoat utilise également Ripgrep, un moteur de recherche de code basé sur l'expression régulière afin de fournir des correspondances basées sur l'expression / mot-clé régulières en plus des correspondances "basées sur l'IA".
Bien que la version actuelle de SeaGoat n'envoie pas vos données aux serveurs distants, il est possible que, à l'avenir, il y ait des fonctionnalités facultatives qui le font, si une amélioration supplémentaire puisse être obtenue à partir de cela.
SeaGoat a besoin d'un serveur afin de fournir une réponse rapide. SeaGoat s'appuie fortement sur les incorporations vectorielles et les bases de données vectorielles, qui ne peuvent pas être remplacées par une architecture qui traite les fichiers à la volée.
Il convient de noter que vous êtes en mesure d'exécuter un serveur SeaGoat entièrement localement , et cela fonctionne même si vous n'avez pas de connexion Internet. Ce cas d'utilisation ne vous oblige pas à partager des données avec un serveur distant, vous pouvez utiliser votre propre serveur SeaGoat localement, bien qu'il soit également possible d'exécuter un serveur SeaGoat et de permettre à d'autres ordinateurs de s'y connecter, si vous le souhaitez.
Si vous êtes préoccupé par les implications éthiques de l'utilisation des outils d'IA gardez à l'esprit que SeaGoat n'est pas un générateur de code mais un moteur de recherche de code, il ne crée donc pas de travail dérivé d'IA.
Cela étant dit, un modèle de langue est utilisé pour générer des incorporations vectorielles. À l'heure actuelle, SeaGoat utilise le modèle par défaut de ChromAdb pour calculer les intérêts vectoriels, et je ne suis pas conscient que ce soit une préoccupation éthique.
Actuellement, SeaGoat est codé en dur pour traiter uniquement les fichiers dans les formats suivants:
*.txt
)*.md
)*.py
)*.c
, *.h
)*.cpp
, *.cc
, *.cxx
, *.hpp
)*.ts
, *.tsx
)*.js
, *.jsx
)*.html
)*.go
)*.java
)*.php
)*.rb
)Étant donné que le traitement des fichiers pour de grands référentiels peut prendre beaucoup de temps, SeaGoat est conçu pour vous permettre d'utiliser votre ordinateur lors du traitement des fichiers . Il s'agit d'un choix de conception intentionnel pour éviter de bloquer / ralentir votre ordinateur.
Cette décision de conception n'affecte pas les performances des requêtes.
Soit dit en passant, vous pouvez utiliser SeaGoat pour interroger votre référentiel pendant qu'il traite vos fichiers! Lorsque vous faites une requête et que les fichiers ne sont pas encore traités, vous recevrez un avertissement avec une estimation de la précision de vos résultats. De plus, les résultats basés sur l'expression régulière / la recherche de texte complet seront affichés dès le début!
Le codage de caractère préféré est UTF-8. La plupart des autres encodages de personnages devraient également fonctionner. Seuls les fichiers texte sont pris en charge, SeaGoat ignore les fichiers binaires.
Où SeaGoat stocke les bases de données et le cache dépend de votre système d'exploitation. Pour votre commodité, vous pouvez utiliser la commande seagoat-server server-info
pour savoir où ces fichiers sont stockés sur votre système.
Oui, si vous souhaitez utiliser SeaGoat sans avoir à exécuter le serveur sur le même ordinateur, vous pouvez simplement auto-hoster le serveur SeaGoat sur un autre ordinateur ou dans le cloud, et configurer la commande seagoat
/ gt
pour se connecter à ce serveur distant via Internet.
Gardez à l'esprit que SeaGoat lui-même n'applique aucune sécurité car il est principalement conçu pour fonctionner localement. Si vous avez un code privé que vous ne souhaitez pas fuir, vous devrez vous assurer que seuls les personnes de confiance ont accès au serveur Seagoat. Cela pourrait être fait en le rendant uniquement disponible via un VPN auquel seuls vos coéquipiers peuvent accéder.
SeaGoat ignore déjà tous les fichiers / répertoires ignorés dans votre .gitignore
. Si vous souhaitez ignorer des fichiers supplémentaires mais les conserver dans GIT, vous pouvez utiliser l'attribut ignorePatterns
à partir de la configuration du serveur. Apprendre encore plus