Skip to content

feat: dreaming meta-agent + tg-transcribe + infra fixes (sessions 034-037)#54

Merged
NickStr11 merged 3 commits into
mainfrom
feat/dreaming-tg-transcribe-infra-fixes
May 8, 2026
Merged

feat: dreaming meta-agent + tg-transcribe + infra fixes (sessions 034-037)#54
NickStr11 merged 3 commits into
mainfrom
feat/dreaming-tg-transcribe-infra-fixes

Conversation

@NickStr11
Copy link
Copy Markdown
Owner

Summary

3 коммита от мульти-сессионного дня 2026-05-08:

  • fix(infra): atomic_context_merge.py crash-safe (write_text truncate-without-temp bug → tempfile + os.replace) + diary.md regex-based number parser
  • feat(tools): новые tools/tg-transcribe/ (Groq Whisper, 1-2с/voice) и tools/dreaming/ (weekly meta-analysis Claude Code + субагентов через Gemini 3.1 Pro)
  • docs(rules): applied 2 findings из первого dreaming-прогона — max-transcriber native →T button (CDP стал fallback), settings.json hook cache recipe

Why

  • Безопасность handoff: bug в atomic_context_merge.py обнулил CURRENT_CONTEXT.md в session 037 — теперь atomic write через temp+rename, файл либо старый либо новый, никогда промежуточное состояние
  • Скорость TG-voice: cortex-vm + Gemini был 10-25с/voice. Локальный Telethon + Groq = 1-2с (×10 быстрее)
  • Fine-tuning репо: Dreaming = автоматический мета-анализ паттернов работы за неделю → предложения правил для CLAUDE.md/agents/skills/hooks. Dry-run only, никогда не патчит код. Production-ready для open-source клонов (никакого хардкода путей, всё через CLAUDE_PROJECT_DIR)

Smoke tests

  • tools/dreaming/: ruff clean, end-to-end run на 100KB корпусе → 5 findings, $0.05/прогон
  • tools/tg-transcribe/: 5 voices = 6.6с wall-clock (vs 50-125с старым pipeline)
  • scripts/atomic_context_merge.py: 5 параллельных воркеров → zero lost updates (runtime/test_handoff_race.py)

Test plan

  • На рабочем компе: git pull → проверить что tools/dreaming/ работает (cd tools/dreaming && uv sync && uv run python dreaming.py --dry)
  • Проверить что tools/tg-transcribe/ запускается (нужны GROQ_API_KEY + .session файл)
  • При следующем /handoff — убедиться что atomic_context_merge.py не падает на surrogate-символах (если встретятся)

🤖 Generated with Claude Code

Nick and others added 3 commits May 8, 2026 22:40
write_text открывал файл в w-mode и truncate'ил содержимое ДО того как
мог упасть на encoding error — при surrogate-символах в чужом контенте
CURRENT_CONTEXT.md обнулялся.

Фикс: переписан _atomic_write через tempfile.NamedTemporaryFile в той же
папке + fsync + os.replace. Atomic rename гарантирует что target либо
содержит старый текст, либо новый — никогда промежуточное состояние.

Дополнительно: stdin читается как bytes + decode utf-8 явно — больше не
нужен PYTHONIOENCODING=utf-8 для запуска на Windows.

Bonus: diary.md commands — regex-based парсинг номеров вместо isdigit
slice, толерантен к суффиксам типа '001b_*.md' если появятся.

Найден в session 037 при /handoff коллизии с surrogate-символами.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…-agent)

tools/tg-transcribe — replacement для cortex-vm + Gemini pipeline:
- Groq Whisper-large-v3-turbo через локальный Telethon (stolen .session с VM)
- 1-2 сек/voice (vs 10-25 сек cortex-vm + Gemini), 5 voices = 6.6 сек wall
- CLI: latest @user [N] / message @user msg_id / file path/to.ogg
- Voice cache в data/voices/ (re-runs не качают)
- Free tier ~25 voices/min, GROQ_API_KEY в Cortex .env

tools/dreaming — weekly meta-analysis самого Claude Code + субагентов:
- Читает .claude/agent-memory + per-user diary за окно + все reflections
- Шлёт в Gemini 3.1 Pro, получает 5 типов паттернов с предложениями
  правил для CLAUDE.md, .claude/agents/*, .claude/skills/*, hooks, memory
- Output: runtime/dreaming/YYYY-MM-DD.md (gitignored, dry-run only)
- Резолвит project root через CLAUDE_PROJECT_DIR → walk-up .env → fallback
- Стоимость: ~$0.05/прогон, $2.6/год при еженедельном запуске
- Production-ready для open-source: никакого хардкода путей, минимум deps

Smoke-run на корпусе 100KB вернул 5 findings + 2 факта — 4 из них
применены в этом сеансе (см. следующий коммит про max-transcriber + recipe).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… recipe

Findings from runtime/dreaming/2026-05-08.md (first dreaming run) — applied:

.claude/agents/max-transcriber.md
  Добавлен блок «Сначала кнопка →T» в начале — в UI Max возле голосового
  есть нативная кнопка транскрибации, работает на порядки быстрее CDP +
  whisper pipeline. Через Playwright: browser_snapshot → найди кнопку →
  browser_click. Текст появляется в чате.
  CDP+whisper flow стал fallback'ом для случаев когда нативная не работает.

docs/learned-the-hard-way.md
  Новый recipe «Удалил файл хука → фоновый спам 'File not found' до конца
  сессии». Симптом: после rm .claude/hooks/<name>.py каждое действие
  генерирует ошибку. Причина: Claude Code кеширует settings.json на время
  жизни сессии. Фикс (выбрать один):
    - Stub-вариант: заменить на no-op (sys.exit(0)), удалить позже
    - Clean-вариант: убрать запись из settings.json + /clear
  Источник: diary 028, dreaming-2026-05-08.

Skipped из dreaming-отчёта (не применены):
  - Edit Unicode → _patch.py (over-fitting на 1 случае)
  - SQL без чтения schema (overlap с уже существующими правилами)

Deferred:
  - Хардкод абсолютных путей в worktree — уже в backlog (рефакторинг через
    CLAUDE_PROJECT_DIR env var)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@NickStr11 NickStr11 merged commit 9b46cd6 into main May 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant