06.05.2026
Как не терять контекст при работе с ИИ: система управления знаниями
Работа с большими языковыми моделями часто превращается в борьбу с переполненным окном токенов. Чат разрастается, правила забываются, а переход в новое окно означает потерю всех настроек. Знакомо? В этой статье разберём, как мы построили легкую, мобильную систему на базе Obsidian и Markdown, которая решает проблему потери контекста раз и навсегда.
Почему контекст ИИ постоянно «утекает»
Представьте стандартный сценарий разработки. Вы пишете код, отлаживаете скрипт, задаете уточнения по архитектуре. Через пятнадцать-двадцать сообщений диалог «забивается» логами, черновиками и промежуточными гипотезами. Модель начинает забывать ваши исходные правила, предлагает уже опробованные и нерабочие варианты, а вы вынуждены тратить токены на повторные объяснения.
Переход в новый чат или смена модели? Это полный сброс. Вся накопленная логика, подтвержденные факты и список неудачных подходов исчезают. Мобильная работа усугубляет проблему: копировать куски кода, переключаться между десятком файлов с правилами, фактами и логами на маленьком экране просто неудобно. Результат — потерянное время, фрагментированная база знаний и растущий фрустрационный фон.
Решение: один файл, один промпт, чёткие команды
Вместо сложных облачных баз или сторонних плагинов мы выбрали минимализм. Вся память проекта хранится в одном файле project-context.md. ИИ работает с ним через единый «Базовый промпт», а вы управляете состоянием диалога короткими командами. Никакой магии, только структура, дисциплина и строгие правила взаимодействия.
1. project-context.md— оперативная память проекта
Это не вики и не дневник. Это сжатый технический паспорт задачи. Он содержит:
• Глобальную цель и текущую подзадачу
• Жесткие правила работы и ограничения среды
• Подтвержденные факты и рабочие конфигурации
• Список неудачных подходов с причинами отказа
• Точку, на которой остановились
Всё в одном месте. При запуске нового чата вы просто копируете его содержимое в диалог. При синхронизации — заменяете файл одним действием «Копировать-Вставить».
2. Базовый промпт — инструкция для ИИ
В начале каждого диалога отправляется один и тот же текст. Он задает роль, загружает контекст и прописывает правила поведения:
• Код всегда выдается полными блоками, без комментариев вроде «здесь ваш код»
• Вопросы делятся на блокирующие (критичные для старта) и фоновые (предложения на будущее)
• Формат ответа адаптирован под мобильный экран: короткие абзацы, четкая нумерация шагов
• Если ИИ видит метку mode: resume, он не тратит время на приветствия, а сразу продолжает работу с последнего шага
3. Команды вместо долгих объяснений
Вместо ручного управления историей используются короткие триггеры:
• ;sync — команда «уборки». ИИ анализирует историю, разрешает противоречия (спрашивая вас, если факты конфликтуют) и выдает обновленный файл контекста одним блоком кода.
• ;export— подготовка к переходу. ИИ сжимает контекст до тысячи токенов, убирает черновики и ставит режим «продолжение». Идеально для вставки в новый чат.
• ;merge— объединение двух контекстов. Полезно, если у вас скопилось несколько веток разработки по одному проекту. ИИ найдет конфликты и попросит выбрать истину.
• !noask— режим «без вопросов». Если задача очевидна, но ИИ обычно перестраховывается, эта команда заставляет его сразу выдавать решение, фиксируя допущения в логе.
Примеры из реальной разработки
Сценарий 1: Отладка и «уборка» мусора
Вы ищете ошибку в n8n-воркфлое. После 15 сообщений диалог переполнен. Вы пишете ;sync. ИИ отвечает одним блоком кода, где в разделе «Не работает» появился новый пункт, а в «Подтверждено» добавлена рабочая конфигурация порта. Вы обновляете файл в Obsidian и продолжаете с чистой историей.
Сценарий 2: Переход в новый чат или модель
Локальная модель «задумалась», вы хотите переключиться на облачную. Пишете ;export. Получаете сжатый пакет. Открываете новый чат, вставляете Базовый промпт, а вместо полного контекста — этот экспорт. Модель мгновенно подхватывает правила и продолжает с места остановки без повторных объяснений.
Сценарий 3: Мобильная работа без переполнения
Вы в дороге. Нужно быстро разобраться с архитектурой. Пишете: «Объясни, как работает RAG с локальными моделями». ИИ определяет тип задачи как «Объяснение», дает структурированный ответ с короткими абзацами и в конце добавляет неблокирующую заметку: «На заметку: для продакшена стоит добавить кэширование эмбеддингов». Никаких «Шаг 1, ждите подтверждения». Ответ готов к чтению сразу.
Почему это работает лучше готовых решений
Полный контроль над данными. Всё хранится локально в Markdown. Никаких облачных синхронизаций, никаких вендор-локов. Вы владеете файлами, а не платформой.
Экономия токенов и времени. ИИ не генерирует «воду». Контекст сжат, правила жесткие, вопросы приоритезированы. Вы платите только за полезный вывод.
Адаптация под мобильные устройства. Один тап для копирования, полные блоки кода без скрытых замен, четкое разделение задач на «делай» и «объясняй». Система спроектирована под реальный рабочий процесс разработчика в дороге.
Саморегуляция. Промпт запрещает ИИ самовольно менять структуру или добавлять новые правила без вашего согласия. Улучшения системы приходят с маркером «предложение» и требуют явного подтверждения.
Базовый промпт (с мета-правилами и приоритетами вопросов)
# ROLE: Automation Assistant (Mobile Optimized)
Ты помогаешь в автоматизации проектов. Стиль: краткий, без "воды".
## ✅ PROJECT CONTEXT
{{ВСТАВИТЬ: project-context.md ИЛИ результат ;export / ;merge}}
## ⚙️ CORE RULES (STRICT)
### ✅ META-RULE: Не меняй систему без спроса
- НЕ добавляй новые команды, поля в контекст, правила — без явного запроса пользователя.
- Если видишь возможность улучшения системы → отметь в конце ответа: `[⚙️ Предложение: ...]` и жди подтверждения.
- Исключение: исправление очевидных ошибок в синтаксисе (но не в логике).
### ✅ Task Execution Logic
1. ✅ **Chat Naming**:
- Есть `Current Task` → предложи название чата
- Нет → спроси подзадачу (1 вопрос)
2. ❓ **Smart Questions** (ПРИОРИТЕТЫ):
- ❌ **BLOCKING** (спросить СРАЗУ, ждать ответа):
• Неясна цель / есть несколько равнозначных путей
• Конфликт с или "❌ Failed"
• Не хватает критических данных (порт, путь, ключ)
- ⚙️ **NON-BLOCKING** (спросить В КОНЦЕ, не ждать):
• "Может, стоит добавить логирование?"
• "Альтернатива: сделать так-то. Оставляем текущий путь?"
• Идеи для следующих шагов
3. ✅ **Task Type Detection**:
- **Execution** ("напиши", "исправь", "настрой") → 1-2 шага, жди подтверждения, код — полными блоками
- **Explanation** ("объясни", "как работает") → структурированный ответ, короткие абзацы, без "Шаг 1, ждите"
4. ✅ **Code Policy**: ВСЕГДА полный код файла, никаких `// ...`, диффов, "добавьте в конец"
5. ✅ **Export Resume**: Если `mode: resume` → подтверди ОДНОЙ фразой и сразу продолжай
6. ✅ **Project Safety**: Конфликт `project_id`? → ???? BLOCKING: спроси подтверждения
7. ✅ **Context Awareness**: Сверяйся с , игнорируй "❌ Failed"
### ✅ User Override
- Если пользователь начинает сообщение с `!noask` → пропускай ❌ вопросы, делай лучшее предположение, но отметь допущения в ``
## ✅ COMMANDS (Fixed — no auto-expansion)
### ;sync
→ "Уборка" + обновление файла.
→ Алгоритм:
1. Анализ истории.
2. Конфликт фактов? → ❌ спроси "А или Б?" → после ответа → продолжай.
3. Выведи ПОЛНЫЙ `project-context.md` в ОДНОМ блоке кода.
### ;export
→ Подготовка к переходу в новый чат.
→ Алгоритм:
1. Убери гипотезы, сожми до ~1000 токенов.
2. Установи `mode: resume`.
3. Выведи в ОДНОМ блоке кода.
### ;merge <блок_контекста>
→ Объединить текущий контекст с вставленным.
→ Алгоритм:
1. Сравни `project_id`. Разные? → ❌ предупреди и спроси подтверждения
2. Найди противоречия → ❌ спроси "А или Б?" для каждого
3. Выведи объединённый `project-context.md` в ОДНОМ блоке кода.
→ Примечание: Если нужно ИЗВЛЕЧЬ знания из текущего чата (без второго блока) → используй `;sync` (он делает то же самое, но для одного источника).
### ;check
→ Быстрая проверка: выведи `project_id`, `mode`, `Current Task` и 3 ключевых факта.
→ Примечание: Команда добавлена по согласованию в диалоге от {{дата}}. Не удалять без запроса.
## ✅ STARTUP LOGIC
1. Проверь `project_id` → при конфликте ❌ спроси
2. Определи режим:
- `resume` / есть `Last State` → "✅ Контекст загружен. {{к следующему шагу}}"
- `fresh` → задай ❌ вопросы (макс. 2) для старта
3. Предложи название чата
## ✅ RESPONSE FORMAT
- Кратко, по делу.
- Новые факты? Добавь в конец: `+ {{факт}} | - {{устарело}}`
- ❌ Blocking-вопросы: выделяй явно, ставь в начало, жди ответа
- ⚙️ Non-blocking: добавляй в конец ответа с маркером ` [⚙️На заметку: ...]`
- Для ✅ Execution: нумеруй шаги ("Шаг 1 из 3:"), жди "готов"
- Для ✅ Explanation: короткие абзацы, подзаголовки, списки
---
Жду команды или вопроса.
Готовый шаблон project-context.md для быстрого старта
Создайте файл context-template.md и вставьте это:
# ✅ CONTEXT: ## ✅ Meta - project_id: - mode: fresh - version: 1.0 ## ✅ Goal & Current Task - Goal: - Current Task: ## ⚙️ Rules - Chat name: - Mobile: one copy-paste, step-by-step - Ask before solutions - Code: full blocks only, no // ... - ## ✅ Facts - ## ❌ Failed - ## ✅ Last State -
Итог
Управление контекстом ИИ — это не про сложные базы знаний, а про дисциплину и правильные промпты. Один файл, одна точка входа, короткие команды. Система масштабируется от личных заметок до командной разработки, остается под вашим контролем и не ломается при смене модели или окна чата.
Попробуйте внедрить эту схему в свой следующий проект. Скопируйте структуру project-context.md, настройте Базовый промпт один раз и забудьте о потере контекста. Ваши чаты станут чище, ответы — точнее, а разработка — предсказуемой.
