Skip to main content
Glama
SkiTemplar
by SkiTemplar

这是什么?

你的 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)中。

支柱

功能

受管控的记忆

~/.ultron/brain.db(SQLite)是唯一真实来源。所有写入都通过一个同时记录审计事件的单一服务进行。自动捕获从不直接写入活跃记忆:它们向收件箱提出候选,由人类批准或拒绝。

混合召回

使用 Reciprocal Rank Fusion (RRF) 融合两个来源:密集(Qdrant 中的 E5 1024d 向量)+ 稀疏(基于 brain.db 的 FTS5/BM25)。如果 Qdrant/E5 不可用,则降级为仅稀疏召回。

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。它:

    1. 请求一个 LLM(通过 ai_router::route,区域 chat)提取少量持久事实/决策;

    2. 将每个事实转换为一个 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/src/)

后端(Control Center)

稳定的 Rust(control-center/src-tauri/src/)

记忆(SoT)

SQLite(FTS5),位于 ~/.ultron/brain.db

稠密索引

原生 Qdrant(~/.ultron/qdrant-native/),集合 ultron_memory,E5 1024d

Embeddings

E5(稠密)通过 crate::qdrant::embed_e5,位于 ultron-memory 内

Sidecar CLI 钩子

ultron-memory(规范逻辑,供 Node 钩子复用)

Scripting OS

PowerShell 5.1+ / 位于 cockpit/ 的脚本

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。

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    B
    maintenance
    Enterprise-grade MCP server for persistent, intelligent memory management across Claude Code sessions.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives Claude persistent memory by storing conversation context, entities, and enabling semantic search across sessions.
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A persistent memory MCP server for Claude Code that enables long-term recall across sessions via hybrid search, code intelligence, and tools for reading/writing memory.
    9 npm
    5
    MIT