2026-05-13 media-toolbox: архитектурные заметки — кеш, OpenRouter, встроенный агент
This commit is contained in:
@@ -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`.
|
||||||
|
|
||||||
**Цель:** найти реальную структуру медиабиблиотеки, где симлинки, куда ведут.
|
**Цель:** найти реальную структуру медиабиблиотеки, где симлинки, куда ведут.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user