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-resendexecutesedit,reroll, andretryoperations.
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:
- The plugin runs with the current dsh process permissions;
- Review the source code and license before installation;
- It does not rewrite conversation events in place—history remains append-only;
- It does not restore workspace files or side effects of external commands;
- It does not modify the DSH engine or official UI packages;
- Version metadata is stored in
DSH_HOME/storages/dsh-edit-resend/versions.json; - It does not write custom event types to the conversation log to avoid
SessionFormatUnsupportedError.
Links¶
GitHub repository:
https://github.com/mbj733/dsh-edit-resend