Хьюстон-это простой инструмент командной строки на основе 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 должна быть установлена на ваш ключ API OpenAI. Вы можете получить один на https://platform.openai.com. Если вы предпочитаете, вы также можете указать ключ в вашем файле конфигурации, см. Раздел «Конфигурация» для получения дополнительной информации.
Хьюстон ничего не знает о вашей системе. Таким образом, чтобы дать Хьюстону наилучшие шансы на выполнение задач, вы можете предоставить контекстную информацию. Это может включать подробную информацию о дереве файлов, содержании конкретных файлов, установленных пакетах, вашей истории Bash и т. Д.
Для этого есть некоторые функции, которые помогут вам сделать это.
Файл контекста - это файл с расширением .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
Именованные контекстные файлы-это контекстные файлы, которые вы можете включить на основе инструктивы. Они полезны для предоставления контекстной информации, характерной для определенной задачи. Как и файл контекста по умолчанию, они расположены в каталоге ~/Houston . Вы включаете их, используя флаг -c .
hu <instruction> -c <context-file-name>
Пример:
~/houson/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
Аргументы передаются в шаблон, где вы можете получить к нему доступ, как вы делаете с любым обычным сценарием оболочки. Пример:
~/houson/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}
```
Файл контекста, который добавляет текущий статус докера в качестве контекстной информации.
- The current docker status is:
```
${docker ps -a}
```
- The current docker images are:
```
${docker images}
```
Файл контекста, который добавляет последние команды N (по умолчанию 10) из вашей истории Bash в качестве контекстной информации.
- 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 (словес).
hu <instruction> -v
Это особенно полезно, если вы хотите увидеть, как оцениваются ваши файлы контекста.
См . Пример Config.yml для доступных параметров конфигурации. Конфигурация автоматически создается при запуска hu в первый раз. Он будет либо в $XDG_CONFIG_HOME/houston/config.yml или ~/.config/houston/config.yml .