MobileVibe - Описание проекта

Обзор

MobileVibe — это гибридная среда разработки для iOS, которая превращает мобильные устройства в мощные рабочие станции для разработки. Она сочетает эффективность интерфейса в стиле терминала с интуитивностью современного SwiftUI, позволяя разработчикам писать код, сотрудничать и управлять репозиториями на ходу с помощью рабочих процессов на базе ИИ.

Бизнес-функциональность

Основное ценностное предложение

MobileVibe устраняет разрыв между средами разработки на десктопе и мобильной доступностью, предлагая:

Ключевые функции

1. Архитектура двойного интерфейса

Режим терминала

Режим SwiftUI

Оба режима используют одно и то же базовое состояние и сервисы, что позволяет бесшовно переключаться без потери контекста.

2. ИИ-ассистент для разработки

Поддержка нескольких провайдеров

Два режима работы

Стандартный режим ассистента

Расширенный агентный режим

Продвинутые автономные рабочие процессы на базе LangGraph-Swift:

3. Интеллектуальное управление контекстом файлов

4. Интеграция с GitHub

Управление репозиториями

Контроль версий

Аутентификация

5. Управление сессиями

Архитектура кода

Архитектурные принципы

1. Организация на основе функций

Кодовая база следует структуре на основе функций, где связанные компоненты сгруппированы вместе:

Features/
├── Home/              # Панель управления и обзор
├── AIAssistant/       # Интерфейс чата
├── Repository/        # Просмотр репозиториев
├── FileExplorer/      # Навигация по файлам
├── DiffBrowser/       # Просмотр изменений
├── Settings/          # Конфигурация
└── Terminal/          # Интерфейс CLI

Каждая функция содержит свои собственные Views, ViewModels и Models, способствуя модульности и поддерживаемости.

2. Архитектура основных сервисов

Дизайн слоя сервисов

Ключевые сервисы

Services/
├── AI/
│   ├── AIService              # Интеграция ИИ с несколькими провайдерами
│   └── FileEditService        # Централизованная подготовка файлов
├── Agent/
│   ├── AgentService           # Оркестрация рабочих процессов LangGraph
│   ├── AgentPrompts           # Шаблоны промптов для узлов
│   ├── AgentProtocol          # Типобезопасный JSON-протокол
│   └── AgentResponseParser    # Парсинг чистых JSON-ответов
├── Command/
│   └── CommandInterpreterService  # Выполнение команд терминала
├── Conversation/
│   └── ConversationService    # Управление историей сообщений
├── FileContext/
│   └── FileContextService     # Умное обнаружение и кэширование файлов
└── GitHub/
    └── GitHubService          # Интеграция с GitHub API

3. Управление состоянием

AppState (Общее глобальное состояние)

ViewModels (Состояние для конкретных функций)

AgentState (Состояние рабочего процесса)

4. Архитектура системы агентов

Фреймворк LangGraph-Swift

Система агентов построена на рабочем процессе на основе графа с состоянием с тремя основными путями выполнения:

Пути выполнения

  1. Путь общения: START → router → chatting_llm → END

    • Простые разговорные Q&A
  2. Путь кодирования одной задачи: START → router → coding_llm ⇄ tool_executor → evaluator ⇄ coding_llm → final_responder → END

    • Самодостаточные задачи кодирования с циклом обратной связи
  3. Путь многошагового планирования: START → router → planning_llm → plan_review → orchestrator ⇄ worker_llm ⇄ tool_executor → evaluator ⇄ orchestrator → final_responder → END

    • Сложные задачи с одобрением плана пользователем и итеративным выполнением

Узлы агента

Узел Назначение
Router Классифицирует запросы как CHATTING, CODING или PLANNING
Chatting LLM Обрабатывает беседу без инструментов
Coding LLM Выполняет кодирование одной задачи с использованием инструментов
Planning LLM Разбивает сложные задачи на пошаговые планы
Plan Review Страж: Требует одобрения пользователя перед выполнением
Orchestrator Управляет выполнением многошагового плана и повторными попытками
Worker LLM Выполняет отдельные шаги одобренных планов
Tool Executor Запускает инструменты: readFile, writeFile, listFiles, askUser
Evaluator Контроль качества: Проверяет работу, запрашивает исправления (макс. 3 раунда)
Final Responder Генерирует дружественные для пользователя сводки завершения

Архитектура JSON-протокола

Вся коммуникация агента использует структурированный JSON-протокол для типобезопасности:

{
  "action": "TOOL|COMPLETE|STATUS|EVALUATE|PLAN",
  "tool": { "name": "...", "parameters": {...} },
  "status": { "type": "SUCCESS|FAILURE", "message": "..." },
  "evaluation": { "decision": "APPROVED|NEEDS_REVISION", "feedback": "..." },
  "response": "...",
  "steps": [...]
}

Преимущества:

5. Стратегия обработки ошибок

Унифицированный enum AppError

enum AppError: Error {
    // Ошибки провайдера ИИ
    case noAPIKey(provider: String)
    case networkError(Error)
    case rateLimitExceeded(retryAfter: TimeInterval)

    // Ошибки GitHub
    case githubAuthenticationFailed
    case repositoryNotFound(String)

    // Ошибки агента
    case toolExecutionFailed(String)
    case maxRetriesExceeded(step: Int)

    // Ошибки контекста файлов
    case fileTooLarge(String, size: Int)
    case tooManyFiles(count: Int)

    // Системные ошибки
    case timeout
    case cancelled
}

Логика повторных попыток

6. Персистентность данных

Core Data

Keychain

7. Архитектура компонентов

Повторно используемые UI-компоненты

Components/
├── UI/
│   ├── ActionButton         # 4 стиля кнопок
│   ├── StatusIndicator      # 6 типов статуса
│   ├── QuickActionCard      # Плитки панели управления
│   └── ErrorBanner          # Отображение ошибок
├── Chat/
│   ├── MessageBubble        # Сообщения чата
│   ├── InputToolbar         # Многострочный ввод
│   ├── FileContextPill      # Прикрепленные файлы
│   └── FilePreviewSheet     # Модальный просмотр
├── Files/
│   ├── FileContentView      # Общий рендеринг
│   └── FileRow             # Элементы дерева
└── Diff/
    └── DiffView            # Унифицированный просмотрщик diff

Принципы дизайна:

8. Архитектура навигации

Централизованная навигация

9. Потокобезопасность

Технологический стек

Используемые паттерны проектирования

Функции обеспечения качества

Эта архитектура позволяет MobileVibe предоставлять надежную, масштабируемую и поддерживаемую мобильную среду разработки, сохраняя при этом качество кода и опыт разработчика.