3.6 KiB
Клавдий (Claudio) — эксплуатация
Расположение
| Item | Value |
|---|---|
| Repo | ~/Developer/balda/ (один код с Валерой) |
| Ветка | main |
| Compose | ~/Docker/claudio-agent/docker-compose.yaml → контейнер claudio-agent-claudio-1 |
| Config | ~/Docker/claudio-agent/.config/balda/config.yaml |
| Env | ~/Docker/claudio-agent/.env |
| Dockerfile | ~/Docker/claudio-agent/Dockerfile.claudio |
| Образ | claudio-agent-claudio (тагается как balda-agent-valera для Валеры) |
Запуск / рестарт
cd ~/Docker/claudio-agent
docker-compose restart # без пересборки
docker-compose up -d # пересоздать контейнер
# Rebuild после изменений в коде:
cd ~/Docker/claudio-agent && docker-compose build
docker tag claudio-agent-claudio:latest balda-agent-valera:latest
cd ~/Docker/claudio-agent && docker-compose up -d
cd ~/Docker/balda-agent && docker-compose up -d
Валера и Клавдий — один код и один образ (
claudio-agent-claudio→balda-agent-valera). Разница только в конфиге,.envи порте webhook (8091 vs 8092). Сборка всегда из~/Docker/claudio-agent/.
Архитектура получения сообщений
Клавдий — outgoing webhook bot (bot_type=3). Zulip отправляет webhook только для @mention и DM.
Отличие от Валеры
- Провайдер:
claude(claude-sonnet-4-6) через Claude Proxy (контейнер, порт 3457) - Порт webhook: 8092 (у Валеры 8091)
- База: отдельная SQLite (NATS embedded)
MCP Obsidian — конфиг
Аналогично Валере — URL обязательно с /sse:
runtime:
mcp_servers:
obsidian:
type: sse
url: http://obsidian-mcp:3101/sse
name: obsidian
Проблемы и решения
Валера отвечал вместо Клавдия на @mention
Причина: у Валеры в allowed_owners был admin@zulip.local (реальный email юзера), а у Клавдия — amartemyanov@duckduckgo.com (не совпадает). isAllowedOwner возвращал false.
Решение: добавлен admin@zulip.local в allowed_owners Клавдия.
Валера отвечал на @mention других ботов (через Events API)
Причина: оба бота подписаны на Events API с all_public_streams=true. Когда кто-то писал @Клавдий, Валера получал это сообщение через Events API и, имея активную сессию в том же треде, отвечал.
Решение: пропатчен zulip_handler.go — добавлена проверка extractOtherMention(): если сообщение со стрима содержит @mention другого бота, игнорировать.
При первом запуске не отвечает на @mention
Если после запуска не отвечает на @mention — проверить в config.yaml allowed_owners:
zulip:
allowed_owners:
- admin@zulip.local
Owner'ы прописаны в config.yaml статически, команда /start owner=<token> не нужна.
При необходимости — пересоздать контейнер: docker-compose up -d