휴스턴은 간단한 자연 언어 지침을 제공하여 쉘 명령 또는 스크립트를 생성 할 수있는 간단한 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/Pretty-Output.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.
명령 변수가 명령의 출력으로 대체되므로 여기에서 echo 명령을 사용해야합니다.
여러 인수를 전달하려면 컨텍스트 사양 에 따옴표를 추가해야합니다.
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 에 있습니다.