Skip to content
dsh.fish
Bundle

dsh-self-restart

Any DeepSeek Harness session can request a Desktop restart, then the same persisted session is resumed and followup'd with a self-contained mission.

Source
NecromanAlbert
License
MIT
Updated
Updated 6 days ago

Readme

<div align="center">

# dsh-self-restart

**Any DeepSeek Harness session can restart Desktop and come back with its own mission.**

[简体中文](README.zh.md) · [MIT](LICENSE)

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![dsh.bundle](https://img.shields.io/badge/dsh.bundle-required-0f766e.svg)](https://deepseek-harness.github.io/deepseek-harness/develop/basic/publish.html)
[![topic: dsh-plugin](https://img.shields.io/badge/topic-dsh--plugin-111827.svg)](https://github.com/topics/dsh-plugin)
[![Node.js 22+](https://img.shields.io/badge/Node.js-22%2B-339933.svg?logo=node.js&logoColor=white)](https://nodejs.org/)

</div>

> Community plugin for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness). Not an official DeepSeek AI product.

Host-only. Writes a handoff for the **calling** session, requests the official Desktop restart, then `agents.resume`s that persisted identity if it is not live yet and followups it. GUI does not have to open the tab first.

## Install

```sh
dsh plugin --profile desktop add github:NecromanAlbert/dsh-self-restart
```

Restart Desktop after install. Any session on that profile then sees `dsh_restart_session`.

## Agent tool

```json
{
  "mission": "Reload plugin copies, then verify the notes pad still opens.",
  "reason": "reload-client"
}
```

| Argument | |
| --- | --- |
| `mission` | Required. Self-contained. The next turn after boot only sees this text. |
| `reason` | Optional. Stored on the handoff file. |
| `sessionId` | Optional. Defaults to `currentInitiator`. Do not point this at another session unless you mean to. |

After boot the plugin:

1. Reads `$DSH_HOME/self-restart/handoff.json` (max age 30 minutes).
2. Calls `agents.resume({ resumeSessionId })` if that session is not live.
3. `followup`s a plugin notice with the mission.
4. Clears the file so a later boot does not replay it.

One handoff file at a time. A second call before restart overwrites the first.

## What this is not

- Not a `dsh web` process killer / scheduled-task relaunch.
- Not a sidebar / tray restart button.
- Not “ask the human to restart, then wait for them to reopen the tab”.
- Not a housekeeper identity fiber.
- Not [shengyvself/dsh-autoresume](https://github.com/shengyvself/dsh-autoresume) (one configured `targetSessionId`).
- Not [edusrez/dsh-smart-restart](https://github.com/edusrez/dsh-smart-restart) (systemd / web).

If the Host has no `desktopActions.requestRestart`, the tool still writes the handoff and tells you to restart Desktop yourself.

## Develop

```sh
node --test
```

Host: `lib/index.js`. Shared: `lib/handoff.js`, `lib/paths.js`, `lib/followup.js`. No Client half.

## License

MIT.

Install

dsh plugin --profile web add github:NecromanAlbert/dsh-self-restart

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source