# AILab SCRUME Agent

Дистрибутив Hermes Agent: персона личного помощника, базовый конфиг, 58 скиллов.
Автор: AI laboratory SCRUM company.

> ## ⛔ НЕ запускайте установку «от имени администратора»
>
> Откройте **обычное** окно PowerShell (Win+R → `powershell`). **Не** «Запуск от имени
> администратора».
>
> Запуск с повышением прав — главная причина отказа: папки в доме агента создаются от
> другой учётной записи, и потом движок не может прочитать свой собственный Python.
> Установка встаёт мгновенно с `Access is denied`, ещё до любой загрузки.
>
> Единственное, что запускается от администратора, — файл починки `FIX.cmd`
> (и `WIPE.cmd`), и только если установка уже остановилась.

**Получателю агента:** не нужно ничего скачивать и распаковывать руками. Откройте
PowerShell (Win+R → `powershell`) и вставьте **целиком, одной строкой**:

```powershell
cd $env:TEMP; Remove-Item -Recurse -Force ailab -ErrorAction SilentlyContinue; Remove-Item -Force ailab.zip -ErrorAction SilentlyContinue; curl.exe -L --fail -o ailab.zip "https://github.com/AILABSCRUME/AI_Lab_SCRUME_Co/releases/latest/download/agent-setup.zip"; if ((Get-Item ailab.zip).Length -lt 1MB) { throw "Архив не скачался - повторите (VPN?)" }; Expand-Archive ailab.zip ailab -Force; .\ailab\setup.cmd
```

Дальше всё делает установщик: ставит движок и агента, открывает Блокнот для ключа,
прогревает окружение, качает и ставит окно приложения, кладёт ярлык **«AILab SCRUME Agent»**
на рабочий стол. Ключ API выдаёт владелец агента. Доступ к репозиторию не нужен.

Ссылка постоянная — не меняется при выпуске новых версий, повторный запуск обновляет агента
(ключ, память и переписка сохраняются). Подробности — [`INSTALL.md`](INSTALL.md).

### Если установка остановилась

В той же распакованной папке лежат файлы помощи — запускаются **двойным кликом**:

| Файл | Что делает | От администратора? |
|---|---|---|
| `CHK.cmd` | показывает, что видит установщик, и права на файлы | нет |
| `ACL.cmd` | показывает правила доступа к папке агента | нет |
| `FIX.cmd` | починка прав. **Ключ и переписка сохраняются** | **да** |
| `WIPE.cmd` | полный снос папки агента и установка заново. **Ключ вписывать заново** | **да** |

`CHK` и `ACL` ничего не меняют.

**Автору:** это исходник дистрибутива. Пакет для передачи собирается скриптом
`dist/vasily-setup/build-package.ps1` (имя папки историческое).

## Что внутри

| Путь | Что это |
|---|---|
| `distribution.yaml` | манифест: имя, версия, автор, требуемые переменные окружения |
| `SOUL.md` | персона агента: AILab SCRUME Agent, личный помощник |
| `config.yaml` | модель, провайдер (Polza.ai), инструменты, язык — **без ключей** |
| `skills/` | 58 штатных скиллов Hermes (документы, таблицы, PDF, поиск, почта, заметки, код) |
| `INSTALL.md` | пошаговая инструкция для получателя |
| `.env.template` | шаблон `.env`, устанавливается как `.env.EXAMPLE` |

Ключ API живёт только в `.env` получателя: в `config.yaml` стоит
`key_env: HERMES_CUSTOM_POLZA_AI_API_KEY` — имя переменной, а не значение.
В репозитории ключей нет.

## Куда ставится

Агент ставится в **корневой дом Hermes** (`%LOCALAPPDATA%\hermes`), а не в именованный
профиль. Так у получателя ровно один агент и нет меню профилей — это требование сборки.

`hermes profile install` здесь не используется: он умеет только именованные профили, а
запарковать корневой профиль ядро Hermes не даёт (намеренно игнорирует `gateway.parked`
для `default`). Поэтому `setup.ps1` копирует `SOUL.md`, `config.yaml` и `skills/` в корень
сам и ставит файл-маркер `.ailab-install.json`, по которому следующий запуск понимает,
что это обновление, а не чужая установка.

