README.ru.md

September 13, 2026 · View on GitHub

LWC — проактивная память для ИИ-агентов

Управляется агентами · Сохраняется между сеансами · Опирается на источники

npm: @i-xor/lwc crates.io: lwc Node.js 22 или новее Платформы: macOS, Linux и Windows CI skills.sh: using-lwc Лицензия: Apache-2.0

English · 简体中文 · 日本語 · Español · Português (Brasil) · Français · Русский

LWC — проактивная память для ИИ-агентов

lwc — это управляемый агентами интерфейс командной строки для проактивной памяти ИИ-агентов. Он позволяет агентам самостоятельно находить, поддерживать и развивать знания, которые сохраняются между сеансами и остаются привязанными к своим источникам.

Работает с Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Kiro, Hermes, Antigravity, GitHub Copilot in VS Code, Copilot CLI, Copilot for JetBrains и pi.

LWC превращает отобранные документы в долговечную Wiki. Агент рассуждает и обобщает, а lwc хранит источники, страницы, цитаты, ссылки, индексы и историю. Знания накапливаются, а не собираются заново из сырых фрагментов при каждом запросе.

Обзор LWC

LWC — память агента, а не RAG

RAG и LWC помогают LLM работать с внешними документами, но сохраняют состояние в разных местах. Обычный RAG-запрос извлекает сырые фрагменты и формирует разовый ответ:

query -> retrieve chunks -> generate answer

LWC сохраняет полезную работу между запросами:

task -> recall maintained Wiki -> reason from sources and prior synthesis
     -> write durable improvements back

Поиск — одна из операций LWC, а не принцип устройства всей системы. Долговечный результат — это Wiki, основанная на источниках: её страницы, цитаты, ссылки, противоречия и история пересматриваются по мере изменения знаний. Поэтому LWC не требует эмбеддингов или векторной базы и не выбрасывает результат обобщения после ответа. LWC может дополнять RAG, но сам не является RAG, выполняемым во время каждого запроса.

Источники и трассируемость в LWC

LWC управляет агент

lwc — машинный интерфейс для агентов, а не приложение для заметок. В обычном сценарии человек выбирает источники, задаёт цели и вопросы, затем проверяет ответы или проекцию Markdown. Агент запускает CLI, управляет областями, интегрирует источники, поддерживает цитаты и ссылки и решает, что стоит вспомнить или записать обратно.

Не управляйте повседневным процессом lwc вручную, если только не разрабатываете или не отлаживаете инструмент. Попросите агента активировать канонический Skill using-lwc, обычно командой $using-lwc.

Рекомендуется: поручите агенту настройку LWC

Вставьте следующий запрос в используемого агента. Он установит глобальную CLI, передаст настройку поддерживаемых хостов идемпотентному установщику AgentTarget и воспользуется штатной настройкой самого агента только для незарегистрированного хоста.

Скопировать полный запрос для настройки
Полностью настрой LWC для этого пользователя. Выполни и проверь работу, а не
просто перечисли команды, которые мне нужно запустить.

Источники истины:
- https://github.com/JanYork/llm-wiki-cli
- https://github.com/JanYork/llm-wiki-cli/tree/main/skills/using-lwc

Требования:
1. Прочитай этот README, `SECURITY.md` и `skills/using-lwc/SKILL.md`. Если `lwc`
   нельзя вызвать глобально, установи официальную версию с проверенной контрольной
   суммой. Не добавляй к обычным командам закрытый путь к бинарному файлу или
   `LWC_PROJECT_ROOT`.
2. Выполни `lwc --version`. Если глобальной памяти нет, один раз инициализируй её
   через `lwc --scope global init`, затем выполни `lwc agent install --yes`. Эта
   команда обнаруживает установленных поддерживаемых агентов и безопасно ставит их
   MCP, Skill, Hook и Instructions в официальные каталоги. Не воспроизводи эту
   логику вручную и не устанавливай нативный пакет для того же агента одновременно.
