Skip to content

Latest commit

 

History

History
197 lines (156 loc) · 11.1 KB

File metadata and controls

197 lines (156 loc) · 11.1 KB

Iva

Глоссарий проекта. Одно понятие — одно слово. Слова из колонки Avoid не использовать ни в коде, ни в доках, ни в обсуждениях. Решения записаны в docs/adr/, метод — в docs/philosophy.md.

Language

Память

Vault: Личное хранилище памяти пользователя — markdown-файлы в отдельном приватном git-репозитории. Avoid: база, хранилище памяти, knowledge base

Card (карточка): Типизированная единица памяти в vault/cards/ с frontmatter по schema.json. Avoid: заметка, запись, документ

Compiled Truth: Актуальное значение карточки: frontmatter плюс верхнее описание. То, что считается правдой сейчас, в отличие от истории изменений. Avoid: current value, действующая правда

History: Append-only секция ## History карточки. Пишется только кодом; модель не может вложить в неё выдуманный архив. Avoid: лог карточки, архив

CORE: Always-on память: vault/CORE.md, не длиннее 1200 знаков, инжектится в каждый ход. Avoid: системный промпт (это не он), ядро

PERSONA: Стиль общения агента: vault/PERSONA.md, не длиннее 800 знаков, инжектится в каждый ход. Avoid: характер, персонаж

MOC: Индекс тем vault (vault/MOC.md), регенерируется ночью. Avoid: оглавление, каталог

Rollup: Ночная сборка памяти силами модели: сырой день превращается в карточки и саммари по цепочке daily → weekly → monthly → yearly. Avoid: consolidation, консолидация, DAG, диаризация (диаризация — название способности модели в philosophy.md, не процесса)

Brain: Детерминированный ночной уход за vault (бывший «memory doctor»): enforce, health, decay, MOC, коммит. Без модели. Avoid: memory doctor, доктор памяти

Процессы

Harness: Тонкая программа-обвязка вокруг модели: eve плюс минимальный слой интеграции. Определение и границы — в docs/philosophy.md. Avoid: фреймворк, платформа

Bridge (мост): Отдельный процесс long-polling Telegram → localhost POST в eve. Живёт в scripts/poller/, работает даже когда агент занят или завис. Avoid: poller, поллер, transport

Turn (ход): Одна обработка входящего сообщения агентом, от приёма до ответа. Avoid: run (это eve workflow run — внутренняя сущность), job

Doctor: iva doctor — диагностика и починка инсталляции. Только про установку, не про память. Avoid: использовать слово для ухода за памятью (это Brain)

Skill: Markdown-процедура агента (agent/skills/ — ядровые, custom layer — пользовательские). Кодирует «как делать», конкретику подставляет вызов. Содержимое плагина или ядра, а не единица поставки. Avoid: расширение

Plugin (плагин): Папка формата Agent Plugins: plugin.json, skills/, mcp.json и наш код под sh.iva/ (eve Extension, сервисы). Единица расширения Ивы. Ставится командой iva plugin add из Marketplace, git-источника или локальной папки в data/custom/plugins/ (ADR-0008, ADR-0009). Avoid: расширение (как термин), addon, модуль

Marketplace (маркетплейс): JSON-список плагинов в git-репо (.agents/plugins/marketplace.json, конвенция Codex): имя → источник. У Ивы один по умолчанию, владелец добавляет свои. Не реестр: без центра и модерации. Avoid: реестр, registry, стор, каталог

MCP proxy (прокси): Сервис Ивы, который держит stdio MCP-сервер плагина и отдаёт его агенту по streamable-http на loopback с bearer. Один сервис на один сервер. Avoid: мост, bridge (это Telegram-поллер), gateway

Plugin service (сервис плагина): Долгоживущий процесс плагина, объявленный в sh.iva/services/<svc>/service.json: Ива поднимает его юнитом iva-plugin-<name>-<svc>.service и сообщает выданный порт через IVA_SERVICE_PORT. Своего протокола Ива ему не задаёт — этим он и отличается от MCP proxy. Avoid: демон, воркер, sidecar

