LINZA - локальный MCP-сервер для агентской работы с папками знаний
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> *Не меняет данные. Меняет взгляд.*
LINZA работает с Obsidian vault, Markdown-папками, документами, статьями, логами и черновиками. Она нужна, когда материалов уже слишком много и вы хотите разобрать базу, выделить в ней основные области и научить агента хорошо ориентироваться в ней.
English version
LINZA читает выбранную папку, строит рядом локальную SQLite-базу .linza/linza.db и дает агенту рабочую карту: какие темы есть в материалах, какие форматы повторяются, какие заметки могут быть связаны, где видны цепочки причина/следствие и что может пригодиться в будущих сессиях.
Исходные файлы остаются нетронутыми. LINZA не переписывает заметки при индексации, не превращает сырой лог в правило и не учит агента за вашей спиной. Она превращает гипотезы в короткие предложения: возможные действия с доказательствами. Пользователь решает, агент выполняет.
---
Зачем нужна LINZA
LINZA собирает несколько конкретных вещей, которые помогают агентам работать с базой:
1. **Карта папки**
Сколько заметок найдено, свежий ли индекс, какие области видны и какие материалы ждут вашего ревью.
2. **Области**
Крупные смысловые группы. Их названия остаются черновиками, пока вы не примете или не переименуете их.
3. **Форматы материалов**
Логи, черновики, спецификации, исследовательские заметки, кейсы, правила и другие повторяющиеся формы, найденные в папке.
4. **Связи**
Возможные соседства, иерархия, причина/следствие и маршруты между узлами. LINZA должна показывать не только как связаны документы, но и почему.
5. **Память для будущих агентов**
Короткие кандидаты: что помнить, когда вспоминать, что устарело или выглядит сомнительно.
6. **Пакеты контекста**
Компактные подборки для агента: выбранный контекст с источниками, связями и границами.
---
Форматы материалов
“Формат материала” - это пользовательское имя для повторяющейся формы заметок. Например: лог диагностики, решение, черновик статьи, исследовательская заметка, спецификация.
LINZA сначала видит только структуру: длину, заголовки, списки, ссылки, таблицы, папки, повторяющиеся признаки. Поэтому первый результат может называться нейтрально: type-001. Пользователь может сказать: “это логи”. Тогда LINZA сохраняет соответствие type-001 -> логи в .linza.
Внутри API остаются старые совместимые ключи material_type, type_name и role. Снаружи документация и пользовательский вид говорят “формат”, потому что это ближе к тому, как пользователь реально думает о материалах.
Важная граница:
- принять название формата значит записать решение в .linza;
- записать role: логи в YAML можно только отдельным предложением на ревью;
- текст заметки не меняется.
---
Как выглядит ревью
LINZA присылает примерно такую информацию:
Внутри каждый интент остается структурой с ID, доказательствами и готовыми данными для проверки и последующего подтверждения и записи. Вам LINZA возвращает готовое пользовательское представление, чтобы агент мог показать понятный ответ вместо JSON.
Хороший интент всегда отвечает на главный вопрос: **почему LINZA так думает?** В нем должны быть источники, чанки, тип связи, уверенность и честное описание того, что изменится после применения.
---
Обучение и рост
Модель автономности такая:
1. review_next показывает предложения в понятном пользовательском виде.
2. Пользователь принимает, переименовывает или пропускает.
3. apply_review_items сначала делает dry-run.
4. После подтверждения выбранный интент записывается в .linza или в компактный YAML, если этот тип записи это поддерживает.
5. teach выбирает хорошие принятые примеры.
6. grow предлагает похожие интенты по этим примерам и объясняет selected_rules, почему они попали в партию.
Если вы приняли не то, одобрение можно мягко отозвать:
LINZA не удаляет старую запись и не пытается автоматически откатить YAML. Она помечает одобрение как отозванное, перестает использовать его как активный пример и оставляет след в истории.