DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
H

hsb-restart

Hsb Restart

Restart DeepSeek Harness from the sidebar or from an agent tool, optionally continuing the same session afterwards.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:machine202502/hsb-restart#014e53528b2ee14867ad8cf1c692167446f2185b
READMECompatibilityVersions

Compatibility and provenance

Hsb Restart is published as hsb-restart and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/28/2026

Versions

0.1.0stable
10/28/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
Weekly downloads
0
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in productivity-workflow.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseExperimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundleOptional bundle that adds Schedule, its task page, and time context to the Web compositionClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / pet / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。

README

hsb-restart

Перезапуск DeepSeek Harness из интерфейса или инструментом агента — с возможностью продолжить ту же сессию после старта.

Что делает

ВозможностьГде
Кнопка «Перезапустить»футер сайдбара, рядом с аккаунтом (иконка питания)
Та же кнопка у поля вводаconversation.input.dock
Подтверждениемодалка с двумя кнопками, без лишних опций
Инструмент агентаhsb_restart({ fake })
Продолжение сессиирестарт всегда открывает сессию и пишет [auto.continue]

Как работает рестарт

Перезапускающий процесс не может быть потомком приложения: taskkill /T убивает всё дерево вместе с ним. Поэтому плагин:

  1. пишет маркер %LOCALAPPDATA%\hsb-restart\pending.json;
  2. создаёт одноразовую задачу планировщика HSB-Restart (Windows) с helper-скриптом;
  3. helper ждёт 1.5 с, закрывает дерево процесса приложения, ждёт 1.8 с, запускает .exe и удаляет задачу.

На macOS/Linux используется отдельный sh-процесс (kill + open/запуск).

Автопродолжение

После старта клиент читает маркер через локальный мост 127.0.0.1:49233:

GET  /claim     → { marker } — атомарно: маркер получает только один клиент
POST /restart   → записать маркер и перезапустить

Маркер забирает ровно одна загрузка страницы, поэтому двойная инициализация не даёт двух сообщений. Любой рестарт — из модалки или инструментом — возвращает сессию сообщением [auto.continue]: клиент открывает ту же сессию, дожидается готовности композера, вставляет текст и отправляет его кнопкой отправки (Enter — запасной вариант).

Черновик пользователя не теряется: если в поле уже есть текст, он временно откладывается в localStorage, отправляется [auto.continue], после чего текст возвращается в поле ввода (без отправки). Очередь сообщений — состояние сессии, плагин её не читает и не меняет.

Инструмент

hsb_restart { fake: true }
→ Preflight passed; fake restart requested, nothing was restarted.

Без fake инструмент перезапускает приложение и возвращает сессию сообщением [auto.continue]. Флаг fake прогоняет все проверки, но ничего не перезапускает — для тестов.

Настройки плагина

На странице Plugins → Restart → Configure:

НастройкаПо умолчаниюЧто делает
Команда hsb_restart доступна агентувключенопри выключении инструмент исчезает; вызов из старой памяти падает с unknown tool "hsb_restart"
Сторож активенвключенопри выключении рестарт просто закрывает и открывает приложение, без отката профиля
Ожидание сторожа, сек10сколько ждать признака живого старта перед откатом (1–120)

Переопределения хранятся в %LOCALAPPDATA%\hsb-restart\settings.json; значения из cordis.patch.yml остаются умолчаниями. Сохранение настроек не требует перезапуска: инструмент регистрируется и снимается на лету.

Когда инструмент отказывает

hsb_restart доступен агенту только в «тихом» режиме — когда перезапуск никому не помешает:

ПроверкаОтказ
Режим доступа не Full accesshsb_restart requires the Full access permission preset (current: …)
Другая сессия или подагент ещё работаетhsb_restart refused: N other session(s) or subagent(s) are still working (…)
Есть работающая фоновая задачаhsb_restart refused: N background job(s) are still running (…)

Проверки идут через ctx.permissionPresets.current(agent.session), ctx.agents.list() и ctx.jobs.list(agentId); статус «работает» — running либо непустая очередь входа агента.

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

Ограничения

  • пункт в трее и в нативном меню Application плагином добавить нельзя: трей и меню живут в процессе Electron main, а плагин — в дочернем host-процессе;
  • перезапуск выполняется через Планировщик задач Windows; если политика запрещает создание задач, рестарт не сработает;
  • воркспейс-сессии, которые в этот момент выполняют ход, будут прерваны (как и предупреждает модалка).

Кнопка и инструмент ведут себя по-разному

  • hsb_restart (агент) — всегда открывает сессию и пишет [auto.continue] (или [auto.continue.failed], если сторож откатил профиль).
  • Кнопка «Restart DeepSeek Harness» в сайдбаре — просто перезапускает приложение: маркер не создаётся, сессия не продолжается, авто-сообщение не отправляется.

Куки и «Web authentication failed»

Каждый запуск Desktop Host занимает новый порт и ставит куку dsh-auth-<random> для 127.0.0.1. Chromium хранит куки по хосту, а не по порту, поэтому старые куки не заменяются и копятся. Примерно после 70 запусков заголовок Cookie перестаёт влезать в лимит 16 КБ, приветственный запрос получает 431, и приложение падает с desktop welcome: Web authentication failed.

Перед каждым запуском (после убийства приложения, до Start-Process) helper запускает src/cookie-clean.py и удаляет только строки dsh-auth-* для 127.0.0.1/localhost. Остальные куки не трогаются.

Если приложение всё же упало именно на приветствии (лог падения содержит Web authentication failed), сторож не откатывает профиль и не отключает плагины: он чистит куки, запускает приложение ещё раз и ждёт здорового старта.

Привязка сторожа к рестарту

Каждый рестарт получает токен:

hsb_restart → marker { token, sessionId } + watchdog.json { token }
сторож  → перед откатом сверяет токен в watchdog.json
старт   → хост удаляет watchdog.json (токен аннулирован)

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

Перед откатом сторож сравнивает SHA-256 файлов package.json, cordis.patch.yml, cordis.yml с сохранёнными в момент запроса. Если файлы изменились вручную, откат не выполняется — считается, что правки взял на себя человек.

Файлы профиля пишутся без BOM (WriteAllText + UTF8Encoding(false)), иначе хост не может прочитать package.json.

Известное ограничение: задача подагента после его завершения

Если подагент запустил фоновую задачу и завершил ход, DSH удаляет запись об этой задаче вместе с агентом, хотя сама задача продолжает работать. Проверка перед рестартом такую задачу не увидит и рестарт не отклонит.

Что покрыто:

Владелец работыОтказ
Своя фоновая задачада
Подагент или чужая сессия ещё работаютда
Их задачи, пока владелец живда
Задача подагента после завершения его ходанет

Почему так: реестр задач ctx.jobs ключуется по id агента и очищается при его уничтожении; обёртка jobs.start видит только задачи, запущенные через этот путь, а подагент запускает их иначе. Детект по дочерним процессам ненадёжен: рядом постоянно появляются и исчезают служебные процессы приложения. Решение отложено.

Установка

npx --yes github:machine202502/hsb-restart

Или вручную:

"hsb-restart": "github:machine202502/hsb-restart#main"

и добавить hsb-restart в dsh.profile.bundles.

После установки нужен перезапуск приложения (можно кнопкой, когда она появится).

Проверка

node tests/smoke.mjs                   # инструмент, проверки, fake, мост
node tests/load-client.mjs client.js   # клиентский модуль грузится и отдаёт apply

Лицензия

MIT