Preface

The plugin-oriented architecture of DSH allows the Web-side conversation interface to be extended. For agent developers, when they want to go back and modify a specific input, a piece of reasoning, or a response after a message has been sent, they typically have to either keep asking follow-up questions or start a new conversation.

dsh-edit-resend solves this problem: it allows in-place editing and resending after a message has been sent, stopping an ongoing response, regenerating the last settled reply, or retrying any historical turn in the timeline.

What It Is

dsh-edit-resend is a DeepSeek Harness (DSH) plugin maintained by mbj733, licensed under the MIT License.

It targets the web profile and provides the following capabilities:

  • Stop, edit, and resend;
  • Regenerate the last settled reply;
  • Retry any historical turn in the timeline;
  • Preserve the modified conversation experience in single-conversation mode.

In single-conversation mode, the old version is automatically archived after modification, the title remains unchanged, and only one conversation is kept in the sidebar.

Core Features

Stop, Edit, and Resend

A response can be stopped mid-generation. After modification, regeneration starts from that message without creating duplicate messages, and the old version is automatically archived.

Visible Failures

The edit box and title bar display failure reasons instead of silently doing nothing.

Editing Settled Messages

Editable content includes:

  • User text;
  • Assistant reasoning;
  • Assistant response.

Regeneration

Regenerate the last settled reply using the original input.

Retrying Any Turn

Select any historical turn in the timeline to rerun.

Cascade Strategies

Two strategies are supported:

  • truncate: default strategy, truncates subsequent content;
  • preserve: preserves subsequent user inputs and reruns them in order.

Installation and Activation

Installation command:

dsh plugin --profile web add dsh-edit-resend

For local development, install via symbolic link:

dsh plugin --profile web add -w link:/path/to/dsh-edit-resend

Restart dsh after installation:

dsh web

The plugin takes effect after restarting dsh.

Local Build

If building from source, first install dependencies:

npm install

Then run the build:

npm run build

The build generates:

  • index.mjs: Host plugin;
  • client.js: Browser plugin.

Main Interfaces

The plugin provides the following HTTP interfaces:

GET /edit-resend?sessionId=
POST /edit-resend

Where:

  • GET /edit-resend?sessionId= retrieves the timeline projection;
  • POST /edit-resend executes edit, reroll, and retry operations.

Use Cases and Notes

It is suitable for developers who need to repeatedly adjust a specific turn’s input or output in the DSH Web interface. Common scenarios include:

  • Discovering an error in user input after sending and wanting to correct and resend it directly;
  • Being dissatisfied with a reply and wanting to regenerate it;
  • Wanting to rerun subsequent flows based on a historical turn;
  • Wanting to keep only one conversation in the sidebar after modifications.

Please note the following:

  1. The plugin runs with the current dsh process permissions;
  2. Review the source code and license before installation;
  3. It does not rewrite conversation events in place—history remains append-only;
  4. It does not restore workspace files or side effects of external commands;
  5. It does not modify the DSH engine or official UI packages;
  6. Version metadata is stored in DSH_HOME/storages/dsh-edit-resend/versions.json;
  7. It does not write custom event types to the conversation log to avoid SessionFormatUnsupportedError.

Links

GitHub repository:

https://github.com/mbj733/dsh-edit-resend