4.5 KiB
4.5 KiB
Why
При добавлении magnet-загрузки jellybit не передаёт в qBittorrent
человекочитаемое имя, поэтому в списке qBit задачи выглядят безлико:
rutracker-topic-6514485. Контекст загрузки (заголовок релиза от
торрент-бота) у нас уже есть — из него можно собрать аккуратное имя
(«Дюна: Часть вторая (2024)») и сразу класть его в qBittorrent. Небольшая
доработка с заметной отдачей в повседневной эксплуатации.
Это также первая capability, переносимая из docs/specs в OpenSpec
(пилот формата): change засевает capability ingest дельтой ADDED.
What Changes
ingestвыводит из контекста загрузки отображаемое имя и передаёт его в qBittorrent при добавлении.- Имя строится LLM: из контекста извлекаются название, год, режиссёр и (для сериала) номер сезона; название — на русском для российского контента, иначе на английском. Результат — короткая читаемая строка, а не кусок сырого контекста.
- LLM даётся до трёх попыток; при неудаче — алгоритмический фолбек (первая содержательная строка контекста, очистка и обрезка по длине) без сетевых запросов.
- Если ни LLM, ни фолбек не дали имени (контекст пуст/бесполезен) —
отображаемое имя не передаётся: qBittorrent оставляет своё (
dn/имя из торрента). Поведение при отсутствии контекста не меняется. qbt.AddRequestполучает поле для отображаемого имени, пробрасываемое в параметрrenameAPI/torrents/add.
Не входит в объём (Non-goals):
- Переименование уже добавленных в qBittorrent задач.
- Изменение логики распознавания (
recognize) и раскладки — отображаемое имя нужно лишь для списка qBit и не влияет на пути на диске (jellybit по-прежнему читает реальные пути из qBit API). - Источники кроме magnet (
.torrent/url) — отдельная задача.
Capabilities
New Capabilities
ingest: приём загрузки (источник + контекст) — дедупликация по infohash, заведение задачи и передача источника в qBittorrent. В рамках этого change добавляется требование о выводе и передаче отображаемого имени. Базовое поведение приёма фиксируется как контекст существующего кода.
Modified Capabilities
Impact
- Код:
internal/ingest(вывод имени, новая зависимость на LLM-провайдер и алгоритмический фолбек),internal/qbt(полеRenameвAddRequest, form-fieldrename). Возможен небольшой хелпер вывода имени (вingestили соседнем пакете). - Конфиг: возможен бюджет попыток LLM (переиспользовать существующий
llm.max_retriesлибо отдельный параметр) — уточняется в design. - Внешние системы: дополнительный вызов LLM на каждую новую загрузку (расход токенов); деградирует штатно — при недоступности LLM работает алгоритмический фолбек.
- Инварианты: не затрагиваются. Имя влияет только на отображение в qBittorrent; пути на диске берутся из qBit API, источник не трогаем.