| 1 | # ADR 0071: Принципы интеграции AI/ассистента в IDE — суверенитет, локальность, невидимость |
| 2 | |
| 3 | **Статус:** Proposed |
| 4 | **Дата:** 2026-04-19 |
| 5 | ## Связанные ADR |
| 6 | |
| 7 | | ADR | Роль | |
| 8 | |-----|------| |
| 9 | | [0013](0013-command-surface-and-discoverability.md) | палитра, discoverability | |
| 10 | | [0008](0008-mcp-contracts-and-testable-infrastructure.md) | MCP, паритет | |
| 11 | | [0020](0020-agent-reasoning-visibility-and-provider-limits.md) | видимость рассуждения агента | |
| 12 | | [0028](0028-user-settings-toml-localappdata-and-secrets.md) | настройки и секреты | |
| 13 | | [0038](0038-agent-facade-ai-provider-and-tool-orchestration.md) | фасад провайдеров | |
| 14 | | [0060](0060-keyboard-chord-stack-fms-tactical-strategic.md) | аккорды; §10 — философия UX | |
| 15 | |
| 16 | ### Вне ADR |
| 17 | |
| 18 | | Документ | Роль | |
| 19 | |----------|------| |
| 20 | | [cascadeide-philosophy-v1.md](../design/cascadeide-philosophy-v1.md) | cascadeide philosophy v1 | |
| 21 | |
| 22 | --- |
| 23 | ## Контекст |
| 24 | |
| 25 | Пользовательский опыт IDE исторически опирался на **предсказуемость** и **контроль**: действие → ожидаемый эффект, локальная работа, понятные границы. Распространение **облачных inline-ассистентов** во встроенном редакторе создало класс риска: помощь становится **заметнее задачи**, ослабляется **суверенитет** (отключение, политика подсказок), растёт **когнитивная нагрузка** («что модель сделает дальше?»). |
| 26 | |
| 27 | CascadeIDE изначально ориентирована на **agent-first** контур с **наблюдаемостью** (MCP, ADR, паритет команд), а не на непрозрачное смешение «модель внутри каждого символа» без согласия и без альтернативного пути. |
| 28 | |
| 29 | --- |
| 30 | |
| 31 | ## Решение |
| 32 | |
| 33 | <a id="adr0071-p1"></a> |
| 34 | |
| 35 | ### 1. Зафиксировать принципы интеграции любой AI/ассистентской функции |
| 36 | |
| 37 | | Принцип | Требование | |
| 38 | |---------|------------| |
| 39 | | **Суверенитет** | Пользователь может **отключить или ограничить** класс подсказок/автоматики на уровне продукта (не «только спрятать визуально» без отключения контракта с облаком, если такой контракт есть — это должно быть **явно** и управляемо). | |
| 40 | | **Локальность и границы** | Предпочтительны сценарии, где **источник истины** и критичный путь — **репозиторий, MCP, IDE**; внешние провайдеры — **с явной** границей и политикой ([0008](0008-mcp-contracts-and-testable-infrastructure.md), [0028](0028-user-settings-toml-localappdata-and-secrets.md)). | |
| 41 | | **Прозрачность** | Поведение, влияющее на код и рабочий контур, **документируется** (ADR, пользовательская справка), а не остаётся только в модели вендора. | |
| 42 | | **Невидимость по умолчанию** | UX-фичи, которые конкурируют с кодом за внимание, проходят планку **«суфлёр, не режиссёр»** ([0060](0060-keyboard-chord-stack-fms-tactical-strategic.md) §6, §10). | |
| 43 | | **Одна модель команд** | Любое действие, доступное ассистенту или автоматике, имеет путь через **`command_id`** и паритет с палитрой/MCP, где применимо ([0013](0013-command-surface-and-discoverability.md), [0030](0030-command-ids-hotkeys-and-ui-registry-layers.md)). | |
| 44 | | **Честность рассуждения** | Слои видимости и лимиты провайдеров — по [0020](0020-agent-reasoning-visibility-and-provider-limits.md); не имитировать «полное мышление» без обозначенных границ. | |
| 45 | |
| 46 | <a id="adr0071-p2"></a> |
| 47 | |
| 48 | ### 2. Анти-паттерн (не целевой UX) |
| 49 | |
| 50 | Считать **нежелательным ориентиром** для baseline CascadeIDE следующий профиль: |
| 51 | |
| 52 | - облачный inline-дополнение кода **по умолчанию везде**, без устойчивого отключения; |
| 53 | - поведение, которое **затрудняет** предсказание того, что окажется в буфере редактора; |
| 54 | - смешение **подписки / аккаунта вендора** с базовым циклом «открыть решение — редактировать — собрать — отладить» без явной альтернативы. |
| 55 | |
| 56 | Детали и исторический нарратив — в [cascadeide-philosophy-v1.md](../design/cascadeide-philosophy-v1.md); ADR фиксирует **норму продукта**, а не обзор конкурентов. |
| 57 | |
| 58 | <a id="adr0071-p3"></a> |
| 59 | |
| 60 | ### 3. Не-цели этого ADR |
| 61 | |
| 62 | - Не запрещать **опциональную** интеграцию внешних LLM ([0035](0035-mfd-embedded-webview-external-llm-and-mcp-boundary.md)) — с явной границей доверия. |
| 63 | - Не фиксировать **конкретный SKU** или лицензию сторонних продуктов (политики меняются). |
| 64 | - Не заменять собой **техническую** спецификацию фасада агента ([0038](0038-agent-facade-ai-provider-and-tool-orchestration.md)) — только продуктовые принципы UX и доверия. |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ## Последствия |
| 69 | |
| 70 | - Новые фичи с AI/ассистентом проходят проверку на соответствие §1; при конфликте — отдельное обсуждение или осознанное исключение с записью в ADR. |
| 71 | - Пользовательская документация может ссылаться на [cascadeide-philosophy-v1.md](../design/cascadeide-philosophy-v1.md) как на **человекочитаемый** слой; норматив для реализации — этот ADR и связанные ADR по ссылкам. |
| 72 | |
| 73 | --- |
| 74 | |
| 75 | ## Открытые вопросы |
| 76 | |
| 77 | - Критерии «достаточного отключения» для конкретных классов inline-помощи (полное off vs режимы глубины). |
| 78 | - Нужна ли отдельная **матрица compliance** для корпоративных режимов (air-gapped, без облака). |
| 79 | |