"text":"Учёт использования памяти dsh-memory: recallCount и op stats. Сделано 07.11.2026, коммит 52bed55.\n\nПРОБЛЕМА. Поле recallCount/lastRecalled было в схеме Entry с рождения (memory.js:4), но никто его не инкрементил: opGet инкрементил, а getInjection — нет. Значит все always-записи (которые инжектятся в каждый чат) имели recallCount 0 навсегда. Плюс lastRecalled писался как Date.now() число, а не ISO.\n\nЧТО ИСПРАВЛЕНО. getInjection инкрементит recallCount и ставит lastRecalled (ISO) для каждой записи, попавшей в блок. opGet тоже переведён на ISO. Добавлен op stats.\n\nOP STATS. dsh_memory {op: stats, staleDays: 30, limit: 15} возвращает: total, totalBytes, usedCount, neverUsedCount, top[] (по recallCount, с idleDays), dead[] (0 recalls, idle >= staleDays, отсортированы по bytes), freshCount, neverAlways[].\n\nКАК ПОЛЬЗОВАТЬСЯ. Раз в 1-2 недели вызывать stats. dead[] — кандидаты на удаление или архив. neverAlways[] — always-записи без инжекта (аномалия). top[] — что реально работает.\n\nОГРАНИЧЕНИЕ. recallCount растёт при инъекции, а не при реальном использовании в ответе. Always-записи всегда будут с высоким счётчиком, даже если модель их игнорирует. Это метрика доставлено, а не пригодилось. Для called-записей точнее: они инкрементятся только при явном op get.",