DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
H

hsb-restart

Hsb Restart

从侧边栏或代理工具重启 DeepSeek Harness,并可选择在之后继续同一会话。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:machine202502/hsb-restart#014e53528b2ee14867ad8cf1c692167446f2185b
README兼容性版本

兼容性与来源证明

Hsb Restart 以 hsb-restart 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/28

版本

0.1.0stable
2026/10/28

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
周下载
0
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Schedule Bundle@deepseek-ai/dsh-experimental-schedule-bundle为 Web 组合添加 Schedule、其任务页面和时间上下文的可选捆绑包Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。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