## Что агент умеет

| | |
|---|---|
| Документы | читает и **создаёт** Excel (`.xlsx`), Word (`.docx`), PowerPoint (`.pptx`), PDF — включая формы, объединение, шифрование и извлечение текста |
| Файлы | чтение и запись, поиск по содержимому |
| Терминал и код | **включены** — на них построены скиллы документов |
| Веб-поиск | через MCP-серверы, подключаются отдельно |
| Голос | **включён**: распознавание речи (локальный Whisper, без ключей) и синтез русским голосом (`edge`) |
| Номер сборки | виден в заголовке окна чипом `AILab v<версия>` (плагин `version-badge`) |
| Управление рабочим столом | **выключено** (`computer_use`) |

Терминал и запуск кода включены осознанно. Без них не работают скиллы Excel, Word,
PDF и почты: они построены на запуске python-скриптов, а другого способа запустить
скрипт в Hermes нет. Пакеты для документов (`openpyxl`, `python-docx`, `python-pptx`, `pypdf`, `reportlab`, `pdfplumber`) установщик ставит сам на шаге 8 — на живом доме проверено создание и чтение всех четырёх форматов.

Скрыть их у получателя можно так:

```powershell
hermes config set agent.disabled_toolsets "[terminal, code_execution, computer_use]"
```

Голос работает без ключей: распознавание — локальная модель Whisper, синтез — бесплатный
русский голос `edge`. Модель распознавания скачается при первом использовании.

## Что не входит

- API-ключи, `auth.json`, пароли dashboard — только свои, локальные.
- MCP-серверы (Revit, AutoCAD и прочее) — не подключены, ставятся отдельно под свои задачи.
- SSH-бэкенд, cron-задачи, память и история автора.

## Передать получателю (файлом)

```bash
cd "$LOCALAPPDATA/hermes/dist/vasily-setup"
powershell -NoProfile -ExecutionPolicy Bypass -File build-package.ps1
```

Скрипт берёт версию из `distribution.yaml`, собирает бандл, копирует `setup.cmd`,
`setup.ps1`, `INSTALL.md`, `ПРОЧТИ-МЕНЯ.txt` и складывает всё в
`../ailab-setup-v<версия>.zip`.

Или вручную только бандл:

```bash
cd <этот каталог>
git bundle create ../ailab-v<версия>.bundle --all
git bundle verify ../ailab-v<версия>.bundle   # ожидается «is okay» + «complete history»
```

Получатель разворачивает по `INSTALL.md`.

## Обновить агента у получателя

Поднять `version` в `distribution.yaml`, закоммитить, поставить тег, пересобрать пакет
`build-package.ps1` и передать новый архив. Получателю достаточно положить новый
`ailab-<версия>.bundle` рядом со `setup.cmd` и запустить его снова: маркер в доме
подскажет, что это обновление, а `.env` с ключом, память и переписка не трогаются.

## Проверка перед передачей

Тест на подменённой машине — так собственный дом не участвует:

```powershell
# 1. "машина" получателя: рантайм без агента
$fake = 'C:\tmp\recv\AppData\Local'
New-Item -ItemType Directory "$fake\hermes" -Force
Copy-Item "$env:LOCALAPPDATA\hermes\tools" "$fake\hermes\tools" -Recurse
Copy-Item "$env:LOCALAPPDATA\hermes\bin"   "$fake\hermes\bin"   -Recurse

# 2. прогон установщика в ней
$env:LOCALAPPDATA = $fake
cd C:\tmp\recv\package          # распакованный ailab-setup-*.zip
powershell -NoProfile -ExecutionPolicy Bypass -File .\setup.ps1
```

Проверить после прогона: `%LOCALAPPDATA%\hermes\SOUL.md` (персона без имени автора),
58 скиллов, `.ailab-install.json` с версией, `.env` с ключом.

Публикация в git-репозиторий (вариант с обновлением одной командой):

```bash
git tag v<версия> && git push origin master --tags
```

## MCP (по желанию)

Добавляется уже в установленном агенте:

```bash
hermes mcp add <имя> --command <команда>
hermes mcp catalog          # посмотреть, что есть в каталоге
```
