# Раннер FAST AI

Раннер запускает инструменты моделей на компьютере пользователя и передаёт ответы в FAST AI. Поддерживаются Claude CLI, Grok CLI, Kimi CLI, ChatGPT/Codex, DeepSeek Harness Flash/Pro, z.ai/GLM в режимах Coding и API, а также сохранённые модели Fast. Чатовые модели без инструментов продолжают использовать серверные API.

## Установка

Нужны macOS или Linux, Python 3.11+, `curl`. На Windows используйте Ubuntu в WSL2. Для ChatGPT/Codex нужен Node.js с `npm`.

Создайте раннер в «Настройки → Runners», скопируйте одноразовый токен и выполните:

```bash
curl -fsSL https://fst-runner.fstai.xyz/install.sh | \
  FASTAI_URL=https://app.fst.ac \
  FASTAI_RUNNER_TOKEN=<твой_токен> \
  bash
```

Установщик создаёт `~/fastai-runner`, ставит зависимости и запускает пользовательскую службу: launchd на macOS, systemd на Linux или фоновый процесс, если служба недоступна. Для запуска в терминале добавьте `BACKGROUND=0` перед `bash`. После подключения привяжите раннер в FAST AI.

Полный комплект исходников доступен в [архиве](https://fst-runner.fstai.xyz/fastai-runner.zip). Распакуйте его и запустите `install.sh` с адресом сервера и токеном.

## Обновление

```bash
~/fastai-runner/update.sh
```

Токен берётся из `runner.env`, файл доступен только владельцу. Самообновление скачивает весь набор модулей по манифесту и проверяет SHA-256 и синтаксис Python. Активная задача завершается до обновления. `cat ~/fastai-runner/VERSION` показывает версию.

## Модели и инструменты

Модель выбирается в обычном селекторе FAST AI. Авторизация и личные API-ключи берутся из настроек пользователя. Каталог моделей общий с сервером; раннер получает выбранный идентификатор. Недоступный движок сообщает причину в чате.

DeepSeek использует тот же Harness SDK и настройки, что на сервере. z.ai/GLM использует тот же потоковый API-клиент и исполнение инструментов. Файлы, команды и вложения находятся в `~/fastai-runner/workdir/<sid>/reports`, временные файлы — в соседней `tmp`. Отключённый или старый раннер не переносит задачу на сервер.

LLM API подключаются напрямую. Внешние запросы инструментов используют прокси сессии; при отсутствии прокси соединение блокируется. Переменные окружения задаются отдельно для каждой задачи. «Стоп» отменяет агентный запрос и текущую команду с дочерними процессами.

## Диагностика

Логи находятся в `~/fastai-runner/logs/runner.log` и `runner.err`. Ошибка 4401 означает неправильный или удалённый токен. Повторная установка с тем же токеном обновляет существующий раннер. Две копии с одним токеном вытесняют друг друга.

## Сборка для скачивания

В репозитории FAST AI:

```bash
python3 runner/build_dist.py
```

Сценарий собирает файлы, архив, манифест с хешами и версии в `fstai-www/fst-runner`. В архив попадают только перечисленные исходники и документация; конфиги пользователя, ключи и рабочие каталоги не включаются.
