ヒューストンは、シンプルな自然言語の指示を提供することでシェルコマンドまたはスクリプトを生成できるシンプルなGPTベースのコマンドラインツールです。
Linux、Mac、およびWindowsで動作します。 Bash、Powershell、ZSH、Python、またはその他のシェルまたはスクリプト言語に使用できます。
cargo install --git https://github.com/npgrosser/Houston.git
ヒューストンと対話するためのデフォルトのコマンドはhu (ヒューストンの略)です。ヒューストンに自然言語の指示を与えることができます。
例えば:
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 jokeヒューストンを使用するには、OpenAI_API_KEY環境変数をOpenAI APIキーに設定する必要があります。 https://platform.openai.comで入手できます。必要に応じて、構成ファイルのキーを指定することもできます。詳細については、構成セクションを参照してください。
ヒューストンはあなたのシステムについて何も知りません。したがって、ヒューストンにタスクを完了する最高のチャンスを与えるために、コンテキスト情報を提供できます。これには、ファイルツリー、特定のファイルの内容、インストールされたパッケージ、バッシュ履歴などの詳細が含まれる場合があります。
この目的のために、これを行うのに役立ついくつかの機能があります。
コンテキストファイルは、自然言語の情報のリストを含む「.ctxt」拡張機能を備えたファイルです。
コマンド変数を使用して動的に生成された情報を追加することもできます。
〜/houston/default.ctxtファイルで定義する情報は、常にヒューストンに提供されます。これは、ヒューストンに個々の好みと要件を知らせるために使用するコンテキストファイルです。たとえば、あなたが好むパッケージマネージャー、あなたの好きな言語は何であるか、あなたがあなたを呼ぶのが好きなものなど。
コンテキストファイルのコンテンツは、箇条書きのリストとして記述する必要があります。
例:
- 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
名前付きコンテキストファイルは、インストラクションごとに有効にできるコンテキストファイルです。特定のタスクに固有のコンテキスト情報を提供するのに役立ちます。デフォルトのコンテキストファイルと同様に、それらは〜/ヒューストンディレクトリにあります。 -cフラグを使用してそれらを有効にします。
hu <instruction> -c <context-file-name>
例:
〜/houston/prettyoutput.ctxt
- when printing to the terminal, use colored output and fancy ASCII art
使用法:
hu print hello world -c pretty-output
命令ごとに、複数のコンテキストファイルを有効にできます。
hu <instruction> -c <context-file-name-1> -c <context-file-name-2>
例:
hu tell me a joke -c pretty-output -c dark-humor
コンテキストファイルは単純なテキストファイルにすることができますが、コマンド変数を含めることもできます。 ${cmd}構文を使用して、それらを利用できます。これらのコマンド変数は、各命令で評価され、コマンドの出力に置き換えられます。
コマンド変数を使用したコンテキストファイルの例は次のとおりです。
- The current working directory is ${pwd}.
- The current user is ${whoami}.
- The current time is ${date}.
このテンプレートが処理されると、結果の出力はこれに似ています。
- 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.
独自のコンテキストファイルを書くときは、すべてのデータがOpenAIに送信されることに留意してください。したがって、機密情報を明らかにしないコマンドのみを使用する必要があります。
-Cフラグを介して名前付きコンテキストを使用する場合、引数を渡すこともできます。例えば:
hu tell me a joke -c lang:german
引数はテンプレートに渡され、通常のシェルスクリプトで行うようにアクセスできます。例:
〜/ヒューストン/lang.ctxt:
- When printing to the terminal, always use the ${echo $1} language.
コマンド変数がコマンドの出力に置き換えられているため、ここでエコーコマンドを使用する必要があることに注意してください
複数の引数を渡す場合は、コンテキスト仕様の周りに見積もりを追加するだけです。
hu tell me a joke -c "langs:german english french"
上記の例は、BASHがシェルとして使用されてコマンド変数を評価することを前提としていることに注意してください。
別のシェルを使用する場合、異なる構文を使用して引数にアクセスする必要がある場合があります。
たとえば、PowerShellでは、$ args変数を使用します。また、Echoコマンドを使用する必要はありません。
- When printing to the terminal, always use the ${$args[0]} language.
名前付きコンテキストファイルの例をいくつか紹介して、それらをどのように使用できるかを示します。
現在のgitステータスをコンテキスト情報として追加するコンテキストファイル。
- The current git status is:
```
${git status}
```
現在のDockerステータスをコンテキスト情報として追加するコンテキストファイル。
- The current docker status is:
```
${docker ps -a}
```
- The current docker images are:
```
${docker images}
```
コンテキスト情報として、Bash履歴から最後のn(デフォルト10)コマンドを追加するコンテキストファイル。
- The last ${1:-10} commands I ran were:
```
${tail -n ${1:-10} ~/.bash_history | cut -d ';' -f 2-}
```
現在の環境変数をコンテキスト情報として追加するコンテキストファイル。
- The current environment variables are:
```
${env}
```
現在のファイルツリーをコンテキスト情報として追加するコンテキストファイル。
- The current file tree is:
```
${tree -L ${1:-3}}
```
実際にAPIに渡されたものを確認したい場合は、 -v (verbose)フラグを使用できます。
hu <instruction> -v
これは、コンテキストファイルの評価方法を確認したい場合に特に便利です。
利用可能な構成オプションについては、 example-config.ymlを参照してください。構成は、初めてhuを実行するときに自動的に作成されます。 $XDG_CONFIG_HOME/houston/config.ymlまたは~/.config/houston/config.ymlになります。