DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

IndieXiaoLong /

IndieXiaoLong/DSH-Enhance

Verified

为 DSH Web GUI 带来新建对话命名、文件拖拽引用、编辑并重发上一条提示词、消息时间线,以及可拖拽的悬浮球与对话宽度控制

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@747663e8

English | 简体中文

dsh-enhance — the conversation power-up for DeepSeek Harness

dsh-enhance

The missing conversation power-up for DeepSeek Harness ✨

New-conversation naming, file drag references, edit-and-resend for the last prompt, a message timeline, and a draggable floating ball with chat-width control for the DSH Web GUI.

version license DSH platform PRs welcome

✨ Features · 📥 Install · 🚀 Quick Start · 🛠️ Development · ❓ FAQ


I use DeepSeek Harness every day. New sessions need useful names; finding a message in a long thread means scrolling; referencing a file means copying its path; correcting the last prompt should be quick.

So I built dsh-enhance: it leaves DSH’s native structure alone and just makes the daily actions smoother.

✨ Features

Feature What you get
✏️ New conversation naming Name it from the workspace + before creating it
📎 File drag reference Drag a file or folder into the composer as an @path
✍️ Edit & resend Stop a turn, edit the sent prompt inline, and send it again
📍 Message timeline Scan, preview, and jump through long threads
🫧 Floating ball & width Everyday tools one click away; 38–90rem live width

The GIFs below are recordings from DSH. The UI may look different with another theme or window size.

✏️ New Conversation Naming

Name it before you create it. Clicking + on a workspace title row opens a naming dialog instead of creating another “New Session”.

  • Type a name and press Enter; Skip naming keeps the native one-click flow.
  • The name is written as the conversation title; before the first turn, the sidebar blank row shows it.
  • Turn Name new conversations off in the quick panel to restore the native behavior.
Name a new conversation before creating it

📎 File Drag Reference

Drop a file, get a reference. Open the Files tab in the right sidebar and drag a file or folder row into the composer:

  • The composer shows Drop to reference ; on release it inserts an @relative/path chip.
  • The file is not moved, copied, or rewritten; the model reads it through its file tools when you send.
  • Paths are relative to the conversation workspace root; paths with spaces use @"...".
  • Folders are inserted with a trailing / (@path/) so the model can browse the directory.
  • The composer gets an accent outline while dragging; dropping elsewhere inserts nothing.
Drag a file into the composer to insert its path reference

✍️ Edit & Resend the Last Prompt

Stop, tweak, send again. When the conversation is idle, a pencil appears beside Copy in your last sent prompt’s action row. Clicking it expands the prompt into a full-width inline editor with Cancel / Send:

  • Edit the text, then click Send (or press Enter; Shift+Enter inserts a line, Esc cancels).
  • Sending forks the conversation before the turn that carried that prompt — including the queued inbox copy — sends the edited text into the new branch, and opens it.
  • The branch keeps the earlier history and title. The original is archived when archiving succeeds; otherwise it remains in the conversation list.
  • Attachments are not resent; the editor warns when the original prompt had one.

DSH's log is append-only and has no public "rewrite this message" call, so the edit is a fork before the turn + resend, not an in-place mutation. The new conversation gets a new Session ID.

Edit the last prompt inline and resend it in a new branch

📍 Message Timeline

Never lose your place in a long thread. A thin fixed timeline sits on the right:

  • One node per question/answer turn; each node is anchored on the user question and covers the assistant reply.
  • Hover a node for the question, turn, and a content preview.
  • Click a node to jump to the question; the top/bottom buttons jump to the first/last.
  • The > button collapses the rail; turn it off/on in the quick panel.
Preview and jump between messages using the timeline

🫧 Floating Ball & Chat Width

Everyday tools, one click away. Drag the floating ball anywhere; click it to open the quick panel:

Tool What it does
Chat width Live 38–90rem, default 48rem, one-click reset
Message timeline Toggle the right timeline rail
Native turn navigation Hide the horizontal turn rail DSH draws on the right (on by default)
Name new conversations Toggle the workspace + naming dialog
Floating ball position Reset to the default corner

Width syncs both ways with DSH’s native drag handle: dragging the handle updates the panel value; adjusting the panel writes DSH’s width preference (dsh.conversation.contentWidth).

Open the floating panel and adjust conversation width

📥 Installation