3. Проверь `lwc agent status --target all --location global`. Перезапусти затронутые
   агенты и пройди штатную проверку доверия к Hooks, если она требуется. Не
   инициализируй проектную Wiki или графы без явного согласия для проекта.
4. Если текущая среда выполнения не зарегистрирована как AgentTarget LWC, следуй её
   официальным пользовательским соглашениям: установи канонический Skill
   `using-lwc`, добавочный блок инструкций, `lwc serve --mcp` и ограниченный Hook
   сеанса — только там, где эти поверхности официально поддерживаются. Сохрани
   существующую конфигурацию и идемпотентность; неподдерживаемые поверхности
   перечисли явно, не придумывая пути или ключи.

В конце укажи версию LWC, обнаруженные и настроенные Targets, результаты status,
изменённые файлы, неподдерживаемые поверхности и оставшиеся действия по перезапуску
или доверию.

Происхождение и благодарности

lwc реализует предложенный Андреем Карпати подход LLM Wiki: LLM постепенно строит и поддерживает постоянную связанную Wiki, а не восстанавливает знания из сырых документов при каждом запросе. Архитектура CLI и некоторые детали также вдохновлены проектом nashsu/llm_wiki.

Проект адаптирует эти идеи в ориентированную на агентов CLI на Rust с SQLite.

Основная архитектура

Архитектура LWC

LWC разделяет долговременные знания на уровни с четкими обязанностями:

УровеньНазначение
Исходные материалыНеизменяемые снимки отобранных доказательств
WikiСтраницы, цитаты, ссылки и происхождение данных, поддерживаемые агентом
Схема и цельПравила проекта для дальнейшего сопровождения знаний

SQLite служит каноническим источником. Markdown, полнотекстовые индексы и необязательные графы являются восстанавливаемыми проекциями. Операции возвращают структурированный JSON для аудита и восстановления.

Подробнее об архитектуре →

Иерархическое извлечение и граф знаний

LWC индексирует Sources и страницы Wiki на уровне документа, фрагмента и предложения. Агент может начать с небольшого релевантного контекста и раскрыть только нужный точный фрагмент.

Граф памяти LWC

Необязательный граф документов связывает страницы, источники, цитаты, ссылки и явные семантические отношения. SQLite остается источником истины, а Grafeo или SurrealDB предоставляет восстанавливаемый слой обхода. Для каждой связи сохраняются причина, происхождение, уверенность и доказательства.

Преобразование документов и чтение Office

Необязательные адаптеры Anydoc или MarkItDown преобразуют поддерживаемые локальные файлы в проверяемый Markdown до загрузки. OfficeCLI предоставляет отдельный, доступный только с согласия путь для чтения Word, Excel и PowerPoint. Эти возможности не устанавливаются и не включаются скрытно и не изменяют исходные файлы Office.

Извлечение и индексация → · Граф документов → · Преобразование документов →

Установка

Большинству пользователей достаточно одной команды:

npm install --global @i-xor/lwc

Также поддерживаются Homebrew, crates.io, проверенные по контрольной сумме релизы GitHub и локальные сборки Cargo.

Установка и обновление →

Сопутствующий Skill для агентов

Встроенный Skill using-lwc превращает LWC в слой проактивной памяти. Он извлекает ограниченный контекст, разделяет проектные и глобальные знания, интегрирует источники, поддерживает цитаты и сохраняет только проверенные знания, полезные в будущем.

Установите его через skills.sh:

npx skills add JanYork/llm-wiki-cli --skill using-lwc -g

Канонический вызов — $using-lwc. Skill не привязан к конкретному агенту и содержит отдельные руководства по памяти, графам документов, Word Graph, CodeGraph, сильным тегам, преобразованию, настройке, восстановлению и обслуживанию.

Нативная настройка агентов

LWC обнаруживает поддерживаемые агенты и идемпотентно настраивает доступные поверхности MCP, Skill, Hook и Instructions через адаптеры AgentTarget:

lwc agent install --yes

