Skip to main content
Glama
SkiTemplar
by SkiTemplar

Что это?

Ваш ИИ-ассистент забывает всё каждый раз, когда вы закрываете окно: решения, которые вы приняли, ошибки, которые уже исправили, как устроен ваш проект. На следующий день вам приходится объяснять всё заново.

ULTRON даёт ему память. Пока вы работаете, он сохраняет важное на вашем компьютере; когда вы открываете новый разговор, он автоматически напоминает об этом ИИ. Вы ничего не делаете: работаете как обычно, а ваш ассистент с каждым разом знает вас лучше. Вы решаете, что сохраняется (всё проходит через панель утверждения), и ничего не покидает вашу машину.

Локальная память event-sourced (brain.db, SQLite) с семантическим индексом (Qdrant + E5 1024d), повторно внедряемая в каждую сессию через хуки — гибридное воспроизведение за долю секунды с резидентным демоном. Кроме того: AI Router с несколькими провайдерами, оркестратор навыков/агентов и настольная панель управления (Tauri 2 + React 19). Всё состояние — это локальные файлы, которые можно просмотреть. Спецификация: docs/memory-spec.md.

Related MCP server: MCP Memory Server

С ULTRON и без

Только Claude Code

С ULTRON

При открытии сессии

Начинает с нуля

Возобновляет проект: состояние, задачи, решения

Контекст в каждом запросе

То, что вы пишете

+ актуальные воспоминания, извлекаемые автоматически (~84% реальных запросов)

Уже решённые ошибки

Повторяются

Запоминаются ("это мы уже пробовали, не сработало из-за X")

Что сохраняется

Ничего

То, что вы одобрите в панели (с аудитом каждого изменения)

Где живут ваши данные

На вашем диске, в файлах, которые вы можете открыть

По сравнению с другими системами памяти (облачные сервисы типа Mem0 и аналоги), различия в дизайне, а не в маркетинге: здесь память 100% локальна (без учётной записи, без подписки, без отправки вашего кода третьим лицам), управляема (ИИ предлагает, вы утверждаете; каждая запись оставляет событие аудита), честна (если не знает, воздерживается вместо внедрения заполнителя — измерено) и открыта (SQLite + Markdown + стандартный MCP-сервер, к которому может обратиться любой ассистент).

Руководство по ежедневному использованию (человек + ИИ): docs/TUTORIAL.md · Полная спецификация системы памяти: docs/memory-spec.md · Покомпонентная установка: INSTALL.md · Лицензия MIT.

Как течёт память

flowchart LR
    A[Prompt en Claude Code] -->|hook UserPromptSubmit| B[daemon ultron-memory<br/>E5 residente]
    B --> C[(brain.db<br/>SQLite + FTS5)]
    B --> D[(Qdrant<br/>E5 1024d)]
    C -->|BM25| E[Fusion RRF + cross-encoder]
    D -->|dense| E
    E -->|pack de memorias| A
    F[Fin de sesion] -->|hook Stop| G[Captura -> inbox de candidatos]
    G -->|aprobacion| C
    H[Cualquier cliente MCP<br/>Codex, Gemini CLI...] -->|MCP server| B

Реальные цифры (измеренные, не смоделированные)

Измерены на реальном корпусе мейнтейнера (~3 300 активных воспоминаний) с оракулом из 29 запросов, размеченных вручную — ваша установка начинается пустой, и цифры воспроизведения зависят от вашего корпуса. Воспроизводимы с помощью ultron-memory eval --golden и скриптов репозитория.

Метрика

Значение

Recall@8 (оракул, размеченный вручную)

0.82

MRR (правильное воспоминание наверху)

0.95

Оркестрация с горячим демоном

~0.5 с (против ~3.5 с на холодный процесс)

ОЗУ в покое (приложение / демон)

36 МБ / ~40 МБ (1.5-3.5 ГБ с загруженными моделями)

Реальные запросы, обслуженные с памятью

84% (ворота откалиброваны на реальном трафике, не только на golden)

