[2026-09-26] eagle: personal/plans/balda-mm-phase4-agents.md personal/tech/balda-go-fx-pitfalls.md

This commit is contained in:
Alexey Martemyanov committed 2026-09-26 23:34:08 +06:00
1 parent aa5b66a442
commit 593b867467
2 files changed
+97 -2

No files matched your search

+32
View File
@@ -182,6 +182,38 @@ func(broker *sessionmemorymcp.ContextBroker, enabled bool) baldaagent.SessionMCP
effective = bundled(balda) + runtime.providers.<id>.mcp_servers + balda.mcp_servers
```
🔴 **Не перечислять ID серверов ДВАЖДЫ** (`balda.mcp_servers` **и**
`runtime.providers.<id>.mcp_servers`) — эффективный набор это **объединение**, и каждый
сервер подключается дважды. Симптом — ход падает ещё до вызова модели:
```
error … "agent run: duplicate tool: \"balda.control.shutdown\""
→ в чате тишина; в логе `turn task failed` + `command deadlettered` (5 попыток)
```
Источник ошибки — библиотека ADK, не Балда:
```go
// google.golang.org/adk/v2/tool/toolutils/toolutils.go:47-48
if _, ok := req.Tools[name]; ok {
return fmt.Errorf("duplicate tool: %q", name)
}
```
🔴 **`duplicate tool` в исходниках Balda не найти** (`grep` пустой) — это `google.golang.org/adk`.
Искать в `$(go env GOMODCACHE)/google.golang.org/adk/`, а не в репозитории.
📌 Правило: держать список ID в **одном** месте — у провайдера; `balda.mcp_servers: []`.
Слияние в `session/manager.go:251-270` дедуплицирует **ID**, но не защищает от
повторной регистрации **инструментов** уже подключённого сервера.
⚠️ **`session_memory.enabled: true` тянет за собой structured-output память.** На
`deepseek-chat` worker памяти не может отдать нужную JSON-схему:
```
warn … session-memory capability retry limit exhausted
operation=dead_letter kind=boundary.v1 error_code=model_failure
error: output does not match schema: (root): output is required
```
7 попыток → dead letter. Ответы бота при этом работают, но **память не наполняется**.
Не блокер для MCP; отдельный дефект совместимости модели и схемы derivation.
---
## 🔴 Сброс падающих тестов: сначала `git stash`, потом слово «регрессия»