Collective Mind Unified v2.3

Collective Mind — это универсальный сервер семантической памяти для ИИ-агентов. Он объединяет в себе два интерфейса, работающих на одном порту:

  • REST API: Для программного управления памятью (запись, поиск, удаление, bulk-загрузка).
  • MCP (Model Context Protocol): Для прямого подключения к Claude Desktop или другим LLM-клиентам в качестве "внешнего мозга".

Система использует векторную базу данных FAISS для мгновенного поиска по смыслу и поддерживает локальные модели эмбеддингов через LM Studio.

🚀 Основные возможности

  • Семантическая память: Поиск не по словам, а по смыслу.
  • Единый порт: API и MCP (через SSE) работают на одном порту (по умолчанию 3003).
  • Пространства имен (Namespaces): Разделение памяти между разными проектами или пользователями.
  • Bulk Operations: Массовая загрузка данных для быстрой индексации знаний.
  • Безопасность: Защита всех API-запросов через X-API-Key.
  • Надежность: Атомарное сохранение данных (использование .tmp файлов) для предотвращения повреждения базы.

🛠 Установка и настройка

1. Требования

  • Python 3.10+
  • LM Studio (запущенный локальный сервер эмбеддингов)
  • Установленные библиотеки:
    pip install fastapi uvicorn mcp sse-starlette faiss-cpu numpy requests pydantic-settings

2. Конфигурация (.env)

Создайте файл .env в корне проекта:

LM_STUDIO_URL=http://localhost:1234/v1/embeddings
EMBEDDING_MODEL=nomic-ai/nomic-embed-text-v1.5-GGUF
STORAGE_PATH=./storage
API_KEY=ваш-секретный-ключ
VECTOR_DIMENSION=768 # Проверьте размерность вашей модели в LM Studio
PORT=3003
HOST=0.0.0.0

🖥 Запуск

Запустите сервер командой:

python main.py

Сервер будет доступен по адресу: http://localhost:3003

🤖 Интеграция с Claude Desktop

Чтобы Claude мог использовать эту память, добавьте следующий блок в ваш конфиг claude_desktop_config.json:

{
  "mcpServers": {
    "collective-mind": {
      "url": "http://localhost:3003/sse"
    }
  }
}

*Если вы используете сервер удаленно или через туннель (ngrok), укажите соответствующий HTTPS URL.*

📡 API Документация

Все запросы к API должны содержать заголовок X-API-Key: <ваш-ключ>.

1. Сохранение информации

POST /remember

{
  "text": "Мой любимый цвет — синий",
  "namespace": "personal",
  "meta": {"source": "chat"}
}

2. Массовая загрузка

POST /remember_bulk

[
  {"text": "Факт 1", "namespace": "wiki"},
  {"text": "Факт 2", "namespace": "wiki"}
]

3. Поиск по памяти

GET /recall?q=какой мой любимый цвет&ns=personal&k=3&t=2.0

  • q: текст запроса.
  • ns: пространство имен.
  • k: количество результатов.
  • t: порог (threshold) — чем меньше, тем ближе должен быть смысл.

4. Удаление записи

DELETE /forget/{item_id}

ID можно получить из результатов поиска (/recall).

🛠 Инструменты MCP (доступны ИИ)

LLM-агент (например, Claude) увидит следующие инструменты:

  • ai_remember(text, namespace): Вызывается, когда агент хочет что-то запомнить.
  • ai_recall(query, namespace, count): Вызывается, когда агенту нужно найти информацию в прошлом опыте.

📁 Структура папок

  • main.py: Основной код сервера.
  • storage/: Папка с базой данных.
    • index.faiss: Бинарный файл векторного индекса.
    • metadata.json: Тексты, метаданные и связи с векторами.
  • .env: Настройки окружения.
Collective Mind: Because AI should remember what matters.

⚠️ Важные примечания

  • Размерность векторов: Разные модели эмбеддингов выдают разную длину вектора (напр. 768, 1024, 1536). Убедитесь, что VECTOR_DIMENSION в .env совпадает с характеристиками вашей модели в LM Studio, иначе FAISS выдаст ошибку.
  • LM Studio: Перед запуском сервера убедитесь, что в LM Studio запущен "Embedding Server" и загружена соответствующая модель.