Когда корпус не знает ответа, система воздерживается вместо внедрения заполнителя — честность воспроизведения тоже измерена (категория abstain собственного бенча).


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

Полная система (приложение + навыки + хуки + семантическая память) — рекомендуемый путь; он идемпотентен и спрашивает перед тем, как что-либо трогать:

git clone https://github.com/SkiTemplar/ultron-control-center.git $env:USERPROFILE\.ultron
cd $env:USERPROFILE\.ultron
powershell -ExecutionPolicy Bypass -File .\install.ps1   # Linux: ./install.sh

Покомпонентная установка (без мастера, детерминированно; -DryRun выводит план без изменений):

.\install.ps1 -Core            # app + memoria + hooks (el set por defecto)
.\install.ps1 -All             # core + skills + tones + agents
.\install.ps1 -Skills -Tones   # a la carta
.\install.ps1 -Core -DryRun    # solo listar que haria
# Linux: ./install.sh --core | --all | --skills | --tones | --agents | --dry-run

Только настольное приложение (без навыков/хуков/сайдкара памяти):

git clone https://github.com/SkiTemplar/ultron-control-center.git ~/.ultron && cd ~/.ultron/control-center
cp ../.env.example ../.env   # opcional: claves de proveedores LLM (todas vacias por defecto)
npm install
npm run build:app            # = kill-app + tauri build -> ejecutable de escritorio

Полное руководство (bootstrap одной командой из релиза, флаги, устранение неполадок): INSTALL.md.

Qdrant опционален (воспроизведение деградирует до sparse-only без него); см. раздел Qdrant в docs/INSTALL-ADVANCED.md. Пути для каждой машины документированы в config/paths.example.toml.

Возможности

  • Управляемая памятьbrain.db (SQLite) как единственный источник истины; каждое изменение проходит через единый сервис, который добавляет событие аудита.

  • Гибридное воспроизведение — плотное (E5 1024d / Qdrant) + разрежённое (FTS5/BM25), объединённые с помощью Reciprocal Rank Fusion; деградирует до sparse-only без Qdrant.

  • Папка входящих кандидатов — автоматические захваты предлагают, человек утверждает; активная память никогда не записывается автоматически.

  • Редактирование + дедупликация на пути записи — секреты/PII удаляются, дубликаты по content_hash удаляются перед сохранением или векторизацией.

  • AI Router — цепочка основной -> резервные по зонам, обнаружение ключей и телеметрия использования/экономии; маршрутизация напрямую в Rust (без сайдкара LiteLLM).

  • Оркестратор по правилам — сопоставляет prompt -> намерение -> workflow -> агенты -> воспоминания; резервирует большую модель только для неоднозначной очереди.

  • Тоны / личности — детерминированное обнаружение тона чата (лексические сигналы + явный запрос) внутри оркестрации; тоны редактируются в Library -> Tones. Реальная конфигурация (~/.ultron/personality.json) является локальной и gitignored; репозиторий публикует только скомпилированные seeds (orchestrator/personality.rs). Тон влияет только на разговор: никогда на коммиты, документацию или артефакты.


Что это такое

Центр управления ULTRON не заменяет Claude Code: он оборачивает его. Он даёт постоянную и управляемую память, маршрутизирует запросы к нескольким LLM-провайдерам в зависимости от стоимости и доступности, и автоматически определяет, какой специализированный навык/агент подходит для запроса. Всё состояние хранится в локальных файлах (SQLite + JSON + markdown), которые вы можете просматривать, версионировать и редактировать вручную.

Столп

Что делает

Управляемая память

~/.ultron/brain.db (SQLite) — единственный источник истины. Каждая запись проходит через единый сервис, который также регистрирует событие аудита. Автоматические захваты никогда не записывают активную память напрямую: они предлагают кандидатов в папку входящих, которую человек утверждает или отклоняет.

Гибридное воспроизведение

Слияние двух источников с помощью Reciprocal Rank Fusion (RRF): плотное (векторы E5 1024d в Qdrant) + разрежённое (FTS5/BM25 над brain.db). Деградирует до только разрежённого, если Qdrant/E5 недоступны.

