安装

September 2, 2026 · View on GitHub

简体中文 | English

Current default: v0.9.5 (targeting dsh-v0.1.2-alpha.1, source-built install) — install the latest tag directly; below is the historical snapshot compat record.

Version selection: v0.9.1 (default) targets DSH snapshot snapshot0810 (snapshots/20260810T155924Z) and is also compatible with snapshot0811 (snapshots/20260811T152241Z) and the final snapshot snapshot0812 (snapshots/20260812T172954Z-final); v0.9.0 targets snapshot0809 (snapshots/20260809T140917Z); v0.8.0 targets snapshot0808 (snapshots/20260808T121140Z); v0.6.0 targets snapshot0807 (snapshots/20260807T130646Z); v0.1.0 targets snapshot0805 (snapshots/20260805T134133Z) and is installed via the legacy method. See README.md for the version mapping.

npm release: v0.9.1 is compatible with the DSH npm releases @deepseek-ai/dsh@0.0.1-rc.5 (dist-tag next, i.e. the npm release of the final snapshot snapshot0812) and @deepseek-ai/dsh@0.0.1-rc.2 (the npm release of snapshot0811); runtime/type/startup manifest verified on a real instance. Starting from 0811 the vendored cordis was renamed to @deepseek-ai/cordis — this plugin has migrated its type imports and peer to @deepseek-ai/cordis (^4.0.1-rc.1, which is 4.0.1-rc.4 on the npm rc.5 baseline), and a plain npm install no longer fails with ERESOLVE. Handled automatically by dsh plugin/pnpm installation.

Prerequisites: a built DSH snapshot (~/.dsh/source/current pointing at a snapshot containing lib/ artifacts — the link: dev dependencies of cordis and the various @deepseek-ai/dsh-client-* packages resolve from that snapshot) + dsh web running. This plugin is a pure browser-half plugin (the host half is empty; since v0.8.0 it no longer bundles a report_progress tool or reporting guidance; browser half: progress presentation). Installing = ① the package is resolvable by the configuration tree + ② one line added to the configuration.

Current default install (dsh-v0.1.2-alpha.1, v0.9.5)

Latest default install: v0.9.5 targets dsh-v0.1.2-alpha.1 (GitHub tag, source-built install, not published to npm; it is also the latest version after 0.1.1-rc.1).

# 1. Clone the repository; build artifacts are already in-tree (no build needed)
git clone https://github.com/lhh010/dsh-ui-progress.git
cd dsh-ui-progress && pnpm install

# 2. Install into the web profile
dsh plugin --profile web add link:/path/to/dsh-ui-progress
#   or a pinned-tag git dependency:
#   dsh plugin --profile web add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.9.5'

Config line ($DSH_HOME/profiles/web/cordis.patch.yml, hot-reloaded, no restart needed):

- insert:
    - id: dsh-ui-progress
      name: '@dsh-external/dsh-ui-progress'

Prompt install (let DSH install it)

Paste this prompt into any DSH session and the agent installs it for you:

Install the dsh-ui-progress plugin (DSH session progress strip plugin):

  1. Run dsh plugin --profile web add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.9.5' (the first run may fail because pnpm 11 blocks node-pty build scripts)
  2. Under ~/.dsh/profiles/web, run pnpm approve-builds --all (approve the build scripts)
  3. Re-run the install command from step 1
  4. Remind me to hard-refresh the browser (Ctrl/Cmd+Shift+R) On errors, first check the FAQ/known limitations in the README at https://github.com/lhh010/dsh-ui-progress

Migration guide (DSH 0.1.1-rc.1 → 0.1.2-alpha.1)

