Helixir
Graph-based persistent memory for LLM agents.
Associative recall, causal reasoning, ontology classification — out of the box.
Quick Start · How It Works · Ontology · Graph Schema · MCP Tools · Configuration
______________________________________________________________________
什么是Helixir?
Helixir为AI代理提供支持 会话之间持续存在的内存当由Helixir驱动的代理开始新的对话时,它会回忆起过去的决定、偏好、目标和推理链——不是从一个平面日志中,而是从一个 相互关联事实图.
每条信息都被LLM提取为原子事实,按本体(8种类型)分类,链接到命名实体,并与向量嵌入一起存储以进行语义搜索。重复检测、矛盾跟踪和替换会自动发生。
| 平面内存(仅限键值/嵌入) | Helixir(图+向量+本体) |
|---|---|
| 检索相似的文本块 | 检索事实 以及它们之间的联系 |
| 无重复数据消除--永远增长 | 智能重复数据消除:添加/更新/删除/删除 |
| 没有推理线索 | 因果链:A因为B,A暗示C |
| 所有记忆都是平等的 | 本体论:技能vs偏好vs目标 |
| 单用户 | 跨用户:共享事实,冲突检测 |
______________________________________________________________________
快速开始
一个命令安装
curl -fsSL https://raw.githubusercontent.com/nikita-rulenko/Helixir/main/install.sh | bash脚本将:
- 检查先决条件(Rust、Docker)
- 克隆仓库并从源代码构建
- 通过Docker启动HelixDB
- 部署图形架构
- 为IDE生成MCP配置
或手动安装:
git clone https://github.com/nikita-rulenko/Helixir.git
cd helixir
make build # Build release binary
make setup # Start HelixDB + deploy schema
make config # Print MCP config to paste into your IDE先决条件
- 赛博拉斯 (免费等级,约3000 tok/s) - 开放人工智能 - 奥拉玛 (本地,无需密钥)
______________________________________________________________________
运作原理
Input: "I deployed the server to AWS and prefer using Terraform"
|
LLM Extraction
|
+---------------+---------------+
| |
Memory: "I deployed Memory: "I prefer
the server to AWS" using Terraform"
type: action type: preference
| |
+-----+-----+ +-----+-----+
| | | |
Entity: Entity: Entity: Concept:
"AWS" "server" "Terraform" Preference
|
Phase 1: Personal search (dedup check)
Phase 2: Cross-user search (shared facts)
|
Decision: ADD / UPDATE / SUPERSEDE / NOOP
|
Store in HelixDB (graph + vector)建筑
MCP Server (stdio) IDE (Cursor / Claude Desktop)
| |
HelixirClient MCP Protocol
|
ToolingManager ──── FastThinkManager
| |
+----+----+----+ petgraph (in-memory)
| | | | |
Extract Decision Entity commit to DB
| Engine Manager |
Search | Ontology |
Engine Reasoning Manager |
| Engine | |
+----+----+----+-----------+
|
HelixDB Client (HTTP)
|
HelixDB (graph + vector database)请参阅中的完整架构图 helixir/diagrams/.
______________________________________________________________________
本体论
每个记忆都被分类为 8种概念类型LLM提取器在摄入期间分配类型; search_by_concept 按类型检索记忆。
| 类型 | 它捕获了什么 | 示例 |
|---|---|---|
| 事实 | 客观知识,关于世界的陈述 | “Rust编译为本机代码” |
| 偏好 | 喜欢、不喜欢、品味、喜好 | “我更喜欢所有编辑的黑暗模式” |
| 技能 | 能力、胜任力、专业知识 | “我能写流利的Python” |
| 目标 | 计划、志向、目标 | “今年我想学日语” |
| 意见 | 主观信念、判断、观点 | “我认为远程工作更有成效” |
| 经验 | 过去的事件,经历的情况 | “我在柏林住了3年” |
| 成就 | 完成的里程碑,完成的目标 | “我从头开始构建了一个可用的编译器” |
| 行动 | 执行的具体任务、执行的操作 | “我昨天部署了CI/CD管道” |
本体层次结构
概念类型被组织成存储在HelixDB中的树:
Thing
├── Attribute
│ ├── Fact
│ ├── Preference
│ ├── Skill
│ ├── Goal
│ ├── Opinion
│ └── Trait
├── Event
│ ├── Action
│ ├── Experience
│ └── Achievement
├── Entity
│ ├── Person
│ ├── Organization
│ ├── Location
│ ├── Object
│ └── Technology
├── Relation
└── State层次结构允许遍历:搜索“属性”会返回所有事实、偏好、技能、目标和意见。实体类型(个人、组织等)用于提取命名实体。
______________________________________________________________________
图形架构
Helixir将所有内容存储为类型化图形: 15种节点类型 由...连接 33种边缘类型.
节点类型
| 节点 | 目的 | 关键字段 |
|---|---|---|
| 记忆 | 核心单元——一个原子事实 | 内容、memory_type、确定性、重要性、user_id |
| 用户 | 内存所有者 | user_id,名称 |
| 实体 | 从文本中提取的命名对象 | name、entity_type、别名 |
| 概念 | 本体节点(事实、技能、目标…) | 名称、级别、parent_id |
| 上下文 | 情境范围(工作、个人…) | 名称、上下文类型 |
| 会话 | 对话会话 | session_id,状态 |
| 代理 | 创建内存的AI代理 | agent_id、角色、功能 |
| 历史事件 | 内存的审核日志条目 | 操作、old_value、new_value、时间戳 |
| 内存块 | 长内存片段 | 内容、位置、token_count |
| 推理 | 推理节点 | 推理类型,置信度 |
| 约束 | 在上下文中应用的规则 | 规则,constraint_type,优先级 |
| 内存嵌入 | 矢量嵌入(搜索索引) | 内容,created_at |
| 实体嵌入 | 实体搜索的矢量嵌入 | 名称 |
| DocPage/DocChunk/CodeExample/ErrorCode | 文档管道(预留) | -- |
边缘类型(活动)
这24种边缘类型用于当前管道:
| 边缘 | 来自→ 致 | 这意味着什么 |
|---|---|---|
| HAS_MEMORY | 用户→ 内存 | 用户拥有此内存 |
| INSTANCE_OF | 记忆→ 概念 | 记忆属于这种本体类型 |
| BELONGS_tocategory | 记忆→ 概念 | 记忆属于这一类 |
| 提到 | 记忆→ 实体 | 内存提到了这个实体 |
| 提取的实体 | 记忆→ 实体 | 实体已从此内存中提取LLM |
| relations_TO | 实体→ 实体 | 两个实体是相关的(类型:works_at、uses等) |
| VALID_IN | 记忆→ 上下文 | 记忆适用于此上下文(工作、个人……) |
| 发生IN | 记忆→ 上下文 | 记忆是关于此上下文中的事件 |
| 代理创建 | 代理商→ 内存 | 此代理创建了内存 |
| HAS_历史 | 记忆→ 历史事件 | 审计追踪:谁更改了什么以及何时更改 |
| HAS_CHUNK | 记忆→ MemoryChunk | 内存被分割成块(长文本) |
| 下一个_CHUNK | 内存块→ MemoryChunk | 顺序块排序 |
| CHUNK_HAS_嵌入 | 内存块→ 内存嵌入 | 块向量索引 |
| 记忆关系 | 记忆→ 记忆 | 记忆之间的一般关系(类型化) |
| 暗示 | 记忆→ 内存 | A在逻辑上导致B |
| 因为 | 记忆→ 记忆 | A是B的原因 |
| 相矛盾 | 记忆→ 内存 | A与B冲突 |
| 取代 | 记忆→ 内存 | A替换过时的B |
| HAS_嵌入 | 记忆→ 内存嵌入 | 用于语义搜索的内存向量索引 |
| 实体_已嵌入 | 实体→ EntityEmbedding | 实体的向量索引 |
| HAS_SUBTYPE | 概念→ 概念 | 本体层次(属性→ 技能) |
| PAGE_TO_clock | DocPage→ DocChunk | 文档结构 |
| 组块嵌入 | DocChunk→ 块嵌入 | 文档向量索引 |
| 支撑 | 记忆→ 记忆 | A为B提供了证据 |
边缘类型(保留)
这9种边缘类型在HQL查询就绪的模式中定义,但尚未从Rust管道调用。它们是计划功能的基础设施:
| 边缘 | 来自→ 致 | 计划使用 |
|---|---|---|
| IN_SESSION | 用户→ 会话 | 会话跟踪 |
| CREATED_IN | 内存→ 会话 | 哪个会话创建了此内存 |
| IS_A | 概念→ 概念 | 动态本体扩展 |
| 概念_RELATED_TO | 概念→ 概念 | 跨概念链接 |
| PART_OF | 实体→ 实体 | 层次实体关系 |
| APPLIES_IN | 约束→ 上下文 | 约束范围 |
| CHUNG_MENTIONS_CONCEPT | DocChunk→ 概念 | 文件↔ 本体链接 |
| 概念_HAS_EXAMPLE | 概念→ CodeExample | 每个概念的代码示例 |
| ERROR_REFERENCES_CONCEPT | 错误代码→ 概念 | 错误目录 |
______________________________________________________________________
MCP工具
记忆
| 工具 | 它做什么 |
|---|---|
add_memory | 从文本中提取原子事实,消除重复,与实体和关系一起存储 |
search_memory | 具有时间模式的语义搜索: recent (4h), contextual (30d), deep (90d), full |
search_by_concept | 按本体类型筛选:技能、偏好、目标、事实、观点、经验、成就、行动 |
search_reasoning_chain | 遍历因果/逻辑连接:隐含、原因、矛盾、支持 |
get_memory_graph | 以节点和边的图形形式返回内存 |
update_memory | 修改现有内存内容 |
search_incomplete_thoughts | 查找自动保存的不完整FastThink会话 |
FastThink(工作记忆)
用于复杂推理的独立草稿。在你明确承诺之前,没有什么会污染长期记忆。
| 工具 | 它做什么 |
|---|---|
think_start | 开启新的思考环节 |
think_add | 添加推理步骤(类型:推理、假设、观察、问题) |
think_recall | 将长期记忆中的事实拉入会话(只读) |
think_conclude | 标记结论 |
think_commit | 将结论保存到长期记忆中 |
think_discard | 放弃会话而不保存 |
think_status | 检查会话状态:思考次数、深度、已用时间 |
流量: think_start → think_add (重复)→ think_recall (可选)→ think_conclude → think_commit
如果会话超时,部分想法将自动保存 [INCOMPLETE] 标记并可通过以下方式恢复 search_incomplete_thoughts.
______________________________________________________________________
整合
光标
添加 ~/.cursor/mcp.json:
{
"mcpServers": {
"helixir": {
"command": "/path/to/helixir-mcp",
"env": {
"HELIX_HOST": "localhost",
"HELIX_PORT": "6969",
"HELIX_LLM_PROVIDER": "cerebras",
"HELIX_LLM_MODEL": "gpt-oss-120b",
"HELIX_LLM_API_KEY": "YOUR_KEY",
"HELIX_EMBEDDING_PROVIDER": "openai",
"HELIX_EMBEDDING_MODEL": "nomic-embed-text-v1.5",
"HELIX_EMBEDDING_URL": "https://openrouter.ai/api/v1",
"HELIX_EMBEDDING_API_KEY": "YOUR_KEY"
}
}
}
}克劳德桌面版
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json
与上述JSON结构相同。
光标规则(推荐)
添加 光标设置>规则 所以代理实际上使用了它的内存:
# Core Memory Behavior
- At conversation start, call search_memory to recall relevant context
- After completing tasks, save key outcomes with add_memory
- Use search_by_concept for skill/preference/goal queries
- Use search_reasoning_chain for "why" questions
# FastThink for Complex Reasoning
- Before major decisions, use FastThink to structure your reasoning
- Flow: think_start -> think_add (repeat) -> think_recall -> think_conclude -> think_commit
# What to Save
- ALWAYS save: decisions, outcomes, architecture changes, error fixes, preferences
- NEVER save: grep results, lint output, file contents, temporary data______________________________________________________________________
配置
所有设置都作为环境变量传递。
必需
| 变量 | 描述 |
|---|---|
HELIX_HOST | HelixDB地址(默认值: localhost) |
HELIX_PORT | HelixDB端口(默认值: 6969) |
HELIX_LLM_API_KEY | LLM提供程序的API密钥 |
HELIX_EMBEDDING_API_KEY | 嵌入提供程序的API密钥 |
可选的
| 变量 | 默认值 | 描述 |
|---|---|---|
HELIX_LLM_PROVIDER | cerebras | cerebras, openai, ollama |
HELIX_LLM_MODEL | gpt-oss-120b | 型号名称 |
HELIX_LLM_BASE_URL | -- | 自定义端点(适用于Ollama) |
HELIX_EMBEDDING_PROVIDER | openai | openai, ollama |
HELIX_EMBEDDING_URL | https://openrouter.ai/api/v1 | 嵌入API URL |
HELIX_EMBEDDING_MODEL | nomic-embed-text-v1.5 | 嵌入模型 |
RUST_LOG | helixir=warn | 日志级别 |
提供商预设
Cerebras + OpenRouter (recommended — fast inference, cheap embeddings)
HELIX_LLM_PROVIDER=cerebras
HELIX_LLM_MODEL=gpt-oss-120b
HELIX_LLM_API_KEY=csk-xxx # https://cloud.cerebras.ai
HELIX_EMBEDDING_PROVIDER=openai
HELIX_EMBEDDING_URL=https://openrouter.ai/api/v1
HELIX_EMBEDDING_MODEL=nomic-embed-text-v1.5
HELIX_EMBEDDING_API_KEY=sk-or-xxx # https://openrouter.ai/keysFully local with Ollama (no API keys, fully private)
# Install Ollama: https://ollama.com
ollama pull llama3:8b
ollama pull nomic-embed-text
HELIX_LLM_PROVIDER=ollama
HELIX_LLM_MODEL=llama3:8b
HELIX_LLM_BASE_URL=http://localhost:11434
HELIX_EMBEDDING_PROVIDER=ollama
HELIX_EMBEDDING_URL=http://localhost:11434
HELIX_EMBEDDING_MODEL=nomic-embed-textOpenAI only (simple, one API key)
HELIX_LLM_PROVIDER=openai
HELIX_LLM_MODEL=gpt-4o-mini
HELIX_LLM_API_KEY=sk-xxx
HELIX_EMBEDDING_PROVIDER=openai
HELIX_EMBEDDING_MODEL=text-embedding-3-small
HELIX_EMBEDDING_API_KEY=sk-xxx______________________________________________________________________
发展
make build # Build release binary
make test # Run all tests
make check # cargo check + clippy
make run # Run MCP server locally (debug)
make deploy-schema # Deploy schema to running HelixDB
make docker-up # Start HelixDB container
make docker-down # Stop HelixDB container
make test-e2e-hive # Hive cross-user E2E (HelixDB + LLM + embeddings; set HELIX_* like MCP)蜂巢E2E: make test-e2e-hive 跑 hive_cross_user_collective_link_e2e (默认情况下忽略 cargo test).它为两个人增加了同样的事实 user_id 重视和主张集体 user_count ≥ 2 第一个记忆。LLM决策可能不稳定——必要时重试。
项目结构
helixir-rs/
helixir/
src/
bin/
helixir_mcp.rs # MCP server entry point
helixir_deploy.rs # Schema deployment CLI
core/ # Config, client, search modes
db/ # HelixDB client
llm/ # LLM providers, extractor, decision engine
mcp/ # MCP server, params, cognitive protocol
toolkit/
tooling_manager/ # Main pipeline (add, search, CRUD, events)
mind_toolbox/ # Search engine, entity, ontology, reasoning
fast_think/ # Working memory (petgraph-based)
schema/
schema.hx # Node/edge definitions (15 nodes, 33 edges)
queries.hx # HQL queries (100+)
diagrams/ # Architecture diagrams (D2 + PNG)
Dockerfile
docker-compose.yml______________________________________________________________________
许可证
麻省理工学院 ©2025-2026尼基塔·鲁连科