Единый MCP только для чтения предоставляет ограниченную память Wiki и необязательный контекст кода, не расширяя рабочую область. Поддерживаются Claude Code, Codex, Cursor, OpenCode, Gemini CLI, Kiro, Hermes, Antigravity, GitHub Copilot in VS Code, Copilot CLI, Copilot for JetBrains и pi.

Интеграция AgentTarget →

Быстрый старт

Обычно человек описывает цель и проверяет результат, а CLI управляет агент. Полный путь приведен в руководстве по быстрому старту.

1. Инициализация проектной Wiki

Агент создает локальную Wiki проекта и задает ее цель и правила сопровождения. Состояние локально исключается из Git, если версионирование не выбрано явно.

2. Добавление материалов

Отобранные файлы превращаются в неизменяемые дедуплицированные снимки. LWC отслеживает пути и сообщает, остался ли текущий файл прежним, изменен, отсутствует или заменен новой версией.

3. Анализ и интеграция источника

Агент полностью читает источник в заданных пределах, создает резюме с цитатами, обновляет общие знания и завершает загрузку только после согласования обоих уровней.

4. Поиск в накопленной Wiki

Поиск отдает приоритет поддерживаемым страницам, не теряя связь с доказательствами. Когда утверждение нужно проверить, агент открывает точный исходный текст.

Процесс агента

Обычный цикл включает извлечение релевантных знаний, проверку текущих источников или кода, когда важна актуальность, минимальное проверенное обновление и проверку поиска, ссылок и применимых графов. Крупные изменения публикуются атомарно через changeset.

Полный процесс →

Атомарные многошаговые изменения

Changeset скрывает многоэтапное обновление знаний до завершения проверки. Commit публикует в одной транзакции только затронутые сущности, сохраняет несвязанные изменения и безопасно завершается ошибкой при конфликте revision одной и той же сущности.

Для поддерживаемых операций сохраняется точный обратный patch, позволяющий защищенный rollback без замены всей Wiki.

Руководство по changesets →

Области

ОбластьНазначение
projectЗнания ближайшей проектной Wiki
globalЗнания для повторного использования между проектами
allОбъединенное извлечение только для чтения и согласованный Sync

Запись всегда направлена в одно явно указанное хранилище; LWC не создает неявные межпроектные цитаты или ссылки.

Области и обнаружение проектов →

Поиск и CJK

Поиск лексический, детерминированный и отдает приоритет поддерживаемым страницам. Заголовок, путь, резюме, текст, происхождение и данные графа оцениваются отдельно; доступны фильтры по странице, источнику и типу, а также точное объяснение оценки.

Для CJK применяются соседние биграммы и полезные униграммы, для латиницы — строчные буквенно-цифровые термины. Отказ от словаря обеспечивает стабильность для названий продуктов, символов кода, смешанного текста и новой лексики.

Явные веса и feedback

Аудируемые веса выражают постоянную важность документа. Feedback для запроса меняет порядок только совпавших кандидатов и хранит отпечаток, а не исходный запрос. Ни один механизм не добавляет нерелевантные документы.

Поиск и контекст →

Просмотр только для чтения и CodeGraph

Локальный Viewer показывает страницы, источники, Markdown, связи документов и структуру кода через loopback-интерфейс только с GET/HEAD. Он не выполняет миграцию, обновление или построение графа.

Анализ кода LWC CodeGraph

CodeGraph работает только в проекте и инициализируется явно. Он отвечает на вопросы о символах, вызывающих и вызываемых элементах, зависимостях, файлах и влиянии, отключает телеметрию и атомарно обновляет граф по файлу-владельцу.

Runtime распознает TypeScript, TSX, JavaScript, JSX, ArkTS, Python, Go, Rust, Java, C, C++, C#, Razor, PHP, Ruby, Swift, Kotlin, Dart, Svelte, Vue, Astro, Liquid, Pascal, Scala, Lua, Luau, Objective-C, R, Solidity, Nix, YAML, Twig, XML, .properties, CFML, CFScript, CFQuery, COBOL, VB.NET, Erlang и Terraform.

