Skip to content

v0.9.14 — качество процедурной памяти, кросс-сессионный recall, пэйсинг в плагине

Choose a tag to compare

@stas130286-blip stas130286-blip released this 25 Aug 18:48
· 13 commits to main since this release

Highlights (v0.9.10 → v0.9.14)

  • Cross-session recall fixed (v0.9.12): top user_info facts are pinned into every recall + explicit Memory-Usage instructions — the agent no longer answers “I don't know you” to «что ты знаешь обо мне?».
  • Goal-round pacing built into the plugin (v0.9.11): no more host source patching needed; armed host goals are paused/resumed through public seams only.
  • Procedural memory quality (v0.9.13–v0.9.14): only real multi-step procedures are stored, placeholder steps are filtered, and duplicate procedures (LLM trigger paraphrases) are merged — including cleanup of already-accumulated junk at startup.
  • Long time-reminders fixed (v0.9.10): “remind me in a month” goals no longer expire silently.

Battle-tested live in the dsh Web UI: cross-session memory recall, timed reminders with autonomous delivery, procedural dictation → reuse in a fresh session, prompt-injection refusal. 850/850 tests, errors: {}.

Install:

npx @deepseek-ai/dsh plugin --profile web add github:stas130286-blip/dsh-brainagent
npx @deepseek-ai/dsh web

0.9.14 - 2026-08-25

Дедупликация процедур по набору шагов.

  • Дедупликация по отпечатку шагов (storeWorkflow): записи с одинаковым набором шагов сливаются, даже если LLM сформулировал триггер иначе (боевой тест v0.9.13: идентичная диктовка создала вторую запись из-за парафраза триггера).
  • Слияние накопленных дублей при старте (mergeDuplicateWorkflows): оставляет самую используемую запись, суммирует usageCount, берёт лучший successRate; идемпотентно.
  • Тесты: +4 (846 → 850), все проходят.

0.9.13 - 2026-08-25

Качество процедурной памяти: стор больше не засоряется «псевдопроцедурами».

  • Гейт сохраняемости (isStorableProcedure): в стор попадают только процедуры с ≥2 реальными уникальными шагами. Одиночные команды («Action: ANY», «Действие: напоминание») больше не сохраняются — в боевом сторе 14 из 16 записей были таким мусором.
  • Фильтр шагов (isMeaningfulStep): плейсхолдеры («...», «any», «шаг 1», «TODO») и повторы триггера отбрасываются и в regex-, и в LLM-извлечении.
  • Промпт LLM-извлечения: шаги берутся только из текста сообщения (без выдумывания); одиночная команда без последовательности — не процедура.
  • Чистка стора при старте (pruneWeakWorkflows): слабые записи (<2 содержательных шагов) удаляются из процедурного стора и векторного индекса; вызывается в инициализации плагина, идемпотентна.
  • Тесты: +15 (831 → 846), все проходят.

0.9.12 - 2026-08-25

Память о пользователе больше не теряется на вопросе «что ты знаешь обо мне?».

Боевое тестирование перед заявкой в registry выявило: инъекция памяти
работает (метрики), но модель отвечала «я ничего не знаю о тебе» или
вспоминала 2 из 3 фактов. Две причины, обе закрыты:

  1. Recall чисто релевантен: identity-факты (имя и т.п.) могли не попасть
    в top-N при лексическом fallback (эмбеддинг-бэкенд недоступен).
    Теперь топ-3 user_info-факта по confidence закрепляются в начале
    semantic-recall каждого цикла (memory-identity.ts, pinIdentityFacts)
    и попадают в секцию Known Facts независимо от запроса.
  2. Инструкции противоречили друг другу: Honesty Rules требовали «честно
    сказать, что не помнишь», и модель отказывалась от уже влитых фактов.
    Добавлен блок Memory Usage («факты выше — твоя реальная память,
    используй их уверенно»), правило честности уточнено: отрицать можно
    только то, чего в блоке фактов нет.

+8 тестов: 831 тест.

0.9.11 - 2026-08-25

Пейсинг гол-раундов встроен в сам плагин.

Реестровая версия dsh-goal-round-driver не имеет пейсинга: armed-цель
хоста получает инжект раунда при каждом переходе агента в idle
(несколько автономных раундов в минуту). Раньше это лечилось патчем
исходников моно-репо (host-patches/), который на npx/registry-установках
не работает. Теперь пейсер живёт внутри плагина (goal-round-pacer.ts),
используя только публичные швы хоста:

  • перехватывает agent/inbox/inserted и снимает преждевременные раунды
    (source.kind === "goal", round > 0) из inbox;
  • ставит цель на паузу сервисом целей и возвращает её по истечении окна
    тишины — раунд откладывается, а не теряется;
  • окно: DSH_GOAL_ROUND_MIN_IDLE_MS (по умолчанию 180000 мс; 0 — выключить);
  • корректен и на уже пропатченном хосте (двойной пейсинг безвреден).

+18 тестов: 823 теста. На собственные цели BrainAgent не влияет — они
живут в отдельном сторе и доставляются планировщиком goal-reminder.

0.9.10 - 2026-08-25

Напоминания «через месяц» больше не умирают в тишине.

Два боевых дефекта долгих time-напоминаний, найдены живым тестом
на переустановленном dsh:

  1. TTL time-цели был фиксированным (дефолт 24ч) — цель «напомни
    через месяц» молча истекала задолго до триггера. Теперь при
    экстракции TTL time-цели вычисляется как время до триггера
    • час буфера (но не меньше дефолтного TTL) — goal-stack.ts.
  2. hasGoalIntent не ловил форму «Поставь мне напоминание…» и
    краткое «напомни» без «мне» — экстракция целей не запускалась,
    и модель лишь обещала напоминание, не создавая цель. Паттерн
    расширен (поставь напоминание / напоминание на|через|о|об|про /
    напомни(те)( мне)? / remind).

Проверено вживую: 3-минутный таймер, поставленный в сессии A,
сработал в другой сессии B (доставка pickAgent по последней
активности); месячная цель создана с триггером +31 день и TTL 745ч.

+4 проверки (goal-intent.test.ts): 805 тестов, 52 файла.