Убрал из беклога учёт стоимости и метрики LLM (docs)

Разные провайдеры и мониторинг запросов к LLM закрыты внешним LLM Gateway
(bifrost) на сервере; для наблюдения за состоянием пока достаточно slog.
Заодно поправил висячую ссылку на удалённый раздел в «Истории переходов».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-03 09:03:14 +03:00
co-authored by Claude Opus 4.8
parent 5075f6b116
commit 3df7f88fdc
+1 -29
View File
@@ -121,32 +121,6 @@ qBittorrent — осознанный выход за инвариант «ист
матча, провайдер-id), [«Улучшения UI: показывать матч»](#улучшения-ui-показывать-матч-с-записью-метабазы), матча, провайдер-id), [«Улучшения UI: показывать матч»](#улучшения-ui-показывать-матч-с-записью-метабазы),
пакет `httpapi`. пакет `httpapi`.
### Наблюдаемость: метрики и учёт стоимости LLM
Сейчас единственное окно в систему — `slog`. Нет быстрых ответов на
вопросы «сколько задач висит в review», «сколько токенов и денег съело
распознавание», «какова медиана времени ingest → done». Нужны метрики:
эндпоинт `/metrics` (Prometheus-формат) со счётчиками загрузок по
состояниям, длительностями стадий и расходом LLM (токены/стоимость на
задачу).
**Расход LLM уже снимается с провода**`llm.openai` парсит `usage`
(prompt/completion/total tokens и `cost`, который отдаёт шлюз) в
`llm.Response.Usage` и пишет в лог. Не хватает только **персистентности и
отображения**: сохранять `usage` у попытки распознавания (`recognition`) и
показывать в карточке загрузки + агрегатом в `/metrics`. Где провайдер не
шлёт `cost` — считать из токенов по таблице «модель → цена» в конфиге.
Отдельный LLM-прокси (LiteLLM и т.п.) для этого **не нужен** и противоречит
принципам «один бинарь» / «минимум компонентов»: подсчёт токенов уже в коде,
а роль мульти-модельного шлюза играет используемый OpenAI-совместимый
эндпоинт (он и возвращает `cost`); разные модели подключаются сменой
`[llm].model` или новым типом провайдера за интерфейсом `llm.Provider`.
Связано: [architecture.md](specs/architecture.md) → «Логирование»,
[recognition.md](specs/recognition.md) (провайдер LLM, `[llm].type`),
пакеты `worker`, `llm`, `httpapi`.
### Ретеншн и очистка БД ### Ретеншн и очистка БД
Терминальные задачи (`done`/`cancelled`/`failed`/`reverted`), их попытки Терминальные задачи (`done`/`cancelled`/`failed`/`reverted`), их попытки
@@ -231,9 +205,7 @@ qBittorrent, пул LLM-вызовов и запись в SQLite спроект
[drafts/logical-title-model.md](drafts/logical-title-model.md) §5.4 (схема [drafts/logical-title-model.md](drafts/logical-title-model.md) §5.4 (схема
`state_transition`, actor `worker|human|reconcile`), `state_transition`, actor `worker|human|reconcile`),
[workflow.md](specs/workflow.md) (граф состояний), [workflow.md](specs/workflow.md) (граф состояний),
[«Наблюдаемость: метрики»](#наблюдаемость-метрики-и-учёт-стоимости-llm) [database.md](specs/database.md), пакеты `worker`, `store`.
(длительности стадий), [database.md](specs/database.md), пакеты `worker`,
`store`.
### Машина состояний на go-библиотеке ### Машина состояний на go-библиотеке