diff --git a/memory/state.template.json b/memory/state.template.json index c832216..9979a8c 100644 --- a/memory/state.template.json +++ b/memory/state.template.json @@ -1,6 +1,6 @@ { "version": 2, - "updatedAt": "2026-11-02T23:35:16.258Z", + "updatedAt": "2026-11-03T03:42:03.584Z", "entries": [ { "id": "0f90dcf0-5d43-4ca4-bf86-ad8b3ee20382", @@ -35,7 +35,7 @@ ], "version": 2, "createdAt": "2026-11-02T23:35:16.258Z", - "updatedAt": "2026-11-02T23:46:25.796Z", + "updatedAt": "2026-11-02T23:46:25.799Z", "lastRecalled": null, "recallCount": 0, "bytes": 1186 @@ -73,7 +73,7 @@ ], "version": 2, "createdAt": "2026-11-02T23:35:16.258Z", - "updatedAt": "2026-11-03T00:43:54.413Z", + "updatedAt": "2026-11-03T00:43:54.414Z", "lastRecalled": null, "recallCount": 0, "bytes": 1152 @@ -84,18 +84,18 @@ "scope": "user-global", "workspaceKey": "", "key": "protocol_memory_system", - "text": "МЕХАНИЗМ ПАМЯТИ dsh-memory v2\n\nСлои. Protocol (track agent, importance always) инжектится в первый ход. Session (directive scope workspace) инжектится в первый ход текущего чата. Reference и Archive — только по запросу.\n\nЧто инжектится всегда: все track agent + importance always, плюс directive_ scope workspace для текущего chatId. Fingerprint: если тот же набор уже в истории чата — пропуск всего блока. Метка DSHM:SKILLS fingerprint.\n\nЗапросы через /memory/query:\nlist track scope importance since limit — items с preview и bytes, totalBytes, matched\nget ids — items с content, totalBytes\nrecent since — items, totalBytes\nunread chatId — новее lastInjectAt для чата\nsearch query track — plain substring, items, totalBytes\nbudgets — used по track и scope, alwaysCount, лимиты\nwrite op add replace remove — ok, id, version\n\nСервер ВСЕГДА отдаёт totalBytes в meta ДО контента. Модель видит объём и решает: взять всё, взять по ids, взять preview, отложить.\n\nТаксономия ключей: user_ (факты о пользователе), project_ (проекты), directive_ (правила), pref_ (привычки), tech_ (стек), interest_. Префикс задаёт группу, программа не решает релевантность.\n\nЛимиты первой итерации: always записей 10, tags 5 на запись по 32 символа, директив на чат 5, preview 200 символов. Калибровать по обратной связи.\n\nОбновление факта: replace по тому же id, не дубликат. AUTHENTIC EXTRACTION ONLY: только явно сказанное пользователем. NEVER cite memory tags в ответе.\n\nДИРЕКТИВЫ: op directives chatId state active|done|archive all. Директива = Entry с key directive_*, scope workspace, поле state. Активные инжектятся автоматически. Жизненный цикл: add с state active, replace state done когда шаг выполнен, replace state active чтобы вернуть из архива, state archive для окончательно выполненных. Привязка к чату через chatId (пусто = все чаты). Лимит активных директив на чат: 5.", + "text": "МЕХАНИЗМ ПАМЯТИ dsh-memory v2\n\nСлои. Protocol (track agent, importance always) инжектится в первый ход. Session (directive scope workspace) инжектится в первый ход текущего чата. Reference (called) и Archive (state archive) только по запросу.\n\nЧто инжектится всегда: все track agent + importance always, плюс directive_ scope workspace state active для текущего chatId с проверкой workspaceKey. Fingerprint: если тот же набор уже в истории чата — пропуск всего блока.\n\nЗапросы через dsh_memory (op):\nlist track scope importance state since limit — items с preview и bytes, totalBytes, matched\nget ids — items с content, totalBytes\nrecent since — items\nunread chatId — новее lastInjectAt\nsearch query track — plain substring, totalBytes\ndirectives chatId state active|done|archive|all — директивы\nbudgets — used по track и scope, alwaysCount, лимиты\nadd entry — новая запись, entry включает track scope workspaceKey key text importance tags\nreplace id text tags importance state chatId — правка\nremove id — удаление\n\nСервер ВСЕГДА отдаёт totalBytes в meta ДО контента. Модель видит объём и решает: взять всё, взять по ids, взять preview, отложить.\n\nТаксономия ключей: user_ факты о пользователе, project_ проекты, directive_ правила и шаги, pref_ привычки, tech_ стек, interest_ интересы, pitfall_ грабли и обходы, decision_ архитектурные решения. Префикс задаёт группу, программа не решает релевантность.\n\nЛимиты: always записей 10, tags 5 на запись по 32 символа, директив на чат 5, preview 200. Калибровать по обратной связи.\n\nОбновление факта: replace по тому же id, не дубликат. AUTHENTIC EXTRACTION ONLY: только явно сказанное пользователем. NEVER cite memory tags в ответе.", "importance": "always", "tags": [ "protocol", "memory" ], - "version": 2, + "version": 4, "createdAt": "2026-11-02T23:35:16.258Z", - "updatedAt": "2026-11-02T23:59:30.336Z", + "updatedAt": "2026-11-03T03:41:45.792Z", "lastRecalled": null, "recallCount": 0, - "bytes": 2629 + "bytes": 2327 }, { "id": "2853ce0e-de50-455c-bd5a-ebbf9a3fe337", @@ -111,7 +111,7 @@ ], "version": 2, "createdAt": "2026-11-02T23:35:16.258Z", - "updatedAt": "2026-11-02T23:51:10.666Z", + "updatedAt": "2026-11-02T23:51:10.669Z", "lastRecalled": null, "recallCount": 0, "bytes": 1487