DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Effort Slider — DeepSeek Harness 插件(DSH Plugin)
← Plugins
E

@txc2768651338/dsh-effort-slider

Effort Slider

仿 Claude Code 推理等级滑块 DSH 插件:无极拖动、松手吸附、WebGL 火焰跟随、OFF/MAX 刻度、Low/Medium/High/Ultracode 状态;宿主侧通用思考强度供给——任何自定义第三方模型/提供商都能获得真实生效的思考强度调节。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:2768651338/dsh-effort-slider#ba3b7aca2080fdb1ee52b0187f92e5ebfa2bba05
README兼容性版本
Effort menu row coloredModel-seat trigger colored
Effort slider panel

兼容性与来源证明

Effort Slider 以 @txc2768651338/dsh-effort-slider 发布,当前版本为 0.5.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/2

版本

0.5.0stable
2026/10/2

相关插件

正在加载相关插件…

最新版
0.5.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
BSD-3-Clause
发布源
github
GitHub
★ 16
周下载
0
最近提交
2026/10/2
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Ab Chartdsh-ab-chart带有绘制其调用的浏览器卡片的图表渲染工具,封装在一个可发布的插件包中Web App@monotykamary/dsh-web-appdsh browser-surface 捆绑包:在 dsh-base 之上的 Web 补丁层,加上运行时衔接插件(前端 dist 提供服务、web-surface 提示符、Bash 运行时变量、URL 行)

README

dsh-effort-slider

A Claude Code–style reasoning-effort slider for DeepSeek Harness — click Effort in the model menu, drag without steps, snap on release, with a WebGL fire trail; any third-party model/provider gets real, working thinking-effort control.


English · 中文 · Español · 日本語 · Deutsch · Русский · Português · 한국어

Click the Effort row (second row of the official model menu) instead of the built-in level list: an Effort slider panel pops up — OFF/MAX scale ticks, Low/Medium/High/Ultracode status shown live, and after the panel closes the effort value stays color-coded on the menu row and on the model-seat trigger button.

Features · Compatibility · Install / Uninstall · Quick Start · Configuration · Permissions & Data · How It Works · Troubleshooting · Development

Demo screenshots (menu-row coloring / model-seat trigger / Effort panel — effort level is color-coded):

Menu rowModel-seat triggerEffort panel
Effort menu row coloredModel-seat trigger coloredEffort slider panel

🆕 v0.5.0 — Evaluation-fix batch. Reliability: the panel splits loading / load-failed / unsupported into three states with a retry button; failed slider writes surface a transient red status instead of failing silently; user config edits made mid-provision are detected (the entry is re-read before mutate, conflicting rounds defer); every host provisioning failure path now logs a warning, and an unrecognized Effort row produces a one-time diagnostic. Panel UX: re-anchors on scroll/resize, closes on Esc / outside click / anchor unmount, and clicking the Effort row toggles it; tick dots and labels align with the real snap points; the slider carries aria-label / aria-valuetext; UI text is bilingual (zh/en, follows <html lang>). New debugReport option: per-route/per-model provisioning detail plus an optional read-only llm/stream tracer logging route/model/effort per request; a ? help hint in the panel header points at enabled / dialect / debugReport. Also: GitHub Actions CI (typecheck + tests + build + stale-artifact gate), the WebGL fire no longer burns at 60 fps while invisible, and the npm package is renamed to @txc2768651338/dsh-effort-slider (the old unscoped dsh-effort-slider name is retired).

🆕 v0.4.0 — Ported to DSH 0.2.0: DSH replaced its settings service with SettingsForms (settings are now profile entry configs; installSection / settings.get / settings/updated are gone). The host half now locates the pi-ai profile entry (llm-pi-ai), reads it via settings.describe(), writes via settings.mutate(), and listens to settings/document-updated. The client half derives the current session from retainedBy.mainView (SessionListState.current was removed). Plugin options (enabled / defaultDialect / routes) live in the plugin's entry config, editable in the DSH settings page. DSH ≤ 0.1.5 is no longer supported (use v0.3.0 there).

🆕 v0.3.0 — Ported to DSH 0.1.5: client Context now comes from @deepseek-ai/cordis, per-session state is read/written via ctx.modelDirectories, and the settings section is installed via settings.installSection(); the adapter-metadata wrapper was dropped (see Universal effort provisioning). DSH ≤ 0.1.1 is no longer supported.

