Hanzo Brain: локальный граф знаний для агентов
Один файл SQLite, который агент читает из любой среды выполнения. Ноль обращений к LLM на операциях графа, FTS5 плюс векторы плюс извлечение типизированных рёбер в момент записи.

На этой странице
Ваш агент умный, но забывчивый. Мы это исправили. Сегодня мы выпускаем Hanzo Brain — один бинарник, один файл SQLite по пути ~/.hanzo/brain/brain.db и ту же алгоритмическую поверхность на TypeScript, Python, Rust, Go и C++. Положите файл markdown в ~/.hanzo/workspace/. Мозг его поглощает, извлекает типизированные рёбра и индексирует содержимое для гибридного поиска. LLM не вызывается. Граф накапливается.
Это слой памяти для каждой среды выполнения Hanzo — бота, сервера MCP, Hanzo Node и всего, что вы встраиваете в свой хост.
Что такое мозг
Мозг — это три вещи в одном процессе:
- Страницы — содержимое с адресом-slug, записанное откуда угодно, наблюдаемое на диске.
- Рёбра — типизированные связи (
mentions,attended,works_at,invested_in,founded,advises), извлекаемые при каждой записи регулярным выражением и выводом роли. Ноль LLM. - Факты — кортежи
(subject, predicate, object, ts, confidence), доступные для запроса в реальном времени между сессиями.
Страницы получают индекс FTS5. Рёбра получают первичный ключ по (source, target, type). Факты получают id и метку времени. Схема достаточно коротка, чтобы держать её в голове:
CREATE TABLE pages (slug TEXT PRIMARY KEY, content TEXT, frontmatter TEXT, updated_at TEXT);
CREATE VIRTUAL TABLE pages_fts USING fts5(content, content='pages', content_rowid='rowid');
CREATE TABLE edges (source TEXT, target TEXT, type TEXT, evidence TEXT, PRIMARY KEY (source, target, type));
CREATE TABLE facts (id TEXT PRIMARY KEY, subject TEXT, predicate TEXT, object TEXT, source TEXT, ts TEXT, confidence REAL);
Это весь контракт. Каждый бэкенд его соблюдает. Каждая среда выполнения пишет побайтово одинаковый файл.
Почему извлечение без LLM важно
Экстракторы на LLM сжигают токены, задержку и деньги на каждой записи. Они дают дрейф между прогонами. Они делают граф недетерминированным.
Мозг извлекает рёбра регулярным выражением и выводом роли в момент записи. Это быстро, это бесплатно, и при том же входе рёбра каждый раз одни и те же. Когда вы поглощаете «Алиса основала Acme. Она вложилась в Foobar», вы получаете:
people/alice -[founded]-> companies/acme
people/alice -[invested_in]-> companies/foobar
Каждый раз. На каждой среде выполнения. Без кругового похода.
Если хотите обогащение LLM сверху — снятие неоднозначности сущностей, проверку утверждений, пересказ — вызывайте свою модель поверх детерминированного графа. Граф — это субстрат. LLM — необязательная отделка.
Один файл. Каждая среда выполнения.
Один и тот же brain.db открывается в TypeScript, Python, Rust, Go и C++. Без перевода формата, без миграции. Если вы пишете из hanzobot/go на сервере и читаете из @hanzo/bot-memory в воркере браузера, вы читаете файл, который записал сервер.
| Возможность | TS | Python | Rust | Go | C++ |
|---|---|---|---|---|---|
| Интерфейс BrainStore | да | да | да | да | да |
| SQLite (по умолчанию) | да | да | да | да | да |
| Гибридный поиск FTS5 | да | да | trait | да | да |
| Экстрактор связей графа | да | да | да | да | да |
| Загрузчик рецептов | да | да | да | да | да |
| Сменные бэкенды | да | да | да | да | да |
Суммы тестов по средам на запуске: 121 TS + 53 Python + 58 Go + 38 Rust (mcp) + 38 Rust (node) + 98 C++ = 406 тестов, все зелёные. Каждая среда несёт то же слияние, тот же rerank (MMR), тот же RRF, ту же нормализацию slug, тот же экстрактор рёбер.
Запросы через MCP
Мозг открыт через MCP как три инструмента:
brain.recall <entity>— каждый факт, когда-либо утверждённый о сущности, с метками времени.brain.search <query>— гибридный FTS плюс вектор, слитые через RRF, необязательный rerank MMR.brain.ingest <slug> <content>— пишет страницу, сам извлекает рёбра, обновляет FTS.
Каждый агент, который говорит с Hanzo Node, с MCP-сервером Hanzo или с ботом на hanzobot/*, получает эти инструменты бесплатно. Без sidecar, без лишнего сервиса, без отдельной базы, которую надо вести.
Для пути одного бинарника на Go:
go install github.com/hanzobot/go/cmd/hanzo-bot@latest
hanzo-bot brain init # opens ~/.hanzo/brain/brain.db
hanzo-bot brain ingest people/alice.md
hanzo-bot brain recall people/alice
hanzo-bot brain search "founded"
Для Python:
from hanzo_memory.graph_links import extract_edges
edges = extract_edges(slug="people/alice", content="Alice founded Acme.")
Для Rust, встроенного в hanzo-mcp:
use hanzo_mcp::brain::{extract_edges, slugify};
let edges = extract_edges("people/alice", "Alice is CEO of Acme.", Some("person"));
Сменное хранение, тот же контракт
SQLite — выбор по умолчанию. Его хватает на первые сто тысяч страниц на ноутбуке. Когда этого мало, регистрируете другой бэкенд, не меняя код приложения:
| Бэкенд | Когда |
|---|---|
sqlite | в одиночку, < 100K страниц |
qdrant | векторный ANN на масштабе |
meilisearch | FTS по ключевым словам на масштабе |
zapdb | каноническое многоязычное нативное хранилище |
replicate | WAL SQLite, потоком в S3 для резервной копии |
vfs | блочная ФС потоковой передачи с S3, без предела размера |
postgres | многоарендные командные развёртывания |
Для распределённой семантики в форме SQLite на нескольких машинах мы используем транспорт ZAP, консенсус Quasar и zapdb. Мозг остаётся тем же. Контракт «байты внутрь, байты наружу» держится.
Накопительная память
Смысл мозга не в базе данных. Смысл в смене допущения. Ваш агент не начинает каждую сессию с пустого листа. Markdown, который вы написали год назад, уже граф. Вчерашние разговоры породили рёбра и факты, которые сегодняшняя сессия запрашивает, не платя за это токенами. Два агента на двух машинах могут делить brain.db через replicate и сойтись к одному виду.
Вот что мы называем накопительной памятью. Граф растёт. Модель дешевеет. Пользователь видит помощника, который помнит.
Заберите мозг
- Канон TypeScript (идёт с ботом):
npm install -g @hanzo/bot && hanzo-bot serve - Python:
pip install hanzo-memory - Один бинарник Go:
go install github.com/hanzobot/go/cmd/hanzo-bot@latest - Rust: член рабочего пространства
hanzoai/nodeиhanzoai/mcp - C++: только заголовки в
hanzobot/cpp/include/hanzo/brain/
Исходники: github.com/hanzoai/brain. Лицензия: MIT.
Один файл. Пять сред выполнения. Ноль вызовов LLM на операциях графа. Сначала локально, по замыслу.
Читать далее

Hanzo публикует формальные доказательства для инфраструктуры ИИ-агентов
Машинно проверенные доказательства на Lean 4 для безопасности агентов, протокола MCP, консенсуса PoAI и работы платформы

Полный стек ИИ-агента: модели, вычисления и инструменты на одной платформе
Hanzo AI представляет первую платформу, которая собирает более 100 моделей ИИ, облачные вычисления, доступ к GPU и более 260 инструментов MCP на одном аккаунте разработчика.

Запускайте ИИ-агентов за $5/Month: встречайте Hanzo Bot
Hanzo Bot выходит с самым дешёвым хостингом ИИ-агентов в отрасли — от $5/mo с бесплатным кредитом, встроенным доступом к 100+ моделям и GPU H100 по $3.48/hr.