Viewer → · CodeGraph →

Обслуживание и проекция

Lint, переиндексация, материализация Markdown, compact, checkpoints и проекция графа являются явными операциями. Длительная работа сохраняется, наблюдается, возобновляется и выполняется ограниченными единицами документов.

SQLite остается каноническим. Индексы, Markdown и графы можно перестроить без перезаписи истории источников или текущих знаний Wiki.

Обслуживание и диагностика →

Набор бенчмарков

Необязательный benchmark измеряет время импорта, задержку поиска, Recall@5/10, MRR и объем хранения на очищенном корпусе пользователя. Честное сравнение фиксирует машину, корпус, набор запросов и условия, затем сравнивает медианы нескольких запусков.

Методология →

Результаты LongMemEval-S (v0.18.5)

Это базовый результат без настройки, а не предел эффективности LWC при длительном использовании. Модель может активно оценивать свидетельства и реагировать на исправления пользователя или обратную связь о релевантности, постоянно обновляя веса и данные для запросов. При надёжной обратной связи и последовательной настройке ожидается улучшение относительно этой статической базы; дополнительный эффект пока не измерен. Реактивная настройка означает обновление Agent в ответ на обратную связь, а не автоматическое обучение при каждом поиске.

Два локальных запуска 13 сентября 2026 года: обработано 500/500 вопросов, 470 участвуют в оценке поиска; фиксированный набор данных, 4 параллельных потока на Mac Apple M5 Pro. Второй запуск использует сохранённые источники; ранжирование всех 500 вопросов совпало.

МетрикаПервыйВторой
Обработано вопросов500 / 500500 / 500
Оценено вопросов470470
Исключено вопросов без ответа3030
Recall@183.83% (394/470)83.83% (394/470)
Recall@391.49% (430/470)91.49% (430/470)
Recall@595.11% (447/470)95.11% (447/470)
Recall@1097.66% (459/470)97.66% (459/470)
Recall@3099.15% (466/470)99.15% (466/470)
Recall@5099.15% (466/470)99.15% (466/470)
MRR0.8836680.883668
Средняя задержка509.883 ms679.759 ms
P50507.697 ms665.454 ms
P90663.061 ms931.238 ms
P95731.766 ms990.375 ms
P99888.555 ms1094.886 ms

Результаты не включают проактивную настройку. Адаптер только ищет источники сеансов: без систематизации знаний моделью, обратной связи о релевантности и обновления весов. При реальном использовании модель может проверять свидетельства и явно менять веса документов или обратную связь для конкретного запроса, улучшая поиск. Это не автоматическое изменение при каждом поиске; эффект зависит от качества обратной связи и здесь не измерялся. Проверяйте настройку на отложенных вопросах, не подавая ответы теста обратно в тот же тест. Это локальная оценка поиска, не официальный рейтинг и не точность ответов. Задержки относятся к четырём параллельным потокам, а не к контролируемому сравнению скорости версий.

Данные: 1 · Данные: 2 · LongMemEval-S

Ограничения и нецели

Текущие ограничения:

  • база знаний для одной машины и одного пользователя;
  • текстовый процесс UTF-8;
  • до 64 МиБ на schema, purpose, source или тело страницы;
  • лексический поиск, не семантическое векторное извлечение.

Намеренно не входят в цели:

  • встроенные вызовы LLM;
  • векторная база;
  • daemon или фоновый сервис;
  • Web или desktop UI;
  • прямое редактирование базы данных.

Если проекция Markdown разошлась, перестройте её. Ошибки схемы SQLite исправляйте через CLI и миграции, а не вручную.

Участие в разработке

Issues и pull requests приветствуются, особенно по темам:

  • удобство процессов агентов;
  • детерминированная проекция;
  • долговечные контракты цитирования и поддержки страниц;
  • качество поиска в многоязычных технических корпусах.

Перед pull request прочитайте CONTRIBUTING.md. О проблемах безопасности сообщайте по SECURITY.md.

Лицензия

Проект распространяется по Apache License 2.0.