From a8e5050766d4a1cc90f12bb1b4374201cc43c663 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Wed, 13 May 2026 08:37:31 +0600 Subject: [PATCH] =?UTF-8?q?2026-05-13=20media-toolbox:=20=D0=B0=D1=80?= =?UTF-8?q?=D1=85=D0=B8=D1=82=D0=B5=D0=BA=D1=82=D1=83=D1=80=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BA=D0=B8=20=E2=80=94?= =?UTF-8?q?=20=D0=BA=D0=B5=D1=88,=20OpenRouter,=20=D0=B2=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B5=D0=BD=D0=BD=D1=8B=D0=B9=20=D0=B0=D0=B3=D0=B5=D0=BD?= =?UTF-8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- family/projects/media-toolbox-kraken.md | 39 ++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/family/projects/media-toolbox-kraken.md b/family/projects/media-toolbox-kraken.md index 2436af1e..8ea93131 100644 --- a/family/projects/media-toolbox-kraken.md +++ b/family/projects/media-toolbox-kraken.md @@ -73,7 +73,44 @@ TrueNAS (Taiga) --- -## Шаг 1 — Исследование: Kodi lib на HTPC +## Важные замечания по архитектуре + +### Кеширование API-ответов ✅ +`HTTPClient` кеширует все ответы в файловую систему (30-дневный TTL), включая при dry run. Кеш: `/srv/.../docker/media-pipeline/cache/`. Повторные resolve-прогоны не тратят API-лимиты. + +### AI-агент: OpenRouter вместо OpenAI +`ChatGPTAPI` переключён на `https://openrouter.ai/api/v1/chat/completions`, модель по умолчанию `openai/gpt-4o-mini:free`. Ключ: `openai_api_key` в config.json — нужен реальный `sk-or-v1-...` ключ с openrouter.ai (бесплатный tier достаточен для Tier 5 last-resort). + +### Встроенный агент вместо Hermes cron ⭐ +**Идея (под вопросом / для реализации):** вместо внешнего Hermes cron-джоба — встроить в `media-pipeline` интерактивный режим `resolve --interactive` (или отдельная команда `agent`). + +Концепция: +- Для файлов которые не нашлись через TMDB/KP/webSearch — не просто записать "unresolved", а запустить mini-агентскую сессию +- Агент имеет промпты + тулы (веб-поиск, TMDB по ID, Kinopoisk по ID, пользовательский ввод) +- Может задавать уточняющие вопросы если нашёл несколько кандидатов +- Сохраняет результат в кеш чтобы последующие прогоны не тратили API +- Это делает media-pipeline самодостаточным — не зависит от внешнего оркестратора + +Преимущества vs Hermes cron: +- Нет latency между обнаружением проблемы и её решением +- Контекст resolve-сессии доступен агенту напрямую (graph facts, провайдеры, история) +- Работает как download-complete хук: скачал → resolve → если не нашёл → агент разбирается тут же + +Реализация (примерно): +```swift +// media-pipeline agent --config /config/config.json [--path ...] +// Запускает resolve, для unresolved — интерактивная LLM-сессия с тулами +struct AgentCommand { + // Инструменты: + // - tmdb_search(query, year) → candidates[] + // - kp_search(query) → candidates[] + // - web_search(query) → snippets[] + // - confirm(candidate) → принять результат + // - skip() → пометить как manual-review-needed +} +``` + +**Статус**: под вопросом — оценить объём работ перед реализацией. Возможно проще оставить Hermes cron как оркестратор но дать ему доступ к graph facts через `--format json`. **Цель:** найти реальную структуру медиабиблиотеки, где симлинки, куда ведут.