README.ru.md
September 13, 2026 · View on GitHub
LWC — проактивная память для ИИ-агентов
Управляется агентами · Сохраняется между сеансами · Опирается на источники
English · 简体中文 · 日本語 · Español · Português (Brasil) · Français · Русский

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 — память агента, а не 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 — машинный интерфейс для агентов, а не приложение для заметок. В обычном сценарии человек выбирает источники, задаёт цели и вопросы, затем проверяет ответы или проекцию 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 разделяет долговременные знания на уровни с четкими обязанностями:
| Уровень | Назначение |
|---|---|
| Исходные материалы | Неизменяемые снимки отобранных доказательств |
| Wiki | Страницы, цитаты, ссылки и происхождение данных, поддерживаемые агентом |
| Схема и цель | Правила проекта для дальнейшего сопровождения знаний |
SQLite служит каноническим источником. Markdown, полнотекстовые индексы и необязательные графы являются восстанавливаемыми проекциями. Операции возвращают структурированный JSON для аудита и восстановления.
Иерархическое извлечение и граф знаний
LWC индексирует Sources и страницы Wiki на уровне документа, фрагмента и предложения. Агент может начать с небольшого релевантного контекста и раскрыть только нужный точный фрагмент.

Необязательный граф документов связывает страницы, источники, цитаты, ссылки и явные семантические отношения. 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.
Быстрый старт
Обычно человек описывает цель и проверяет результат, а CLI управляет агент. Полный путь приведен в руководстве по быстрому старту.
1. Инициализация проектной Wiki
Агент создает локальную Wiki проекта и задает ее цель и правила сопровождения. Состояние локально исключается из Git, если версионирование не выбрано явно.
2. Добавление материалов
Отобранные файлы превращаются в неизменяемые дедуплицированные снимки. LWC отслеживает пути и сообщает, остался ли текущий файл прежним, изменен, отсутствует или заменен новой версией.
3. Анализ и интеграция источника
Агент полностью читает источник в заданных пределах, создает резюме с цитатами, обновляет общие знания и завершает загрузку только после согласования обоих уровней.
4. Поиск в накопленной Wiki
Поиск отдает приоритет поддерживаемым страницам, не теряя связь с доказательствами. Когда утверждение нужно проверить, агент открывает точный исходный текст.
Процесс агента
Обычный цикл включает извлечение релевантных знаний, проверку текущих источников или кода, когда важна актуальность, минимальное проверенное обновление и проверку поиска, ссылок и применимых графов. Крупные изменения публикуются атомарно через changeset.
Атомарные многошаговые изменения
Changeset скрывает многоэтапное обновление знаний до завершения проверки. Commit публикует в одной транзакции только затронутые сущности, сохраняет несвязанные изменения и безопасно завершается ошибкой при конфликте revision одной и той же сущности.
Для поддерживаемых операций сохраняется точный обратный patch, позволяющий защищенный rollback без замены всей Wiki.
Области
| Область | Назначение |
|---|---|
| project | Знания ближайшей проектной Wiki |
| global | Знания для повторного использования между проектами |
| all | Объединенное извлечение только для чтения и согласованный Sync |
Запись всегда направлена в одно явно указанное хранилище; LWC не создает неявные межпроектные цитаты или ссылки.
Области и обнаружение проектов →
Поиск и CJK
Поиск лексический, детерминированный и отдает приоритет поддерживаемым страницам. Заголовок, путь, резюме, текст, происхождение и данные графа оцениваются отдельно; доступны фильтры по странице, источнику и типу, а также точное объяснение оценки.
Для CJK применяются соседние биграммы и полезные униграммы, для латиницы — строчные буквенно-цифровые термины. Отказ от словаря обеспечивает стабильность для названий продуктов, символов кода, смешанного текста и новой лексики.
Явные веса и feedback
Аудируемые веса выражают постоянную важность документа. Feedback для запроса меняет порядок только совпавших кандидатов и хранит отпечаток, а не исходный запрос. Ни один механизм не добавляет нерелевантные документы.
Просмотр только для чтения и CodeGraph
Локальный Viewer показывает страницы, источники, Markdown, связи документов и структуру кода через loopback-интерфейс только с GET/HEAD. Он не выполняет миграцию, обновление или построение графа.

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.
Обслуживание и проекция
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 / 500 | 500 / 500 |
| Оценено вопросов | 470 | 470 |
| Исключено вопросов без ответа | 30 | 30 |
| Recall@1 | 83.83% (394/470) | 83.83% (394/470) |
| Recall@3 | 91.49% (430/470) | 91.49% (430/470) |
| Recall@5 | 95.11% (447/470) | 95.11% (447/470) |
| Recall@10 | 97.66% (459/470) | 97.66% (459/470) |
| Recall@30 | 99.15% (466/470) | 99.15% (466/470) |
| Recall@50 | 99.15% (466/470) | 99.15% (466/470) |
| MRR | 0.883668 | 0.883668 |
| Средняя задержка | 509.883 ms | 679.759 ms |
| P50 | 507.697 ms | 665.454 ms |
| P90 | 663.061 ms | 931.238 ms |
| P95 | 731.766 ms | 990.375 ms |
| P99 | 888.555 ms | 1094.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.