Telegram assistant that writes into your Obsidian vault: tasks, knowledge, and finance in one bot — modular connectors, optional Mac ↔ server sync.
Install: docs/SETUP.md, docs/ONBOARDING.md, docs/LOCALE.md (language toggle).
Default UI language: English (AGENT_LOCALE=en). Russian: python3 scripts/setup/env_tools.py set-locale ru.
You message the bot (voice, text, media) — it updates markdown, JSON, and SQLite in your vault. Obsidian stays where you edit; the bot is fast capture and background logic.
| Domain | Capabilities |
|---|---|
| planning | Kanban, goals, routines, reflection, calendar, device context |
| knowledge | Ingest notes from text/media/links, tags, search, RAG |
| finance | NLU expenses, dashboard, optional broker API and cards |
Production: python -m unified_bot.main — agent routing + classic Telegram handlers.
Modularity: docs/CAPABILITIES.md. Guided setup: .cursor/skills/obsidian-agent-onboarding.
| You say | System does |
|---|---|
| Add task: finish slides by Friday | Kanban note in vault |
| Spent 12 on coffee, main card | NLU → finance.db |
| Save this link about Rust | Knowledge ingest + tags |
| How did I sleep yesterday? | Requires apple_health + snapshots |
| Doc | Topic |
|---|---|
| docs/SETUP.md | First run, deploy, sync |
| docs/ONBOARDING.md | Profiles and smoke tests |
| docs/LOCALE.md | AGENT_LOCALE, EN/RU YAML |
| docs/CAPABILITIES.md | Modules, connectors, sync |
| CONTRIBUTING.md | PR guidelines |
MIT — LICENSE.
Личный ассистент в Telegram, который пишет в ваш Obsidian vault: задачи, знания и финансы — один бот, один конфиг, опционально sync Mac ↔ сервер.
Установка и секреты — в docs/SETUP.md и docs/ONBOARDING.md. Здесь — что умеет система и как она устроена как продукт.
Вы говорите в Telegram (или кидаете медиа) — бот раскладывает ответы по markdown, JSON и SQLite в vault. Obsidian остаётся местом, где всё видно и редактируется; бот — быстрый ввод и фоновая логика (kanban, поиск, NLU, графики).
| Боль | Решение |
|---|---|
| Мысль теряется, пока открываешь Obsidian | Telegram как UI: голос, текст, кнопки |
| Три «бота на жизнь» → три deploy и три venv | Монорепо + unified_bot: один процесс |
| Нужен 24/7, но vault удобнее на Mac | Rsync нужных папок; тяжёлые графики — локально |
| Не все нужны Health, брокер, корпоративный обед | Модули и коннекторы: выключено = нет в UI, tools и sync |
| Домен | Возможности | Где в vault |
|---|---|---|
| planning | Kanban, цели, рутины, рефлексия, календарь, контекст устройств | папки задач, целей, рутин, дашбордов — имена в config/vault_paths.yaml |
| knowledge | Текст, голос, фото, PDF, ссылки → заметки, теги, поиск, RAG | настраиваемый каталог знаний |
| finance | Расходы NLU/голос, планы, дашборд, опционально брокер и карты | finance.db + графики в зоне дашбордов |
Production: unified_bot — свободный текст через agent platform (домен → intent → tools); кнопки и FSM — у классических хендлеров.
Подробнее по коду доменов: planning_bot/README.md, knowledge_bot/README.md, finance_bot/README.md. Платформа агента: docs/AGENT_PLATFORM.md.
Профиль задаётся в config/agent/capabilities.yaml (шаблон — capabilities.yaml.example, в git не хранится). Обратная совместимость: если файла нет, включены все модули и коннекторы (как после апгрейда старой установки).
| Слой | Что даёт |
|---|---|
| modules | finance / planning / knowledge — целые области в Telegram |
| connectors | Опциональные пайплайны данных (см. таблицу ниже) |
| features | Тонкая настройка (ИИС брокера, график КБЖУ, cron-напоминания…) |
| sync.profile | Какие шаги obsidian_sync.sh гонять на Mac |
Контракт: если коннектор выключен, его нет в agent tools, подсказках LLM, кнопках (ui_capabilities.yaml) и шагах sync. Система не падает — просто ведёт себя как продукт без этой опции.
| Коннектор | Зачем | Если выключен |
|---|---|---|
apple_health |
Снимки здоровья в vault, health-tools | Нет вопросов про шаги/сон в агенте; нет iPhone-sync шагов |
gmail_health_pipeline |
Почта → те же снимки (отдельно от Health) | Не нужен Gmail IMAP в .env |
apple_calendar |
Экспорт календаря → JSON + дашборд | Календарные tools и PNG не строятся |
mac_context |
Снапшоты фокуса с Mac | Нет mac-context tools |
broker_sync |
API портфеля (сегодня: tinkoff в broker_sync.yaml) |
Нет кнопки «синк брокера» и API-sync |
manual_broker_accounts |
Ручные счета без API | Только если нужен обзор без API |
domestic_bank_cards |
Карты на финансовом дашборде | График без линий карт |
corporate_badge |
Корпоративный лимит на обеды (badge.yaml) |
Нет бейджа в меню и get_badge_status |
knowledge_serendipity |
Случайная заметка дня в чат | Тихий knowledge без пушей |
Имена папок vault не зашиты в Python — только в config/vault_paths.yaml.example (можно назвать Tasks/ вместо 100_…).
Guided install: Cursor skill .cursor/skills/obsidian-agent-onboarding или docs/ONBOARDING.md. Справочник флагов: docs/CAPABILITIES.md.
Типичные фразы в чат — без привязки к конкретному человеку или работодателю:
| Вы пишете | Что происходит |
|---|---|
| «Добавь задачу: подготовить презентацию к пятнице» | Задача на kanban-доске в vault, лог в дашборде |
| «Что у меня в работе по проекту X?» | Agent: kanban + поиск по заголовкам/тегам |
| «Потратил 450 на обед, карта основная» | NLU → транзакция в finance.db, категория из конфига |
| «Сколько ушло на еду за месяц?» | Сводка + при включённом брокере — отдельно инвестиции |
| «Сохрани эту ссылку про Rust» | Knowledge ingest → заметка с тегами и wikilinks |
| «Найди заметки про отпуск» | RAG по vault, ответ с опорой на файлы |
| «Как спал вчера и сколько шагов?» | Только если включён apple_health и есть снимки в vault |
| «Свободен ли я во вторник после 15:00?» | Только с apple_calendar и актуальным экспортом |
Один бот в режиме Auto сам выбирает домен; можно закрепить Finance / Planning / Knowledge клавиатурой.
- Kanban в markdown: добавить, перенести, закрыть, поиск; action-логи для аналитики.
- Цели — год/квартал; опциональный текст «зачем я это делаю» (локальный файл, не в git).
- Рутины — чеклисты по дням, статус «сегодня», история.
- Рефлексия — обзор доски, целей, календаря, контекста устройств → markdown в vault.
- Календарь (коннектор) — экспорт с устройства → JSON + дашборд, PNG, опционально LLM по неделе.
- Mac / iPhone контекст (коннекторы) — снапшоты в
Данные/…, агрегаты JSON, TTL и очистка мусора на sync. - Health (коннектор) — ряды метрик, аномалии, корреляции, экспорт CSV; графики КБЖУ и веса — feature-флаги.
- Пайплайн: текст, голос (ASR), фото, PDF, YouTube и ссылки.
- Автоимя, теги по онтологии, wikilinks, вложения.
- Поиск по vault, дописывание заметки из чата, опциональный serendipity.
- NLU и голос → транзакции, категории, счета, планы, долги.
- Markdown-дашборд и PNG после sync.
- Брокер по API или ручные счета — отдельные коннекторы.
- Один чат → роутинг finance / planning / knowledge / host.
- Tool loop с лимитами из
config/agent/platform.yaml. - Память сессии; опционально профиль и подтверждаемые инсайты (
/memory). - Промпты и строки — YAML (
domain_messages,messages.*), в Python нет user-facing кириллицы в tools.
- Периодический
obsidian_sync.sh: pull/push только папок включённых модулей; шаги IMAP, графиков, maintenance — поCAP_SYNC_*. - На сервере — unified bot 24/7; kanban monitor по cron, если включён planning.
flowchart LR
subgraph inputs["Ввод"]
TG((Telegram))
SC[Shortcuts]
OBS[Obsidian]
end
subgraph Mac["Mac"]
V[(Vault)]
SYNC[obsidian_sync]
CHARTS[charts]
end
subgraph VPS["Сервер 24/7"]
UB[unified_bot]
end
TG --> UB
SC --> V
OBS --> V
UB --> V
SYNC <-->|rsync| V
SYNC --> CHARTS
CHARTS --> V
| Профиль | Модули | Типичный пользователь |
|---|---|---|
| Только задачи | planning |
Kanban + цели, без финансов и KB |
| Только финансы | finance |
Учёт расходов + дашборд |
| Только база знаний | knowledge |
Inbox заметок из Telegram |
| Полный | все modules + нужные connectors | Power-user с Mac, VPS и несколькими источниками |
Команды и env — в docs/ONBOARDING.md, не дублируем здесь.
obsidian-agent/
├── shared/ # LLM, agent, capabilities, telegram host
├── unified_bot/ # production entrypoint
├── finance_bot/ knowledge_bot/ planning_bot/
├── config/ # messages, vault_paths, agent platform (examples → local)
├── scripts/ # setup, deploy, obsidian_sync, capabilities CLI
├── docs/ # установка, onboarding, architecture
└── .env.example
| Что | Где |
|---|---|
Секреты, VAULT_PATH, locale |
.env |
| Модули и коннекторы | config/agent/capabilities.yaml (опц., из .example или omit = всё) |
| Имена папок vault | config/vault_paths.yaml (из .example) |
| Кнопки Telegram | config/messages.ru.yaml / messages.en.yaml (из .example) |
| Тексты tools и отчётов | config/domain_messages.yaml (из .example) |
| Промпты LLM | config/agent/prompts/*.txt (из *.example.txt) |
| Гейты кнопок | config/ui_capabilities.yaml (опц., из .example) |
Переменные окружения: docs/ENV_REFERENCE.md.
| Документ | Содержание |
|---|---|
| docs/SETUP.md | Первый запуск, venv, deploy, Mac sync |
| docs/ONBOARDING.md | Модули, коннекторы, smoke, golden paths |
| docs/CAPABILITIES.md | Manifest, sync env, @cap в промптах |
| docs/ARCHITECTURE.md | Монорепо, sync, CI |
| docs/AGENT_PLATFORM.md | Routing, memory, tools |
| docs/PROMPTS_ONBOARDING.md | Уровни промптов и scaffolds |
| docs/TESTING.md | pytest и локальный прогон |
| docs/REPO_LAYOUT.md | Куда класть новый код |
| docs/AGENT_CONFIG.md | config/agent/*.yaml |
| CONTRIBUTING.md | PR и стиль |
| Режим | Запуск | В git |
|---|---|---|
| Production | python -m unified_bot.main |
да |
| Finance-only bot | python -m bot.main (cwd finance_bot) |
да |
| Knowledge-only | knowledge_bot/start_bot.py |
да (legacy) |
| Planning-only | python -m planning_bot.app.main |
да (legacy) |
Per-bot deploy.sh / watchdog.sh |
отдельные venv на VPS | нет (author-only, .gitignore) |
scripts/watchdog.sh, restart_component.sh |
multi-bot era | нет |
Новый clone: один токен TELEGRAM_UNIFIED_BOT_TOKEN, ./scripts/deploy.sh --prod, рестарт через --restart-unified.
CI: py_compile, smoke imports, pytest — см. .github/workflows/ci.yml.
./scripts/run_tests.shMIT — LICENSE.
