DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Api Thinking — DeepSeek Harness 插件(DSH Plugin)
← Plugins

dsh-api-thinking

Api Thinking

DSH 配置文件包:从各自的端点读取每个第三方模型的思考级别,并使 llm-pi-ai 的 reasoningEfforts 保持同步

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-api-thinking@0.1.2
README兼容性版本

兼容性与来源证明

Api Thinking 以 dsh-api-thinking 发布,当前版本为 0.1.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/10/16

版本

0.1.2stable
2026/10/16
0.1.1stable
2026/10/15

相关插件

正在加载相关插件…

最新版
0.1.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
130.9 kB
文件数
16
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 2
周下载
0
最近提交
2026/10/16
查看源码 ↗
README Badge

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

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

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

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

相关插件

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

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片Client Ui Model Capabilities@linxin666/dsh-client-ui-model-capabilities为自定义 pi-ai 提供商声明每个模型的能力(图像输入和推理力度),可直接在 Models 设置卡片中编辑;写入官方 llm-pi-ai 设置命名空间,不更改 DSH 源代码。Plugin@opencode2dsh/dsh-plugin供 DeepSeek Harness (DSH) 使用的免费 OpenCode Zen 模型:原生 dsh-llm 适配器插件,无需 API 密钥。

README

api_thinking

Reads each third-party API's own model listing and syncs every model's real thinking levels into DSH

中文 · MIT

api_thinking is a community-maintained DeepSeek Harness (DSH) plugin. It is not a DeepSeek AI product.

The problem it solves

DSH's built-in model catalogue does not contain your third-party APIs. To get them into the model picker at all, you declare an llm-pi-ai route by hand and list its models: yourself.

But a hand-written models: list replaces the installed catalogue outright. Those models are neither in the catalogue nor declare reasoningEfforts, so dsh-llm-pi-ai treats them as non-reasoning and the composer offers no thinking levels.

Writing the levels into YAML fixes that once — and goes stale immediately: nobody adds them when the gateway ships a new model, and nobody updates them when upstream changes what it supports.

Yet an OpenAI-compatible gateway usually already publishes that capability in its own model listing. This plugin reads it and writes the result back into your configuration, so you stop maintaining that YAML by hand.

Features

  • Automatic level sync — requests each route's model listing and writes the levels the endpoint publishes into the matching model's reasoningEfforts.
  • New APIs just work — add a route, or add models to an existing one; no plugin change, no restart.
  • Never invents capability — an endpoint that says nothing about reasoning is left exactly as it is; hand-written levels are never erased.
  • Owns exactly one field — it owns reasoningEfforts and nothing else; comments, !!js expressions and every other field stay as they were.
  • Idempotent — a sweep that finds nothing to change writes no file at all.
  • Self-diagnosing — every load and every sweep records a status document, so there is always something to read when it misbehaves.

Install

Requires a working DeepSeek Harness installation. The examples use the desktop profile — substitute your own profile name.

From the plugin page

Open Settings → Plugins in the DSH web UI, search for dsh-api-thinking and install it. An agent can also call the plugin manager's install_bundle directly.

From the command line

dsh plugin --profile desktop add dsh-api-thinking

Restart DSH and refresh the page afterwards.

Let an agent do it

Paste this to an agent that can run terminal commands and is connected to your DSH:

Install dsh-api-thinking into my DSH profile, confirm it is active, and tell me how to reload.

Uninstall

Switch it off or uninstall it from the plugin page, or remove the dsh-api-thinking dependency from that profile's package.json and delete it from the dsh.profile.bundles array.

Usage

It works as soon as it is installed — there is no switch to turn on. The plugin walks every route under the llm-pi-ai row:

What you wantHow
Get thinking levels on a modelConfigure the route and its models in Settings → Models and give it a moment
Add a new APIAdd it in the model page; the levels follow on their own
Narrow the scopeSet routes to the route names you care about; the default covers every OpenAI-compatible route
Change the sweep cadenceSet intervalMs; 0 means "sweep once after load, then stop"
Find out why nothing happenedRead the status document — see Troubleshooting

Rules

A model's capability comes from the first matching field in the endpoint's model listing:

PurposeFields, in priority order
Selectable levelsreasoning_supported_efforts → supported_efforts → reasoning_efforts
Whether thinking can be turned offcan_disable_thinking → reasoning_can_disable
Whether it reasons at allsupports_reasoning → reasoning
A pinned effortreasoning_effort → fixed_effort → effort

What gets written:

The endpoint saysWritten reasoningEfforts
A selectable set{ low: low, high: high, ... }, filtered to the levels DSH can name (off / minimal / low / medium / high / xhigh / max), in escalation order
No set, but one pinned effortThat single level — the picker shows what the model actually runs at (selecting it is a no-op). Turn off with fixedEffortAsLevel: false
Explicit supports_reasoning: falsefalse
It reasons, but publishes neither a set nor a pinned effortThe key is removed (writing false would claim it does not reason)
Nothing at all about reasoningLeft untouched
The model is not in the listingLeft untouched

