merge: A44 и A49 — отчёт замеров и субагенты со скиллами и памятью

A44: отчёт A40 приведён в порядок. Размер контекста замеров указан
(-c 32768), штатный режим владельца вынесен отдельно: 196608, 13,6 ток/с,
25 490 МиБ — совпадает с независимым замером ревьюера (25 488). Столбец
VRAM пересчитан на потребление процесса через --query-compute-apps.
llama-swap описан; ревьюер подтвердил, что он установлен и работает на
порту 8090 с десятью моделями. Огрызок nemotron убран.

A49: роль skill-doctor добавлена (ролей стало 14), вкладка «Скиллы»,
обнаружение хранилища Obsidian по каталогу .obsidian с проверкой доступа
на запись.

Правка ревьюера: gguf перенесён из основных зависимостей в дополнение
benchmarks. Он используется только стендом замеров и продуктом не
импортируется, а в основных зависимостях заставлял каждую установку хаба
тянуть библиотеку разбора GGUF. Тест стенда получил importorskip: без
gguf он ронял СБОР всех тестов, а не пропускал себя.

526 passed, 1 skipped, ruff clean, релизный гейт 10/10 и на конфигурации
владельца, и на пустой.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hermes Team 2026-08-31 18:47:41 +07:00
parent 24f32e2728
commit ceb016fd65
2 changed files with 11 additions and 1 deletions

View file

@ -38,12 +38,18 @@ dependencies = [
"requests>=2.31.0",
"httpx>=0.27.0",
"psutil>=5.9.0",
"gguf>=0.19.0",
"fastapi>=0.110.0",
"uvicorn>=0.28.0",
]
[project.optional-dependencies]
# gguf нужен только стенду замеров (benchmarks/run_benchmark.py) и не
# импортируется продуктом. В основных зависимостях он заставлял каждую
# установку хаба тянуть библиотеку разбора GGUF.
benchmarks = [
"gguf>=0.19.0",
]
dev = [
"pytest>=8.0.0",
"pytest-asyncio>=0.23.0",

View file

@ -10,6 +10,10 @@ import pytest
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from benchmarks.benchmark_suite import BENCHMARK_TASKS, _compile_and_get
# gguf — зависимость только стенда замеров. На машине без неё модуль
# ронял СБОР всех тестов, а не один этот файл.
pytest.importorskip("gguf", reason="gguf ставится дополнением benchmarks")
from benchmarks.run_benchmark import get_gguf_metadata