Neural Shell - человекопонятный CLI
Всем привет
Я написал небольшую CLI утилиту, которая переводит человекопонятный запрос в соответствующую shell-команду или one-liner при помощи подключаемой LLM прямо в терминале, и хотел бы поделиться ей с миром. Знаю, что подобные утилиты уже давно существуют, но в своей я реализовал несколько удобных мне фич, и надеюсь что кто-нибудь тоже найдёт их полезными для себя.
Вот ссылка на GitHub, там-же из README можно узнать все детали.
Также есть на PyPI, установить и попробовать можно и через pip
:
pip install neural-shell
Если коротко, тулза работает так:
nlsh find all pdfs modified in the last 2 days and compress them
# Example output:
# Suggested: find . -name "*.pdf" -mtime -2 -exec tar czvf archive.tar.gz {} +
# [Confirm] Run this command? (y/N/e/r/x) y
# Executing:
# (command output appears here)
Из фич:
- можно запросить объяснение сгенерированной команды (
x
) - перегенерировать с большей креативностью («температурой»), если команда не подходит (
r
) - отредактировать команду перед выполнением (
e
) - после выполнения, если
exit code != 0
, тулза предложит исправить команду, проанализировав её вывод и exit code - при генерации учитывает информацию о системе
Конфигурируется ямлем в ~/.nlsh/config.yml
, можно настроить несколько бэкендов, и переключаться между ними флагами -0
, -1
, -2
, и т. д.:
shell: "zsh" # Override with env $NLSH_SHELL
backends:
- name: "local-ollama"
url: "http://localhost:11434/v1"
api_key: "ollama"
model: "llama3"
- name: "groq-cloud"
url: "https://api.groq.com/v1"
api_key: $GROQ_KEY
model: "llama3-70b-8192"
- name: "deepseek-reasoner"
url: "https://api.deepseek.com/v1"
api_key: $DEEPSEEK_API_KEY
model: "deepseek-reasoner"
is_reasoning_model: true # Mark as a reasoning model for verbose mode
default_backend: 0
# Configuration for the 'nlgc' (Neural Git Commit) command
# Override with environment variable: NLSH_NLGC_INCLUDE_FULL_FILES (true/false)
nlgc:
# Whether to include the full content of changed files in the prompt
# sent to the LLM for commit message generation. Provides more context
# but increases token usage significantly. Can be overridden with
# --full-files or --no-full-files flags.
include_full_files: true
Бонусом идёт тулза nlgc
для генерации красивых коммит месседжей на основе диффов.
Буду рад отзывам, баг репортам и фич реквестам, а также MR’ам.
Спасибо за внимание