0.1.2-alpha.1 is an author-facing alpha (not published to npm) with breaking Client API rework; the official ChatSnapshot.legacy compatibility projection keeps the old fields, and this plugin v0.9.4 has completed the migration:

  • The @deepseek-ai/dsh-client-runtime package was removed: ClientContext now imports from @deepseek-ai/cordis (import type { Context as ClientContext }).
  • ConversationSnapshot was refactored into a views architecture: the old nodes/turnTimings/turnEnds/partial/runningCalls all moved to the ChatSnapshot.legacy compatibility projection; the turn timeline is on ChatSnapshot.timeline. Session lifecycle fields (running/lastAgentError etc.) remain on the new SessionSnapshot (@deepseek-ai/dsh-api-session-controller/client).
  • Component props: PropsRuntime is read through the useSession (Session lifecycle) + useConversation (ConversationSnapshot) double seats; cross-package slot registration now uses ctx.slots.inject(name, () => ctx.slots.register(...)).
  • Plugin-author migration steps: ① replace ClientContext/type import paths; ② read streaming/tool/node state via useConversation → views.get('chat')?.legacy; ③ read session lifecycle via useSession; ④ register via ctx.slots.inject; ⑤ update package.json dsh.client.inject (drop dsh-client-runtime) and the devDependencies link.

snapshot0810 (v0.9.1) — profile installation

# 1. Clone the repo; build artifacts are checked in, no build needed
git clone https://github.com/lhh010/dsh-ui-progress.git
cd dsh-ui-progress && pnpm install

# 2. Install into the web profile (equivalent to running pnpm add under $DSH_HOME/profiles/web)
dsh plugin --profile web add link:/path/to/dsh-ui-progress
#   or as a pinned-tag git dependency:
#   dsh plugin --profile web add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.9.1'

snapshot0809 users pin #v0.9.0 (0809 build); snapshot0808 users pin #v0.8.0 (0808 build, also compatible with 0809 hosts); snapshot0807 users pin #v0.6.0 (old slot contract conversation.chat.toolview, not applicable to 0808/0809).

Since v0.8.0 the host half is empty (no longer registers a report_progress tool or reporting guidance): after an upgrade install there is no need to restart dsh web — the browser half takes effect on page refresh. The 0809 host validates the build artifacts of dshClient packages at activation (missing artifacts throw ClientPackageCompositionError and refuse to start) — after upgrading the snapshot or changing the source, you must re-run pnpm run build before starting.

Configuration line ($DSH_HOME/profiles/web/cordis.patch.yml, hot-reloaded, no restart needed):

- insert:
    - id: dsh-ui-progress
      name: '@dsh-external/dsh-ui-progress'

snapshot0805 (v0.1.0) — legacy installation

# 1. Clone the repo; build artifacts are checked in, no build needed
git clone https://github.com/lhh010/dsh-ui-progress.git
cd dsh-ui-progress && pnpm install

# 2. Get the package into the harness dependency chain (at the DSH snapshot root, the one ~/.dsh/source/current points to)
pnpm add -w link:/path/to/dsh-ui-progress

If your pnpm refuses pnpm add -w due to a store version mismatch, you can symlink manually instead: mkdir -p node_modules/@dsh-external && ln -s /path/to/dsh-ui-progress node_modules/@dsh-external/dsh-ui-progress

Option 2: git dependency (pinned commit/tag, no implicit latest)

# Run at the harness root; <commit> is the release commit (use tag v0.1.0 for 0805)
pnpm add '@dsh-external/dsh-ui-progress@github:lhh010/dsh-ui-progress#v0.1.0'

Configuration line (legacy 0805 mechanism)

~/.dsh/config.yaml (create it if it does not exist):

- insert:
    - id: dsh-ui-progress
      name: '@dsh-external/dsh-ui-progress'

Restarting dsh web

Plugin-set changes follow the "restart to take effect" discipline (applicable under the legacy 0805 mechanism; with the 0806+ profile method the configuration line hot-reloads and no restart is needed). Since v0.8.0 the host half is empty, so browser-half updates only need a page refresh. Stop the current web (Ctrl+C) and start it again.

Verification

While a session is running: the loader on the left of the persistent progress bar above the input spins; while running it shows the real-time elapsed time, the real-time token generation rate (self-calibrating estimate + 1s sliding-window smoothing, shown while the model is generating, e.g. 12.3 tok/s, refreshed once per second) and the ETA (when reported by the model). Sessions with a todos list show the real completion ratio; sessions without todos keep the fill fixed at 100%. After manually stopping a session or an API-error interruption, the progress bar switches to the orange-red "已中断" state; after the interruption, sending again and completing normally restores the green completed state.