noosphere-lite-mcp

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: GPL-3.0
  • No description — Repository has no description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 7 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

README.md

Noosphere Lite MCP

Память для ИИ, которой не нужно помещаться в контекстное окно.

Автор — Garyu-tt · Версия 0.3.0 · Linux / Python / MCP · GNU GPLv3

English documentation


Что это вообще такое?

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

Noosphere Lite — долговременная память, которая живёт отдельно от агента. Это не ещё одна языковая модель, не бесконечный чат и не каталог текстовых файлов. Это хранилище знаний, их истории и взаимосвязей. Агент подключается к нему через MCP, получает ровно ту информацию, которая нужна в текущий момент, и продолжает работу.

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

Что умеет Lite

Память по требованию

У агента есть несколько способов вспомнить необходимое: найти подходящие записи, получить краткие результаты, прочитать одну запись целиком, пройти по связанным узлам или собрать ограниченный объём контекста под задачу. Всё остальное в контекст не попадает.

Граф вместо мешка заметок

Каждая запись — отдельный узел: идентификатор, заголовок, текст, тип, теги, ссылка на источник и время изменений. Узлы можно связывать именованными направленными отношениями: например, related, supports, blocks, derived_from.

По графу можно ходить на глубину от одного до трёх переходов. Содержимое записей не обязано загружаться вместе с картой связей. Можно сначала найти путь, а затем открыть нужный узел.

Каскадное устаревание

Это важнее, чем кажется. Если однажды сохранённый факт изменился, старые выводы, построенные на нём, нельзя продолжать выдавать как актуальные.

Пример:

Измерение A
   ↑ derived_from
Вывод B
   ↑ derived_from
Решение C

Если пересмотреть A, Lite автоматически пометит B и C как stale — «требует повторной проверки». Если явно признать A недостоверным, устареет вся цепочка: A, B и C. История при этом остаётся на месте.

Система не пытается самостоятельно придумать новую истину и не удаляет неудобные результаты. Она честно сообщает агенту: «этот вывод опирался на сведения, которые уже изменились».

Каскад работает по явным связям derived_from. Lite пока не угадывает такие зависимости самостоятельно. Статус current означает «не помечено устаревшим», а не «достоверность доказана».

История изменений

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

Поэтому память подходит не только для хранения ответов, но и для накопления опыта: наблюдение → вывод → решение → пересмотр.

Хранение: отдельно граф, отдельно события

Внутри Lite четыре слоя:

ИИ-агент
    │ MCP-запрос
    ▼
Поиск и выборка контекста
    │
    ▼
Рабочий граф в оперативной памяти
    │
    ▼
Зашифрованный журнал событий
    ├─ основная копия
    └─ зеркальная копия

В постоянном хранилище используется собственный бинарный журнал NLV1, зашифрованный с AES-256-GCM. В нём последовательно фиксируются события: создание записи, связь, изменение, устаревание, архивация.

Рабочий граф восстанавливается в оперативной памяти. Постоянного открытого JSON-файла с полезными данными или незашифрованного поискового индекса нет.

Это сознательно простой движок: поиск пока лексический, а не векторный. С версии 0.3.0 есть экспериментальный read-only поиск возможных связей между уже сохранёнными заметками; он не подтверждает факты и не создаёт связи автоматически. Эмбеддинги, нейронное извлечение смысла и автоматическое понимание противоречий — направления развития, а не функции версии 0.3.0.

Защита и две копии

Каждое событие аутентифицируется и связывается с предыдущим через хеш. Изменение или повреждение журнала обнаруживается при чтении. Две копии сверяются; если одна повреждена или отстала, её можно восстановить по исправной.

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

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

Универсальный интерфейс

Lite работает локально на Linux и не требует облака, GPU или собственной нейросети. Агент получает память через MCP. В комплекте локальный сервер stdio, без открытого HTTP-порта, запуска команд и доступа к произвольным файлам компьютера.

Это память для совместимого агента, а не агент, который тайком управляет системой.

Как это выглядит в работе

Ты сохранил решение о конфигурации сервера и связал его с исходным тестом. Через месяц новый агент возвращается к проекту: находит решение, открывает его источник и связанные заметки, восстанавливает ход мысли.

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