AI Router

Каталог провайдеров + зон с цепочкой основной -> резервные, обнаружение ключей, телеметрия использования/экономии. Без сайдкара LiteLLM: маршрутизация напрямую в Rust.

Оркестратор

Сопоставляет запрос (возможно, нечёткий) с намерением -> workflow -> агентами для делегирования -> релевантными воспоминаниями -> ограничениями, используя правила (не использует большую модель для того, что решают правила/триггеры).


Архитектура бэкенда (реальная)

Бэкенд на Rust находится в control-center/src-tauri/src/. Центральный модуль памяти — в control-center/src-tauri/src/memory/.

Память: SQLite как источник истины

  • ~/.ultron/brain.db (SQLite, режим WAL) — канонический SoT. Каноническая схема находится в memory/schema_v3.rs (память) + memory/schema_v4.rs (историческая миграция v4: таблицы edges / unresolved_refs, сегодня неактивны — граф кода обеспечивается внешним MCP CodeGraph) / memory/migrations.rs, с моделями в memory/model.rs (MemoryItem, MemoryCandidate, MemoryEvent и перечисления управления Status, Scope, Sensitivity, Source и т.д.).

  • MemoryService (memory/service.rs) — единственный постоянный писатель. Инвариант управления: любая мутация проходит через него и добавляет MemoryEvent аудита. Хуки и агенты никогда не записывают memory_items напрямую; они только предлагают MemoryCandidate, которые человек (или политика автоутверждения) продвигает.

  • На пути записи применяются стражи: редактирование секретов/PII (memory/redaction.rs) перед сохранением или векторизацией, точная дедупликация по content_hash (memory/texthash.rs) и лексическая дедупликация через FTS.

Qdrant: производный индекс (не источник истины)

  • Коллекция ultron_memory (Qdrant) индексирует активные элементы с помощью MultilingualE5Large, 1024 размерности (memory/qdrant_index.rs). Это производный индекс: его можно перестроить в любой момент с помощью reindex_all, а brain.db остаётся истиной.

  • После каждой утверждённой/отредактированной/восстановленной записи sync_index поддерживает Qdrant синхронизированным с SoT (best-effort; любое отклонение обнаруживаемо/исправимо через reconcile).

  • Старая коллекция ultron_sessions (384d BGE) удалена; Qdrant здесь всегда является индексом, никогда истиной.

Гибридное воспроизведение плотное + разрежённое с RRF

  • Единственная команда recall (commands/memory/recall_unified.rs) объединяет с помощью Reciprocal Rank Fusion (RRF_K = 60):

    • ПЛОТНОЕ: векторы E5 в ultron_memory (Qdrant).

    • РАЗРЕЖЁННОЕ: FTS5/BM25 по memory_items (только status=active).

  • Возвращает компактный контекстный пакет сводок в рамках бюджета токенов (TOKEN_BUDGET = 1500), с трассировками почему это воспоминание (диапазоны по источнику, оценки, отбраковки) для инспектора извлечения.

  • Единственный путь воспроизведения — единая команда recall с RRF; источники — Qdrant (плотное) + SQLite/FTS5 (разрежённое). Не использует внешние сервисы памяти.

Автоматический захват через Stop hook

  • В Stop хук передаёт транскрипт сессии в memory/capture.rs::capture_session. Этот:

    1. запрашивает у LLM (через ai_router::route, зона chat) извлечение нескольких долговечных фактов/решений;

    2. преобразует каждый факт в MemoryCandidate (проходя через редактирование + дедупликацию) и помещает его в управляемый inbox для утверждения человеком — никогда не продвигает автоматически в активное.

  • Отказоустойчивость: если у маршрутизатора нет доступного провайдера, он переключается на дешёвую локальную эвристику, чтобы Stop hook никогда не завершался сбоем.

  • Inbox управляется из commands/memory/inbox.rs (memory_inbox_list, approve_candidate, reject_candidate).