🔧 v0.2.5 — Fixed universal provisioning failing silently on explicit arrays (dsh-settings path ops cannot traverse array nodes — the array is now replaced as a whole).


Features

FeatureDescription
🎚️ Stepless draggingContinuous 0–100 dragging that writes reasoningEffort in real time (16 ms throttle, no request pile-up while dragging)
🎯 Snap on releaseSnaps to the nearest level on release / blur / keyboard end, with one confirmation write
🔥 WebGL fire trailThree-pass shaders (ignite → blur → composite); the fire front follows the thumb with spring damping
🏁 OFF/MAX ticksFirst/last levels always show OFF / MAX; middle levels show the API-returned name
🎨 Level statusEffort name shown in the panel header, colored/glowing per level; menu row and model-seat trigger keep the same color after closing (v0.2.3)
🌐 Universal effortThird-party models without reasoning metadata automatically get the universal 5-level scale; pi-ai models get wire-level dictionaries patched in, hot-applied (v0.2.0)

Only reasoningEffort is written — model selection is untouched. Models with no multi-level reasoning show 「当前模型不提供多档推理等级」 (no multi-level reasoning available).

Universal effort provisioning (v0.2.0, simplified in v0.3.0)

Any custom third-party model/provider gets thinking-effort control that actually works on the wire:

  • Wire-level provisioning (host, pi-ai): for llm-pi-ai models missing reasoningEfforts, the dictionary and compat wire dialect are patched in (hot-applied, no restart); pi-ai translates the level into real wire fields (reasoning_effort / thinking / OpenRouter reasoning.effort, etc.) and advertises the same declaration as the model's reasoning catalog metadata — which is what makes the official Effort row appear for a hand-declared model at all;
  • Client fallback scale: if the directory returns no reasoning metadata, the panel still opens with the universal 5-level scale;
  • Existing user declarations (reasoningEfforts: false or a custom dictionary) are always respected and never overwritten.

Why there is no adapter wrapper any more. Up to v0.2.5 the host half also wrapped each adapter's resolveModel to inject universalReasoning into models that declared no reasoning metadata. DSH 0.1.5 made llm.adapters a private field with no public accessor, so that path is impossible — and unnecessary: reasoningEfforts is the one declaration that feeds both the request wire and the model catalog. Model-level compat is only written when the route declares api: openai-completions, because pi-ai refuses a switch the model's protocol cannot read.

Supported wire dialects for custom endpoints (set effort-slider.defaultDialect or routes.<route>). A dialect translates levels on api: openai-completions routes only — native protocols use pi-ai's built-in mapping, so the dialect setting has no wire effect there:

DialectWire effect
effort (default)OpenAI-style reasoning_effort: low/medium/high/max
deepseekthinking:{type} toggle + reasoning_effort
openrouterreasoning: { effort } (OpenRouter normalized)
together / zaireasoning.enabled / thinking:{type} + optional effort
qwenenable_thinking toggle
string-thinking / ant-lingthinking / reasoning.effort strings

Compatibility

ItemValue
DSH version0.2.0-rc.2 (the npm latest dist-tag; the version this build is verified against), web profile on Windows
Broken onDSH ≤ 0.1.5 — v0.4.0 targets the SettingsForms settings service introduced in 0.2.0 (use v0.3.0 for DSH 0.1.5; v0.2.5 and earlier also import @deepseek-ai/dsh-client-runtime, which was removed after 0.1.1-rc.2)
Install mechanismdsh plugin --profile web add (bundle patch + dual half)
Depends onctx.sessions (@deepseek-ai/dsh-api-session-controller) and ctx.modelDirectories (@deepseek-ai/dsh-client-ui-model-selection); host: ctx.llm, ctx.settings (SettingsForms)
Client module requestsnone beyond the platform baseline (react, react-dom/client, react/jsx-runtime) — all DSH imports are type-only and erased

Install / Uninstall

# Install from npm (the package listed on deepseek1024.com)
dsh plugin --profile web add @txc2768651338/dsh-effort-slider

