Introduction

The philosophy of DSH is “Everything is a plugin.” Within the community directory, plugins can provide localized enhancements around DSH’s interface and capabilities without requiring changes to the main program.

The DSH Web GUI’s session message flow displays process lines such as Think, Tool Call, Retry, and Compress. While this information helps with troubleshooting, it causes reading interference for those who only care about the main content.

dsh-friendly-steps is a DSH plugin maintained by dongwenxiu83-web with an MIT license. It folds the aforementioned process lines using pure CSS and displays a summary floating bar in the bottom right corner, presenting a writer-friendly non-technical view.

The community directory is an independent site with no official affiliation to DeepSeek / 幻方.

What is this

One-sentence positioning: A process simplification plugin that folds technical process lines like Think / Tool Call in the DSH Web GUI into a friendly summary.

  • Maintainer: dongwenxiu83-web
  • License: MIT
  • Problem Solved: Reduces interference of technical process lines in the DSH Web GUI session message flow on main content reading
  • Presentation: Collapses process lines and displays summary status via a bottom-right floating bar

Core Features

1. Collapsing Process Lines

The plugin collapses the following process lines in the DSH Web GUI session message flow using pure CSS:

  • Think
  • Tool Call
  • Retry
  • Compress

It does not inject external nodes into the React list, and the floating bar is attached to document.body via createRoot.

2. Floating Bar Summary

The floating bar in the bottom right displays processing status:

  • Displays when completed: ✓ Completed N steps
  • Red appends on error: · M steps failed
  • Displays while running: ⏳ Processing... (N steps done)

3. Expand and Collapse

Clicking the floating bar toggles between “Expand All ⇄ Collapse All”.

4. Three Modes

The plugin supports three modes:

  • minimal
  • brief
  • off

5. Low Intrusion and Fail-open

The plugin’s counter throttling is 400ms, performing only a few selector statistics.

If DSH’s DOM contract changes, the plugin will fail-open, meaning it renders the official version as-is without forcibly collapsing.

It relies on the following official DOM contracts:

data-chat-flow-kind
[data-variant="think"]
[data-tool][data-state]

Where tool states include:

running / ok / error / stopped

The plugin does not depend on any generated CSS class names and does not compete for DOM with React.

Installation and Enablement

Install from GitHub:

dsh plugin --profile web add github:dongwenxiu83-web/dsh-friendly-steps

Restart DSH to apply the installation; re-run the installation command and restart when upgrading the plugin.

If installed locally using link, run the build first:

npm run build

lib/ is the build artifact and not committed to the repo; prepare / prepack triggers the build.

The plugin’s package.json declares client inject @deepseek-ai/dsh-client-runtime and platform is web; engines requirements:

node ^22.19.0 || >=24.0.0

Uninstallation

  1. Delete the friendly-steps insert segment in ~/.dsh/profiles/desktop/cordis.patch.yml
  2. Delete the symlink
  3. Restart DSH

Typical Usage

Switch modes in the browser console:

dshFriendlySteps.setMode('minimal')
dshFriendlySteps.setMode('brief')
dshFriendlySteps.setMode('off')

Debug output row counts:

dshFriendlySteps.debug()

Applicable Scenarios and Notes

Suitable for readers who wish to reduce the interference of technical process lines in the DSH Web GUI and only view process status via the bottom-right floating bar.

Pay attention to the following points before use:

  • The plugin runs with the current DSH process permissions; check the source code and MIT license before installing.
  • The plugin depends on official DOM contracts; if contracts change after a DSH upgrade, the worst-case behavior is “no longer collapsing” (fail-open).
  • The floating bar is fixed above the input area in the bottom right and may be adjacent to other bottom-right plugins.
  • Known trade-offs: The summary is a global floating bar, not one per group; the official row components are not exported, so the expanded state cannot be handed back to official rendering, hence it does not mask.

Links