simbiot-harness/docs/hardass/INSTALL.md

5.2 KiB
Raw Permalink Blame History

Хардас для клиента студии — инсталлятор (hardass deploy playbook)

Источник: задача t-261002072440-c482ca (голосовое Alex, m-516173358): «поставить хардас клиентам студии, которые уже сталкиваются с проблемами и ждут его; агент сам собирает их потребности и постепенно реализует; Alex дёргать в процессе поменьше».

Реплицируется наша собственная живая установка (/root/simbiot-harness, проверено на этом хосте 2026-10-02): тот же код, те же юниты, тот же ритм.

Что ставится

Компонент Юнит Что делает
scheduler simbiot-harness.service лестница тактов sec/min/hour/day, задачи, дайджесты
TG-инбокс simbiot-harness-tg.service голосовые/сообщения клиента → харнес, ответы, идемпотентная доставка
портал-канал SIMBIOT_PORTAL_CHAT=1 + harness/portal_channel.py чат клиент ↔ харнес через портал кооператива
аудито-ключ <root>/.audit/ed25519.key 0600 подпись событий и команд (крипто-цепочка)

Шаги (у каждого клиента, отдельный root/venv)

  1. Код: скопировать репозиторий simbiot-harness/ (rsync/git) на машину клиента; создать venv: python3 -m venv venv && venv/bin/pip install -q -r requirements.txt (или установить deps по импортам: flask, cryptography, requests).
  2. Секреты: в <root>/.env:
    • SIMBIOT_TG_TOKEN — токен личного TG-бота клиента (БотФазер, у каждого свой — не наш);
    • SIMBIOT_TG_ALLOWED — TG-ID владельца клиента (его чат, не наш);
    • ROUTER_KEY, ROUTER_BASE_URL — доступ к 9router (или свои ключи модели, если хочет свой биллинг);
    • SIMBIOT_PORTAL_CHAT=1 + SIMBIOT_AGENT_NAME=<имя агента на портале>.
  3. Бот клиента в TG чат: клиент нажимает «подключить» на портале, вставляет токен бота — портал хранит его в agents.tg_bot_token (порядок такой же, как у агентов портала, e-«portal channel»).
  4. Юниты systemd: положить оба unit-файла (шаблоны ниже), ExecStart с путями клиента, systemctl daemon-reload && enable --now обоих.
  5. Инициализация: ./venv/bin/python cli.py init → создаёт ES-стор.
  6. Аудит-ключ: ./venv/bin/python cli.py audit-key → отпечаток публичного ключа клиента — записать в реестр установок (docs/hardass/INSTALLS.md), это его key_id для сверки «что сделал харнес».
  7. Проверка: ./venv/bin/python cli.py verify → OK; cli status; отправить боту «ping» — ответ приходит в его чат сам.
  8. Онбординг потребностей: запустить scripts/needs_survey.py survey (см. SURVEY.md) — опросник уходит клиенту в его чат, ответы копятся в docs/hardass/needs/.

Шаблоны юнитов

# /etc/systemd/system/simbiot-harness.service
[Unit]
Description=Simbiot Harness (client)
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/root/simbiot-harness
ExecStart=/root/simbiot-harness/venv/bin/python -m harness.scheduler
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target

# /etc/systemd/system/simbiot-harness-tg.service
[Unit]
Description=Simbiot Harness TG inbox (client)
After=network-online.target simbiot-harness.service
[Service]
Type=simple
WorkingDirectory=/root/simbiot-harness
ExecStart=/root/simbiot-harness/venv/bin/python -m harness.tg_inbox
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target

Смоук-проверка инсталлятора (сделано 2026-10-02)

Бута свежей копии на этом хосте с разделёнными SIMBIOT_DB и SIMBIOT_AUDIT_KEY_DIR: init → verify OK (подписи и цепочка валидны, ключ клиента отличается от нашего — своя крипто-граница). Параллельный рестарт двух демонов безопасен (init_db идемпотентен, race закрыт t-261002072440).

Реестр установок — docs/hardass/INSTALLS.md

Каждая установка: клиент, машина, дата, key_id (audit-key), TG-бот, статус, потребности (ссылка на needs/).