# Or install from GitHub (the committed lib/ artifacts need no local build)
dsh plugin --profile web add github:2768651338/dsh-effort-slider#main

# Or build locally and install from a checkout
pnpm install && pnpm build
dsh plugin --profile web add file:./dsh-effort-slider

After installing, restart DeepSeek Harness and press Ctrl+F5 once in the web page. The lib/ artifacts are committed, so GitHub installs need no local build.

Coming from a version pinned to an old DSH? Remove any - id: ui-effort-slider / disabled: true row from ~/.dsh/profiles/web/cordis.patch.yml, otherwise the new build stays switched off.

ActionCommand
Upgradedsh plugin --profile web update @txc2768651338/dsh-effort-slider (or re-run add), then restart DSH
Uninstalldsh plugin --profile web remove @txc2768651338/dsh-effort-slider, then remove its row from cordis.patch.yml if any

Quick Start

  1. Install the plugin, restart DSH, press Ctrl+F5.
  2. Open the model menu above the composer → click Effort → the Effort slider panel appears.
  3. Drag to choose a level; it snaps on release. After the panel closes, the effort value keeps its color on the menu row.
  4. For custom models with no thinking effort, the panel opens with the universal 5-level scale; pi-ai models get their wire dictionaries patched on the host side (hot-applied).

A [effort-slider] intercept row: ... line in DevTools Console means interception is working.

Configuration

ItemDetails
Plugin optionsThe plugin's profile entry config (enabled / defaultDialect / routes / debugReport), editable in the DSH settings page (auto-generated form), applied on plugin remount
Defaultsenabled: true, defaultDialect: effort, debugReport: false
Environment variablesNone of its own; follows DSH's DSH_HOME resolution
Sensitive itemsNone — no keys, tokens, or credentials are read or stored
effort-slider:
  enabled: true          # provisioning master switch
  defaultDialect: effort # global default wire dialect
  routes:
    my-gateway: deepseek # per-route override
  debugReport: false     # per-run provisioning report (route/model/dialect/write-or-skip) + per-request effort trace (llm/stream) in the host log

Permissions & Data

