dsh-plugin-edit-message
其他 活跃维护

dsh-plugin-edit-message

WyxBUPT-22/dsh-plugin-edit-message

Web GUI轻量级插件,可在对话停止生成后自动将最后一条用户消息回填至输入框,无需重复输入即可直接修改内容重新发送,原生集成无需额外配置。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
TypeScript
主要语言
None
开源协议
164 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:WyxBUPT-22/dsh-plugin-edit-message
git clone https://github.com/WyxBUPT-22/dsh-plugin-edit-message.git
git clone git@github.com:WyxBUPT-22/dsh-plugin-edit-message.git
README.md main

dsh-plugin-edit-message

English · 中文

DSH (DeepSeek Harness) Web GUI plugin: edit the last user message back into
the composer after stopping a turn
— no more retyping from scratch.

Why

Sending a message, stopping the reply, and wanting to re-ask with a small
change currently means typing the whole prompt again. This plugin adds an
"Edit last message" button to the composer tool row: it restores the tail user
message text and focuses the input, ready to edit and send.

It is a client-side plugin — the conversation log stays append-only. Sending
the edited text appends a new turn (the original message and the interrupted
reply remain in the transcript). It never touches the host, the session log,
or the agent loop.

Install

The plugin bundles as a dsh.bundle + dsh.client package. It works on any
DSH setup that loads third-party bundles (source dsh web, DSH Desktop,
custom profiles).

From npm (published — recommended)

dsh plugin --profile web add dsh-plugin-edit-message

Restart the GUI (fully quit and reopen) after installing — client plugin
bundles register at startup.

DSH Desktop users: Desktop's DSH_HOME lives under
%APPDATA%\dsh-desktop\harness, so target that explicitly:

DSH_HOME="${APPDATA}/dsh-desktop/harness" \
dsh plugin --profile web add dsh-plugin-edit-message

Then quit and reopen DSH Desktop.

From GitHub or a local checkout (unpublished builds)

# GitHub repository
dsh plugin --profile web add git+https://github.com/WyxBUPT-22/dsh-plugin-edit-message.git

# local checkout (pnpm install && pnpm run build first)
dsh plugin --profile web add /path/to/dsh-plugin-edit-message

From this source checkout

The repository is self-contained: devDependencies resolve the official
harness client packages from the npm registry, so no deepseek-harness
checkout is needed.

pnpm install     # pulls the official client packages from npm
pnpm run build   # emits lib/index.js + lib/client.js + lib/types
dsh plugin --profile <name> add /path/to/dsh-plugin-edit-message
dsh --profile <name>

Uninstall with dsh plugin --profile <name> remove dsh-plugin-edit-message.
See docs/user/develop/basic/publish.md in the harness checkout for the
dsh plugin workflow.

How it works

  • Registers one client plugin (dsh.client manifest, platform: web) that
    contributes an entry to the official conversation.input.left composer
    tool-row slot (a documented multi-plugin list slot — zero official changes).
  • The button renders only while the session is idle, a tail user/steering
    message exists, and that message is plain text (draft images are browser
    File-backed and cannot be resurrected from the durable log).
  • On click: inputActions.setDraft(text) restores the text and the composer
    is focused. The plugin prefers inputActions.focus when the deployed
    runtime exposes it, otherwise falls back to the composer textarea (the GUI
    keeps exactly one).
  • If you remove the plugin (dsh plugin remove dsh-plugin-edit-message), the
    surface disappears entirely — the tool row reverts to official chrome.

Differences from in-transcript editing (Codex style)

In-place replacement with a rewind of the log tail is a larger design
(log-truncation semantics, compaction checkpoints, session log format, dual
SDK projections) and is intentionally out of scope. This plugin provides the
interaction value — edit the text, resend — with zero blast radius.

Develop

pnpm run typecheck   # tsc --noEmit (strict)
pnpm run test        # vitest (logic matrix + component behavior)
pnpm run build       # tsdown → lib/client.js + types

pnpm publish runs prepublishOnly (typecheck + test + build) first.

License

MIT