Запуск за пять минут

От скачивания до первой прямой линии. Команды ниже — для Windows; заметки для Android в конце каждого раздела.

01Скачивание и запуск

Возьмите mdo.exe около 4 МБ со страницы скачивания, положите в любую доступную для записи папку и запустите двойным щелчком. Первый запуск создаёт mdo-home/ рядом с exe и открывает нативное окно — это вся установка: ни реестра, ни AppData, нулевой след на системном диске.

PowerShell
# запуск сразу после скачивания — без установщика
.\mdo.exe

# проверка в режиме только-чтение без окна: ничего не создаёт и не меняет
.\mdo.exe -- --help

На Android установите APK около 3.8 МБ и запустите один раз — приватный Home приложения будет создан автоматически.

02Первая задача

Создайте задачу в проекте по умолчанию и начните диалог. Новые задачи проекта по умолчанию используют mdo-home/workspace/ как выделенный рабочий каталог, создаваемый при первом обращении — никогда каталог программы или запуска. Существующие сессии помнят рабочий каталог с момента создания; явно указанные пути всегда приоритетнее.

Таймлайн вживую показывает поток ответов, вызовы инструментов, артефакты и рассуждения — события приходят по WebSocket того же порта, без опроса; каждое побочное действие сначала поднимает запрос на одобрение. Повторное открытие старой задачи подгружает историю по раундам, а компоновка контекста не удаляет увиденное. Верхняя панель переключает интерфейс между 中文, English и Русский.

03Настройка моделей

Встроенная бесплатная модель по умолчанию ornith-1.5-35b (протокол Responses по умолчанию, плюс Chat Completions и Anthropic, окно контекста 240K) работает сразу — ключ не нужен.

Свои модели подключаются через Настройки → Модели: сначала провайдер (endpoint, проверка TLS, таймаут), затем профиль модели (wire-имя, набор протоколов, окна контекста и вывода). Провайдеры и модели разделены — одна модель может висеть на разных подключениях.

mdo-home/config/models.json · структурный набросок
{
  "providers": [{
    "id": "my-provider",
    "endpoints": { "responses": "https://api.example.com/v1" },
    "credential": { "secret_ref": "env:MY_PROVIDER_KEY" }
  }],
  "items": [{
    "id": "my-model", "provider": "my-provider",
    "wire_model": "example-large", "protocols": ["responses"]
  }]
}

Обычный JSON-конфиг никогда не хранит api_key, token, password и подобные секреты открытым текстом: учётные данные существуют только как ссылки secret_ref (env:, file:, keychain: или prompt:), разрешаются в момент использования и сразу освобождаются. Авторитетные определения полей — в контракте конфигурации репозитория.

04Полномочия и одобрения

Поза mdo по умолчанию — «сначала направляющая»: записи в файлы требуют токенов допуска записи, сетевые инструменты подчиняются политикам доменов и адресов, а каждый побочный вызов агента поднимает по-вызовное одобрение — строгость настраивается.

  • Восстановление после срыва: после отменённого или прерванного запуска экран восстановления показывает все незавершённые вызовы; каждый требует явного RETRY (перезапуск с повторной проверкой полномочий) или RECORD_UNCERTAIN (без вызова, с записью прослеживаемого неопределённого результата). Автоповтор разрешён только заведомо read-only инструментам.
  • Сетевое трио: web_search и web_open реально ходят в сеть с проверкой публичных адресов; web_find читает только внутрипроцессный снимок документа. Доступ к поиску даёт вход по аккаунту (PKCE) с шифрованием учётных данных на устройстве.
  • Аудит: решения об одобрениях, результаты инструментов и история восстановления журналируются и воспроизводимы.

05Портативные Home

Рантайм-данные попадают только в mdo-home/ рядом с исполняемым файлом — ни реестра, ни AppData, в облако ничего не уходит. Боитесь забить системный диск? Положите exe на любой диск или укажите --home / MDO_HOME на другой диск, внешний носитель или флешку (первый приоритетнее). Оба лишь вычисляют путь; удаление = удалить одну папку, следов не остаётся.

PowerShell
# портативный режим с флешки: exe + Home едут вместе
E:\mdo.exe -- --home E:\mdo-home

# нулевой след на системном диске: живём на D:
$env:MDO_HOME = "D:\mdo-home"; .\mdo.exe

Старый data/ рядом с прежним исполняемым файлом и .mdo/ в пользовательском каталоге импортируются через Настройки → Миграция: явный предпросмотр, токен подтверждения и атомарная публикация; целевой Home не должен существовать, старые каталоги не изменяются. См. заметки по миграции.

06Расширенное

  • Память: глобальный и покомплектный MEMORY.md. Агент использует обычные файловые инструменты; вы редактируете тот же файл в настройках. Отпечатки снимков делают устаревшие сохранения UI явно неудачными после прямых правок — тихих перезаписей нет.
  • Skill: внешние каталоги Skill — полная граница доверия: внешний каталог с тем же ID целиком затеняет встроенный Skill; скрипты и ресурсы читаются через API только при объявлении в front matter.
  • MCP: транспорты stdio и HTTPS Streamable HTTP; секреты существуют лишь короткое время внутри регистрации кандидатов и никогда не возвращаются каталогом или API статуса.
  • C-модули: кладите исходники на C в agents/, subagents/ или tools/; они собираются ограниченным TCC с транзакционной горячей перезагрузкой поверх публичного ABI из include/mdo/module.h.
  • Отложенные задачи: задачи из настроек переиспользуют полную цепочку полномочий и аудита обычных агентных запусков и продолжаются после перезапуска.

После входа в один аккаунт участника телефон и ПК могут выбирать друг друга и управлять друг другом через список устройств в боковой панели. Дистанционное управление по умолчанию выключено: только после явного включения в настройках устройство подключается исходящим соединением к официальному релею (транспорт TLS, без открытых портов).

  • Выбрали — приняли управление: после выбора цели диалог, проекты, файлы, одобрения, настройки и обновления действуют на целевом устройстве; в шапке всегда видны идентификатор цели и режим «только чтение»/«управление».
  • Сначала наблюдение: начните в режиме «только чтение», чтобы посмотреть состояние цели, и переключитесь на управление, когда будете готовы.
  • Записи с квитанциями: запросы записи несут уникальный ID и отпечаток содержимого; цель дедуплицирует и выдаёт квитанцию. При разрыве записи замораживаются — отката к контроллеру не существует.
  • Изоляция по аккаунту: сервер проверяет сессию участника и владельца устройства; устройства чужих аккаунтов недоступны.
  • Сдержанность на мобильных: Android запрашивает фоновые ресурсы только при включённом удалённом управлении и освобождает их при закрытии, отзыве или выходе; действуют системные и вендорские ограничения — бесконечного фонового онлайна не обещаем.
  • Релей ничего не хранит: пересылаемое проходит только через память — без базы данных и журналов доступа.

Полный протокол и записи приёмки — в контракте удалённого управления; общие обязательства по данным — в разделе безопасность данных.


Более глубокие контракты (хранилище сессий, бэкап и восстановление, границы сетевых инструментов, ABI модулей…) читайте прямо в каталоге docs/ репозитория MIT — каждый документ развивается вместе с кодом.