Обновить

Android-клиент для DeepSeek Harness: как работать с агентом на ПК с телефона без облака и FCM

Время на прочтение13 мин
Охват и читатели8.6K
Всего голосов 2: ↑2 и ↓0+3
Комментарии11

Комментарии 11

Минус у этой схемы тоже есть.

Да, теперь незачем вставать с дивана.

Подтверждения действий я специально оставил на ПК, так что повод встать с дивана всё-таки остаётся.

Недоработка, получается :)

Для журнала квитанций интересен ещё один сценарий: восстановили резервную копию плагина, сделанную до отправки команды, а телефон повторил сохранённый requestId после переподключения. В восстановленной базе квитанции уже нет, хотя DSH мог выполнить задачу. Как в таком случае восстанавливается граница неопределённости? Это отдельная проверка от обычного перезапуска с сохранившейся SQLite; для неё пригодилась бы явная процедура восстановления и сверки с DSH.

Спасибо, сценарий точный, и обычный перезапуск его действительно не покрывает.

Сначала про телефон. Сохранённую команду после переподключения он сам не повторяет: запрашивает у хоста исходную квитанцию по requestId. Если хост отвечает, что квитанции нет, приложение помечает команду как uncertain и больше её не отправляет, дальше решает пользователь. В контракте приложения это записано прямо: 404 на квитанцию никогда не доказывает, что команда не выполнялась. Автоматический повтор бывает только тогда, когда транспорт доказывает, что сбой случился до заголовков ответа, и это не больше 3 попыток с тем же requestId. После статуса uncertain или pending и после восстановления процесса повтора нет.

А вот насчёт хоста вы правы. Если базу откатили на момент до приёма команды и тот же requestId всё же придёт новым POST, строки для него у хоста нет. Он сочтёт команду новой, запишет dispatching и вызовет DSH. В обычной работе приложения такой POST сам не появляется, но хост от него ничем не защищён.

Отката журнала из резервной копии хост сейчас не замечает. У журнала команд нет эпохи или идентификатора экземпляра, перед отправкой хост не сверяется с историей сессии DSH, процедуры восстановления со сверкой тоже нет. В инструкции по установке описано только, как безопасно для SQLite снять резервную копию, а восстановление из неё не описано. Epoch в плагине есть, но он относится к другому журналу, ленте уведомлений, а не к командам. Для сообщений плагин передаёт DSH идентификатор, производный от requestId, но дедуплицирует ли по нему сам DSH, не установлено, поэтому ни того, ни другого утверждать не буду.

По тестам: незавершённая отправка после перезапуска становится uncertain и не повторяется; потерянный ответ ведёт к поиску по исходному id, а не к повторной отправке, даже после пересоздания приложения; одинаковый UUID с двух устройств даёт для DSH разные id. Теста на восстановление копии, снятой до команды, нет.

Так что после такого восстановления границу неопределённости держит только телефон, а хост её теряет. Сценарий заслуживает отдельной обработки, спасибо, что его сформулировали.

Спасибо за подробный разбор и за разделение гарантий телефона и хоста. Для документированной процедуры восстановления я бы рассмотрел отдельный режим: квитанции можно читать, но новые команды в DSH не отправляются до сверки или явного решения оператора по неопределённым задачам. Эпоха команд помогла бы отклонять старые запросы, но если хранить её в той же резервной копии, она откатится вместе с журналом. Значит, при восстановлении её нужно менять отдельно и не считать смену эпохи доказательством того, что прежние задачи не выполнялись. Такой режим кажется полезным дополнением к отдельному тесту восстановления.

Спасибо за уточнение. Да, смена эпохи сама по себе не отвечает на вопрос, какие задачи уже выполнились. Разделить чтение квитанций и разрешение новых команд при восстановлении — разумный вариант.

Решил эту же задачу личным VNP(который уже был) и поднятием TCP-pipe. Интерфейс конечно же не идеален для мобильных устройств, но есть полня синхронизация всех плагинов и скилов.

Рабочий вариант, особенно если VPN уже есть. Я от него отказался, потому что пришлось бы открывать веб-порт DSH и переносить на телефон браузерную авторизацию, куку, привязанную к адресу хоста. Ну и интерфейс, как вы и пишете, под телефон не рассчитан.

У моего варианта цена как раз в том, о чём вы говорите: плагины и скилы DSH на телефон не выведены, подтверждения действий остаются на ПК. Взамен нативный интерфейс, и с телефона доступно основное: чаты всех проектов, постановка задач, очередь и «Направить», вложения, ответы на вопросы агента, уведомления.

Объясните, в чем выгода использовать DeepSeek, если за те же 20 долларов на подписке Claude можно сделать в 4-5 раз больше задач 🤔

DeepSeek Harness — это не модель, а среда для агента на компьютере: сессии, инструменты, история, подписки и ключи провайдеров. Модель в ней выбирается отдельно, и подписку Claude тоже можно подключить — у меня часть задач идёт именно через неё. DSH Mobile к выбору модели не привязан: он только даёт доступ к этим чатам с телефона. Так что «DeepSeek или Claude» здесь решается в настройках, а не выбором приложения.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации