<p align="center">
  <img alt="Agent Second Brain" src="assets/hero.webp" />
</p>

<h1 align="center">Agent Second Brain</h1>

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

<p align="center">
  <a href="README.md">🇬🇧 English</a> •
  <a href="docs/setup-guide.ru.md">Полная пошаговая инструкция</a> •
  <a href="https://github.com/smixs/autograph">Движок autograph</a>
</p>

<p align="center">
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg"></a>
  <img alt="Python 3.12+" src="https://img.shields.io/badge/python-3.12+-blue.svg">
  <a href="https://github.com/smixs/agent-second-brain/stargazers"><img alt="Stars" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Frepos%2Fsmixs%2Fagent-second-brain&query=%24.stargazers_count&label=stars&logo=github&color=blue"></a>
  <a href="https://github.com/smixs/agent-second-brain/forks"><img alt="Forks" src="https://img.shields.io/github/forks/smixs/agent-second-brain?style=flat&logo=github"></a>
</p>

---

> [!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+ тестов. Систему, которая читает ваши личные заметки, можно проаудировать за вечер.

## Что умеет

<table>
<tr><td><b>🎙 Тотальный захват</b></td><td>Голос (Deepgram, секунды), текст, фото, документы, видео, пересланные посты, целые альбомы — агент сам читает файлы и раскладывает суть. Ничто из отправленного не пропадает молча.</td></tr>
<tr><td><b>🧠 Память-граф</b></td><td>На движке <a href="https://github.com/smixs/autograph">autograph</a>: типизированные карточки, wiki-связи, угасание по Эббингаузу через пять уровней, автоматические MOC-индексы, оценка здоровья, починка ссылок, дедупликация. Самый дотошный open-source слой памяти для вашего vault.</td></tr>
<tr><td><b>⏰ Рутины без таск-менеджера</b></td><td>«Напомни в пятницу в 15:00», «каждый будний день в 18:30 проверяй папку inbox» — агент сам заводит себе cron-задания из обычной речи. Разовые, интервалы, полные cron-выражения.</td></tr>
<tr><td><b>🌙 Ночная обработка</b></td><td>В 21:00 по вашему времени он классифицирует записи дня, пишет карточки, обновляет цели и долгую память, перестраивает граф — и присылает дневной отчёт.</td></tr>
<tr><td><b>🔌 Claude Code, но для PKM</b></td><td>Под капотом это и ЕСТЬ Claude Code — подключайте любой MCP-сервер через <code>mcp-config.json</code>, кладите любой скилл в <code>vault/.claude/skills/</code> — и второй мозг получает новые способности. Как Claude Code через Telegram — только для знаний, а не для кода.</td></tr>
<tr><td><b>🩺 Самолечение</b></td><td>Watchdog поднимает зависшую сессию, ежедневный doctor шлёт 🟢/🔴 отчёт-канарейку, сломанные задания отключают сами себя и сообщают вам. Оно просто продолжает работать.</td></tr>
</table>

## Движок памяти: 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'ом. Бот напишет вам, когда оживёт. Всё — начинайте разговаривать.

<details>
<summary>Что установщик делает на самом деле (проверьте, прежде чем доверять)</summary>

`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. Каждый скрипт достаточно короткий, чтобы прочитать его заранее.
</details>

## Обновление с 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) — делайте что хотите.
