Live progress bar under the composer with a percentage and an estimated time left for the current DeepSeek Harness turn; the estimate re-anchors as the turn runs and never reads 100% until the turn ends, and the bar turns red when the turn fails or is interrupted.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:778672151/dsh-session-turn-eta
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Live remaining-time prediction for the current DeepSeek Harness turn, shown as a progress bar with a live percentage under the composer.
- Running — a bar whose width follows elapsed time over the predicted total,
with a percentage and a humanised time left (
~12m 34s left/约剩 12 分 34 秒). The percentage ticks locally while the turn is open. - Finishing — once a turn outruns its own estimate the bar fills and pulses with a "finishing" label, instead of a misleading "0s left".
- Completed — 100%.
- Failed or interrupted — the bar turns red and reads "progress interrupted".
Install
dsh plugin --profile web add github:778672151/dsh-session-turn-eta
The repository ships a prebuilt lib/, so installing does not run a build step.
Restart dsh web if the profile asks for it, then send any message: the bar
appears under the input box while the turn runs.
Compatibility
| DeepSeek Harness | tested against @deepseek-ai/dsh-* 0.1.5-rc.1 (checkout aa8262ec09) |
@deepseek-ai/cordis |
>=4.0.0-rc <5 |
@deepseek-ai/dsh-session |
>=0.0.1-rc <2 |
@deepseek-ai/dsh-session-projection |
>=0.0.1-rc <2 |
| Node | 24.x for building; the shipped bundle runs on the DSH host |
How it works
The host half registers a turnEta session projection: it folds the durable
turn/start, step/start, step/end and turn/end events into a prediction.
- The per-step rate blends the live turn's own observed rate with the session's median historical step duration, so one very long step (an idle gap) cannot distort it.
- The expected step count is the conditional median of the finished turns that were at least as long as this one, so a growing turn keeps a live estimate.
- The published total is held while it still outruns the turn and re-anchored to the live estimate as soon as the turn runs past it, so the estimate never sits at 100% while the turn keeps working.
- Every finished turn anchors the next one, whatever closed it (a turn that errored or was aborted is still evidence of how long turns run); the first turn bootstraps from a prior until the session has real history.
The client half reads that projection through the standard useProjection seat
and renders it on the conversation.composer.dock slot. The plugin never
mutates the session and registers no model-visible capability.
Build
The published bundle is built by tsdown (no monorepo checkout required):
npm install
npm run build # -> lib/index.js (host) + lib/client.js (client)
npm test # host estimator invariants + client render states
scripts/build.sh is an optional development helper that links a local DSH
checkout and type-checks the host half with that checkout's tsc.
License
MIT
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 8405
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 8405
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
ccch1mneyyy/dsh-TUI★ 4088
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4076
A fixed-corner whale widget for the DSH web GUI — balance, today's usage and per-turn cost with peak/off-peak pricing, editable balance-alert and daily-budget bubbles, a module-based custom bubble queue with A/B weighted choices and random lines or images, 30+ vendor templates (OpenAI, OpenRouter, Kimi, SiliconFlow, Ark, Zhipu, MiniMax and more) with per-model balance and subscription quota, plus task-end sound, imported audio, custom roles and a resource manager. Local-only, no telemetry.
omdsh-dev/DSH-better-sidebar★ 4009
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
Devin-AXIS/deepseek-design#deepseek-idesign★ 1423
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.