Смысл не в том, чтобы помнить больше текста. Смысл — не терять причинно-следственные связи между уже проделанными действиями.

Установка на Linux

Нужен Python 3.11 или новее.

git clone https://github.com/Garyu-tt/noosphere-lite-mcp.git
cd noosphere-lite-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Подключи две независимые файловые системы под хранилище и настрой пути:

export NSL_PRIMARY=/mnt/storage-a/noosphere-lite
export NSL_MIRROR=/mnt/storage-b/noosphere-lite
export NSL_KEY_FILE="$HOME/.config/noosphere-lite/key"

python -m noosphere_lite init
python -m noosphere_lite status
python -m noosphere_lite mcp

Каталоги хранилища должны иметь права 0700; ключ и журналы — 0600. Инициализация не перезаписывает существующие журналы.

Только для тестов на одном диске можно указать переменную NSL_DEVELOPMENT_SAME_DEVICE=1. Это отключает проверку независимости копий и не подходит для ценных данных.

Настройка MCP-клиента

Для клиентов, поддерживающих локальный stdio MCP, пример конфигурации:

{
  "mcpServers": {
    "noosphere-lite": {
      "command": "/absolute/path/noosphere-lite-mcp/.venv/bin/python",
      "args": ["-m", "noosphere_lite", "mcp"],
      "env": {
        "NSL_PRIMARY": "/mnt/storage-a/noosphere-lite",
        "NSL_MIRROR": "/mnt/storage-b/noosphere-lite",
        "NSL_KEY_FILE": "/home/you/.config/noosphere-lite/key"
      }
    }
  }
}

Это пример для совместимых локальных MCP-хостов. Интерфейс ChatGPT может требовать отдельно поддерживаемый мост; конфигурация stdio сама по себе не устанавливает облачный коннектор.

12 инструментов MCP

Инструмент Что делает
memory_add Сохраняет заметку, факт, решение или задачу
memory_search Ищет подходящие воспоминания
memory_suggest_links Предлагает непроверенные связи по пересечению значимых терминов и тегов; ничего не записывает
memory_read Возвращает конкретную запись целиком
memory_context Собирает ограниченный контекст для задачи
memory_link / memory_unlink Создаёт и удаляет типизированные связи
memory_neighborhood Обходит соседние узлы
memory_revise Обновляет запись и помечает зависимые выводы как устаревшие
memory_invalidate Запускает каскадное устаревание от выбранной записи
memory_archive Скрывает запись, не стирая историю
memory_status Проверяет журналы и статистику

Эксперимент: обучаемые веса связей (R04)

В каталоге examples/reviewed_plasticity опубликован отдельный Python-пример весов графа с независимым подтверждением результатов, SHA-256 доказательств, разреженным накоплением полезности и откатом. Это opt-in reference implementation, не функция ядра Lite 0.3.0: оно не изменяет зашифрованные NLV1-журналы и не обучает веса LLM. Для реальной работы нужен доверенный интегратор с аутентификацией агентов и QA; его SQLite-sidecar хранит метаданные без шифрования.

Чего пока нет

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

В 0.3.0 этого пока нет. Текущий движок рассчитан на один хост и одного пишущего процесса с блокировкой, а не на распределённый кластер. Журнал при запросах перечитывается, поэтому большие базы потребуют отдельной оптимизации. Текущий лимит — 150 000 событий, а не 150 000 узлов.

Проверка

python -m unittest discover -s tests -v

Тесты покрывают шифрование, обнаружение повреждений, восстановление копии, связи и многоуровневое каскадное устаревание. Подключение локального MCP-клиента проверено на синтетических данных.


Noosphere Lite MCP — чтобы новый разговор не означал новое начало.

Garyu-tt · GNU GPLv3 · English documentation

License / Authorship

Original project code in this release: GNU GPL-3.0-or-later. Copyright (C) 2026 Garyu-tt. See LICENSE and AUTHORS.md. Previously published MIT-licensed versions retain their earlier permissions and existing contributors' acknowledgments.

Yorumlar (0)

Sonuc bulunamadi