Requirements

  • DeepSeek Harness 0.2.1-rc.2 or a compatible 0.2.x Web composition.
  • Official Web / Desktop composition (includes @deepseek-ai/dsh-client-ui-workspace).
  • File drag reference also needs the right-sidebar Files tab (included in the official composition).
  • Works with both the desktop app and dsh web.

Install from source

# Clone this repository (or download and extract its ZIP), then:
cd dsh-enhance
pnpm install
pnpm build
dsh plugin --profile desktop add .

For the Web profile, use dsh plugin --profile web add . instead. Reload the Web page or fully restart the desktop app after installing.

Install from GitHub or Discover

The repository includes prebuilt lib/ files. Install it directly in the profile you use:

dsh plugin --profile web add github:IndieXiaoLong/DSH-Enhance
dsh plugin --profile desktop add github:IndieXiaoLong/DSH-Enhance

For Discover, add this index URL under Plugins → Discover → Index sources. The npm package has not been published yet.

When developing from a fresh checkout, run pnpm build before installing the local directory. See publishing notes.


🚀 Quick Start

I want to… How
Name a new conversation Workspace title row + → type a name → create
Reference a file Drag a file / folder from the Files tab into the composer
Edit the last prompt Stop the turn, click the pencil beside Copy on the last user bubble
Jump to a message Click a node on the right timeline
Adjust width / toggles Click the floating ball → quick panel

🧭 Compatibility

Item Status
DeepSeek Harness 0.2.1-rc.2 (compatible with 0.2.x)
Web GUI ✅
Desktop ✅
Windows ✅ tested
macOS / Linux Expected to work, not tested

The plugin uses only public DSH slots, DOM markers, public services, and CSS tokens; it does not read private controller state. If a DSH upgrade changes those slots, markers, or services, the plugin may need an update.


🛠️ Development

pnpm install
pnpm build
pnpm typecheck
pnpm verify
  • lib/index.js: host half, a no-op Cordis plugin that mounts the package on the Loader.
  • lib/client.js: browser half, bundled with esbuild and loaded by the DSH Module Loader.
  • Project layout, public extension points, design tradeoffs, known limits: docs/DEVELOPMENT.md (Chinese).
  • Marketplace publishing guide: docs/PUBLISHING.md (Chinese).

The five GIFs under assets/ are compressed from the recordings in test/.

Install the local working tree into a profile:

dsh plugin --profile desktop add .

❓ FAQ

Does dragging a file move or upload it?

No. The plugin only writes the existing path as an @relative/path reference into the draft. The file stays where it is; the model reads it through its file tools when you send.

Why don’t I see the features after installing?

Confirm the plugin is installed in the target profile, then reload the page; on desktop, fully quit and restart the app. Also confirm DSH is 0.2.1-rc.2 or a compatible 0.2.x.

Why is the timeline sometimes missing?

The timeline relies on the Chat view’s data-chat-flow-* markers; the Trajectory view does not have them. If a message sits inside a collapsed “process” group, you may need to expand that group after jumping.

Does editing the last prompt create a new conversation?

Yes. DSH keeps an append-only log, so the plugin forks before the prompt’s turn and sends the edited text in the new branch. The branch keeps the earlier history and title. The old conversation is archived if possible; if archiving fails, it remains in the list. Attachments from the original prompt are not resent.

Where are settings stored?

Only in the current browser: dsh-enhance.state.v1 stores width, timeline/naming switches, and the floating ball position; dsh.conversation.contentWidth is shared with DSH. Nothing is uploaded to a server.

Does the plugin collect data?

No. There is no telemetry or external reporting; conversations, file paths, and settings stay local.


🤝 Contributing

Issues and pull requests are welcome.

  1. Fork this repository
  2. Create a branch (git checkout -b feat/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push the branch (git push origin feat/amazing-feature)
  5. Open a pull request

Run pnpm build and pnpm typecheck before submitting; include a screenshot or GIF for UI changes.


🌟 Acknowledgements

  • README structure and interaction inspiration from claude-nexus, a power-up suite for Claude.
  • Thanks to DeepSeek Harness for the plugin system and public extension points.
  • Thanks to the DSH community plugin authors for exploring what the platform can do.

📄 License

MIT License © 2026 dsh-enhance contributors

See LICENSE.


Built with care for DSH users ❤️

If this plugin helps you, please give it a ⭐ Star!

—/ 5

No ratings yet

Verified DSH bundle

Commit 747663e8a090

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout