ULTRON Control Center
这是什么?
你的 AI 助手每次关闭窗口时都会忘记一切:你们做过的决定、已经解决过的错误、你的项目是如何搭建的。第二天你又得重新解释一遍。
ULTRON 赋予它记忆。 在你工作时,它会将重要信息保存在你自己的电脑上;当你开启新对话时,它会自动将这些信息提醒给 AI。你什么都不用做:像往常一样工作,而你的助手会越来越了解你。由你决定保存什么(所有内容都需经过审批托盘),并且没有任何信息离开你的机器。
基于事件溯源的本地记忆(brain.db,SQLite),配有语义索引(Qdrant + E5 1024d),通过钩子在每次会话中重新注入——通过常驻守护进程实现亚秒级混合召回。此外:AI 路由器(多提供商)、技能/代理编排器和桌面控制台(Tauri 2 + React 19)。所有状态均为可检查的本地文件。规范:docs/memory-spec.md。
Related MCP server: MCP Memory Server
有和没有 ULTRON 的区别
仅有 Claude Code | 使用 ULTRON | |
开启会话时 | 从零开始 | 恢复项目状态:状态、任务、决策 |
每次提示的上下文 | 你写的内容 | + 自动检索的相关记忆(约 84% 的实际提示) |
已解决的错误 | 会重复出现 | 会被记住("这个我们试过了,因为 X 失败了") |
保存什么 | 无 | 你在托盘中批准的内容(每次更改都有审计) |
数据存储位置 | — | 在你的磁盘上,以你可以打开的文件形式存在 |
与其他记忆系统相比(如 Mem0 等云服务),区别在于设计而非营销:这里的记忆是 100% 本地(无需账户、无需订阅、无需将你的代码发送给第三方)、受管控(AI 提议,你批准;每次写入都会留下审计事件)、诚实(如果不知道,它会选择放弃而不是注入填充内容——已测量)且开放(SQLite + Markdown + 一个标准 MCP 服务器,任何助手都可以查询)。
日常使用教程(人类 + AI):
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 个手动标注的查询 oracle 进行测量——你的安装从空开始,召回率取决于你的语料库。可使用 ultron-memory eval --golden 和仓库中的脚本重现。
指标 | 数值 |
Recall@8(手动标注的 oracle) | 0.82 |
MRR(正确记忆排在前面) | 0.95 |
热守护进程编排 | 约 0.5 秒(vs 冷进程约 3.5 秒) |
空闲内存(应用 / 守护进程) | 36 MB / 约 40 MB(加载模型时为 1.5-3.5 GB) |
带记忆服务的实际提示 | 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仅桌面应用(无技能/钩子/记忆 sidecar):
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完整指南(从发布版一键引导、标志、故障排除):
INSTALL.md。
Qdrant 是可选的(没有它,召回会降级为仅稀疏召回);请参阅 docs/INSTALL-ADVANCED.md 的 Qdrant 部分。
每台机器的路径记录在
config/paths.example.toml 中。
特性
受管控的记忆 —
brain.db(SQLite)作为唯一真实来源;所有更改都通过一个附加审计事件的单一服务进行。混合召回 — 密集(E5 1024d / Qdrant)+ 稀疏(FTS5/BM25)通过 Reciprocal Rank Fusion 融合;没有 Qdrant 时降级为仅稀疏召回。
候选收件箱 — 自动捕获提出建议,人类批准;从不自动写入活跃记忆。
写入路径中的编辑 + 去重 — 在持久化或嵌入之前,排除秘密/PII,通过
content_hash排除重复项。AI 路由器 — 主提供商 -> 按区域回退链、密钥检测和使用/节省遥测;Rust 中的直接路由(无 sidecar LiteLLM)。
基于规则的编排器 — 将提示映射到意图 -> 工作流 -> 代理 -> 记忆;仅为模糊队列保留大型模型。
语气/个性 — 在编排过程中确定性检测聊天语气(词汇信号 + 显式请求);语气在 Library -> Tones 中编辑。实际配置(
~/.ultron/personality.json)是本地且被 gitignore 的;仓库仅发布编译后的种子(orchestrator/personality.rs)。语气仅影响对话:绝不涉及提交、文档或工件。
这是什么
ULTRON 控制中心不会取代 Claude Code:它是对其的增强。它提供持久化且受管控的记忆,根据成本和可用性将请求路由到多个 LLM 提供商,并自动检测适合某个提示的专家技能/代理。所有状态都存在于你可以检查、版本控制和手动编辑的本地文件(SQLite + JSON + markdown)中。
支柱 | 功能 |
受管控的记忆 |
|
混合召回 | 使用 Reciprocal Rank Fusion (RRF) 融合两个来源:密集(Qdrant 中的 E5 1024d 向量)+ 稀疏(基于 |
AI 路由器 | 提供商目录 + 区域,带有主提供商 -> 回退链、密钥检测、使用/节省遥测。无 sidecar LiteLLM:Rust 中的直接路由。 |
编排器 | 将提示(可能模糊)映射到意图 -> 工作流 -> 要委派的代理 -> 相关记忆 -> 约束,通过规则实现(不使用大型模型来解决规则/触发器可以处理的问题)。 |
后端架构(真实)
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)索引 ACTIVE 项目。它是一个派生索引:可以随时使用reindex_all重建,而brain.db仍然是真实来源。每次批准/编辑/恢复写入后,
sync_index使 Qdrant 与 SoT 保持同步(尽力而为;任何偏差都可以通过reconcile检测/修复)。旧的
ultron_sessions集合(384d BGE)已退役;这里的 Qdrant 始终是一个索引,而不是真实来源。
使用 RRF 的密集 + 稀疏混合召回
单一
recall命令(commands/memory/recall_unified.rs)使用 Reciprocal Rank Fusion(RRF_K = 60)进行融合:密集:
ultron_memory(Qdrant)中的 E5 向量。稀疏:基于
memory_items的 FTS5/BM25(仅status=active)。
在令牌预算(
TOKEN_BUDGET = 1500)下返回一个紧凑的摘要上下文包,并附带为什么选择此记忆的痕迹(按来源的排名、分数、丢弃项),供检索检查器使用。唯一的召回路径是带有 RRF 的统一
recall命令;来源是 Qdrant(密集)+ SQLite/FTS5(稀疏)。不使用外部记忆服务。
通过 Stop hook 自动捕获
在
Stop中,钩子将会话记录传递给memory/capture.rs::capture_session。它:请求一个 LLM(通过
ai_router::route,区域chat)提取少量持久事实/决策;将每个事实转换为一个
MemoryCandidate(经过脱敏 + 去重),并将其放入受管理收件箱等待人工批准——绝不会自动提升为活动状态。
故障安全:如果路由器没有可用的提供者,则降级为廉价的本地启发式方法,以确保 Stop 钩子永不失败。
收件箱通过
commands/memory/inbox.rs进行管理(memory_inbox_list、approve_candidate、reject_candidate)。
AI Router:区域、提供者、回退与遥测
后端位于模块
ai_router/(mod.rs + exec.rs + providers/ + seed.rs + store.rs)中。状态存储在~/.ultron/cockpit/ai-router/下的三个 JSON 文件中:providers.json(目录)、zones.json(具有primary+fallbacks的区域)、metrics.json(计数器 + 节省额)。route(zone, prompt)遍历主提供者 -> 回退链,跳过没有可用 API 密钥的提供者,在遥测中记录延迟/令牌/节省,并返回Result<"String", "String">(错误原样返回,绝不 panic,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 -> 要委派的代理 -> 记忆 -> 约束进行映射。意图分类是基于规则的(西班牙语/英语双语);大型模型保留给歧义队列。复用(而非重复):代理目录(
memory/catalog.rs)、统一召回和内置工作流(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:插件更新检查
Library 中的 Updates 子选项卡(
src/components/library/PluginUpdates.tsx),它使用后端命令plugin_check_updates_bulk(force)和plugin_changelog_summary(coordinate, installed_sha?)。将每个插件的已安装 SHA 与市场最新 SHA 进行比较,标记哪些插件有可用更新,并显示最新的提交消息 / 变更日志摘要。
技术栈
层 | 技术 |
前端(Control Center) | Tauri 2 + React 19 + TypeScript ( |
后端(Control Center) | 稳定的 Rust( |
记忆(SoT) | SQLite(FTS5),位于 |
稠密索引 | 原生 Qdrant( |
Embeddings | E5(稠密)通过 |
Sidecar CLI 钩子 |
|
Scripting OS | PowerShell 5.1+ / 位于 |
LLM 运行时 | Claude Code(主要);Codex CLI 可选。Gemini CLI 已于 2026-06-19 退役(Google 终止了免费层 OAuth);Gemini 仅保留为 AI Router 的云回退 |
Sidecar 二进制文件在 control-center/src-tauri/Cargo.toml 中声明:ultron-memory(需要 qdrant feature)。
构建
# 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)在写入时同步;统一稠密+稀疏召回与 RRF 可操作(在没有 Qdrant 时降级为仅稀疏)。写入路径带有秘密脱敏和按 content_hash 去重,已接线并测试。自动捕获:Stop 钩子 ->
capture_session-> 候选者进入受管收件箱;通过收件箱命令进行人工批准/拒绝。AI Router:真正的路由,带主/回退链、密钥检测和使用/节省遥测;没有 LiteLLM sidecar。
语气(Tonos):在 orchestrate 中进行确定性检测(检测器的 JS/Rust 对等性通过 16/16 门验证);Library -> Tones 中的可视化编辑器和检测游乐场。本地的
personality.json(gitignored)包含可发布的编译种子;硬性限制:语气仅适用于聊天,绝不适用于工件。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):它展示候选收件箱(批准/拒绝/编辑)和brain.db的健康状态;记忆内核仍然仅限后端,但其人在回路治理从此选项卡进行(除命令外)。
许可证
MIT — 参见 LICENSE。版权 (c) 2026 Rodrigo Fernandez。
This server cannot be installed
Maintenance
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-qualityBmaintenanceEnterprise-grade MCP server for persistent, intelligent memory management across Claude Code sessions.
- Alicense-qualityDmaintenanceAn MCP server that gives Claude persistent memory by storing conversation context, entities, and enabling semantic search across sessions.131MIT
- Alicense-qualityDmaintenanceMCP server that provides persistent memory and contextual awareness to language models, enabling project onboarding, recall of architectural rules, and code consistency across sessions.32MIT
- Alicense-qualityDmaintenanceMCP server providing Claude with persistent, local memory for tracking architectural decisions, dead ends, and project context across conversations.MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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