Русский
memcli — одна команда для локальной памяти агента
Одна команда запускает локальный сервер trip2g, выпускает административный API-ключ через HAT и стартует двусторонний sidecar trip2g-sync --watch. Агент читает и пишет обычные Markdown-файлы, сервер индексирует их в реальном времени. S3, почта и dev-режим не нужны.
Запуск
Собранный бандл поставляется в репозитории. Шаг сборки не требуется:
node cli/memcli/dist/memcli.js up --folder ./memory-vault
Что делает up:
- Создаёт
./memory-vault/.trip2g-memory/(режим 700, директория состояния) и генерирует случайныйJWT_SECRET— при повторном запуске значение переиспользуется, поэтомуupидемпотентен. - Запускает Docker-контейнер
trip2g-memoryсSTORAGE_BACKEND=local— ассеты хранятся на диске, S3 и MinIO не нужны. - Выпускает административный API-ключ через HAT (Hot Auth Token) — без адреса электронной почты и без флага
DEV=true. - Записывает ключ в
.obsidian/plugins/trip2g/data.jsonвнутри хранилища. - Запускает
trip2g-sync --watchкак фоновый процесс, синхронизирующий хранилище и сервер в обоих направлениях. - Печатает:
memory live — web: http://localhost:24081 read/write .md in ./memory-vault
После запуска агент работает с папкой хранилища через обычные инструменты Write/Read/Grep. Специальный API памяти не нужен.
Предварительный просмотр без побочных эффектов:
node cli/memcli/dist/memcli.js up --folder ./memory-vault --dry-run
Сборка из исходников (только при изменении кода CLI):
cd cli/memcli && npm install && npm run codegen && npm run build
codegen читает GraphQL-схему из репозитория — запущенный сервер не нужен. Результат: обновлённый dist/memcli.js.
Субкоманды
| Команда | Действие |
|---|---|
up |
Запустить сервер + sync-наблюдатель, выпустить API-ключ (по умолчанию) |
down |
Остановить контейнер и наблюдатель |
status |
Показать статус контейнера и наблюдателя |
logs |
Снимок логов контейнера (для диагностики) |
key |
Ротация API-ключа — выпускает новый, отключает предыдущий |
daily "<текст>" |
Добавить мысль в дневную заметку |
log <файл> "<текст>" |
Добавить мысль в раздел сегодняшнего дня именованной заметки |
hub <url> |
Подключить дополнительный удалённый hub федерации к хранилищу |
mcp |
Запустить как MCP stdio-сервер (также определяется автоматически при пайпе stdin) |
Флаги для up:
| Флаг | По умолчанию | Описание |
|---|---|---|
--folder <путь> |
./memory-vault |
Директория хранилища |
--port <n> |
24081 |
Публичный порт |
--email <адрес> |
memory@local |
Email владельца, встраивается в HAT JWT |
--image <ref> |
ghcr.io/trip2g/trip2g:latest |
Docker-образ |
--public-url <url> |
http://localhost:<port> |
Переопределить PUBLIC_URL |
--no-hub |
— | Не записывать hub-заметку для федерации |
--hub-url <url> |
https://trip2g.com/_system/mcp |
Указать другой MCP-эндпоинт для хаба |
--dry-run |
— | Вывести команды без выполнения |
Флаги для daily / log:
| Флаг | По умолчанию | Описание |
|---|---|---|
--folder <путь> |
./memory-vault |
Директория хранилища |
--context <n> |
15 |
Строк заметки, которые выводятся после записи |
Фиксация мыслей: daily vs log
Эти две команды — основной интерфейс для записи мыслей и наблюдений агента в ходе сессии.
memcli daily "<текст>"
Добавляет текст в дневную заметку дня: daily/<ГГГГ-ММ-ДД>.md — общее рабочее пространство для мыслей текущего дня.
- Первая запись дня добавляется без временной метки.
- Последующие записи того же дня получают префикс
ЧЧ:ММк первой строке.
Используйте daily для всего, что нужно зафиксировать прямо сейчас без привязки к конкретной теме: случайное наблюдение, решение, напоминание.
node cli/memcli/dist/memcli.js daily "деплой только в нерабочие часы — прод на одной маленькой VM"
memcli log <файл> "<текст>"
Добавляет текст под заголовком секции ### [[<ГГГГ-ММ-ДД>]] в файл <хранилище>/<файл>.md — append-only журнал эволюции одной идеи или темы со временем.
- Первая запись под новым заголовком дня добавляется без временной метки.
- Последующие записи того же дня получают префикс
ЧЧ:ММ. - Перезапись запрещена — только добавление. История того, когда появилась каждая мысль, сохраняется.
node cli/memcli/dist/memcli.js log work/deploy-rules "подтверждено: деплой в пиковые часы не допускается"
На следующий день новая запись появится под заголовком ### [[2026-06-23]] в том же файле, сохраняя хронологическую последовательность.
Антипаттерн: использовать log для перезаписи или обобщения заметки — это уничтожает информацию о том, когда изменилась каждая мысль. Записи должны быть атомарными. Для изменения структурированного содержимого редактируйте заметку напрямую через Write/Edit.
Обе команды пишут непосредственно в папку хранилища — запущенный trip2g-sync --watch подхватывает изменение примерно за 500 мс и отправляет его на сервер.
Хаб trip2g.com
При первом запуске up записывает в хранилище файл hub.md со следующим frontmatter:
mcp_federation_kb_url: https://trip2g.com/_system/mcp
Это подключает локальный MCP-эндпоинт к опубликованной базе знаний trip2g.com через федерацию MCP. Любой агент (или MCP-клиент), подключившийся к http://localhost:24081/_system/mcp, может обращаться к документации trip2g.com — включая документацию самой системы памяти — не выходя за пределы локальной памяти. Это федерация, а не копия.
hub.md — обычная Markdown-заметка. Удаление файла убирает федеративную связь при следующем цикле синхронизации.
--no-hub— не создавать хаб вообще.--hub-url <url>— федерировать к другой базе знаний.
node cli/memcli/dist/memcli.js up --folder ./memory-vault --hub-url https://example.com/_system/mcp
Подключить собственный удалённый хаб
Вы можете добавить федерацию с вашим собственным экземпляром trip2g (или любым другим) — наряду с хабом trip2g.com по умолчанию. Несколько хабов сосуществуют: каждый получает собственный файл заметки.
node cli/memcli/dist/memcli.js hub https://demo.lahab.cc/_system/mcp
Команда записывает hub-demo.lahab.cc.md в хранилище с полями free: true (обязательно для обнаружения заметки при сканировании федерации) и mcp_federation_kb_url: https://demo.lahab.cc/_system/mcp. После того как запущенный демон --watch отправит заметку на сервер, инструмент federated_search будет также обращаться к вашему хабу.
Для краткого идентификатора используйте --id:
node cli/memcli/dist/memcli.js hub https://demo.lahab.cc/_system/mcp --id my-team
Для предпросмотра без записи — --dry-run:
node cli/memcli/dist/memcli.js hub https://demo.lahab.cc/_system/mcp --folder ./memory-vault --dry-run
MCP-инструмент memory_bind_hub делает то же самое в рамках MCP-сессии.
Замечания:
- Поле
free: trueдобавляется автоматически — не удаляйте его, иначе сканер федерации проигнорирует заметку. - Повторный запуск
hubс тем же URL перезаписывает заметку (обновляя id или содержимое). - Файл по умолчанию
hub.md(trip2g.com) и дополнительныеhub-<host>.mdсосуществуют независимо.
Режим MCP
Запустите memcli с пайпом stdin или передайте субкоманду mcp — и memcli становится MCP stdio-сервером: JSON-RPC 2.0, реализован вручную, без внешних зависимостей.
# Явный запуск
node cli/memcli/dist/memcli.js mcp
# Автоопределение при пайпе stdin (например, от MCP-клиента)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node cli/memcli/dist/memcli.js
MCP-сервер предоставляет все команды как инструменты:
| Инструмент | Действие |
|---|---|
memory_up |
Запустить сервер (идемпотентно) |
memory_down |
Остановить сервер и наблюдатель |
memory_status |
Проверить статус |
memory_logs |
Снимок логов контейнера |
memory_key |
Ротация API-ключа |
memory_daily |
Добавить запись в дневную заметку |
memory_log |
Добавить запись в журнал именованной заметки |
Это позволяет агенту управлять собственной инфраструктурой памяти через вызовы MCP-инструментов — удобно, когда агент подключён к MCP-эндпоинту локального сервера и хочет управлять им без отдельной CLI-сессии.
Просмотр в браузере
URL, выведенный командой up (например, http://localhost:24081), открывает хранилище памяти как навигируемый сайт. Удобно для просмотра написанного агентом.
Добавьте ?#!live_follow=1 к URL любой страницы — браузер перейдёт в cinema-режим и будет автоматически переходить к той заметке, которую агент редактирует в данный момент:
http://localhost:24081/?#!live_follow=1
Связанные страницы
- ru/user/agent-memory — полная настройка памяти для агента: подключение MCP, процесс поиска → expand → note_html, экономия токенов
- en/user/local-quickstart — справочник по sync CLI, флаг
--watch, фильтры include/exclude