# 2026-04-04

## Темы сессии
- Исправление графа связей в Obsidian — переход на `[[wikilinks]]` в памяти
- Изучение ccunpacked.dev (утечка исходников Claude Code)
- Создание базы знаний Knowledge/Claude-Code/ (8 файлов)
- Аудит документации vs текущая конфигурация
- Расширение скиллов: исследование community commands, создание 3 новых
- Создание субагента webdev для веб-разработки
- Тестовое задание webdev: Server Dashboard на Next.js
- Управление LLM-моделями и изучение Open WebUI

## Что сделано
- **Obsidian-совместимость памяти:** MEMORY.md переведён на `[[wikilinks]]`, добавлены tags во frontmatter всех файлов, добавлены связи в CLAUDE.md и Journal
- **Knowledge base:** создана документация по архитектуре Claude Code из ccunpacked.dev — 8 файлов (index, agent-loop, tools, permissions, memory-system, commands, hidden-features, performance) с блоками «Наша настройка»
- **3 новых скилла:** `/code-review` (7-фазный ревью), `/commit` (conventional commits + проверка секретов), `/fix-issue` (полный цикл от issue до PR). Основаны на community best practices (EveryInc, qdhenry/Claude-Command-Suite, Chect/toolkit)
- **Субагент webdev:** React/Next.js + TypeScript + VPS Ubuntu. Комбинация лучших практик из fullstack-guardian, nextjs-pro, react-pro. Правило: code-review перед завершением
- **Server Dashboard** (`~/projects/server-dashboard/`): Next.js + SWR, метрики CPU/RAM/Disk/GPU/Temperature, 3 вкладки, доступен через Tailscale
- **LLM модели:** удалены 3 дубликата Gemma (80 ГБ освобождено), переключено на Gemma 4 31B Q4_K_M
- **Conduit:** установлен Android-клиент для Open WebUI
- Сохранена память: [[reference_local_llm]], [[reference_claude_code_docs]], [[feedback_obsidian_format]]

## Решения и выводы
- Память Claude Code должна быть Obsidian-совместимой (wikilinks, tags) — см. [[feedback_obsidian_format]]
- Документация из ccunpacked.dev — это внутренняя архитектура, не пользовательская настройка. Добавлены блоки «Наша настройка» для разделения
- Community commands лучше собственных с нуля — сначала ресёрч, потом адаптация
- Gemma 4 31B Q4_K_M хорошо справляется с логикой и кодом при 35 tok/s
- Open WebUI выполняет код через Pyodide (в браузере) — безопасно, но ограничено

## Ключевые факты
- Obsidian vault: ~/claude-brain/ с синхронизацией через Obsidian Sync
- Knowledge base: ~/claude-brain/Knowledge/Claude-Code/ (8 файлов из ccunpacked.dev)
- Скиллов теперь 10: search, news, price, explain, summary, system, save + code-review, commit, fix-issue
- Субагентов теперь 4: researcher, memory-keeper, sysadmin + webdev
- Server Dashboard: http://100.66.23.33:3333 (через Tailscale)
- Модели: Gemma 4 31B Q4 (18 ГБ, активна), Qwen 3.5 27B Q5 (19 ГБ)
- Conduit — Android-клиент для Open WebUI из Google Play
- Материнка MSI MPG B550 GAMING PLUS не отдаёт fan speed в Linux

---

## Сессия 2

## Темы сессии
- Интеграция xAI TTS для голосовых сообщений в Telegram
- Изучение архитектуры CCBot (Telegram ↔ Claude Code мост)
- Добавление команды `/context` в CCBot

## Что сделано
- **Исследование xAI TTS API:** endpoint, голоса, форматы, цены ($4.20/1M символов), лимиты (15K символов), 17 языков
- **Изучение CCBot:** полный разбор архитектуры — session_monitor, message_queue, routing по топикам, группа -1003792334275
- **Установка ffmpeg:** статический бинарник v7.0.2 в `~/.local/bin/ffmpeg` (без sudo)
- **Скрипт `tts-send.sh`:** полный пайплайн текст → xAI API → MP3 → ffmpeg → OGG OPUS → Telegram sendVoice в топик
- **Скилл `/voice`:** команда для голосовых ответов по запросу, зарегистрирована в CLAUDE.md
- **Тест голосов:** сгенерированы 3 мужских сэмпла (Rex, Sal, Leo), отправлены Дане. Выбран **Rex**
- **Команда `/context`:** добавлена в CCBot bot.py — парсит контекст из нижнего хрома tmux pane (требует рестарт CCBot)
- **Память:** создано 2 новых файла — [[reference_ccbot_architecture]], [[project_voice_tts]]

## Решения и выводы
- Голосовые отправляются **только по запросу** (не автоматически) — через скилл voice
- Когда голос — **только голос, без текста** (не дублируется)
- Голос отправляется в **тот же топик**, где идёт диалог (не в личку)
- ffmpeg можно ставить без sudo через статический бинарник
- CCBot уже имел `/usage` команду — `/context` добавлена по аналогии

## Ключевые факты
- xAI TTS: голос Rex, endpoint POST https://api.x.ai/v1/tts
- Скрипт: ~/.claude/scripts/tts-send.sh
- Скилл: ~/.claude/commands/voice.md
- ffmpeg: ~/.local/bin/ffmpeg (статический, v7.0.2)
- Скиллов теперь 11: +voice
- CCBot нужен рестарт для подхвата `/context`

---

## Сессия 3

## Темы сессии
- Оптимизация UX CCBot в Telegram — устранение дублей и лишних сообщений
- Умные статус-уведомления (thinking → edit in place)
- Автоописание фотографий через GPT-4o-mini vision

## Что сделано
- **Убраны дубли юзер-сообщений:** `CCBOT_SHOW_USER_MESSAGES=false` в `.env`
- **Убрано эхо транскрипции:** удалена строка `🎤 "{text}"` из voice_handler
- **Убрано эхо фото:** удалена строка `📷 Image sent to Claude Code.` из photo_handler
- **Убраны уведомления о tool calls:** `CCBOT_SHOW_TOOL_CALLS=false` в `.env`
- **Thinking как статус:** thinking-блоки теперь обрабатываются через `enqueue_status_update` вместо `enqueue_content_message` — редактируются на месте и заменяются финальным ответом (1 сообщение вместо 2-3)
- **Автоописание фото:** добавлена функция `describe_image()` в `transcribe.py` — GPT-4o-mini vision генерирует краткое описание изображения на русском, отправляется как `📷 описание`
- **Правило в CLAUDE.md:** добавлена секция "Telegram (CCBot)" — запрет на бессмысленные ответы ("No response requested", "Noted" и т.п.)
- **Обновлена память:** [[reference_ccbot_architecture]] дополнена настройками `.env` и новыми модулями

## Решения и выводы
- Лучше менять конфиг (`.env`) чем код, когда есть готовые настройки
- Thinking-блоки как статус — простое изменение в одном месте (`handle_new_message`), но большой эффект на UX
- Правила поведения в CLAUDE.md работают надёжнее, чем промисы "больше не буду" — они персистентны между сессиями
- describe_image через GPT-4o-mini — дёшево и быстро, хороший компромисс

## Ключевые факты
- Все изменения в коде ccbot сделаны в installed package: `.local/share/uv/tools/ccbot/`
- При обновлении ccbot через `uv` — изменения в коде будут перезаписаны (`.env` сохранится)
- Файлы изменены: `bot.py`, `transcribe.py`, `.ccbot/.env`
