Metadata-Version: 2.4
Name: w1x-cli
Version: 3.5.0
Summary: A fast, keyboard-first CLI terminal assistant for Ollama with Function Calling, Persistent Memory, and Python Sandbox.
Author: W1bbex
License: MIT
Project-URL: Homepage, https://github.com/w1bbex/w1x-cli
Project-URL: Issues, https://github.com/w1bbex/w1x-cli/issues
Keywords: ollama,cli,terminal,ai,llm,chat,tools,python-sandbox
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: User Interfaces
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ollama>=0.4.0
Requires-Dist: rich>=13.7.0
Requires-Dist: prompt_toolkit>=3.0.43
Requires-Dist: requests>=2.31.0
Requires-Dist: duckduckgo_search>=7.0.0
Dynamic: license-file

# 🚀 W1x CLI

> **A fast, keyboard-first CLI terminal client for Ollama with Function Calling, Persistent Memory, and Interactive Python Sandbox.**

![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python)
![Ollama](https://img.shields.io/badge/Ollama-Compatible-black?logo=ollama)
![License](https://img.shields.io/badge/License-MIT-green)
![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-brightgreen)

W1x — это легковесный, отзывчивый терминальный ассистент для локальных нейросетей Ollama.  
Он превращает обычные локальные модели (Qwen, Llama, Gemma, DeepSeek) в полноценного автономного помощника с доступом в интернет, точными вычислениями, памятью между сессиями и интерактивной песочницей кода.

---

## ✨ Ключевые возможности

* 📦 **Интеллектуальный каталог и загрузчик моделей (`/pull`, `w1x pull`):**
  * **Автоопределение железа (VRAM & RAM):** светофор нагрузки (🟢 Легко в GPU / 🟠 Частично в RAM / 🔴 Не потянет).
  * **Фоновая загрузка и умная очередь:** загрузка в реальном времени со скоростью и процентами без зависания интерфейса.
  * **Мастер первого запуска:** если моделей ещё нет, W1x автоматически подберёт стартовую модель под вашу видеокарту.
* 🔍 **Автономные инструменты (Function Calling):**
  * **Поиск в интернете:** живой поиск через DuckDuckGo без API-ключей.
  * **Точная дата и время:** вычисление дней недели, смещений и таймзон.
  * **Калькулятор:** точные математические формулы через безопасное синтаксическое дерево.
  * **Чтение файлов проекта:** безопасный доступ к рабочей папке через `/workspace`.
* 🐍 **Интерактивная песочница кода (`/testpy`):**
  * Модель пишет код ➔ вы вводите `/testpy` ➔ открывается отдельная консоль ➔ вы тестируете ввод/вывод вживую ➔ полный лог тестирования автоматически возвращается в контекст нейросети.
* 🧠 **Долговременная память (`/memory`):**
  * Запоминание фактов пользователя навсегда (`"Запомни: у меня есть кот Барсик"`).
  * Автоматический стемминг падежей русского языка и умная подмешка в контекст.
* ⚡ **Мгновенный отклик и эргономика:**
  * **Живой потоковый Markdown:** цветная подсветка синтаксиса, жирный текст и таблицы прямо во время генерации.
  * **Фоновый прогрев моделей:** окно ввода открывается мгновенно, не блокируя терминал.
  * **Мгновенный сброс VRAM (`Ctrl+Q`):** моментальная выгрузка всех моделей из видеопамяти в любую миллисекунду.
  * **Удобные хоткеи:** `Shift+Enter` (многострочный ввод), `Ctrl+S` (отмена и возврат промпта), `Ctrl+X` (вырезать), `Ctrl+A` (выделить всё).
* 🔀 **Эскалация задач (`/agy`):**
  * Быстрая локальная модель для повседневных задач + перенаправление сложных инженерных запросов старшей модели (Google Antigravity / Claude).

---

## 📦 Быстрая установка

### Требования
1. Установленный **[Ollama](https://ollama.com/)** (модели можно выбрать прямо при первом запуске W1x).
2. **Python 3.10+**

### Установка (Windows)

Просто запустите **`install.bat`** или выполните в терминале:

```bash
git clone https://github.com/w1bbex/w1x-cli.git
cd w1x-cli
pip install -r requirements.txt
pip install -e .
```

После этого команда **`w1x`** станет доступна в любом окне терминала!

---

## 🎮 Использование

Запуск ассистента:
```bash
w1x
```

Скачивание моделей через очередь в терминале:
```bash
w1x pull qwen3.5:4b deepseek-r1:7b
```

### Горячие клавиши (Hotkeys)

| Сочетание | Действие |
| :--- | :--- |
| **`Enter`** | Отправить сообщение |
| **`Shift+Enter`** / **`Ctrl+Enter`** | Новая строка (многострочный ввод) |
| **`Ctrl+Q`** | **Мгновенный выход** и выгрузка всех моделей из VRAM |
| **`Ctrl+S`** | Отменить последний вопрос, удалить из памяти и вернуть в строку ввода |
| **`Ctrl+X`** | Вырезать выделенный текст (или всю строку) в буфер обмена |
| **`Ctrl+C`** | Скопировать выделение / остановить текущую генерацию |
| **`Ctrl+V`** | Вставить текст из буфера обмена |
| **`Ctrl+A`** | Выделить весь текст в поле ввода |
| **`Ctrl+Backspace`** / **`Ctrl+Delete`** | Удалить слово слева / справа |
| **`↑` / `↓`** | История введённых команд и сообщений |

---

## 💬 Команды чата (Slash Commands)

* **`/pull`** — открыть интерактивный каталог моделей и умную очередь загрузки.
* **`/config`** — интерактивная настройка контекста токенов, VRAM keep-alive и модели по умолчанию.
* **`/model`** — сменить текущую языковую модель из установленных.
* **`/models`** — показать список всех установленных в Ollama моделей.
* **`/new`**, **`/clear`** — начать новый диалог (очистить контекст).
* **`/testpy`** — протестировать последний сгенерированный Python-код в отдельной интерактивной консоли.
* **`/think`** — включить / выключить режим размышлений (`/think low|medium|high`).
* **`/workspace <путь>`** — подключить папку проекта для чтения файлов.
* **`/memory`** — показать сохранённые в долговременной памяти факты.
* **`/forget <текст>`** — удалить факт из долговременной памяти.
* **`/copy`** — скопировать последний ответ модели в буфер обмена.
* **`/save [имя]`** — сохранить диалог в Markdown-файл.
* **`/stats`** — включить подробную статистику скорости (токены/сек, время).
* **`/cls`** — очистить экран.
* **`/help`** — полная справка по командам.
* **`q`**, **`/exit`** — выгрузить модели и выйти.

---

## 📁 Структура проекта

```
w1x-cli/
├── w1x/
│   ├── app.py          # Основной цикл REPL и слэш-команды
│   ├── config.py       # Конфигурация, системные инструкции и пути (~/.w1x/)
│   ├── engine.py       # Движок генерации ответов и Tool Loop
│   ├── memory.py       # Память фактов и стемминг русского языка
│   ├── models.py       # Управление Ollama и низкоуровневый перехватчик Ctrl+Q
│   ├── puller.py       # Каталог моделей, автодетект VRAM и фоновая очередь
│   ├── terminal.py     # Rich-рендеринг, prompt_toolkit и буфер обмена
│   ├── testpy.py       # Интерактивный запуск и валидация Python (/testpy)
│   └── tools.py        # Реализация инструментов (поиск, код, калькулятор)
├── main.py             # Точка входа для запуска
├── pyproject.toml      # Спецификация пакета и CLI-команда
├── requirements.txt    # Зависимости
├── install.bat         # Установщик в 1 клик для Windows
├── run.bat             # Лаунчер в 1 клик
├── LICENSE             # Лицензия MIT
├── CONTRIBUTING.md     # Руководство для контрибьюторов и баг-репорты
└── README.md           # Документация
```

---

## 🐛 Сообщить об ошибке и контакты

Нашли баг или хотите предложить улучшение?
* Создайте тикет в **[GitHub Issues](https://github.com/w1bbex/w1x-cli/issues)**.
* Подробности в файле [CONTRIBUTING.md](CONTRIBUTING.md).

---

## 📄 Лицензия

Проект распространяется под открытой лицензией **[MIT](LICENSE)**.
