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