Houston ist ein einfaches GPT-basiertes Befehlszeilen-Tool, mit dem Sie Shell-Befehle oder -Skripte generieren können, indem Sie einfache, natürliche Sprachanweisungen geben.
Funktioniert unter Linux, Mac und Windows. Sie können es für Bash, PowerShell, ZSH, Python oder eine andere Shell- oder Skriptsprache verwenden.
cargo install --git https://github.com/npgrosser/Houston.git
Der Standardbefehl für die Interaktion mit Houston ist hu (kurz für Houston). Sie können Houston einen Unterricht in der natürlichen Sprache geben.
Zum Beispiel:
hu run ubuntu container with interactive bashhu find all pdf files in my home directoryhu delete unused docker images and networkshu tell me a dad jokeUm Houston zu verwenden, muss die Umgebungsvariable von OpenAI_API_Key auf Ihren OpenAI -API -Schlüssel eingestellt werden. Sie können eine unter https://platform.openai.com erhalten. Wenn Sie es vorziehen, können Sie auch den Schlüssel in Ihrer Konfigurationsdatei angeben. Weitere Informationen finden Sie im Abschnitt Konfiguration.
Houston weiß nichts über Ihr System. Um Houston die beste Chance zu geben, Aufgaben zu erledigen, können Sie Kontextinformationen bereitstellen. Dies kann Details zum Dateibaum, den Inhalt bestimmter Dateien, installierte Pakete, Ihr Bash -Verlauf usw. enthalten.
Zu diesem Zweck gibt es einige Funktionen, die Ihnen dabei helfen.
Eine Kontextdatei ist eine Datei mit einer Erweiterung von '.ctxt', die eine Liste von Informationen in der natürlichen Sprache enthält.
Sie können auch dynamisch generierte Informationen mit Befehlsvariablen hinzufügen.
Informationen, die Sie in der Datei ~/Houston/default.ctxt definieren, finden Sie Houston immer. Dies ist die Kontextdatei, mit der Sie Houston über Ihre individuellen Vorlieben und Anforderungen informieren würden. Zum Beispiel, welchen Paketmanager Sie bevorzugen, was Ihre Lieblingssprache ist, was Sie mögen, um Sie anzurufen, usw.
Der Inhalt einer Kontextdatei sollte als Liste der Kugelpunkte geschrieben werden.
Beispiel:
- If I want you to install something, use brew if the package is avaiable there
- If the script gets more complex, use comments to explain what you are doing
- When printing to the console, use capital letters. I like it when you shout at me
Mit benannte Kontextdateien sind Kontextdateien, die Sie von der Basis von Perinstruktion aktivieren können. Sie sind nützlich, um Kontextinformationen bereitzustellen, die für eine bestimmte Aufgabe spezifisch sind. Wie in der Standardkontextdatei befinden sie sich im Verzeichnis ~/Houston . Sie aktivieren sie mit dem -c -Flag.
hu <instruction> -c <context-file-name>
Beispiel:
~/Houston/Pretty-output.ctxt
- when printing to the terminal, use colored output and fancy ASCII art
Verwendung:
hu print hello world -c pretty-output
Pro Anweisungen können Sie mehrere Kontextdateien aktivieren.
hu <instruction> -c <context-file-name-1> -c <context-file-name-2>
Beispiel:
hu tell me a joke -c pretty-output -c dark-humor
Kontextdateien können Klartextdateien sein, sie können jedoch auch Befehlsvariablen enthalten. Sie können sie mit der ${cmd} -Syntax verwenden. Diese Befehlsvariablen werden an jedem Befehl bewertet und durch die Ausgabe des Befehls ersetzt.
Hier ist ein Beispiel für eine Kontextdatei mit Befehlsvariablen:
- The current working directory is ${pwd}.
- The current user is ${whoami}.
- The current time is ${date}.
Wenn diese Vorlage verarbeitet wird, würde die resultierende Ausgabe folgendermaßen ähnlich aussehen:
- The current working directory is /home/user/my-name/houston.
- The current user is my-name.
- The current time is 2020-10-10 12:00:00.
Beachten Sie beim Schreiben Ihrer eigenen Kontextdateien, dass alle Daten an OpenAI gesendet werden. Daher sollten Sie nur Befehle verwenden, die keine vertraulichen Informationen anzeigen.
Wenn Sie einen benannten Kontext über das -C -Flag verwenden, können Sie auch Argumente übergeben. Zum Beispiel:
hu tell me a joke -c lang:german
Argumente werden an die Vorlage übergeben, wo Sie darauf zugreifen können, wie Sie es mit jedem normalen Shell -Skript tun würden. Beispiel:
~/Houston/Lang.ctxt:
- When printing to the terminal, always use the ${echo $1} language.
Denken Sie daran, dass wir hier den Echo -Befehl verwenden müssen, da Befehlsvariablen durch die Ausgabe des Befehls ersetzt werden
Wenn Sie mehrere Argumente übergeben möchten, müssen Sie nur sicherstellen, dass Sie Zitate um die Kontextspezifikation hinzufügen.
hu tell me a joke -c "langs:german english french"
Beachten Sie, dass das obige Beispiel davon ausgeht, dass Bash als Shell verwendet wird, um die Befehlsvariablen zu bewerten.
Bei Verwendung einer anderen Shell müssen Sie möglicherweise eine andere Syntax verwenden, um auf die Argumente zuzugreifen.
Zum Beispiel würden Sie in PowerShell die $ args Variable verwenden. Außerdem müssten Sie den Echo -Befehl nicht verwenden.
- When printing to the terminal, always use the ${$args[0]} language.
Hier sind einige weitere Beispiele für benannte Kontextdateien, die Ihnen eine Vorstellung davon geben, wie sie verwendet werden können.
Eine Kontextdatei, die den aktuellen Git -Status als Kontextinformationen hinzufügt.
- The current git status is:
```
${git status}
```
Eine Kontextdatei, die den aktuellen Docker -Status als Kontextinformationen hinzufügt.
- The current docker status is:
```
${docker ps -a}
```
- The current docker images are:
```
${docker images}
```
Eine Kontextdatei, die die letzten n (Standard 10) -Werbee aus Ihrem Bash -Verlauf als Kontextinformationen hinzufügen.
- The last ${1:-10} commands I ran were:
```
${tail -n ${1:-10} ~/.bash_history | cut -d ';' -f 2-}
```
Eine Kontextdatei, die die aktuellen Umgebungsvariablen als Kontextinformationen hinzufügt.
- The current environment variables are:
```
${env}
```
Eine Kontextdatei, die die aktuelle Dateibaum als Kontextinformationen hinzufügt.
- The current file tree is:
```
${tree -L ${1:-3}}
```
Wenn Sie sehen möchten, was tatsächlich an die API übergeben wird, können Sie das FLAG -v (ausführlich) verwenden.
hu <instruction> -v
Dies ist besonders nützlich, wenn Sie sehen möchten, wie Ihre Kontextdateien ausgewertet werden.
Siehe Beispiel-config.yml für verfügbare Konfigurationsoptionen. Die Konfiguration wird automatisch erstellt, wenn Sie hu zum ersten Mal ausführen. Es wird entweder in $XDG_CONFIG_HOME/houston/config.yml oder ~/.config/houston/config.yml sein.