dsh-plugins/dsh-auxiliary ↗★ 12

@dsh-plugin/dsh-auxiliary

DeepSeek Harness plugin that uses configured model providers for image analysis and context compaction. 提供图像分析和上下文精简功能,适合需要处理多模态输入或长文本优化的任务。

Package
@dsh-plugin/dsh-auxiliary
Compatibility
Unverified
Cordis peer range
^4.0.1
Version
0.6.4
License
LGPL-3.0
Last updated
Sep 6, 2026

Other repositories with this package name

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:dsh-plugins/dsh-auxiliary

Configuration

All fields are optional; defaults are shown.

- name: '@dsh-plugin/dsh-auxiliary'
  config:
    vision:
      maxTokens: 2048                      # inspect_image output cap (provider/model written by the settings page)
      handoff: true                        # text-only main models may reference chat images via describe_image
      skipWhenMainModelSupportsImage: false # image-capable main models get no vision tools/prompt injected
    tool:
      enabled: true                        # register the inspect_image tool
      maxImageBytes: 10485760              # per-file size cap
      timeoutMs: 120000                    # cooperative tool-call budget
    compact:
      enabled: false                       # reroute compaction summaries to an auxiliary model
      provider: ""                         # e.g. deepseek-official (a registered provider route id)
      model: ""                            # e.g. deepseek-chat (a model id on that provider)
    approve:
      enabled: false                       # give @dsh-plugin/dsh-approve-for-me's reviews a dedicated model
      provider: ""                         # e.g. deepseek-official (a registered provider route id)
      model: ""                            # e.g. deepseek-chat (a model id on that provider)
    subagent:
      enabled: false                       # route delegated subagents to a dedicated model
      provider: ""                         # e.g. deepseek-official
      model: ""                            # e.g. deepseek-chat
    title:
      enabled: false                       # route session-title calls to a dedicated model
      provider: ""                         # e.g. deepseek-official
      model: ""                            # e.g. deepseek-chat
    imagegen:
      enabled: false                       # register generate_image with a dedicated image model
      provider: ""                         # e.g. lanqin-gpt (an OpenAI-compatible provider route)
      model: ""                            # e.g. gpt-image-2 (marked Allow image generation)
    engine:
      enabled: false                       # optional compression engine (mutually exclusive with dsh-compaction-basic)
      thresholdRatio: 0.8
      retainRatio: 0.16
      maxTokens: 8192
      compactionRetries: 1
      maxOverflowRetries: 1
      auto: true
      compressPrompt: "..."                # custom compression instruction

Settings page: Auxiliary Models

Auxiliary Models settings page

The plugin ships a web settings section (Settings → Auxiliary Models). Configure providers and models in the Models page first, then use the feature cards here: each card has its own enable switch and provider/model picker. The picker presents all currently available models together, grouped by provider (the image-generation card lists only models marked Allow image generation). A saved route that is temporarily absent from the catalog is kept and is never replaced automatically.

Marking models in the catalog

For a user-configured llm-pi-ai model, open its model settings under Settings → Models → Provider → Customized settings → Models → Model settings:

  • Allow image input writes the canonical input declaration ([text, image] when checked, [text] when cleared) — consumed by inspect_image and the main chat composer. Enable only when the upstream endpoint actually accepts images.
  • Allow image generation writes imageGeneration: true — the mark that makes the model selectable in the Image-generation model card. Enable only when the upstream endpoint actually generates images.

The checkboxes are injected into every user-owned llm-pi-ai model row, inside the same capacity disclosure as the Context window and Max output tokens fields, so they stay out of the way until that row fold is expanded. A model you are adding inside the custom-provider create card gets working checkboxes too; a row added without a model id shows both checkboxes disabled inside that fold until an id is typed, and editing an existing model id carries its saved capability marks to the new id. A changed mark is recorded in the browser first and written after the page saves the provider settings (Apply), so you can edit other model fields alongside image capabilities without tripping the page's own "settings changed elsewhere" revision conflict. Rows that cannot carry the marks explain why instead of staying silent: DeepSeek-official (or any non-pi-ai adapter) rows show a notice that the marks are llm-pi-ai-only, and pi-ai catalog rows not yet saved into the user section say to save the model first.

The same fold also exposes thinking-level configuration: a list of rows adds/removes levels (only off, minimal, low, medium, high, xhigh, max), a pencil button batch-edits text such as [low, high, max] and rejects the whole input when any entry is invalid, and the default-thinking dropdown offers only the levels present in the list. New models start with an empty list and no default. These read and write the OFFICIAL model reasoningEfforts field (level → same-name wire token, off → null) and the provider-level reasoning default — the very data pi-ai uses to decide whether a model is a reasoning model and to render the composer's reasoning-effort picker, so this editor is just an authoring surface for the official mechanism, with no plugin-owned storage. Changes are still written only after the provider card Apply closes, so they never race the page's revision checks.

Previous versions stored the levels in plugin-owned fields (thinkingLevels / defaultThinkingLevel); the first save after upgrading migrates them to the official fields and drops the old ones.