Iva — персональный агент (smixs/iva)
GitHub: https://github.com/smixs/iva
Версия: 0.2.5 (15.07.2026, активная разработка, 55⭐)
Автор: тот же что ASB + autograph (smixs)
Что нового с 0.2.0 (04.07 → 18.07)
- 🎙️ Voice/audio/video → транскрипт через Deepgram nova-3, авто-детект ru/uz/en
- 👁️ Vision — фото описываются моделью самого провайдера, без доп. ключа
- 🧾 Rich replies — таблицы/чеклисты/collapsible/формулы через Telegram Bot API 10.1
- 📇 Personal CRM — кто люди, о чём договорились, когда напомнить
- 🌐 Web search — 4 провайдера на выбор: Tavily, Exa, Parallel, Brave
- 📮 Google Workspace — Gmail/Calendar/Drive/Sheets/Docs через
gwsCLI, ключи настраиваются прямо в чате - 🧩 Skills & MCP — подключаются файлом/сервером, ключи в
.env - 🧪 Userbot (beta) — читает/пишет с личного Telegram-аккаунта (не бота), QR-подключение, anti-ban (FloodWait + пацинг + circuit-breaker). Статус на 24.07.2026: не настроен. Юнит
iva-telegram-userbot.servicedisabled/inactive,TELEGRAM_API_ID/TELEGRAM_API_HASHв/home/claude/iva/.envне заданы (нужно получить на my.telegram.org, затемiva userbot setup) - 🛡️ Screening форвардов/ссылок/PDF перед тем как их видит модель
- v0.2.3: codex-подписка (ChatGPT Plus/Pro, без API-ключа) работает end-to-end
- v0.2.4: Google Workspace CLI, честные ошибки OpenRouter
- v0.2.5: Telegram rich messages
Суть
Telegram-бот с долгосрочной памятью и ночной консолидацией. Прямое развитие agent-second-brain + autograph — упакованное в один установочный пакет.
curl -fsSL https://raw.githubusercontent.com/smixs/iva/main/install.sh | bashСтек
| Компонент | Что |
|---|---|
| Фреймворк | eve (Vercel agent framework); код — смесь Python/TS/JS/Shell |
| Модели | 4 провайдера: OpenCode Go (~20/мес), OpenRouter (pay-as-you-go, 300+ моделей), OpenAI по подписке Plus/Pro (без API-ключа). Дефолт — deepseek-v4-pro, 131k контекст, ~$9/мес all-in на Go |
| Память | BM25 через SQLite FTS5 (Node 24 built-in, нет внешних зависимостей) |
| Граф | autograph vault-graph.json — реранкинг по связям карточек |
| Векторный поиск | опционально (Jina / DeepInfra / Ollama), по умолчанию выкл |
| Telegram | polling (не webhook) |
| Vault | та же структура что ASB: daily/weekly/monthly/yearly/cards + CORE.md |
Архитектура памяти
🪵 СТВОЛ — year + карточки (люди, проекты, решения)
🌿 ВЕТВИ — monthly ← weekly
🍃 ЛИСТЬЯ — daily (дословный транскрипт)
Ночной rollup (пока спишь):
- Дневные записи сворачиваются в недельные → месячные → годовые
- Если факт изменился (работа, город, решение) — переписывает текущее, старое хранит с датой в
## History - Учится из поправок: “делай вот так” → записывает в CORE, применяет завтра
- Теги достоверности:
EXTRACTED(сам сказал) vsINFERRED(агент вывел)
Поиск (memory_search tool):
- BM25 по title/meta/tags/body
- Graph-реранк по vault-graph.json (autograph)
- Hybrid режим: BM25 + dense через RRF (опционально)
- Деградирует мягко: сбой FTS → наивный grep, не падает
Инструменты агента
| Tool | Что делает |
|---|---|
memory_search | Ранжированный поиск по vault (BM25 + graph) |
write_card | Создать карточку с валидацией схемы (type enum) |
read_file / write_file | Работа с файлами на сервере |
bash / glob / grep | Shell-доступ |
tasks | Список задач (add/show/done/remove) |
web_search / web_fetch | Интернет |
Субагенты: planner (декомпозиция задач)
Skills: morning-digest, web-research, agent-browser, [[infra/security]]-defense
Безопасность
- Входящие (форварды, голос, файлы, веб) — детектор prompt-injection (невидимые символы, гомоглифы, override-фразы)
- Исходящие — скрабинг API-ключей и токенов из ответов
- Бот отвечает только разрешённым Telegram ID
Учёт токенов
- Каждый вызов →
data/usage.jsonl /usage today|week|month|by-model|by-sourceв Telegramiva usageв терминале
Сравнение с текущим стеком Сергея
| Iva | Текущий стек | |
|---|---|---|
| Бот | ✅ Telegram polling | CoreClaw (Telegraf) |
| Долгая память | ✅ BM25 + graph | ASB + RAG (Qdrant, :8765) |
| Ночная консолидация | ✅ автоматически | dbrain-processor (ручной /process) |
| Поиск | ✅ ranked (смысл) | BM25 + Qdrant (работает) |
| Факты без противоречий | ✅ rewrite + history | нет (просто append) |
| Валидация карточек | ✅ write_card zod | нет (write_file произвольно) |
| Модель | DeepSeek/Ollama (дёшево) | Claude (дорого, умнее) |
| Установка | 1 команда | ручная сборка |
| Интеграция с forge | ❌ отдельный VPS | ✅ всё вместе |
Что стоит взять в текущий стек (не мигрируя целиком)
- write_card с zod-валидацией — предотвращает невалидные карточки
- Rewrite вместо append в ночной консолидации — нет противоречащих фактов
- Graph-реранк в memory_search — уже есть autograph граф, можно подключить
- EXTRACTED vs INFERRED теги — разметка достоверности фактов
- Prompt-injection gate — для CoreClaw (форварды из каналов)
Если мигрировать
Плюсы: дешевле (DeepSeek vs Claude), лучше архитектура памяти, активное развитие
Минусы: теряем Claude (интеллект, рассуждение), разрываем интеграцию с forge
Рекомендация: запустить параллельно, потестить месяц
Решено (18.07): тест на текущем сервере, не на новой VPS — ресурсов хватает (11GB RAM, 29GB диск свободно), конфликта polling нет (у Ивы свой токен бота). Единственный риск — общий blast radius, если install сломает systemd/порт на этой же машине
Установлено (18.07, 10:52): install.sh прошёл успешно. iva-telegram-poll active, 5 memory-таймеров (daily/weekly/monthly/yearly/doctor) стоят. Провайдер — OpenRouter, модель anthropic/claude-sonnet-4.5. Веб-поиск (Tavily/Exa/Parallel/Brave) и hybrid-память пропущены при установке — ключей не было, можно включить позже через iva config. Порт 8723, vault в ~/iva/vault, бэкап-репо Kobalt695/iva-vault (private) создан и запушен. Тест начат — правило источника правды в силе.
Готового перехода нет
Проверено (18.07): install.sh всегда сеет чистый vault-template/, авто-импортёра существующего ASB-vault нет, issues/discussions по миграции у автора отсутствуют. В README и docs/memory.md автор описывает ASB+autograph только как “prior art” — историю происхождения, не как апгрейд-путь.
Перенос был бы ручным: карточная схема (schema.json) — прямой потомок autograph, почти совпадает с нашей (type/description/tags/status), так что cards/* переносятся с минимальной правкой; daily/YYYY-MM-DD.md — тот же формат, копируется как есть. А вот структура отличается: у Ивы daily → summaries/daily|weekly|monthly|yearly → cards, у нас daily → goals/thoughts/business/projects — переносить пришлось бы по разделам, а не одним скриптом.
Практический план перехода (если решим тестировать)
Масштаб переноса на 18.07: 34 карточки в thoughts/business/projects/goals, 37 daily-файлов.
- Текущий сервер (решено 18.07, не новая VPS) — свой токен бота у Ивы, свой порт, свои systemd —user юниты
iva-*, отдельный vault-каталог. RAG (dbrain-rag), n8n-воркфлоу и другие интеграции продолжают смотреть на старый vault без изменений — трогать их не нужно, пока не решим о полном переходе install.sh, мастер: провайдер модели (Claude недоступен напрямую — только через OpenRouter pay-as-you-go по слагуanthropic/claude-sonnet-4.5; иначе OpenCode Go ~20/мес), Deepgram-ключ, новый бот-токен, свой Telegram ID- Тест месяц параллельно, второй бот, dbrain-* не трогать, никакого переноса карточек ещё не делаем. Правило источника правды (18.07): реальные факты/задачи/CRM — только через старого dbrain-bot в старый vault; Ивиному боту на время теста — только тестовые сообщения (голос/фото/CRM-демо), не реальные данные. Иначе split-brain: часть фактов осядет только у неё, часть — только у нас, и перенос при переезде придётся сверять в обе стороны вместо одностороннего переливания
- В день реального переезда (решение “да, переходим”): стоп новым записям в старый vault → ручной перенос один раз (daily/*.md как есть; карточки разнести по
cards/{contacts,decisions,ideas,notes,projects}/и поправить frontmatter под её schema.json; MOC.md и .graph/ не переносить — пересоберутся сами) → старый vault замораживается как архив - Отключать dbrain-bot/watchdog/rag/process/doctor только после этого, не раньше
- Доп. стоимость на время теста: +~$9/мес поверх текущей Anthropic-подписки
Известные проблемы
- 2026-08-24:
iva-update-check.servicefailed → исправлено. Причина: repo~/ivaв detached HEAD на тегеv0.3.20(так оставил install.sh), а апдейтер (scripts/lib/update-channel.ts, дефолтDEFAULT_UPDATE_BRANCH="main") требует именованную ветку → падал сdetached HEAD: switch to the update branch first. Фикс:cd ~/iva && git checkout -B main HEAD(перевёл на тот же коммит, файлы не менялись). После фикса юнит прошёл успешно (exit 0) и сразу разослал уведомление об апдейте. - 2026-08-25: OpenRouter-баланс исчерпан → Ива шлёт «Баланс/тариф провайдера исчерпан». Текущий провайдер в
.env:MODEL_PROVIDER=openrouter,OPENROUTER_MODEL=deepseek/deepseek-chat(сменился сanthropic/claude-sonnet-4.5, когда именно и кем — не зафиксировано). Проверкаcurl https://openrouter.ai/api/v1/creditsпоказалаtotal_credits: 83, total_usage: 82.89— на счету осталось <11 центов, ключ рабочий, просто кончились деньги. Текст ошибки формируется вagent/lib/error-humanizer.tsпо паттернуinsufficient_credits|billing|402в ответе провайдера — не баг, честная диагностика. Решение не принято: либо пополнить OpenRouter, либо переключиться командой/modelна бесплатного провайдераollama(Ollama Cloud, дефолтdeepseek-v4-pro,compatibleReasoning: true) — доступные провайдеры и модели:agent/lib/model-provider.ts(ollama/opencode/codex/openrouter, у каждого свой*_MODEL/*_VISION_MODELв.env). - 2026-08-24: обновление 0.3.20 → 0.3.31 применено. Штатная команда
iva update(алиасnpm run iva -- updateв корне репо =node bin/iva.mjs update, делает git pull + build + версионированный релиз + restart). С первого раза упало на сборке:eve buildтребует Node ≥24, а в PATH по умолчанию стоит/home/claude/.local/bin/nodev22.22.3 (не через nvm). Решение — перед командой добавить в PATH/home/claude/.nvm/versions/node/v24.18.0/bin. После этого сборка и релиз прошли чисто,iva-telegram-poll.serviceсам перезапустился на новой версии. Важно на будущее: репо теперь версионировано (~/iva/versions/0.3.31-<hash>/, старое дерево файлов “retired”) —cd ~/iva && npm run ...больше не сработает напрямую,package.jsonбольше не лежит в корне~/iva.
Связанные записи
- agent-second-brain — текущий ASB
- coreclaw — текущий Telegram-бот
Смежные инструменты (изучены в той же сессии)
- vercel-labs/skills — CLI менеджер skills для агентов (
npx skills), каталог на skills.sh - obra/superpowers — 14 skills для Claude Code: brainstorming, debugging, TDD, planning и др. Установлены.
- thedotmack/claude-mem — автоматическая память между сессиями (хуки + SQLite + ChromaDB). Установлен.
- google-antigravity/antigravity-cli — Google’s аналог Claude Code (TUI,
agy). Установлен, версия 1.1.4. Геоблок НЕ снят (переподтверждено 20.07): вывод от 18.07 “работает” был ошибочным — тогда проверялся толькоagy -p(print-режим), который иногда обходит проверку. Обычный интерактивный чат стабильно блокируется:agy→ любое сообщение →⚠ Eligibility Check failed: ...not currently available in your location, без ответа. Воспроизведено чисто в отдельном tmux-окне 20.07. Не подключён к ccbot через tmux. Практически — CLI сейчас непригоден для реального использования, пока Google не откроет регион.