LINUX.ORG.RU

Сообщения eqld

 

Neural Shell - человекопонятный CLI

Форум — Development

Всем привет

Я написал небольшую 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’ам.

Спасибо за внимание

 , , , ,

eqld
()

RSS подписка на новые темы