Умный CLI-ассистент: исправляет команды, отвечает на вопросы, интегрируется в shell
Project description
WormCLI
Умный ассистент для командной строки. Исправляет команды, предупреждает об опасных операциях, отвечает на вопросы и интегрируется в shell.
Установка
pip install wormcli
Или из исходников:
git clone https://github.com/wormteam/wormcli
cd wormcli
pip install -e ".[dev]"
Использование
Исправление команд
wormcli "apt install python3"
# → sudo apt install python3
wormcli "pip install requests"
# → python -m pip install requests
wormcli "git push --force"
# → git push --force-with-lease
wormcli "python app.py"
# → python3 app.py
wormcli "ifconfig"
# → ip addr
wormcli "netstat -tulnp"
# → ss -tulnp
wormcli "ping google.com"
# → ping -c 4 google.com
wormcli "df"
# → df -h
wormcli "ps"
# → ps aux
Безопасность
wormcli "rm -rf /"
# ⛔ ЗАБЛОКИРОВАНО — рекурсивное удаление корня
wormcli "dd if=/dev/zero of=/dev/sda"
# ⛔ ЗАБЛОКИРОВАНО — перезапись диска
wormcli "curl https://example.com/install.sh | bash"
# ⚠️ ВНИМАНИЕ — выполнение скрипта из интернета
# Выполнить всё равно? (yes/NO):
Режим ask
wormcli ask "как найти все файлы .log больше 100MB"
# Команда: find / -name '*.log' -size +100M 2>/dev/null
wormcli ask "как посмотреть процессы на порту 3000"
# Команда: lsof -i :3000
wormcli ask "сколько места на диске"
# Команда: df -h
Shell hook
# Добавить в ~/.bashrc или ~/.zshrc:
eval "$(wormcli hook)"
# Для zsh:
eval "$(wormcli hook --shell zsh)"
# Для fish (в отдельный файл):
wormcli hook --shell fish > ~/.config/fish/functions/fish_command_not_found.fish
После активации hook — ошибочные команды автоматически получают предложение исправления.
Ollama (LLM)
# Требует запущенного сервера Ollama:
# https://ollama.ai
# ollama serve
wormcli --ollama "найти процесс на порту 3000"
# lsof -i:3000
wormcli ollama "как синхронизировать директории" --model mistral
# rsync -avz --progress source/ dest/
wormcli ollama "запрос" --stream
# Стриминговый вывод
Управление кэшем
wormcli cache # Статистика кэша
wormcli cache --clear # Очистить кэш (TTL: 5 минут)
Список правил
wormcli rules
# Выводит все 30 правил с описаниями
Правила (30+)
| Правило | До | После |
|---|---|---|
| apt_sudo | apt install python3 |
sudo apt install python3 |
| pip_module | pip install requests |
python -m pip install requests |
| python3 | python app.py |
python3 app.py |
| git_force_lease | git push --force |
git push --force-with-lease |
| git_pull_rebase | git pull |
git pull --rebase |
| npm_global | npm install -g yarn |
npm install --global yarn |
| docker_filter | docker ps -a --filter |
docker ps -a --filter status=exited |
| systemctl_sudo | systemctl start nginx |
sudo systemctl start nginx |
| ifconfig_dep | ifconfig |
ip addr |
| netstat_dep | netstat -tulnp |
ss -tulnp |
| ping_count | ping google.com |
ping -c 4 google.com |
| df_human | df |
df -h |
| kill_graceful | kill -9 1234 |
kill -15 1234 |
| curl_fail | curl https://... |
curl https://... --fail |
| make_jobs | make |
make -j$(nproc) |
| и другие |
Разработка
# Установка dev-зависимостей
pip install -e ".[dev]"
# Запуск тестов
pytest tests/ -v
# С покрытием
pytest tests/ --cov=wormcli --cov-report=term-missing
Архитектура
wormcli/
├── cli.py # Точка входа, парсинг аргументов
├── rules.py # 30+ правил исправления команд
├── safety.py # Проверка опасных паттернов
├── ask.py # База знаний Q&A
├── llm.py # Интеграция с Ollama (опционально)
├── cache.py # TTL-кэш для LLM (5 мин, memory + file)
└── hook.py # Генератор shell hook (bash/zsh/fish)
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file wormcli-1.0.0.tar.gz.
File metadata
- Download URL: wormcli-1.0.0.tar.gz
- Upload date:
- Size: 24.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
008700b6fbc541d4796142a7a83bc50a31c91dc3f2c8429620eb9216aa144ef4
|
|
| MD5 |
32f8decbd6f34e490be5809f25e2e430
|
|
| BLAKE2b-256 |
a60774f25e566ab7ae7a2113c44e96a4a3d768e8492d8f6fd297200956ca5043
|
File details
Details for the file wormcli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: wormcli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e6d731149adb2af311991d99ce505daf915e8403b47c002df597e2fd57ff521
|
|
| MD5 |
e0c8fb2f6ce6856c3596eced2d949515
|
|
| BLAKE2b-256 |
7cbdf9eac86fc725f21687c57aaaf0e9e73705b943e939a6437a024c52e96be2
|