AI Router: зоны, провайдеры, fallback и телеметрия

  • Бэкенд в модуле ai_router/ (mod.rs + exec.rs + providers/ + seed.rs + store.rs). Состояние в трёх JSON-файлах в ~/.ultron/cockpit/ai-router/: providers.json (каталог), zones.json (зоны с primary + fallbacks), metrics.json (счётчики + экономия).

  • route(zone, prompt) проходит по цепочке primary -> fallbacks, пропускает провайдеров без используемого API-ключа, записывает задержку/токены/экономию в телеметрию и возвращает Result<String, String> (ошибки verbatim, никогда не паникует, лимит 10 сек).

  • Обёртки для провайдеров: anthropic (claude-haiku), codex (OpenAI-совместимый), gemini, groq, ollama (локальный, без ключа), deepseek. Проверки работоспособности используют дешёвые зонды и не тратят токены; тестовые вызовы — тратят.

  • Зоны по умолчанию включают chat, code-edit, code-review, research-web, code-fast-local и другие.

Оркестратор: автоматическое обнаружение скиллов/агентов

  • Модуль orchestrator/ (rules.rs + ranking.rs + orchestrate.rs) отображает prompt -> intent -> workflow -> агенты для делегирования -> памяти -> ограничения. Классификация намерений основана на правилах (двуязычная es/en); большая модель резервируется для неоднозначной очереди.

  • Переиспользует (не дублирует): каталог агентов (memory/catalog.rs), унифицированный recall и встроенные workflows (agent_orchestration.rs). Никогда не записывает постоянную память и делегирует к реальным агентам в ~/.claude/agents (несуществующие на диске "призрачные агенты" санируются).

Граф кода: MCP CodeGraph (внешний)

  • Граф кода (какие символы существуют, кто кого вызывает, анализ влияния) предоставляется CodeGraph (@colbymchenry/codegraph, MIT), установленным как MCP сервер и запрашивается агентами через codegraph_explore / codegraph_callers / codegraph_impact. Индексирует репозиторий с помощью tree-sitter (AST) в .codegraph/ (локальный SQLite, инкрементальный) — 20+ языков.

Plugin Updates: проверка обновлений плагинов

  • Подвкладка Updates внутри Library (src/components/library/PluginUpdates.tsx), которая использует команды бэкенда plugin_check_updates_bulk(force) и plugin_changelog_summary(coordinate, installed_sha?).

  • Сравнивает установленный SHA с последним SHA из маркетплейса для каждого плагина, отмечает, какие имеют доступные обновления, и показывает последнее сообщение коммита / сводку изменений.


Stack

Слой

Технология

Фронтенд (Control Center)

Tauri 2 + React 19 + TypeScript (control-center/src/)

Бэкенд (Control Center)

Rust стабильный (control-center/src-tauri/src/)

Память (SoT)

SQLite (FTS5) в ~/.ultron/brain.db

Плотный индекс

Qdrant нативный (~/.ultron/qdrant-native/), коллекция ultron_memory, E5 1024d

Эмбеддинги

E5 (плотный) через crate::qdrant::embed_e5 внутри ultron-memory

Хуки sidecar CLI

ultron-memory (каноническая логика, переиспользуемая хуками Node)

Скриптинг ОС

PowerShell 5.1+ / скрипты в cockpit/

LLM-runtimes

Claude Code (основной); Codex CLI опционально. Gemini CLI удалён 2026-06-19 (Google отключил бесплатный OAuth); Gemini остаётся только как облачный fallback AI Router

Sidecar-бинарные файлы объявлены в control-center/src-tauri/Cargo.toml: ultron-memory (требуется feature qdrant).


Build

# desde control-center/
npm install
npm run build:app   # = kill-app + tauri build (genera el ejecutable de escritorio)

Другие полезные скрипты (в control-center/package.json):

npm run dev    # vite dev server (frontend)
npm run tauri  # CLI de Tauri
npm test       # vitest (frontend)

Примечание для Windows: build:app сначала выполняет kill-app, чтобы закрыть любые работающие экземпляры; устаревший бинарник — обычная причина сообщения "изменение не применено": закройте приложение и перекомпилируйте.


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