The last two are deliberate safety design: LiteLLM, vLLM and most self-hosted gateways publish no capability data, and treating that silence as "no levels" would erase hand-written configuration. The plugin only ever acts on what the endpoint actually states.

includeOff defaults to off. When no level is selected, the pi-ai adapter sends the mapped off value as the default — so adding off to a model that allows disabling thinking would silently turn "provider default" into "no thinking". It has to be enabled explicitly.

Configuration

- insert:
    - id: api-thinking
      name: dsh-api-thinking
      config:
        entryId: llm-pi-ai
        routes: []
        intervalMs: 120000
        startDelayMs: 3000
        timeoutMs: 15000
        includeOff: false
        fixedEffortAsLevel: true
        log: true
        statusFile: ''
OptionDefaultMeaning
entryIdllm-pi-aiThe profile row to read and write
routes[]Route names to manage; [] means every OpenAI-compatible route
intervalMs120000Re-sweep interval in milliseconds; 0 sweeps once after load
startDelayMs3000Delay before the first sweep, to let the profile finish loading
timeoutMs15000Per-endpoint model-listing timeout
includeOfffalseExpose off as a selectable level (see the caveat above)
fixedEffortAsLeveltrueShow a pinned effort as the single level
logtrueLog every change and every skipped route
statusFile''Status document path; '' means $DSH_HOME/api-thinking.status.json, false disables it

Overriding the bundle row: an override in your profile patch must repeat name: dsh-api-thinking word for word, or applyEntryPatches skips it silently.

When it runs

TriggerWhenWhat it covers
startstartDelayMs after load (3s by default)Full calibration on boot or reload
config-changeAfter the profile patch changes (via the HMR config watcher, 2s debounce)APIs, routes and models you just added or edited
intervalEvery intervalMs (120s by default)Backstop for upstream model and capability changes

Every sweep re-reads the row's providers from the composed profile layers rather than from the snapshot the plugin was instantiated with — which is what makes a route you just saved visible immediately.

Troubleshooting: why nothing happened

The host logger is not reliably reachable from a plugin, so every load and sweep writes its result to a status document (by default $DSH_HOME/api-thinking.status.json):

{
  "phase": "sweep", "reason": "interval", "wrote": true, "via": "patch-file", "error": null,
  "routes": [{ "route": "my-gateway", "models": 20, "listed": 51,
               "changes": [{ "id": "example-model", "to": { "low": "low", "high": "high" } }],
               "dropped": [], "error": null }]
}

Read these first:

FieldMeaning
phaseCurrent stage (apply / sweep)
errorFailure reason, including request errors the UI never shows
listedHow many models the endpoint returned
modelsHow many the route has configured
changesWhich models this sweep planned to change
wrote / viaWhether it wrote, and through which channel

A non-empty listed with an empty changes usually means the endpoint publishes no reasoning capability — see Rules.

Write channels

The plugin prefers the official channel and only falls back when it has to:

ChannelWhenWhat
config-editorNormal casectx.configEditor.edit() — the official path, with file locking, schema validation and Loader reconciliation
patch-fileWhen the above answers HMR transactions cannot be nestedEdits the profile patch directly; the same config watcher recomposes it

The fallback is unrelated to how the plugin was installed: a hot-reloaded plugin runs its apply() inside the very HMR transaction that replaced it, after which every write through the official channel is refused as a nested transaction. The fallback touches only the target models' reasoningEfforts (located by indentation, written to a temp file and renamed), leaving comments and every other field byte-identical.

Known limitations

  • It reads the model listing as its only source of capability. An endpoint that publishes nothing about reasoning is left alone.
  • Only protocols that can list models are supported: openai-completions, openai-responses, anthropic-messages.
  • Models are matched by exact id; no aliases or fuzzy matching.
  • The default meaning of off is constrained by the pi-ai adapter, which cannot express "selectable but not the default".
  • The fallback channel does no schema validation, only structural location.
  • Writing cordis.patch.yml at the same time as the settings page can in theory overwrite each other; the next sweep converges again (it is idempotent).

Feedback and contributing

Found a bug or have a suggestion? Please open an issue with your DSH version, the plugin version and reproduction steps.

npm test                              # 15 checks: pure logic, patch edits, composed config, real gateway catalogue
node tools/check_live.mjs             # live profile vs gateway, per model; drift should be 0
node tools/diff_gateway_profile.mjs   # "why is my new API missing": gateway vs profile, per model

The maintenance tools infer locations from the environment (DSH_HOME / DSH_PROFILE, or API_THINKING_PROFILE_DIR / API_THINKING_PROFILE) and read the gateway from API_THINKING_BASE_URL (optionally with API_THINKING_API_KEY) or API_THINKING_GATEWAY_CONFIG (a config.json holding { listen, api_key }).

License

MIT