- Контекстно-зависимый маппинг quality→tiers (3 бакета контекста: ≤4K, 4K-32K, >32K)
- Каскадный fallback: local ollama → openrouter → openai
- Поддержка thinking-моделей (qwen3, deepseek-r1, phi4-reasoning, exaone-deep, lfm2.5-thinking, deepscaler)
- Балансировка нагрузки: учёт queued+running задач при batch-отправке
- Иерархическая структура: Host → Node (физическая машина → Ollama-инстансы на портах)
- Автоопределение orchestration типа (docker/native)
- Подсчёт уникальных моделей (не дубликатов по устройствам)
- Issues на человеческом языке (offline хосты, low success rate, stuck queue)
GET /v1/debug/health— глубокая диагностика (БД, очередь, хосты, workers)GET /v1/debug/actions— каталог API с curl-примерамиGET /v1/debug/capacity— мощности кластера (слоты, утилизация)POST /v1/debug/test— smoke test pipeline
- Автоопределение tier, thinking, context_k для Ollama-моделей
- Поддержка thinking-ответов (
<think>tag parsing) - Cost-расчёт из
_price_in_1m/_price_out_1m
- UUID-валидация в HandleJobByID (500→404)
- Graceful HandleCostsSummary при отсутствии llm_costs
- Очистка документации от реальных хостнеймов и IP
04_smart_routing.sql— таблицыmodel_pricing,llm_costs, viewv_device_stats
OLLAMA_PORTS— мультипортовое discovery (default:11434)DEVICE_MAX_CONCURRENCY— макс задач на устройство (default:1)
- VERSION:
2026.02.11→2026.02.12 - Roadmap: P2P model distribution, auto-scaling моделей
- DeviceInfo: добавлены поля
platform,arch,host,model_names,last_seenв/v1/dashboard - Расширен SQL-запрос devices: JSON-массив доступных моделей, метаданные устройства
- Обратная совместимость: llm.html игнорирует новые поля
- VERSION:
2026.02.10→2026.02.11
feat(discovery): multi-port Ollama + fix pgx type inference- Корректный multi-port probe с explicit
::textcast для pgx v5
- OLLAMA_PORTS env var: discovery пробирует несколько портов на каждом устройстве (default: 11434).
probeOllamaPort()— probe конкретного порта,ensurePortDevice()— создание device entry для non-default портов.ollama_addrхранит полныйip:portформат для всех портов.- Subnet scan с multi-port поддержкой.
_split_host_port()— корректное разделение addr на host и port (IPv4/IPv6)._resolve_ollama_base()— автоматическое определение порта изollama_addr.- Backward compat: addr без порта → default 11434.
- Profile
ollama— одиночный инстанс (:11434). - Profile
ollama-multi— 3 инстанса (:11434, :11435, :11436). - Изолированные named volumes для каждого инстанса.
OLLAMA_PORTSenv передаётся в llmcore.
- Полный набор K8s манифестов: namespace, secret, configmap, PVC, StatefulSet, Deployments, Services.
ollama-deployment.yaml— Deployment с nodeSelector, health probes, resource limits.ollama-service.yaml— NodePort 31434.kustomization.yamlс общими метками и аннотациями.k8s/README.md— документация развёртывания.
TODO.md— план multi-Ollama + distributed compute.CHANGELOG_V2.md,INTEGRATION_GUIDE_V2.md,V2_RELEASE_SUMMARY.md— полная документация v2.scripts/sync_openrouter_models.py,scripts/probe_openrouter_models.py— инструменты синхронизации моделей.config/curated_openrouter_models.yaml— курированный список моделей.
- Санитизация PII из всех документов и примеров.
- Синхронизация версий: VERSION, README badge, .env.example, mcp/package.json.
- Запись actual cost: worker парсит
usage(prompt_tokens/completion_tokens) из ответов OpenAI/OpenRouter; core записывает стоимость вllm_costsчерез SQL-функциюcalculate_job_cost(). GET /v1/costs/summary?period=day|week|month: агрегированная статистика расходов с группировкой по провайдерам.GET /v1/dashboard: полный snapshot системы в одном JSON — jobs, costs, devices, running_jobs, models_count, benchmarks.- MCP proxy: добавлены 5 HTTP-прокси через llmmcp → llmcore:
/llm/request,/dashboard,/costs/summary,/benchmarks,/discovery.
- Рефакторинг core:
main.go(1856 строк) разбит на 5 пакетов:internal/config— конфигурация и env-хелперыinternal/models— все типы данныхinternal/routing— маршрутизация LLM-запросов, выбор устройствinternal/limits— лимиты устройств, валидация моделейinternal/api— HTTP-хендлеры, SSE, helperscmd/core/main.go— только инициализация (~115 строк)
- Retry с backoff в worker:
_post_json()поддерживает 3 попытки с exponential backoff (1s/2s/4s), не ретраит 4xx (кроме 429). - LLM дашборд в telegram-mcp web UI: новый тип страницы
llm(/p/llm) — Job Queue, Costs, Fleet, Running Jobs, Models; автообновление каждые 5 сек; server-side fetch из llmcore. - Telemetry → alert-only: вместо полного ASCII-дашборда каждые 2 сек → проверка каждые 30 сек, уведомления только при проблемах (device offline/recovery, queue stuck, job failed). Дедупликация алертов.
- LISTEN/NOTIFY для SSE: PostgreSQL trigger
trg_job_status_notifyуведомляет при смене статуса задачи;handleJobStreamиспользуетLISTEN job_update+WaitForNotificationвместо polling 1/сек. Fallback poll 15 сек на случай пропущенного notify. - CTE в handleWorkerClaim: заменён correlated subquery на CTE
running_per_deviceс LEFT JOIN — O(1) агрегация вместо O(N×M). - Discovery graceful fallback:
tailscaleAvailable()проверяет наличие binary черезLookPath; при отсутствии Tailscale — warning + продолжение (subnet scan работает независимо). Логtailscale=true/false.
- Дефолт
CORE_HTTP_URLв MCP-адаптере:llm-core→llmcore(соответствует имени контейнера). CORE_HTTP_URLдобавлен в compose.yml для llmmcp.- Миграция
03_notify_trigger.sqlс триггером и функциейnotify_job_status_change().
telemetry/llm_telemetry/telegram_gateway.py:- default
TELEGRAM_MCP_BASE_URLпереключен наhttp://tgapi:8000; - добавлен compat fallback на legacy
http://telegram-api:8000при неявной конфигурации.
- default
README.mdиdoc/README.mdсинхронизированы с новым routing default и compat-window.- Добавлены governance-файлы публичного репозитория:
LICENSE(MIT),CONTRIBUTING.md,SECURITY.md,CODE_OF_CONDUCT.md;.github/ISSUE_TEMPLATE/*,.github/pull_request_template.md,.github/CODEOWNERS.
- Обновлены
VERSIONи.env.exampleдо2026.02.6. - Добавлен pragmatic CI:
.github/workflows/ci.yml(compose config, markdown links, Python compile, Go test, MCP TS build).
- Синхронизирована версия модуля в
.env.example:LLM_MCP_VERSION=2026.02.5.
- Обновлены
VERSIONи version badge вREADME.mdдо2026.02.5. - Исправлен дрейф версий между docs/env и интеграционным root compose-контуром.
README.mdприведён к единому визуальному стилю:- badges, кнопки-навигации и emoji-структура;
- обновлены блоки архитектуры, quick start, API и env-контрактов.
- Добавлен раздел
Public Git Standards:- версия в формате
YYYY.MM.x; - обязательный
CHANGELOG.md; - исключение секретов из git и smoke-проверка перед merge.
- версия в формате
- Обновлён
VERSIONдо2026.02.4.
- Compose naming normalized to short alnum containers:
llmdb,llmcore,llmworker,llmtelemetry,llmmcp.
- Compose labels added (
ns.module,ns.component,ns.db_owner). - Port contract aligned and documented (
5435,8080,9090,3333). .env.example,README.mdanddoc/README.mdsynchronized with new service names and MCP routing URL (http://tgapi:8000).- Dockerfiles (
core,worker,telemetry,mcp) now include OCI labels andns.module/ns.component.
- Telemetry переведена на gateway-маршрутизацию Telegram:
TELEGRAM_USE_MCP=1-> отправка/редактирование черезtelegram-mcp.- fallback на прямой Telegram при
TELEGRAM_MCP_FALLBACK_DIRECT=1.
- Добавлен
telemetry/llm_telemetry/telegram_gateway.py. - Рефактор
telemetry/llm_telemetry/main.pyпод mcp route + direct fallback. - Добавлены env-переменные
TELEGRAM_MCP_*вcompose.ymlи.env.example. - Обновлены документация и зависимости (
telegram-api-clientpinned git tag).