Trace (трейс): Журнал событий хода в data/trace/: eve-события через хук плюс швы Ивы (Bridge, Inbound pipeline, Gate, Outbox). Пишет ядро; читают вьюер плагина trace и iva trace. Один ход = цепочка событий с общим turn. Avoid: лог (это журнал сервиса), телеметрия, OTel-трасса (внутренность eve)

Schedule: Внутрипроцессный cron eve (agent/schedules/). Systemd-таймеры и systemd-run — отдельные механизмы, зовутся своими именами. Avoid: cron (без уточнения какой)

Доставка и установка

Authored tree: Поставляемое ядро агента — дерево agent/, которое eve открывает по file discovery. Обновляется релизами. Avoid: core (перегружено), исходники агента

Custom layer: Пользовательский оверлей data/custom/agent/**, переживающий обновления. Сюда же ставятся плагины. Avoid: authored layer, кастомизация (как термин)

Release: Опубликованная версия проекта: semver-тег и запись в CHANGELOG. Только патч-инкременты; минор и мажор объявляет владелец. Avoid: версия (без уточнения)

Version (каталог версии): Неизменяемый каталог установки ~/iva/versions/<ver>-<sha12>/ в апдейтере v2. Активную версию выбирает симлинк current; откат — переброс симлинка. Avoid: билд, инсталляция

Update branch: Git-ветка, с которой iva update берёт код. Avoid: канал обновления, update channel (channel зарезервирован за eve)

Уведомления

Notice (уведомление): Всё, что Iva шлёт сама, без хода пользователя. Видов ровно два: Report и Alert. Avoid: notification, пуш, рассылка

Reminder (напоминание): Разовое сообщение по явной просьбе пользователя. Systemd-таймер вызывает iva remind, агент судит и формулирует, код доставляет. Не Report и не Alert: это прямое исполнение просьбы, и тумблеры Notice его не выключают. Avoid: notification, напоминалка, alarm

Report (отчёт): Плановая сводка по расписанию: ночные отчёты памяти, утренний дайджест. Выключается тумблером в /menu → Уведомления и по умолчанию выключен. Avoid: digest как общее слово (дайджест — один конкретный Report)

Alert (алерт): Notice о проблеме или требуемом действии: алерты brain, предложение обновиться. Не выключается, поэтому обязан говорить, что делать, и не повторяться чаще раза в неделю на одну проблему (ADR-0007). Avoid: offer/оффер как имя Notice, warning, ошибка (ошибка — исход операции)

Безопасность

Gate: Только про security: inbound-гейт (санитайзер входа) и outbound-гейт (сканер всего, что уходит в чат: ответ модели через Outbox и служебные реплики с runtime-контентом). Авторизация — это allowlist и bearer, не gate. Правила фенсов в карточках — контракт write_card, не gate. Avoid: gate для auth, CI и человеческих чекпойнтов

Allowlist: TELEGRAM_ALLOWED_USER_IDS — перечень Telegram-пользователей, которым агент отвечает. Пустой список = не отвечает никому. Avoid: whitelist

Channel: Транспортный адаптер eve (agent/channels/). Другие смыслы запрещены: ветка обновления — Update branch, тип чата Telegram — называть явно. Avoid: channel для веток, чатов и «каналов данных»

Inbound pipeline (входной пайплайн): Единственный вход внутрь (agent/lib/telegram-inbound.ts): из сырого апдейта Telegram получается ход модели или ничего. Внутри — allowlist, решение о диспатче, запись в Vault, медиа, inbound-Gate и сборка контекста хода. Зеркало Outbox: наружу — Outbox, внутрь — inbound pipeline. Avoid: парсер апдейтов, обработчик входящих

Outbox: Единственный шов наружу (agent/lib/outbox.ts): через него проходит всё, что агент говорит в Telegram, и внутри него живёт outbound-гейт. Служебные реплики самого канала (статус, ack) — не Outbox, но гейт они проходят там же. Avoid: outbox для очереди сообщений и папки «исходящие»