[2026-09-26] eagle: family/how-to/kraken-access.md family/how-to/truenas-infrastructure.md family/projects/aide-kraken-backend.md personal/projects/balda/balda-mm-delegation-plan.md personal/projects/balda/balda-valera.md personal/projects/balda/fast-rlm-integration.md personal/tech/docker-data-root-mount-race.md personal/tech/inter-site-throughput-taiga-to-mac.md personal/tech/inter-site-throughput-taiga-to-mac.md.bak-nedstab2 personal/tech/multistream-single-flow-limit.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-26 00:37:38 +06:00
1 parent 335478ef65
commit 1456511d3a
13 files changed
+1316 -15

No files matched your search

@@ -1,8 +1,13 @@
# Balda 2.0 — Mattermost + распределённое делегирование (план)
> Создан 2026-09-25. Статус: **черновик, ждёт апрува Alex**.
> Задача: поднять свежую Балду из `normahq/balda` (без наших коммитов), завязать на Mattermost,
> Задача: поднять свежую Балду из `baldaworks/balda` (без наших коммитов), завязать на Mattermost,
> построить распределённое делегирование (дешёвый оркестратор + подписочные CLI в VM).
>
> **Оценка объёма (проверено 2026-09-25):** это ~10-14 рабочих дней, а не «пара вечеров».
> Апстрим переписан полностью (900 файлов), Mattermost-адаптера в нём нет вообще.
> Реалистичная разбивка: MM на Kraken 2-3 ч · MM-адаптер 2-4 дня · оркестратор на Kraken 1-2 дня ·
> исполнитель + мост на Mac 2-3 дня · связка и приёмка 1 день.
---
@@ -211,7 +216,7 @@ Mattermost (Alex) — итог + артефакты
|---|---|---|
| Бан подписочного аккаунта за «unusual traffic» | средний | только официальный бинарь; не более 1-2 параллельных задач; не проксировать токен; мониторить письма Anthropic |
| MM-адаптер разъедется с апстримом | высокий | держать как отдельный fork-патч, ребейзить на каждый релиз; либо предложить в апстрим PR |
| Kraken: USB-диск нестабилен, mount-race | известный | учесть в compose (см. `docker-data-root-mount-race`), volume не на data-root |
| Kraken: USB-HDD монтируется ~130 с, есть mount-race | известный | drop-in `RequiresMountsFor` уже применён и проверен reboot'ом; volume не на data-root |
| RPi5 не тянет сборку Балды | средний | собирать образ на Mac arm64, на Kraken только `pull`/`up` |
| Утечка секретов в MM-канал | средний | `balda.permissions.mode: ask`; redaction в job-events уже есть в апстриме |
| Mattermost free-лицензия ограничивает нужное | низкий | проверить лимиты до установки |
@@ -222,7 +227,7 @@ Mattermost (Alex) — итог + артефакты
1. **Mattermost:** поднимаем self-hosted Team Edition (free) или есть платный/облачный аккаунт?
2. **VM vs Docker:** начинаем с Docker-контейнера на Mac (быстро) или сразу VM (UTM/Parallels)?
3. **Kraken:** MM на USB-HDD-разделе или на SD (риск износа)? Учитывая нестабильность USB-диска — возможно, вынести MM на SD с бэкапом.
3. **Kraken:** MM на USB-HDD-разделе или на отдельном томе? Диск **не нестабилен** — просто медленно монтируется (~130 с, mount-race закрыт drop-in'ом). Единственный реальный минус HDD — 5400rpm, ~95 МБ/с на чтение. Альтернатива — SD, но там риск износа.
4. **Провайдер оркестратора:** DeepSeek (как сейчас у Валеры) или другой дешёвый?
5. **Судьба текущей Валеры/Клавдия:** гасим или держим параллельно на время миграции?
@@ -241,3 +246,12 @@ Mattermost (Alex) — итог + артефакты
## История
- **2026-09-25**: создан по итогам разведки апстрима и юридической проверки подписок.
- **2026-09-25**: добавлена оценка объёма (10-14 дней); уточнено, что диск Kraken НЕ нестабилен
(только медленный mount ~130 с) — формулировку «диск нестабилен» Alex потребовал удалить из
доков и памяти. См. `personal/tech/docker-data-root-mount-race.md` §«Диск НЕ нестабилен».
## Связанные заметки
- [[personal/tech/docker-data-root-mount-race]] — mount-race на Kraken (закрыт, reboot-безопасен)
- [[personal/projects/balda/balda-valera]] — текущая эксплуатация Балды/Валеры (форк, старая архитектура)
- [[personal/projects/balda/fast-rlm-integration]] — fast-rlm MCP sidecar (наша ветка)
- [[personal/tech/hermes-fork-vs-upstream]] — аналогичный опыт сравнения форка с апстримом
+47
View File
@@ -172,6 +172,53 @@ docker logs balda-agent-valera-1 2>&1 | grep "norma-tools"
### stream_only_with_session
Фикс: написать `@Валера <текст>` чтобы создать сессию.
## Как инвентаризировать форк перед сверкой с апстримом (проверено 2026-09-25)
Если снова встанет вопрос «что у нас есть, чего нет в апстриме» — этот порядок даёт полную картину
без догадок:
```bash
# 1. Подтянуть метаданные апстрима (не менять рабочую копию!)
cd ~/Developer/balda
git fetch --all --tags --prune
# 2. Насколько мы отстали / опередили
git rev-list --left-right --count HEAD...upstream/main # ожидаем "N M"
# 3. Наши уникальные коммиты по КАЖДОЙ ветке (главное)
for ref in origin/main backup/our-main-before-upstream feat/zulip-transport feat/zulip-events-polling; do
echo "--- $ref ---"; git log --oneline upstream/main.."$ref"
done
# 4. Размер расхождения по файлам
git diff --stat $(git merge-base upstream/main origin/main)..upstream/main | tail -5
# 5. Что апстрим сделал с файлами, которые мы правили
git log --oneline --all -- pkg/runtime/hostedagent/openai.go
```
**Результат для нашего форка (2026-09-25):**
| Репо | Отставание | Наши уникальные коммиты |
|---|---|---|
| `~/Developer/balda` | 900 файлов | `05159d15` (промежуточные статусы Zulip, `handlers/balda.go`), `bc5fd03c` (то же + Telegram + messageID), `feat/zulip-events-polling` (Events API long-poll) |
| `~/Developer/norma-local` | 26 коммитов | `56a6e1e`=`91c2c0a` (DeepSeek tool_calls в `hostedagent/openai.go`) |
**Важно про `5ad65955` в balda** — это НЕ фича, а `replace normahq/norma => ./norma-local` в `go.mod`.
При переезде на чистый апстрим его нужно удалить, иначе сборка не пройдёт (файлов `norma-local` там нет).
**Что апстрим сделал с нашими файлами:**
- `norma v2` (`f8a7336`) **удалила целиком** `pkg/runtime/hostedagent/` и `pkg/runtime/agentfactory/`.
Наш DeepSeek-фикс не переносится патчем. Перед переносом проверить, есть ли поддержка tool_calls
для OpenAI-совместимых провайдеров в `normahq/runtime/v2 v2.0.11` — если да, фикс не нужен вовсе.
- В balda наши `handlers/*` заменены на `handlersfx/*`; Zulip переехал в `channel/zulip/*`.
Наш фикс промежуточных статусов надо переписывать под `handlersfx/zulip_ingress.go`.
**Питфоллы при сверке:**
- `origin` у `norma-local` — это `normahq/norma` (реальный апстрим), а у `balda` `origin` — **наш** `mallexxx/balda`,
апстрим живёт в `upstream`. Не путать: «тянуть до апстрима» для balda ≠ `git pull origin main`.
- Стэши теряются (не переживают `git gc`/клоны) — выносить в ветку до любых операций сброса.
## Известные грабли
### OPENAI_BASE_URL — обязательная env var
@@ -114,10 +114,13 @@ mcp_servers:
## Откат
`cd /Users/admin/Docker/fast-rlm-mcp && docker-compose down` + убрать entry из config.yaml + `restart` Балды → состояние до начала.
### 0.7 Mattermost — новый транспорт (2026-09-25)
Планируется завязать Балду на **Mattermost**. В апстриме (`baldaworks/balda`) MM **отсутствует полностью** (0 совпадений по `mattermost`). Каналы апстрима: `telegram`, `zulip`, `slackagent`, `webhook`. Значит MM — новый транспортный адаптер по контракту `docs/architecture/transport-presentation-boundary.md`; образец для копирования `channel/zulip/adapter.go` (331 стр.) + `client.go` (289 стр.). План: [[personal/projects/balda/balda-mm-delegation-plan]].
## Признанные галлюцинации в этой сессии
1. msg 58792-58795: фабрикация "Container Started / Ready" — реально ничего не создавалось.
2. Утверждение что `fast-rlm serve --port 3333` существует — такой команды НЕТ. fast-rlm — только клиент.
3. Старая запись в памяти про "Балда на Кракене" — устаревшая, противоречит документации. Балда на Eagle.
3. Старая запись в памяти про "Балда на Кракене" — **устаревшая и ошибочная**. Балда живёт **на Eagle (Mac M4)**, в Docker Desktop: контейнер `balda-agent-valera-1`, compose в `~/Docker/balda-agent/`. **Кра́кен к Балде отношения не имеет** (там Jellyfin/arr-стек/transmission). ✅ Перепроверено 2026-09-25, формулировка «Балда на Кракене» удалена из доков и памяти.
4. Попытка писать доку через native `Write`/`Edit` в `/Users/admin/obsidian/...` из Linux-контейнера — файл попадает в контейнерную ФС, не в реальный vault. **Правильный путь — `mcp_obsidian_write_note` / `mcp_obsidian_patch_note`**.
5. Утверждение `from fast_rlm.config import RLMConfig` — такого пути в библиотеке нет, импорт top-level: `from fast_rlm import RLMConfig`.
6. `docker compose` (v2) на хосте не установлен — нужен `docker-compose` (v1).