ScopeWhat it touches
Files (read)None — no user files are read or written (settings go through DSH's settings service)
NetworkNone of its own — the panel reads and writes the Model Controller's in-browser directory; the resulting session.selectModel call rides DSH's existing connection
CredentialsNever read
User dataNot read (no access to conversation content/messages/prompts; only the current session's provider/model/reasoningEffort through the shared model directory)

How It Works

HalfFileRole
Hostlib/index.jsUniversal effort provisioning: locates the pi-ai profile entry (llm-pi-ai), reads it via settings.describe(), patches wire dialects (buildProvisionOps, idempotent, respects user declarations) via settings.mutate; listens to llm/adapters-updated / settings/document-updated. With debugReport: true, each provisioning run logs a per-route/per-model report (written fields or skip reason, plus a note where the wire dialect does not apply) instead of the one-line count, and each model call is traced as [debug] request route=… model=… effort=… through a read-only llm/stream passthrough
Browserlib/client.jsCaptures clicks on the model menu's Effort row → shows the Effort panel; reads ctx.modelDirectories.directoryFor(sessionId) and writes through directory.select({ reasoningEffort }); a MutationObserver keeps the menu-row level color alive after the panel closes

The browser half follows the official external-plugin convention: classic script + window.__ModuleLoader__.load factory; react / react-dom/client / react/jsx-runtime are platform externals; effort.module.css is hashed and inlined by lightningcss, injected as <style data-plugin> when the factory runs.

Troubleshooting

SymptomFix
No Effort row in the model menuThe model declares no reasoning metadata and host provisioning is not in effect — confirm DSH was restarted and check enabled on the plugin's settings page (its profile entry config); set debugReport: true and check the host log for the per-model provisioning report
Panel says 「当前模型不支持思考强度调节」Universal fallback not active — upgrade to v0.2.0+ and restart
Plugin does not load at all (row shows disabled: true)An earlier build was switched off in ~/.dsh/profiles/web/cordis.patch.yml; delete that row and restart
Dragging has no effectCheck whether the target endpoint's wire dialect matches (see the dialect table — dialects translate only on api: openai-completions routes) or set defaultDialect for that route. With debugReport: true the host log covers the whole chain you can verify: the per-model report states exactly what was written (or skipped, and why) and flags routes where the dialect does not apply, and [debug] request route=… model=… effort=… lines prove which level each call carries. That leaves only the wire translation inside pi-ai, which no plugin can observe. The panel's ? button repeats this checklist
Conflicts with other skin pluginsIf another skin that intercepts the Effort row is installed (e.g. the aurora skin of dsh-ui-web), disable its interception to avoid double panels
Version still shows old after restartfile: installs are snapshot copies — use the github: spec or re-run add before restarting
Where are the logs?Host errors: DSH startup log (with debugReport: true, provisioning details and per-request effort traces are logged as effort-slider: [debug] lines); client errors: browser DevTools (F12) Console ([effort-slider] prefix)

Project Structure

src/
  index.ts                  host half: pi-ai wire provisioning via the SettingsForms seam
  effort-core.ts             pure logic: dialect → wire mapping, provisioning patches (unit-tested)
  client/
    index.ts                browser half: intercept the Effort row + panel anchor + menu-row coloring
    css-modules.d.ts
    effort/
      directory.ts          structural face of ctx.modelDirectories / ctx.sessions (type-only, no DSH runtime import)
      EffortPanel.tsx       Effort panel (levels / ticks / slider / glow)
      useWebglFire.ts       WebGL2 three-pass fire loop (spring follow + idle sleep)
      shaders.ts             vertex / ignite / blur / composite shaders
      effortColors.ts        level → color mapping (panel and menu row share it)
      effort.module.css      panel styles (inlined via lightningcss)
cordis.patch.yml           bundle patch (inserts the ui-effort-slider row)
lib/                        built artifacts (client.js ships with sourcemap)
test/                      host.spec.mjs unit tests + host-apply.spec.mjs + client.smoke.mjs

Development

pnpm install
pnpm build       # tsdown → lib/index.js (host half) + lib/client.js (browser half)
pnpm typecheck   # tsc --noEmit (green against @deepseek-ai/* 0.2.0-rc.2)
pnpm test        # host unit tests + apply integration test + real-seam integration test + jsdom smoke

test/ layers, cheapest first:

FileScope
host.spec.mjsPure logic: dialect → wire mapping, provisioning patch generation, idempotency
host-apply.spec.mjsapply() against a mocked cordis context: late pi-ai entry retry, compat gating on the declared protocol, settings/document-updated idempotency
host-integration.spec.mjsReal seam: real @deepseek-ai/cordis + a faithful SettingsForms seam double (0.2.0's npm packages have no standalone provider) — entry discovery, real path-op writes landing in the profile entry config, and the written reasoningEfforts/compat passing pi-ai's validation rules
client.smoke.mjsjsdom: bundle factory materialization, Effort-row interception, panel render, drag/snap writes through directory.select, coloring, teardown

Contributing. Fork → change → pnpm build → run pnpm test → open a PR against main. Small fixes (docs, tests) are welcome without prior discussion; report issues with the DSH version and the exact error.

License & Security

License: BSD-3-Clause — see LICENSE. The UI implementation references the aurora skin of the community dsh-ui-web project (BSD-3-Clause); full upstream notices and license texts are in THIRD_PARTY_NOTICES.md.

Security: this plugin reads no credentials and sends nothing over the network (only talks to the local DSH). To report a security issue privately, use GitHub's Report a vulnerability on the Security tab — do not open a public issue with exploit details.

Star History

Star History Chart

BSD-3-Clause © 2768651338

models

🔧 v0.2.4 — Fixed universal provisioning never landing when the pi-ai settings section registers late (now retries until the section is ready).

🆕 v0.2.3 — The model-seat trigger button also color-codes its effort name, persistent after the menu closes.

🔧 v0.2.2 — Fixed menu-row coloring breaking on whole-menu remounts (full-scan throttled repaint; color inferred from the effort text).

🆕 v0.2.1 — The effort value on the model menu's Effort row keeps its level color after the panel closes.

✨ v0.2.0 — Any custom third-party model/provider gets working thinking-effort control (hot-applied).

🎛️ v0.1.0 — Initial release: intercepts the official Effort menu and shows a Claude Code–style Effort slider panel.

Full notes for each version: Releases