lylarcher/dsh-model-capabilities0

dsh-model-capabilities

DSH 模型能力配置插件,可在设置界面直接编辑各模型的输入模态(文本/图像)和推理强度(含自定义 wire 值),支持所有配置的提供商与模型。

AI 分析

核心用途是免去手动编辑配置文件,直接在 UI 中调整模型底层能力。适合需要精细控制多模态输入和推理行为的高级用户,可与 WJZ-P 插件互补。

包名
dsh-model-capabilities
版本
0.1.0
许可证
MIT
最近更新
2026年8月29日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:lylarcher/dsh-model-capabilities

dsh-model-capabilities

A DeepSeek Harness plugin that lets you edit each model's input modalities (input: ["text", "image"]) and per-model reasoningEfforts directly from the Settings UI — no hand-editing settings.yaml.

It works on DSH Web and DSH Desktop: Desktop runs the same web bundle in compatibility mode on the same profile, so no extra registration is needed.

How this relates to WJZ-P/dsh-model-capabilities (dsh-model-capability): that plugin adds a single input-type selector into the native Models editor. This package is a complement, not a clone — it adds the two things that plugin (and the built-in Models page) leave out:

  • reasoningEfforts (per-level reasoning wiring: minimal|low|medium|high|xhigh|max + off, with custom wire values) — WJZ-P's plugin does not cover reasoning at all.
  • A whole-profile, batch view: it enumerates every configured model under both providers..models[] and providers..modelOverrides at once, so you can review and write to all of them from one place.

If you only need the input: text/image picker while adding a model, WJZ-P's inline field is the lighter choice; if you also need reasoning wiring and a full overview of configured models (incl. overrides), this package is what you want.

What it adds

A new Settings section ("Model Input & Reasoning" / 模型输入与推理) that:

  • Lists every configured provider and its models (providers..models[] and providers..modelOverrides).
  • Lets you toggle input modalities (text, image) per model.
  • Lets you set reasoningEfforts per model:
    • Non-reasoning → writes reasoningEfforts: false.
    • Reasoning → fill a wire value per level (minimal|low|medium|high|xhigh|max); off may be left empty (send no reasoning parameter). At least one non-off level must be filled.
  • Writes straight through the existing llm-pi-ai settings namespace (settings.mutate), so the running llm-pi-ai adapter re-registers routes and the model picker shows the new reasoning levels immediately, and the change persists to settings.yaml.

The existing built-in "Models" page intentionally does not expose these two per-model fields (reasoning is a per-model capability); this plugin fills exactly that gap with a dedicated page.

Install

dsh plugin --profile  add dsh-model-capabilities
# then restart DSH (web or desktop) to load the new bundle

dsh plugin add installs the package into the profile (profiles//node_modules), appends it to dsh.profile.bundles, and applies the package's cordis.patch.yml (which activates the minimal host entry that the client-modules node half needs to discover and serve the browser bundle).

Alternatively, for a local mount:

  1. Put the built package under profiles//node_modules/dsh-model-capabilities/.
  2. Add "dsh-model-capabilities" to dsh.profile.bundles in profiles//package.json.
  3. Restart DSH.

Uninstall

dsh plugin --profile  remove dsh-model-capabilities

Or remove it from dsh.profile.bundles (and the following unneeded entry in your profile's own cordis.patch.yml):

- id: model-capabilities
  disabled: true   # or delete this block entirely

Build (from source)

pnpm install
pnpm build      # tsdown → lib/client.js (client-modules format) ; lib/index.js is hand-written

Prerequisites: Node ^22.19 / >=24 and pnpm. tsdown must be >= 0.22 (older 0.7.x ships a rolldown that fails to expose transformPlugin).

Requirements & behavior notes

  • The section reads/writes the llm-pi-ai settings namespace. If no provider/model is configured yet (the section would be empty), add one under the built-in Models page first.
  • Validation mirrors the llm-pi-ai schema (MODALITIES = [text, image]; THINKING_LEVELS = [off, minimal, low, medium, high, xhigh, max]; reasoningEfforts is false or a {level → string|null} map with only off allowed empty). Invalid values are rejected client-side, and the host schema re-validates as the final guard.
  • On a read-only connection the page shows a notice and disables saving.
  • Write conflicts (stale revision) are surfaced and the page refreshes for a retry.