[2026-09-26] eagle: personal/plans/balda-mm-phase4-agents.md personal/tech/balda-executor-mcp.md
This commit is contained in:
1 parent
2a8706d450
commit
0c7b1f6466
2 files changed
+204
-34
No files matched your search
@@ -16,7 +16,7 @@
|
||||
| 4 | Секция «Agents» в Dashboard | ✅ активирована и проверена |
|
||||
| 5 | Связка Балда → мост | ✅ конфиг `type: http`, образ 0.2.0, `tools/list` из docker-сети |
|
||||
| 6 | Obsidian MCP для Балды | ✅ контейнер `obsidian-mcp` на Kraken + `type: sse` в конфиге (транспорт проверен) |
|
||||
| 6a | 🔴 Инструменты MCP в сессии Балды | 🔴 **блокер:** снапшот каталога в `state.db` содержит только `builtin` → Балда «MCP не вижу». См. [[personal/tech/balda-executor-mcp]] §10g |
|
||||
| 6a | 🔴 Инструменты MCP в сессии Балды | 🔴 **корень: `session_memory` выключен; при включении на Mattermost падает `/reset`** (`no session-memory classifier for "mattermost"`). См. §9.3 |
|
||||
| 7 | Приёмка от аккаунта Alex | 🔴 блокер: авторизация CLI |
|
||||
|
||||
---
|
||||
@@ -293,16 +293,58 @@ lsof -nP -iTCP:8790 -sTCP:LISTEN
|
||||
- obsidian
|
||||
```
|
||||
См. §11 ниже.
|
||||
3. 🔴 **MCP-инструменты не видны в сессии Балды.** Транспорты и сети проверены живьём
|
||||
(оба сервера отвечают 200 из docker-сети), Балда стартует без ошибок и отвечает в чате —
|
||||
но говорит «MCP не вижу». **Корень найден:** снапшот каталога в `state.db`
|
||||
(`balda.appruntime_catalog_snapshot:*`) содержит **только `builtin`** — источники
|
||||
`configured` не скомпилированы; плюс сессия закреплена за старым `RuntimeSnapshotID`.
|
||||
Разбор и механика — [[personal/tech/balda-executor-mcp]] §10g.
|
||||
⏳ Ждёт решения Alex: **A)** вычистить ключи снапшотов из `state.db` (рекомендовано),
|
||||
**B)** полный сброс `state.db`.
|
||||
3. 🔴 **MCP-инструменты не видны в сессии Балды. КОРЕНЬ НАЙДЕН (2026-09-26).**
|
||||
Оказалось **не** снапшот каталога — снапшот в порядке. Самый свежий (`scope: effective`,
|
||||
`runtime_catalog_snapshot:895d7905…`) содержит всё как надо:
|
||||
```json
|
||||
"sources":[{"kind":"builtin","name":"balda"},
|
||||
{"kind":"configured-mcp","name":"executor-mcp"},
|
||||
{"kind":"configured-mcp","name":"obsidian"}]
|
||||
"mcp_servers":[{"name":"executor-mcp","transport":"streamable-http"},
|
||||
{"name":"obsidian","transport":"sse"}]
|
||||
```
|
||||
|
||||
**Две настоящие причины (обе исправлены в конфиге):**
|
||||
|
||||
**3a. Провайдер не ссылался на MCP-серверы.** Доки Balda:
|
||||
`runtime.providers.<id>.mcp_servers` — серверы подключаются **через секцию провайдера**;
|
||||
`balda.mcp_servers` лишь добавляет ID в сессию. Без провайдерской секции инструменты
|
||||
не грузятся. Формула: `effective = bundled(balda) + runtime.providers.<p>.mcp_servers + balda.mcp_servers`.
|
||||
```yaml
|
||||
runtime:
|
||||
providers:
|
||||
deepseek:
|
||||
type: openai
|
||||
openai: {…}
|
||||
mcp_servers: # 🔴 обязательная секция
|
||||
- executor-mcp
|
||||
- obsidian
|
||||
```
|
||||
|
||||
**3b. 🔴 `balda.session_memory.enabled` — выключатель MCP-биндера, но на Mattermost
|
||||
он ломает `/reset`.** Биндер создаётся как
|
||||
`SessionMCPBinderAdapter{Enabled: cfg.Balda.SessionMemory.Enabled}`
|
||||
(`sessionapp/module.go:191-196`). Значит MCP-инструменты в сессии включаются именно
|
||||
`session_memory`, а не `balda.memory` (это разные секции!).
|
||||
|
||||
НО: при `session_memory.enabled: true` сброс сессии падает —
|
||||
```
|
||||
warn … "observe reset boundary: no session-memory classifier is registered for \"mattermost\""
|
||||
→ в чате: "Could not reset this session."
|
||||
```
|
||||
`ScopeResolver` регистрирует классификаторы только для **telegram / slackagent / zulip**
|
||||
(`preflight.go`), для Mattermost — нет. Итог: сессия не пересоздаётся, MCP не подключаются.
|
||||
|
||||
**Вывод:** MCP-инструменты в сессии Балды на Mattermost сейчас **недостижимы** —
|
||||
упирается в отсутствие Mattermost-классификатора в `ScopeResolver`.
|
||||
`session_memory` оставлен **выключенным** (иначе `/reset` не работает).
|
||||
Для разблокировки нужно либо добавить `ClassifyLocatorScope` для Mattermost в апстриме,
|
||||
либо перейти на канал с поддержкой (telegram/slackagent/zulip).
|
||||
|
||||
⚠️ Тест-пост должен идти **от админского токена** — посты от имени самого бота Балда
|
||||
игнорирует (правильно): `docker exec mattermost mmctl --local token generate admin …`.
|
||||
игнорирует (правильно), в логе `dropping posted event: bot not mentioned`:
|
||||
`docker exec mattermost mmctl --local token generate admin …`.
|
||||
И **не забывать `@balda`** в тексте поста.
|
||||
4. 🔴 Логин CLI (Alex вручную) — без него сквозная приёмка невозможна.
|
||||
5. 🔴 **Завести Access Application** на `agents-bridge.qentra.top` — сейчас туннель
|
||||
отвечает 200 без авторизации (проверено). Защита — только `X-Bridge-Secret`.
|
||||
|
||||
Reference in new issue
Block a user