Keural Duo
Постоянно работающий агент на вашем компьютере: установка, диалоги, рутины, Telegram, использование компьютера и Mate & Morph.
Duo представляет собой постоянно работающий агент, который настольное приложение устанавливает на этом компьютере (или на подключённом DGX Spark). Он работает в изолированной песочнице, с ним можно общаться через Duo на боковой панели или в Telegram, а рутины, которые вы зарегистрировали, он выполняет самостоятельно. Основан на NVIDIA NemoClaw и OpenClaw.
Duo доступен только в настольном приложении.
Установка
В разделе Настройки → Duo → Среда выполнения выберите модель, затем нажмите Установить в строке того места, где будет работать Duo. Если модель не выбрана или на диске не хватает места, кнопка установки неактивна.
Где работает и требования
| Где работает | Требования |
|---|---|
| Это устройство (macOS) | Apple silicon, не менее 16 ГБ памяти. Среду контейнеров приложение устанавливает само, поэтому Docker Desktop, Homebrew и пароль администратора не нужны. |
| Это устройство (Windows) | WSL 2. При первом запуске нажмите Подготовить Windows, чтобы установить нужные компоненты. Может потребоваться перезагрузка ПК или разрешение прав администратора. Если виртуализация выключена, включите её в BIOS. |
| Удалённое устройство (DGX Spark) | Подключите Spark и сначала запустите модель. Если брандмауэр Spark включён, один раз введите пароль учётной записи Spark, чтобы открыть два порта (пароль не сохраняется). |
На диске нужно не менее 20 ГБ, рекомендуется 40 ГБ и более. Если места не хватает, кнопка установки блокируется и отображается «Нужно {need} ГБ · свободно {free} ГБ».
Модели
| Вариант | Описание |
|---|---|
| Модель на этом устройстве | Используется локальная модель, которая загружена и запущена сейчас. Отображается как «{model} · та же модель, что и в чате». |
| DGX Spark | Модель, запущенная на подключённом Spark. |
| Облако | Модели Duo, входящие в тариф. Отображаются после входа в аккаунт. |
| Шлюз | Использует модель сервера, подключённого в Настройки → Модели → Шлюзы. Нужны адрес и ключ API этого сервера. |
После установки модель меняется в строке Модель. Внутри одного типа переключение выполняется сразу, кнопкой «Переключить». Если тип меняется, например с локальной модели на облачную или шлюз, нажмите Переустановить при смене типа. Рутины при переустановке сохраняются. Чтобы перенести Duo в другое место, сначала удалите его, а затем установите там.
Этапы установки
Установка проходит в таком порядке: проверка этого устройства → подготовка среды контейнеров → установка NemoClaw → запуск модели (для облака или шлюза: подготовка разрешения на доступ к модели) → создание песочницы → настройка Duo → проверка работы. Текущий этап отображается в надписи кнопки и в карточке хода выполнения. Если появилось сообщение «Это занимает немного больше времени. Оставьте приложение открытым», не закрывайте приложение.
Если установка остановилась, причину можно найти по тексту на экране в разделе Если установка не удалась.
Duo в другой учётной записи или рабочем пространстве
На каждом устройстве один Duo, он привязан к учётной записи и рабочему пространству, в которых установлен. При входе под другой учётной записью или переключении на другое рабочее пространство Duo в настройках показывается как «Не установлен», а Duo на боковой панели и Mate & Morph скрываются. В этом состоянии при нажатии Установить появляется окно подтверждения, в котором сообщается, что при новой установке этот Duo, его диалоги и рутины будут удалены. Если нажать Установить заново, существующий Duo удаляется и создаётся новый. При возвращении к исходной учётной записи или рабочему пространству прежний Duo снова появляется.
Если ранее установленный Duo остался на устройстве, он очищается, и только после этого выполняется установка. Если очистка не удалась, отображается сообщение «Не удалось удалить существующий Duo. Установите снова».
Если установка не удалась
Если установка остановилась, в Настройки → Duo отображается текст ошибки. Также проверьте код в скобках после текста, если он есть. Устранив причину, снова нажмите Установить.
| Сообщение на экране | Причина | Что делать |
|---|---|---|
Установка остановлена: недостаточно места на диске. Освободите место, чтобы было свободно не менее {need} ГБ, и повторите попытку | На диске с домашней папкой свободно меньше 20 ГБ. | Освободите 20 ГБ или больше (рекомендуется 40 ГБ). |
| Не удалось подготовить установку. Проверьте подключение к интернету | Не удалось скачать файлы для установки. Часто причина в корпоративном брандмауэре или прокси. | Проверьте подключение к интернету. В корпоративной сети попросите ИТ-отдел разрешить адреса из раздела Источники загрузки. |
| Не удалось удалить прежний Duo. Установите снова. | Не удалось очистить оставшийся на устройстве прежний Duo. | Полностью закройте приложение, откройте его снова и нажмите Установить. Если ошибка повторяется, посмотрите то же сообщение на вкладке macOS. |
| На устройстве есть Duo другой учётной записи или рабочего пространства. Установка удалит его. | Duo на этом устройстве принадлежит другой учётной записи или рабочему пространству. | Нажмите Установить заново, чтобы удалить этот Duo и установить новый. Чтобы продолжить пользоваться этим Duo, войдите в исходную учётную запись или переключитесь на исходное рабочее пространство. |
| Ваш тариф не включает облачные модели для Duo. | Текущий тариф рабочего пространства не включает облачный Duo. | Выберите модель модель этого устройства, DGX Spark или шлюз либо проверьте тариф. |
| Войдите, чтобы использовать облачные модели. | Вы вышли из аккаунта. | Войдите и установите снова. |
| Модель Duo не запущена. Запустите её и примените снова. | Модель на этом устройстве не запущена. | Запустите модель в разделе Настройки → Модели, затем установите Duo. |
| Это занимает немного больше времени. Оставьте приложение открытым. | Первая установка требует загрузки большого объёма файлов. | Не закрывайте приложение и дождитесь завершения. Ноутбук не должен переходить в спящий режим. |
Если проблема не решена, обратитесь в поддержку в разделе Настройки → Поддержка. Укажите текст на экране, код в скобках и тип устройства (macOS, Windows или Spark).
Экран Duo в настройках
| Раздел | Содержание |
|---|---|
| Статус | «Работает на {место}» · остановлен · запускается · не установлен · нет сервера (если связь со Spark потеряна) |
| Среда выполнения | Выбор модели, кнопки запуска, остановки и удаления в строках этого устройства и удалённого устройства, идентификатор песочницы и версия NemoClaw |
| Чат-приложения | Подключение Telegram |
| Подключения | GitHub, веб-поиск |
| Использование компьютера | Разрешения, папки для чтения, правила перед действием, приложения с постоянным разрешением, Mate & Morph |
| Память разговора | Использование контекста, сжатие диалога, новый диалог |
| Новые функции (Windows) | Подключение компьютера с Windows, общие папки, проверка доступа к приложениям, последние задачи |
Во время длительных операций (установка, смена модели, применение настроек чат-приложений, удаление) остальные разделы заблокированы. Окно подтверждения операционной системы появляется только при включении использования компьютера или расширении правил.
Диалог
Нажмите Duo на боковой панели (в режиме кода её нет). Пока связь прервана, отправленные сообщения отображаются с надписью «{n} в очереди на отправку» и доставляются, когда связь восстанавливается. Если отправить /new, приложение спросит, нужно ли начать новый диалог.
Если включить Сведения о Duo вверху, на боковой панели отображаются следующие карточки.
| Карточка | Содержание |
|---|---|
| Сейчас | Задача, которая выполняется или ожидает, прошедшее время и использованные инструменты |
| Настройки Duo изменились | Появляется только тогда, когда настройки песочницы отличаются от тех, которые Keural проверял последними. Показывает изменённые области (чат-приложения и кто может с ним общаться · инструменты и права · подключённые сервисы · подключение модели · прочее). Если изменения сделали вы сами, нажмите Принять изменения. |
| Песочница | Готова / ошибка, ответ модели в норме / нет ответа, использование GPU (CUDA), ёмкость |
| Модель | Название модели, место (это устройство · DGX Spark · облако), использование контекста |
| Рутины | См. Рутины ниже |
| Подключения · Telegram | Краткая сводка подключений. По нажатию открываются настройки. |
| Файлы работы | Файлы, которые Duo создал в рабочей папке песочницы |
По кнопке Фоновые задачи открывается список работающих вспомогательных агентов Duo.
Память разговора
В разделе Настройки → Duo → Память разговора «используемый контекст» отображается в токенах и процентах. Кнопка Сжать сокращает диалог, Новый открывает новый диалог. Текущий диалог сохраняется. Если Duo работает, эти действия доступны после завершения работы. Если появилось сообщение «Диалог слишком длинный для обработки моделью, поэтому Duo не смог ответить», сожмите диалог или начните новый.
Рутины
Если сказать Duo что-то вроде «Каждое утро в 9 часов делай…», появится карточка Создать эту рутину? (задача, расписание, место запуска). Нажмите Создать рутину, чтобы зарегистрировать её. При изменении или удалении рутины подтверждение выполняется с помощью этой же карточки.
| Пункт | Содержание |
|---|---|
| Периодичность | Однократно (до 365 дней вперёд) · ежедневно · по будням · еженедельно · каждые N минут (от 5 до 1 440 минут) |
| Место запуска | Диалог Duo в приложении Keural или Доставка в Telegram |
| Количество | 10 активных, 50 всего |
| Срок действия | По умолчанию 7 дней, максимум 30 дней. После этого отображается «Истекло». |
| Пропущено | Если приложение было закрыто и рутина опоздала более чем на 10 минут, она не запускается и помечается как «Пропущено». |
| Сбой | После 3 неудачных попыток подряд отображается «Приостановлено из-за сбоев». |
В карточке Рутины панели «Сведения о Duo» рутины включаются и выключаются. Через Подробнее доступны Запустить сейчас и Удалить. Для каждой строки отображаются время следующего запуска и статус (отправлено · пропущено · сбой · приостановлено · истекло). Результаты рутин приходят в диалог Duo или в Telegram, также показывается уведомление на рабочем столе (при Запустить сейчас уведомления не показываются). Рутины выполняются только тогда, когда приложение открыто.
Чат-приложения (Telegram)
Откройте Настройки → Duo → Чат-приложения → Telegram → Подключить и следуйте инструкции.
- В Telegram откройте @BotFather, отправьте
/newbotи задайте имя и имя пользователя бота. - Вставьте токен бота, который выдал BotFather, и нажмите Подтвердить. Не раскрывайте токен: любой, у кого он есть, может управлять ботом.
- Отсканируйте QR-код телефоном, чтобы открыть бота, и нажмите Старт. Если ответа нет, отправьте боту код с экрана.
- Когда появится сообщение «Только
{имя}может общаться с ботом в личных сообщениях», нажмите Добавить, затем Применить.
После применения Duo перезапускается (диалоги и файлы сохраняются). Далее сообщения, отправленные с телефона, отображаются в диалоге Duo с пометкой «Отправлено из Telegram». В личных сообщениях с ботом может общаться только один подключивший его человек. Чтобы отключить Telegram, нажмите Отключить, затем Применить. Если Telegram подключён, подтверждения рутин приходят и в Telegram.
Токен бота можно использовать только на одном устройстве (Duo) одного аккаунта. Чтобы подключить другое устройство, сначала отключите Telegram на прежнем устройстве, затем зарегистрируйте токен снова.
Подтверждение действий в приложении выполняется только в окне приложения Keural, даже если диалог начат в Telegram.
Подключения
Настройте в разделе Настройки → Duo → Подключения.
| Сервис | Способ |
|---|---|
| GitHub | Вставьте Персональный токен доступа и подтвердите, либо нажмите Продолжить через GitHub CLI, чтобы использовать вход gh на этом компьютере. Если CLI не установлен, появится ссылка на установку; если вход не выполнен, откроется окно входа. При подключении или изменении Duo перезапускается. |
| Веб-поиск | Duo использует способ, выбранный в Настройки → Основные параметры → Веб-поиск (быстрый поиск · поиск Keural · Tavily, Brave или SearXNG в вашем поисковом сервисе). Должна быть включена Использование компьютера. |
Использование компьютера
Если включить Настройки → Duo → Использование компьютера → Разрешить Duo использовать этот компьютер, Duo сможет использовать приложения на этом компьютере, читать указанные папки и создавать рутины. После включения Duo перезапускается примерно на минуту.
| Пункт | Содержание |
|---|---|
| Разрешения macOS | Универсальный доступ (нажатия и ввод) и Запись экрана (просмотр экрана). Если разрешения не выданы, нажмите Открыть системные настройки. |
| Папки, которые Duo может читать | Только папки, добавленные через Add folder. Слишком широкие папки, например вся домашняя папка или системные папки, добавить нельзя. |
| Что Duo делает перед действием | Спрашивать каждый раз (по умолчанию) · Действовать без вопросов · Передать вам. При переключении на «Действовать без вопросов» приложение запросит подтверждение ещё раз. |
| Приложения с постоянным разрешением | Список приложений, для которых в окне подтверждения выбрано Всегда разрешать. Чтобы удалить приложение из списка, нажмите × в строке. |
Даже при режиме Действовать без вопросов или для приложений с постоянным разрешением чувствительные действия (отправка, удаление, перезапись, оплата, отправка формы, вход, публикация, отмена), а также клавиши Enter, Backspace и ⌘Q всегда сначала требуют подтверждения.
Когда Duo ждёт разрешения, над полем ввода отображается «Duo ждёт подтверждения». Нажмите Подтвердить, чтобы открыть окно подтверждения, и выберите Отклонить, Разрешить один раз или Всегда разрешать. Подтвердить действие можно только в этом окне.
Duo открывает без подтверждения только ссылки из результатов поиска. Адреса, которые Duo ввёл или изменил сам, показываются в окне подтверждения полностью, и приложение спрашивает разрешение.
Mate & Morph
Это настольный персонаж Duo. Включите Настройки → Duo → Использование компьютера → Mate & Morph → Показывать на рабочем столе, затем выберите Персонаж (Mate · Morph · оба) и Размер (маленький · средний · большой).
- Персонаж отображается, когда Duo работает и диалог готов. Он скрывается при переходе на другую учётную запись или рабочее пространство, а также если тариф не позволяет использовать Duo.
- Одиночное нажатие на персонажа открывает поле ввода, быстрое двойное нажатие открывает приложение. Рядом с персонажем отображаются статус (ожидание · работа · готово · заблокировано · нужен ввод · ожидает подтверждения) и причина последнего неудачного ответа.
- Контекстное меню (правая кнопка мыши): Скрыть · Отметить как прочитанное · Открыть Duo · Настройки Duo. В меню строки меню (трея) тоже есть пункт Показать / скрыть Mate & Morph.
Windows
Duo в приложении для Windows работает внутри дистрибутива WSL. Диалоги, рутины, Telegram, подтверждения, Mate & Morph и использование компьютера поддерживаются так же, как в macOS. Для управления приложениями используется автоматизация пользовательского интерфейса Windows. Некоторые приложения, а также защищённые окна, например поля ввода пароля, UAC и терминалы, Duo не трогает и передаёт вам.
В разделе Настройки → Duo → Новые функции (компьютер с Windows) можно проверить подключение Duo, открыть Общие папки (Duo читает только выбранные папки), проверить Доступ к приложениям и посмотреть Последние задачи. В Windows Duo также может выполнять Установку программ (только по точным идентификаторам пакетов) и Подключение к Wi‑Fi (сохранённые профили). Отправка, удаление, перезапись, установка и изменения сети всегда сначала требуют подтверждения.
Удаление
В разделе Настройки → Duo → Среда выполнения нажмите Удалить в строке установленного места, затем Удалить в окне подтверждения. Песочница, история диалогов, рутины и файлы работы удаляются. В macOS также удаляется виртуальная машина контейнеров, которая используется только Duo. Duo на DGX Spark можно удалить только при подключённом Spark.
Частые сообщения
| Сообщение | Значение |
|---|---|
| Duo не запущен | В Настройки → Duo нажмите Запустить. |
| Нужна последняя версия настольного приложения | Обновите приложение. |
| Модель не запущена. Запустите модель и примените настройки снова. | Локальная модель или модель Spark выключена. Сначала запустите модель. |
| Связь с моделью потеряна. Проверьте статус входа. | Доступ к облачной модели Duo потерян. Войдите снова. |
| На тарифе этого рабочего пространства Duo недоступен. | Облачная модель Duo недоступна на этом тарифе. Переключитесь на локальную модель или проверьте тариф. |
| Есть Duo из другой учётной записи или другого рабочего пространства. | При установке этот Duo будет удалён. Чтобы снова использовать его, переключитесь на исходные учётную запись или рабочее пространство. |
| Не удалось удалить существующий Duo. Установите снова. | Не удалось очистить ранее установленный Duo. Нажмите установку ещё раз. |
Подробности для IT-администраторов
Требования
| Где работает | Параметры |
|---|---|
| macOS | Apple silicon (arm64), не менее 16 ГБ памяти. Виртуальная машина Duo (Colima, vz) использует 4 ядра ЦП, 9 ГиБ памяти и диск 40 ГиБ (занимает только необходимый объём). |
| Windows | WSL 2 (ядро 5.15 и новее), x64 или ARM64. Устанавливает дистрибутив Ubuntu 24.04 под именем Keural-Duo и использует внутри rootless Podman. Docker Desktop не нужен. |
| DGX Spark | Запущен Docker, свободно 20 ГБ на диске и не менее 8 ГБ доступной памяти |
| Общие | Не менее 20 ГБ свободного места на диске с домашней папкой (рекомендуется 40 ГБ) |
В Windows при установке в разделе [wsl2] файла %USERPROFILE%\.wslconfig используется networkingMode=nat. Компьютеры, которые используют зеркальную сеть (mirrored), не устанавливаются.
Места установки
| Где работает | Путь |
|---|---|
| Среда выполнения macOS | ~/.keural-runtime/ (Colima, Lima, Docker CLI, журналы) |
| Автозапуск macOS | ~/Library/LaunchAgents/kr.mkd.keural-duo-colima.plist, kr.mkd.keural-duo-gateway.plist, kr.mkd.keural-duo-sweeper.plist |
| CLI NemoClaw | ~/.local/bin/nemoclaw |
| Windows | Дистрибутив WSL Keural-Duo |
| Записи приложения | В папке данных приложения: keural-duo@<сервер>.json, keural-duo-routines@<сервер>.json, keural-duo-rules@<сервер>.json |
| Журналы | ~/.keural/logs/, ~/.keural-runtime/colima.log и gateway.log, keural-duo-install.log в папке данных приложения |
Источники загрузки
Разрешите в брандмауэре или прокси доступ к следующим адресам. Загружаемые файлы имеют фиксированные версии и проверяются по SHA-256.
| Адрес | Что загружается |
|---|---|
github.com | Colima v0.10.3, Lima v2.2.1, buildx v0.38.2 (macOS), инструменты Podman (Windows) |
download.docker.com | Docker CLI 29.9.3 (macOS) |
www.nvidia.com | Скрипт установки NemoClaw (v0.0.134) |
ghcr.io | Образ песочницы OpenClaw |
api.telegram.org | Подключение Telegram |
Серверы Keural (api.keural.ai и др.) | Облачные модели, вход |
При использовании веб-поиска или подключения GitHub также разрешите api.tavily.com, api.search.brave.com, api.github.com и api.githubcopilot.com.
Сеть и порты
| Место | Порт | Назначение |
|---|---|---|
| macOS | 127.0.0.1:8080 | Шлюз OpenShell |
| macOS · Windows | 127.0.0.1:8766 | Сервер локальной модели (в Windows: ретранслятор внутри WSL). При конфликте используется 8768 |
| DGX Spark | Один из свободных портов 18080–18099 | Шлюз только для Spark |
| DGX Spark | 18081 | Ретрансляция из песочницы к модели Spark (8000) |
| DGX Spark | 22 | SSH-подключение приложения |
Если на Spark включён брандмауэр ufw, при установке открываются два порта: шлюза и ретрансляции. В этот момент нужно один раз ввести пароль учётной записи Spark.
Песочница не подключается к интернету напрямую. Веб-поиск и чтение страниц выполняет приложение, GitHub подключается только для чтения.
Адреса моделей
| Модель | Адрес, который вызывает песочница |
|---|---|
| Модель на этом устройстве | http://localhost:<порт>/v1. Модель по умолчанию qwen3-8-27b, контекст 262 144 |
| Модель DGX Spark | 127.0.0.1:8000/v1 на Spark, через ретрансляцию Spark |
| Облачная модель | /core/v1/bot/v1 на сервере Keural. Используется токен, выданный для каждого Duo. |
| Шлюз | Адрес сервера, подключённого в Настройки → Модели → Шлюзы |
Адрес шлюза может быть любым, если он использует https. Если используется http, допускаются только частные IP-адреса или внутренние имена (.local, .lan, .internal, .intranet, .home.arpa, а также имена без точки). Адреса, содержащие localhost или user:pass@, не принимаются.
Telegram
- Токен бота выдаёт BotFather по команде
/newbot. Формат:число:буквы и цифры. - После создания кода подключения откройте бота с телефона в течение 10 минут и отправьте первое сообщение в течение 5 минут. Доступ получит учётная запись, которая отправила это сообщение.
- В групповых диалогах бот не отвечает.
Ограничения рутин
| Пункт | Значение |
|---|---|
| Интервал проверки | Каждые 30 секунд ищутся рутины для запуска. |
| Пропущено | Если опоздание превышает 10 минут, рутина не запускается и отмечается как пропущенная. |
| Приостановка | Останавливается после 3 неудач подряд. |
| Интервал повторения | От 5 до 1 440 минут |
| Однократный запуск | До 365 дней вперёд |
| Срок действия | По умолчанию 7 дней, максимум 30 дней |
| Количество | 10 включённых рутин, 50 всего |
| Часовой пояс | Часовой пояс компьютера, на котором создана рутина |
Правила добавления папок
Следующие папки добавить нельзя.
| Категория | Папки |
|---|---|
| Общие | Корень диска, сама домашняя папка и папки выше неё |
| В домашней папке | .ssh, .aws, .gnupg, .kube, .docker, .config, Library, .Trash, AppData |
| macOS | /System, /Library, /usr, /bin, /sbin, /etc, /var, /private, /dev, /Volumes, /Applications, /opt, /cores |
| Windows | Windows, Program Files, Program Files (x86), ProgramData |
Разрешения на использование компьютера
| ОС | Необходимые разрешения |
|---|---|
| macOS | Универсальный доступ и Запись экрана в разделе «Системные настройки → Конфиденциальность и безопасность» |
| Windows | Отдельных разрешений не требуется. Используется автоматизация пользовательского интерфейса Windows. |
Кнопки отправки, удаления, оплаты, покупки, отправки формы, входа, перевода, публикации и отмены, а также клавиши Enter, Delete, закрытие окна и выход из приложения относятся к чувствительным действиям и подтверждаются каждый раз.
Что удаляется при удалении
При нажатии Удалить удаляются песочница, история диалогов Duo, рутины, подключения Telegram, GitHub и поиска, а также токен облачной модели. Если на этом устройстве нет другого Duo, в macOS также удаляются ~/.keural-runtime/ и записи автозапуска. Настройки Mate & Morph и запись о подключении Spark сохраняются.