Files
obsidian-vault/personal/projects/balda/claudio-klaudiy.md
T

3.6 KiB
Raw Blame History

Клавдий (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-claudiobalda-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