~/.ultron/
├── brain.db                  # SQLite — fuente de verdad de la memoria
├── qdrant-native/            # binario nativo de Qdrant (indice denso derivado)
├── qdrant_storage/           # datos persistidos por Qdrant
├── control-center/           # la app Tauri 2 + React 19
│   ├── src/                  # frontend React/TS (componentes, tabs)
│   │   └── components/       # Dashboard, AIRouter, Library, Projects, ...
│   └── src-tauri/
│       └── src/
│           ├── memory/       # kernel de memoria (service, sqlite_store,
│           │                 # qdrant_index, capture, redaction, texthash, ...)
│           ├── commands/     # comandos Tauri por dominio (memory, ai_router,
│           │                 # projects, system_ops, ...)
│           ├── ai_router/    # AI Router (mod/exec/health/providers/seed/store/types)
│           ├── orchestrator/ # mod/orchestrate/ranking/rules/types_model
│           └── bin/          # sidecar ultron-memory
├── cockpit/                  # config + estado en JSON/markdown
│   └── ai-router/            # providers.json, zones.json, metrics.json
├── personality.json          # tonos del usuario (LOCAL, gitignored; se
│                             # auto-siembra desde los seeds compilados)
├── hooks/                    # hooks de ciclo de vida
├── skills/                   # skills core (SKILL.md; catalogo curado no se publica)
├── plans/  projects/         # planes y proyectos
├── sessions/                 # logs de sesion / telemetria de routing
└── docs/                     # documentacion ampliada

Текущее состояние

  • Память: активное каноническое ядро. SoT = brain.db; плотный индекс ultron_memory (E5 1024d) синхронизирован при записи; унифицированный recall плотный+разреженный с RRF работает (деградирует до только разреженного без Qdrant). Путь записи с редактированием секретов и дедупликацией по content_hash подключены и протестированы.

  • Автоматический захват: Stop hook -> capture_session -> кандидаты в управляемый inbox; утверждение/отклонение человеком через команды inbox.

  • AI Router: реальная маршрутизация с цепочкой primary/fallback, обнаружение ключей и телеметрия использования/экономии; без sidecar LiteLLM.

  • Тоны [Tones]: детерминированное обнаружение в orchestrate (паритет JS/Rust детектора проверен с gate 16/16); визуальный редактор в Library -> Tones и игровая площадка обнаружения. Локальный personality.json (gitignored) с скомпилированными публикуемыми seeds; жёсткое ограничение: тон применяется только к чату, никогда к артефактам.

  • Детектор AI-текста: хук PostToolUse, который предупреждает, когда написанная проза "отдаёт" AI + Лаборатория детерминированных паттернов по каталогу исследований; сопоставитель с CLI и банком сценариев. Указывает, не переписывает.

  • UI (Control Center, v2.7.1): боковая панель с Dashboard, Usage, AI Router, System (с подвкладками Hooks/Schedules), MCPs, Library (подвкладки Skills/Agents/Rules/Updates), Memory, Notes, Learn, Sessions, Projects, Finance (только локальная сборка с VITE_FINANCE=1), Settings и Notifications. Вкладка Memory активна (добавлена заново 2026-06-04, Sidebar.tsx): отображает inbox кандидатов (утвердить/отклонить/редактировать) и состояние brain.db; ядро памяти остаётся только бэкендным, но управление human-in-the-loop осуществляется из этой вкладки (помимо команд).


Лицензия

MIT — см. LICENSE. Copyright (c) 2026 Rodrigo Fernandez.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • -
    license
    -
    quality
    B
    maintenance
    Enterprise-grade MCP server for persistent, intelligent memory management across Claude Code sessions.
  • A
    license
    -
    quality
    D
    maintenance
    MCP server that provides persistent memory and contextual awareness to language models, enabling project onboarding, recall of architectural rules, and code consistency across sessions.
    32
    MIT

View all related MCP servers

Related MCP Connectors

  • Cloud-hosted MCP server for durable AI memory

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

  • Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SkiTemplar/ultron-control-center'

If you have feedback or need assistance with the MCP directory API, please join our Discord server