Поточна ідея полягає у створенні універсальної системи довгострокової пам'яті для нейронок та агентів, яка базується на Markdown-документах, пов'язаних між собою посиланнями та організованих у граф. Візуально це нагадує knowledge graph або "нейронні зв'язки", де окремі документи виступають вузлами, а зв'язки між ними формують контекстну карту проєкту.
Базовий робочий цикл такої системи виглядає так:
- Агент отримує промпт або задачу.
- Перед виконанням агент переглядає релевантну базу знань.
- На основі знайдених документів агент формує контекст проєкту.
- Після виконання задачі агент оновлює пам'ять: додає нові знання, пов'язує їх із наявними або оновлює вже існуючі вузли.
Додатково система має містити шар задач: TODO-список із посиланнями на пояснення, рішення та пов'язані документи. Ключова вимога до системи: вона має бути переносимою між проєктами, щоб розробник міг просто перенести папку пам'яті та папку skill-ів у новий репозиторій і відразу отримати робочий механізм довгострокового контексту для агентів.
Markdown є дуже вдалим вибором як формат джерела істини:
- документи легко читати людині без додаткових інструментів;
- їх зручно редагувати вручну;
- вони добре працюють із Git;
- їх можна відкривати як у редакторі, так і у wiki-like інтерфейсах;
- вони не прив'язують систему до окремої СУБД, сервісу чи конкретної платформи.
Це критично, бо довгострокова пам'ять для агентів повинна бути не лише машино-доступною, а й зрозумілою для людини-розробника.
Ідея зв'язувати Markdown-документи посиланнями природно веде до knowledge graph-підходу:
- документ може посилатися на рішення, задачі, контексти, сутності, технічні обмеження;
- окремі кластери знань можна візуалізувати як підграфи;
- зростання бази знань відбувається еволюційно, без жорсткого централізованого дерева.
Це добре відповідає реальному розвитку проєктів, де знання часто не вкладаються в ієрархію, але чудово живуть у мережі пов'язаних вузлів.
Одна з найсильніших властивостей ідеї: її можна мислити як portable memory engine. Якщо правильно розділити ядро системи і дані конкретного проєкту, то розробник зможе переносити механіку пам'яті між різними кодовими базами без глибокої інтеграції.
Сам підхід добре стикується з реальним циклом роботи агентів:
- до виконання потрібно зібрати контекст;
- під час виконання потрібно не втратити нові спостереження;
- після виконання потрібно зафіксувати здобуті знання.
Тобто концепція не просто про "зберігати файли", а про вбудовування пам'яті у життєвий цикл агентної роботи.
У нинішньому формулюванні ідея сильна як напрям, але ще занадто абстрактна. Нижче наведені головні проблеми, які потрібно закрити, інакше система швидко деградує.
Зараз у концепції змішані кілька різних речей:
- спогад;
- документація;
- нова ідея;
- технічна нотатка;
- рішення;
- TODO;
- контекст проєкту.
Поки ці типи інформації не розділені, агент не зможе стабільно працювати з пам'яттю. У результаті буде або надмірне дроблення знань, або змішування фактів, задач і гіпотез в одному файлі.
Це одна з центральних проблем. Якщо не визначити формальне правило merge vs create, система почне розростатися дублями:
- той самий факт буде записаний у кількох місцях;
- одна й та сама сутність матиме кілька напівканонічних документів;
- нові агенти не знатимуть, який документ вважати головним.
У довгостроковій пам'яті це критично, бо retrieval на брудній базі працює погано навіть за наявності хорошого пошуку.
Граф із Markdown-файлів корисний як форма зберігання і навігації, але сам по собі не гарантує, що агент:
- знайде потрібну інформацію швидко;
- прочитає саме релевантні документи;
- не втратить важливий контекст;
- не перевантажить себе шумом.
Потрібно окремо визначити retrieval policy: за якими сигналами агент обирає документи, скільки читає, як формує локальний підграф, як стискає його до робочого контексту.
Будь-яка реальна база пам'яті стикається з такими процесами:
- старіння знань;
- застарілі рішення;
- конфлікт між старим і новим;
- потреба в архівації;
- потреба позначити документ як canonical, deprecated або superseded.
Без цього система буде накопичувати шум і поступово втратить довіру як джерело істини.
Ідея додати TODO-документ правильна, але в поточному формулюванні є ризик, що TODO стане просто великим списком задач без структури і без зрозумілого зв'язку з документацією.
Потрібно жорстко розвести:
- knowledge layer: факти, рішення, контекст, пояснення;
- execution layer: задачі, статуси, пріоритети, next actions.
Інакше пам'ять про знання і пам'ять про виконання будуть заважати одна одній.
Ідея "універсальної" системи правильна, але не можна припускати, що однаковий prompt/skill буде однаково працювати для Codex, Claude чи інших моделей.
Реалістичний дизайн має розділяти:
- універсальне ядро пам'яті;
- модельно-специфічні адаптери;
- проєктно-специфічний контент.
Універсальність має досягатися спільним контрактом, а не ідентичністю реалізації для всіх моделей.
Якщо кілька агентів одночасно:
- читають ті самі документи;
- створюють нові пов'язані записи;
- оновлюють один canonical file;
то без правил конкуренції виникатимуть конфлікти, дублікати або втрата змін.
Поки не визначено, як зрозуміти, чи система реально допомагає. Потрібні хоча б базові метрики:
- наскільки часто агент знаходить релевантний контекст;
- скільки дубльованих документів створюється;
- наскільки швидко росте noise;
- скільки ручних виправлень пам'яті потрібно після агентів;
- чи скорочується час на повторне входження в контекст.
Щоб система була масштабованою і переносимою, її варто будувати не просто як "папку з Markdown", а як керований memory vault із чіткими шарами.
Це ядро системи. Воно визначає:
- формат документів;
- типи вузлів;
- метадані;
- правила зв'язування;
- правила запису;
- індексацію;
- перевірки якості.
Memory Core повинен бути універсальним для всіх моделей.
Це skill-и або інтеграційні шари для конкретних моделей та агентних середовищ:
- Codex adapter;
- Claude adapter;
- інші адаптери в майбутньому.
Їх задача не визначати формат пам'яті, а реалізовувати однаковий memory contract у межах конкретної моделі.
Це контент конкретного проєкту:
- доменна пам'ять;
- рішення;
- задачі;
- сутності;
- поточний робочий контекст;
- історія змін і пояснень.
Саме цей шар переноситься разом із проєктом і еволюціонує разом із ним.
Щоб розвести різні види знань, варто ввести типізацію вузлів.
Для великих ідей, гіпотез, напрямів розвитку, загальних задумів системи.
Створюється, коли:
- формується новий напрям;
- описується нова концепція;
- потрібно зафіксувати high-level ідею до її деталізації.
Оновлюється, коли ідея розвивається, але лишається тією самою концепцією.
Для архітектурних або процесних рішень.
Створюється, коли:
- вибрано конкретний підхід;
- відхилено альтернативу;
- потрібно зберегти мотивацію рішення.
Оновлюється рідко. Якщо рішення суттєво змінюється, краще створювати новий запис із supersedes.
Для робочого контексту проєкту, підсистем, потоків даних, доменних обмежень.
Створюється, коли потрібно пояснити "як тут усе влаштовано".
Для execution-layer задач.
Створюється як операційна одиниця виконання, але не повинна замінювати знання чи пояснення.
Для локальних спостережень, проміжних нотаток, ідей нижчого рівня, коротких висновків.
Це найнебезпечніший тип, бо саме він найшвидше створює шум. Для нього потрібні найжорсткіші правила ревізії й консолідації.
Для навігаційних документів, summary-вузлів, оглядів підграфів.
Це важливо для масштабування: великий кластер знань не можна змушувати агента перечитувати повністю щоразу.
Для головних сутностей системи:
- модуль;
- сервіс;
- процес;
- доменний об'єкт;
- інструмент;
- людина;
- зовнішня залежність.
У кожної важливої сутності бажано мати один canonical entity-doc.
Посилання у Markdown добрі для людини, але для стабільної роботи агентів потрібно мати структуровані поля. Тобто Markdown повинен лишатися джерелом істини, але всередині документа мають бути дані, з якими легко працювати машинно.
Для кожного документа варто ввести мінімальний frontmatter:
---
id: mem-entity-agent-adapter
type: entity
title: Agent Adapter
status: active
created_at: 2026-04-21
updated_at: 2026-04-21
project: memory-system
tags:
- agents
- adapters
- architecture
links:
- type: related_to
target: mem-concept-memory-system
- type: implements
target: mem-decision-adapter-contract
supersedes: []
superseded_by: []
provenance:
source: manual-analysis
confidence: high
---Якщо з'являється важлива сутність, для неї має існувати один основний документ, який вважається головним джерелом правди.
Рекомендована політика merge vs create:
- якщо нова інформація розширює вже описану сутність, оновлюється canonical doc;
- якщо це окремий факт, нова гіпотеза, нове рішення або окремий execution item, створюється новий файл;
- якщо є сумнів, агент має спочатку виконати write gate перевірку: знайти потенційний canonical node і лише після цього вирішувати, чи потрібен новий документ.
Мінімальний набір:
activedraftarchiveddeprecatedsuperseded
Потрібно знати:
- звідки взявся факт;
- наскільки він перевірений;
- ким або чим був створений документ;
- коли востаннє він оновлювався.
Посилання повинні бути не просто raw markdown-links, а логічними зв'язками з типами:
related_todepends_onimplementssupersedesderived_fromexplainsblocked_by
Це дозволить агенту працювати не просто з мережею лінків, а зі змістовним графом.
Центральна цінність системи не у зберіганні документів, а в тому, як агент читає і оновлює пам'ять.
Агент має виділити:
- тему задачі;
- сутності;
- тип запиту;
- область змін;
- очікуваний результат.
Вузли мають шукатися не лише за ключовими словами, а також за:
- типами документів;
- тегами;
- canonical entity docs;
- зв'язками;
- останніми релевантними рішеннями;
- task references.
Агент не повинен читати всю пам'ять. Він повинен:
- взяти стартові вузли;
- розширити їх на 1-2 переходи по важливих links;
- зібрати мінімальний підграф, релевантний задачі.
Навіть 10-20 документів часто забагато для прямого включення в prompt. Тому потрібен шар стискання:
- summary nodes;
- extractive summaries;
- короткий operational context;
- явно виділені constraints, open questions і latest decisions.
Тільки після цього агент переходить до виконання основної роботи.
Після завершення роботи агент повинен:
- оновити релевантні canonical docs;
- створити нові документи, якщо з'явилися нові вузли знань;
- оновити задачі;
- пов'язати нові записи з існуючими документами.
Після запису система має перевірити:
- чи є документ сиротою;
- чи вистачає в нього зв'язків;
- чи не дублює він уже наявний вузол;
- чи потрібно оновити index або summary docs.
Markdown лишається джерелом істини, але для швидкого retrieval потрібен легкий індекс:
- карта
id -> file; - зворотні зв'язки;
- індекс за типами;
- індекс за тегами;
- можливо, індекс ключових фраз або embeddings у майбутньому.
Без цього масштабована система буде або повільною, або неточною.
Один великий TODO-файл з часом стане шумом. Краще одна з двох моделей:
Підходить для серйозного використання і масштабування.
Переваги:
- у кожної задачі є своя історія;
- задачу легко пов'язувати з knowledge docs;
- простіше оновлювати статуси;
- менше конфліктів при паралельній роботі.
Підходить для lightweight setup, якщо проєкт невеликий.
Але навіть тут у кожної задачі повинні бути мінімальні структуровані поля.
Кожна задача повинна мати:
idtitlestatuspriorityrelated_docsownerза потребиnext_actionupdated_at
Задача має відповідати на питання "що робити далі", але не "чому система влаштована саме так". Всі пояснення повинні жити в decision, context, concept або entity документах, а TODO лише посилатися на них.
Система не стане універсальною, якщо один і той самий prompt копіювати між усіма моделями. Реальна універсальність означає інше:
- формат пам'яті є стабільним;
- контракти читання й запису є стабільними;
- моделі мають власні адаптери;
- проєкт може переносити vault без переписування концепції.
Рекомендована стартова структура:
memory/
indexes/
concepts/
entities/
decisions/
contexts/
notes/
tasks/
summaries/
skills/
codex/
claude/
За потреби можна додати:
templates/schemas/scripts/
Окремо слід відділити:
- portable engine: правила, шаблони, contract-и, scripts;
- project memory: фактичні знання конкретного проєкту;
- model adapters: skill-и для конкретних середовищ.
Це дає нормальний баланс між перевикористанням і специфікою конкретного репозиторію.
Ризик:
- кілька документів про ту саму сутність або те саме рішення.
Що робити:
- canonical docs;
- write gate перед записом;
- periodic consolidation;
- явний
supersedes.
Ризик:
- система швидко обростає дрібними нотатками, що не несуть довгострокової цінності.
Що робити:
- статуси;
- архівація;
- summary nodes;
- регулярний review/cleanup;
- чіткий бар'єр на створення
note.
Ризик:
- агент записує вигаданий, неперевірений або неточно інтерпретований факт.
Що робити:
- provenance;
- confidence level;
- шаблонізація запису;
- правило: не піднімати факт до canonical source без перевірки.
Ризик:
- перед виконанням задачі агент читає надто багато документів і губиться в них.
Що робити:
- retrieval budget;
- локальний підграф замість повного читання;
- summary docs;
- пріоритет canonical nodes.
Ризик:
- база знань більше не відповідає фактичному стану проєкту.
Що робити:
- decision records;
updated_at;- ревізія stale docs;
- явне позначення deprecated/superseded станів.
Ризик:
- конфлікти при одночасному оновленні документів.
Що робити:
- append-only write model для нових нотаток;
- окремий merge/consolidation step;
- lock strategy для canonical docs, якщо система стане автоматизованою;
- мінімізація запису в одні й ті самі файли.
Найгірший сценарій: розробник перестає вірити системі і перестає її читати.
Що робити:
- provenance;
- last updated дата;
- visible status;
- індикатор рівня впевненості;
- обмеження на автостворення "важливих" документів без явної верифікації.
Нижче список покращень, які суттєво піднімуть шанс, що система буде реально працювати, а не просто красиво виглядати.
Потрібні шаблони для:
- concept;
- decision;
- entity;
- context;
- task;
- summary;
- note.
Без шаблонів агенти будуть писати вільним стилем, і база стане неоднорідною.
Потрібен інструмент, який:
- парсить frontmatter;
- будує карту вузлів і зв'язків;
- шукає сирітські документи;
- допомагає формувати локальний підграф.
Коли знань стане багато, агентам не можна буде кожного разу читати десятки дрібних документів. Потрібні summary nodes, які збирають:
- головні факти;
- чинні рішення;
- відкриті питання;
- навігацію по кластеру.
Потрібен регулярний цикл прибирання:
- виявлення дублікатів;
- архівація застарілих документів;
- консолідація дрібних notes;
- перевірка broken links;
- оновлення summary docs.
Якщо документ давно не оновлювався, система має:
- позначити його як можливо застарілий;
- знизити його retrieval priority;
- запропонувати ревізію.
Перед створенням нового документа агент має пройти короткий фільтр:
- Чи існує canonical doc цієї сутності?
- Чи це справді новий вузол знань?
- Чи достатньо даних для нового документа?
- Чи потрібно спочатку оновити summary/index?
Мінімальні перевірки перед або після запису:
- документ має
id; - документ має
type; - документ має хоча б один змістовний link або обґрунтовану причину бути root node;
- документ не дублює існуючий title/id;
- є
updated_at; - для важливих фактів є provenance.
Щоб систему можна було підключати до різних моделей і проєктів, потрібно явно зафіксувати інтерфейси.
Кожен memory document повинен:
- мати стабільний
id; - мати один із дозволених
type; - мати
title; - мати
status; - мати
updated_at; - мати список
links; - допускати ручне читання і машинний парсинг.
Кожен adapter повинен вміти:
- Прийняти новий user/task intent.
- Виконати retrieval релевантної пам'яті.
- Сформувати короткий робочий контекст.
- Виконати основну задачу.
- Оновити знання за правилами merge vs create.
- Оновити task layer, якщо задача змінилася.
Тобто adapter не повинен сам вигадувати структуру пам'яті, а має працювати поверх фіксованого контракту.
Кожна task-одиниця повинна:
- бути посилальною через
id; - мати зв'язок із knowledge docs;
- зберігати статус і пріоритет;
- зберігати next action;
- не містити всю документацію всередині себе.
Мінімальний набір типів зв'язків:
related_todepends_onimplementssupersedesderived_from
Розширення можливе, але цей базовий набір уже дає корисну структуру для retrieval і навігації.
Щоб зрозуміти, чи система життєздатна, потрібно перевіряти її не лише теоретично, а й на сценаріях використання.
Сценарій:
- агент отримує нову задачу;
- у пам'яті вже є десятки документів;
- агент знаходить лише релевантний підграф, а не читає всю базу.
Критерій успіху:
- контекст короткий;
- рішення не пропускають критичні залежності;
- шум мінімальний.
Сценарій:
- агент отримує нову ідею або спостереження;
- у базі вже є пов'язаний canonical doc;
- агент дописує його, а не створює нову копію.
Сценарій:
- агент стикається зі справді новою сутністю, рішенням або задачею;
- створюється новий документ;
- він правильно лінкується до графа.
Сценарій:
- задача містить посилання на explanation docs і decision docs;
- по задачі можна зрозуміти не лише що робити, а й звідки ця робота взялася.
Сценарій:
- старе рішення втратило актуальність;
- документ не видаляється, а позначається як
supersededабоdeprecated; - історія рішень зберігається.
Сценарій:
- два агенти працюють паралельно;
- система не руйнує структуру пам'яті;
- конфлікти або мінімізуються, або добре виявляються.
Сценарій:
- memory vault і skills переносяться в інший проєкт;
- ядро системи не потрібно переписувати;
- адаптація відбувається через контент, а не через зміну базових правил.
Потрібно визначити:
- типи документів;
- мінімальний frontmatter;
- naming rules;
- link semantics;
- статуси.
Створити директорії, шаблони і базові index docs.
Окремо визначити, як різні моделі:
- читають пам'ять;
- збирають підграф;
- оновлюють знання;
- працюють із task layer.
Потрібен базовий pipeline, який вже може:
- знайти релевантні вузли;
- сформувати контекст;
- записати оновлення.
Інтегрувати задачі як окремий execution layer, а не як довільні нотатки.
Це критичний етап для переходу від красивої концепції до стабільної системи.
Справжня перевірка відбудеться лише на 1-2 реальних кодових базах, де:
- багато контексту;
- є повторювані задачі;
- є шанс накопичення знань;
- є кілька агентних сесій.
Ідея дуже сильна як основа для human-readable long-term memory системи для агентів. Вона добре поєднує:
- простоту Markdown;
- прозорість для людини;
- сумісність із knowledge graph-підходом;
- придатність для агентного workflow;
- переносимість між проєктами.
Але в поточному вигляді це ще не система, а напрям. Найбільша слабкість не в самому виборі Markdown чи графа, а в нестачі жорстких правил:
- які існують типи знань;
- як агент обирає, що читати;
- як агент вирішує, що оновлювати;
- як запобігати шуму і дублям;
- як працювати з застаріванням знань;
- як відокремити пам'ять про знання від пам'яті про виконання.
Головний висновок: успіх цієї системи визначатиметься не самим фактом існування Markdown-графа, а якістю контрактів навколо нього. Якщо закласти чіткі типи вузлів, правила retrieval, політику оновлення, task layer, provenance та cleanup-процеси, із цієї ідеї може вийти справді сильна універсальна система довгострокової пам'яті для агентів.