Agent Second Brain

Agent Second Brain

Всегда включённый второй мозг, с которым разговаривают.
Голосовое в Telegram → структурированное, связанное знание в вашем Obsidian-хранилище.
Работает 24/7 на VPS за $5 и вашей обычной подписке Claude — ноль счетов за API-токены.

🇬🇧 EnglishПолная пошаговая инструкцияДвижок autograph

License: MIT Python 3.12+ Stars Forks

--- > [!IMPORTANT] > **С 15 июня 2026 headless-запуски `claude -p` оплачиваются отдельным Agent SDK-кредитом.** v3.0 полностью обходит это: бот ведёт одну долгоживущую *интерактивную* сессию Claude Code — ровно ту же, что вы запускаете в терминале, ровно так, как подписка и задумана. Никаких headless-вызовов в рабочем контуре (это проверяет CI-гард), никакого пер-запросного биллинга, никаких сюрпризов в счёте. ## С чего начать | Вы хотите… | Вам сюда | |---|---| | Понять, что это вообще такое | [Зачем я это построил](#зачем-я-это-построил) | | Поставить на чистый VPS одной командой | [Быстрый старт](#быстрый-старт) | | Обновить существующую v1 / v2 | [Обновление](#обновление-с-v1--v2) | | Подробную инструкцию для новичков, шаг за шагом | [docs/setup-guide.ru.md](docs/setup-guide.ru.md) | | Только движок памяти для своего vault | [autograph →](https://github.com/smixs/autograph) | | Разобраться, как работает трюк с постоянной сессией | [Как это устроено](#как-это-устроено) | ## Зачем я это построил Все системы продуктивности умирают одинаково. Вы настраиваете её в воскресенье, пользуетесь две недели — и тихо бросаете, потому что обслуживание системы требует больше сил, чем сама работа. Голосовые, которые вы никогда не переслушаете. Идеи, тонущие в истории чатов. Хранилище markdown-файлов, в котором через месяц не ориентируетесь даже вы. Лекарство — не ещё одно приложение. Лекарство — убрать этап «разложить по полочкам» целиком: **вы говорите, агент раскладывает**. И система обязана быть *вашей* — я не собирался прогонять свои заметки, клиентов и цели через чей-то SaaS. Здесь всё крутится на вашем сервере, ложится в ваш Obsidian-vault обычным markdown, а кода достаточно мало, чтобы прочитать его перед тем, как доверить ему свою жизнь. ## Как выглядит разговор ``` Вы (голосовое, 40 секунд, на ходу): «Созвон с Алишером — они согласны на пилот, но просят сдвинуть старт на июль. Надо обновить КП и напомнить мне в пятницу отправить договор.» Бот: 💾 Сохранил: CRM-карточка Алишера обновлена (пилот, старт июль), связал с [[proekt-pilot]]. Напоминание поставлено: пятница 10:00 — отправить договор. — пятница, 10:00 — Бот: 🔔 Напоминание: отправить договор Алишеру. Контекст: пилот, старт июль, КП обновлено во вторник. ``` ``` Вы: что я писал про маркетинговый проект на прошлой неделе? Бот: *находит записи, цитирует, показывает связанные карточки* Вы: преврати вторую идею в проектную заметку с next steps Бот: *создаёт заметку, связывает с клиентом и целями недели* ``` ``` Вы: *пересылаете пост, кидаете фото доски, отправляете PDF* Бот: *читает их сам — раскладывает суть по графу и отвечает, что сохранил* ``` Никаких команд, никаких категорий, никакого приложения. Telegram — весь интерфейс. ## Философия **Голос — прежде всего.** Захват мысли должен быть дешевле забывания, иначе система умрёт. Голосовое стоит пять секунд. **Vault — источник истины.** Всё лежит обычным markdown в *вашем* Obsidian-хранилище на *вашем* сервере. Удалите агента завтра — всё останется и будет читаться вечно. Никакого lock-in, кнопка «экспорт» не нужна. **Память, которая забывает — как ваша.** Хранение — это не память. Знания угасают по кривой Эббингауза, проходят пять уровней и всплывают, когда нужны — граф остаётся острым, а не превращается в свалку. **Интерактивная сессия, по правилам.** Одна постоянная сессия Claude Code в tmux, управляемая так же, как ей управляет человек. Никакого headless `claude -p` в рабочем контуре — CI-гард валит сборку при любой попытке. **Достаточно маленький, чтобы прочитать.** Один Python-процесс, горстка модулей, 220+ тестов. Систему, которая читает ваши личные заметки, можно проаудировать за вечер. ## Что умеет
🎙 Тотальный захватГолос (Deepgram, секунды), текст, фото, документы, видео, пересланные посты, целые альбомы — агент сам читает файлы и раскладывает суть. Ничто из отправленного не пропадает молча.
🧠 Память-графНа движке autograph: типизированные карточки, wiki-связи, угасание по Эббингаузу через пять уровней, автоматические MOC-индексы, оценка здоровья, починка ссылок, дедупликация. Самый дотошный open-source слой памяти для вашего vault.
⏰ Рутины без таск-менеджера«Напомни в пятницу в 15:00», «каждый будний день в 18:30 проверяй папку inbox» — агент сам заводит себе cron-задания из обычной речи. Разовые, интервалы, полные cron-выражения.
🌙 Ночная обработкаВ 21:00 по вашему времени он классифицирует записи дня, пишет карточки, обновляет цели и долгую память, перестраивает граф — и присылает дневной отчёт.
🔌 Claude Code, но для PKMПод капотом это и ЕСТЬ Claude Code — подключайте любой MCP-сервер через mcp-config.json, кладите любой скилл в vault/.claude/skills/ — и второй мозг получает новые способности. Как Claude Code через Telegram — только для знаний, а не для кода.
🩺 СамолечениеWatchdog поднимает зависшую сессию, ежедневный doctor шлёт 🟢/🔴 отчёт-канарейку, сломанные задания отключают сами себя и сообщают вам. Оно просто продолжает работать.
## Движок памяти: autograph То, что делает эту систему *мозгом*, а не логгером — [**autograph**](https://github.com/smixs/autograph): типизированный слой памяти для always-on агентов. Здесь он поставляется как скилл, но работает и отдельно, на любом Obsidian-vault. - **Типизированный граф** — у каждой карточки тип (заметка, контакт, проект, CRM), description для поиска, теги, статус; всем правит один `schema.json` - **Угасание по Эббингаузу** — сила памяти `1 + ln(число_обращений)`: каждое касание замедляет забывание; контакты живут ~100 дней, дневные записи ~25 - **Пять уровней** — core → active → warm → cold → archive; касание поднимает карточку обратно - **Случайные воспоминания** — иногда архивная карточка всплывает рядом с текущей задачей. Иногда это шум. Иногда — лучшая идея, которую вы забыли. - **Самообслуживание** — поиск сирот, починка битых ссылок, дедуп в `.trash/`, генерация MOC, здоровье графа по 100-балльной шкале. Вы больше не делаете уборку в заметках. | Уровень | Что происходит | |---------|----------------| | **Core** | Всегда в контексте: текущие проекты, активные клиенты, ключевые цели | | **Active** | Проверяется регулярно: свежие идеи, живые треды | | **Warm** | Находится при поиске | | **Cold** | Всплывает только в глубоком поиске | | **Archive** | Почти забыто — но иногда случайно вспоминается для творческих коллизий | ## Как это устроено ``` Telegram ──▶ бот (aiogram) ──▶ постоянная сессия Claude Code (tmux) │ │ │ ├──▶ Obsidian vault (обычный markdown) │ └──▶ autograph: граф · угасание · MOC ├──▶ cron-тикер ──▶ вторая изолированная сессия (напоминания не блокируют чат) └──▶ watchdog + ежедневный doctor (самолечение, 🟢/🔴 отчёт) ``` Бот не запускает `claude` на каждое сообщение. Он держит **одну долгоживущую интерактивную сессию Claude Code** в tmux-панели и «печатает» в неё промпты — поэтому агент 24/7 живёт на фиксированной подписке Pro/Max, а не на счётчике API-токенов. Плановые задания исполняются во второй, изолированной сессии — сработавшее напоминание никогда не перебивает ваш разговор. Межпроцессный лок сериализует доступ; watchdog перезапускает всё, что зависло. Приватность — явная: **аудио голосовых** уходит в Deepgram на расшифровку, **текст** уходит в Anthropic через вашу подписку, **всё остальное остаётся на вашем сервере**. Vault не покидает машину. ## Сколько стоит | Сервис | Цена | |--------|------| | Claude Pro | $20/мес | | VPS (любой дешёвый) | ~$5/мес | | Deepgram | бесплатный tier ($200 кредита) | | **Итого** | **~$25/мес, фиксированно** | Личный ассистент, который раскладывает вашу жизнь по полочкам, никогда не спит и становится лучше с каждым днём — по цене двух чашек кофе. И поскольку сессия интерактивная, эта цена *остаётся* ценой: здесь нет токен-счётчика, который может убежать. ## Быстрый старт Три шага, ~15 минут работы. Полная инструкция для новичков — [docs/setup-guide.ru.md](docs/setup-guide.ru.md). **1. Сделайте Fork репозитория** (форк — **приватный**, в нём будет ваша жизнь), заполните `vault/goals/` и профиль в `vault/.claude/skills/dbrain-processor/references/about.md`. **2. Получите два ключа**: токен бота у [@BotFather](https://t.me/BotFather), бесплатный ключ на [Deepgram](https://console.deepgram.com/), плюс свой Telegram ID у [@userinfobot](https://t.me/userinfobot). **3. На чистом Ubuntu VPS:** ```bash curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/agent-second-brain/main/bootstrap.sh | bash ``` Установщик спросит токены, проведёт через вход в Claude Code (ссылка в браузере), поставит systemd-сервисы и закончит health-check'ом. Бот напишет вам, когда оживёт. Всё — начинайте разговаривать.
Что установщик делает на самом деле (проверьте, прежде чем доверять) `bootstrap.sh` клонирует ваш форк и передаёт управление `setup.sh`, который только задаёт вопросы (токены, таймзона, git remote) и пишет `.env` (chmod 600). Вся настоящая работа — в идемпотентном `upgrade.sh`: uv и Python-зависимости, tmux, Claude CLI, systemd-юниты `dbrain-*`, CLI-команда `dbrain` (`status` / `logs` / `attach` / `doctor`), затяжка прав доступа и первый прогон doctor. Каждый скрипт достаточно короткий, чтобы прочитать его заранее.
## Обновление с v1 / v2 Одна идемпотентная команда — мигрирует старые юниты, доставит недостающее, починит права и сама себя проверит: ```bash ssh ваш-сервер cd agent-second-brain && git pull && bash upgrade.sh ``` Если миграция пошла не так — запустите `claude` в директории проекта и позовите скилл **migrate-doctor**: он определит раскладку (v1/v2/v3), сделает бэкап и интерактивно починит. ## Структура vault ``` vault/ ├── daily/ # Сырой поток дня (голос, текст, вложения) ├── goals/ # Видение → год → месяц → неделя ├── business/ │ ├── crm/ # Карточки клиентов │ └── network/ # Профессиональные контакты ├── projects/ # Активная работа, лиды, пайплайн ├── thoughts/ │ ├── ideas/ # Идеи и брейнштормы │ ├── learnings/ # Выученные уроки │ └── reflections/ # Личные рефлексии ├── MOC/ # Карты контента (генерируются автоматически) └── MEMORY.md # Долгая память агента ``` ## Навыки | Навык | Что делает | |-------|-----------| | **dbrain-processor** | Классифицирует записи, пишет карточки, дневные отчёты | | **[autograph](https://github.com/smixs/autograph)** | Движок памяти: угасание, здоровье графа, MOC, schema-as-code, дедуп | | **cron** | Агент сам управляет своим расписанием из обычной речи | | **migrate-doctor** | Диагностирует и чинит сломанные обновления со старых версий | Кладите свои в `vault/.claude/skills/` — сессия подхватит их, как любой Claude Code. ## Конфигурация | Файл | За что отвечает | |------|-----------------| | `.env` | Токены, таймзона, модель, тюнинг cron (см. `.env.example`) | | `vault/.claude/CLAUDE.md` | Личность и правила агента | | `mcp-config.json` | Опционально: любые MCP-серверы для мозга | Все секреты — в `.env` (gitignore, chmod 600). Поставьте `CLAUDE_MODEL=sonnet`, чтобы снизить расход недельного лимита у 24/7-бота. ## Чего система НЕ делает - **Не** отправляет ваш vault никуда. Обычный markdown, ваш диск, ваш git remote — если вы его настроите. - **Не** использует headless `claude -p` — `scripts/check-no-claude-p.sh` гоняется в CI и валит сборку, если это изменится. - **Не** требует никаких ключей, кроме Telegram и Deepgram. Без OpenAI, без токен-счётчика. - **Не** запирает вас. Удалите всё завтра — vault так же откроется в Obsidian. ## Автор [Серж Шима](https://shima.me) — 20 лет в маркетинге (BBDO, Publicis), сейчас — AI-креативное агентство в Центральной Азии и обучение бизнеса работе с AI на [aimasters.me](https://aimasters.me). Эта система ведёт мою реальную жизнь: 1100+ карточек в vault, дневные отчёты и агент, с которым я спорю о собственном календаре. Начиналось как проект на выходные — стало инфраструктурой. ## Лицензия [MIT](LICENSE) — делайте что хотите.