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

77 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Клавдий (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` для Валеры) |
## Запуск / рестарт
```bash
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`:
```yaml
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`:
```yaml
zulip:
allowed_owners:
- admin@zulip.local
```
Owner'ы прописаны в config.yaml статически, команда `/start owner=<token>` не нужна.
При необходимости — пересоздать контейнер: `docker-compose up -d`