> For the complete documentation index, see [llms.txt](https://gensyn-cis.gitbook.io/cis/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gensyn-cis.gitbook.io/cis/nody/codeassist.md).

# CodeAssist

**CodeAssist** - это полностью локальный и приватный помощник для программистов, разработанный командой **Gensyn**. Он помогает решать задачи по программированию и со временем обучается вашему стилю кода.

<figure><img src="/files/ZhxRL0ALgjJlxUTvLhG8" alt=""><figcaption></figcaption></figure>

В отличие от обычных ИИ-ассистентов, CodeAssist **работает прямо в вашем редакторе**. Каждое действие - набор текста, исправление, удаление или бездействие - становится сигналом обучения. Со временем он подстраивается под ваши привычки и стиль, превращаясь не просто в инструмент, а в «ученика», который учится у вас.<br>

***

### <mark style="color:red;">**Установка**</mark>

#### 1. Установите Docker

Установите [**Docker**](https://docs.docker.com/engine/install/) в соответствии с инструкциями для вашей операционной системы

#### 2. Установите Python

CodeAssist требует **Python версии 3.10 или выше**.\
Проверьте версию:

```
python3 --version
```

#### 3. Установите UV

**UV** используется для управления зависимостями.\
Установите его следующими способами:

**macOS**

```
brew install uv
```

**Linux / macOS без Homebrew**

```
curl -LsSf https://astral.sh/uv/install.sh | sh
```

#### 4. Загрузите код CodeAssist

Склонируйте репозиторий:

```
git clone https://github.com/gensyn-ai/codeassist.git
cd codeassist
```

#### 5. Запуск CodeAssist

Выполните:

```
uv run run.py
```

#### 6. Токен Hugging Face

Для запуска потребуется **токен Hugging Face** с правом *Write access*.\
Создайте токен по [этой инструкции](https://huggingface.co/settings/tokens)<br>

***

### Веб-интерфейс

После запуска CodeAssist автоматически откроется браузер.\
Если этого не произошло, перейдите вручную по адресу:

```
http://localhost:3000
```

В открывшемся окне:

* Войдите через **email** (одноразовый код) или **Google**.
* После первого входа данные сохранятся в `persistent-data/auth/userKeyMap.json`.

Выберите уровень сложности задачи (**Easy**, **Medium**, **Hard**) — и CodeAssist начнёт запись вашей сессии.\
Каждое действие — ввод, редактирование, удаление — используется для обучения модели.

> CodeAssist сам вставляет код прямо в ваш файл, без всплывающих окон или подтверждений.\
> Ваши действия (оставили, исправили или удалили код) помогают модели понять ваши предпочтения.

***

### Советы по использованию

* ⏸️ Приостановить ассистента — **Shift+Space** или кнопкой «Pause Assistant».\
  Первый ввод после паузы возобновит работу.
* 🧭 Держите курсор рядом с областью, где работаете — вставки зависят от позиции курсора.
* 💬 Если ассистент ничего не делает («No-Op») — он ждёт вашего действия.

***

### Обучение модели

Пока открыт веб-интерфейс, CodeAssist записывает все ваши действия.\
Чтобы завершить сессию и запустить обучение — нажмите **Ctrl+C** в терминале.

> Вам не нужно решать задачу полностью — обучение всё равно произойдёт.

Во время тренировки CodeAssist:

1. Сравнивает ваши правки с действиями ассистента
2. Вычисляет «награды» и «штрафы»
3. Обновляет локальную модель
4. Сохраняет новую версию в `persistent-data/trainer/models`
5. Отправляет модель на Hugging Face (если токен задан)

После завершения (через несколько минут) перезапустите CodeAssist, чтобы использовать обновлённую модель.

***

### Рекомендации

* **Будьте терпеливы:** ассистент изучает ваш темп и стиль.
* **Взаимодействуйте естественно:** позвольте ему вставлять код, не удаляйте сразу.
* **Не стирайте всё мгновенно:** это учит его «ничего не делать».
* **Работайте с разными задачами:** разнообразие улучшает обучение.
* **Ожидайте постепенных улучшений:** эффект заметен после 4–5 сессий.

***

### <mark style="color:red;">**Решение проблем**</mark>

#### - Ошибка: `Container is unhealthy`

Проверьте логи контейнера:

```
docker logs <имя-контейнера>
```

Загрузите логи при создании issue.<br>

#### - Ошибка подключения к Docker daemon

```
Error connecting to Docker daemon: ('Connection aborted.', FileNotFoundError(...))
```

Docker не запущен или нет прав доступа.\
Убедитесь, что Docker установлен и работает.

#### - Ошибка: порт 3000 занят

```
Bind for 0.0.0.0:3000 failed: port is already allocated
```

Порт 3000 уже используется.\
Варианты:

1. Остановите другой контейнер, использующий этот порт.
2. Запустите CodeAssist на другом порту:

```
uv run run.py --port 3001
```

Не используйте порты: 8000, 8080, 8001, 8008, 3003, 11434 — они заняты другими сервисами CodeAssist.

***

### Участие в разработке

Мы рады любым вкладчикам!

#### Установка pre-commit

```
pip install pre-commit
pre-commit install
```

Перед каждым коммитом выполняется проверка стиля кода с помощью **ruff format**.\
Если проверка не пройдена, GitHub-действия не пропустят изменения — нужно исправить форматирование.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gensyn-cis.gitbook.io/cis/nody/codeassist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
