Bundle
dsh-plugin-custom-provider-enhancer
DeepSeek Harness plugin that enhances custom provider setup by auto-discovering models and auto-populating contextWindow, maxTokens, vision, and reasoning capabilities from models.dev
- Source
- cinob
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 11 days ago
Readme
# DSH Custom Provider Enhancer
[](https://github.com/AdamPlatin123/awesome-dsh-plugins)
[](https://cordis.moe)
[](LICENSE)
[](package.json)
[](tests)
English | [简体中文](README.zh.md)
**DSH Custom Provider Enhancer** is an out-of-the-box DeepSeek Harness (DSH) / Cordis plugin designed for **Custom Model Providers** (e.g. OneAPI, NewAPI, OpenRouter, vLLM, Ollama, and OpenAI-compatible API gateways).
When discovering or saving models in the Web GUI, it automatically queries a 3000+ model database to populate **Context Window (`contextWindow`)**, **Max Output Tokens (`maxTokens`)**, **Multimodal Vision (`input: [text, image]`)**, and **Deep Thinking / Reasoning (`reasoningEfforts`)**.
---
## 📋 Table of Contents
- [Overview](#-overview)
- [Compatibility](#-compatibility)
- [Key Features](#-key-features)
- [Install](#install)
- [Configuration](#-configuration)
- [Quick Start](#-quick-start)
- [Permissions & Data Security](#-permissions--data-security)
- [Troubleshooting & Rollback](#-troubleshooting--rollback)
- [Development & Testing](#-development--testing)
- [License](#-license)
---
## 🎯 Overview
### What problem does it solve?
When users connect custom third-party gateways (e.g. OneAPI, NewAPI, vLLM, Ollama) to DeepSeek Harness, the standard `GET /models` discovery endpoint only returns raw model IDs (such as `gemini-3.7-flash`, `deepseek-v4-pro`, or `mimo-v2.5`). It omits critical runtime parameters:
- ❌ Missing context limits causes inaccurate token pressure metering or context overflows.
- ❌ Missing multimodal flags (`input: ['text', 'image']`) disables image uploads in the conversation interface.
- ❌ Missing reasoning levels (`reasoningEfforts`) hides the thinking intensity slider in chat.
### How does this plugin solve it?
1. **Auto Discovery & Specification Enrichment**: Intercepts `llm.discoverModels` and automatically fills correct context size and max output tokens.
2. **Vision & Thinking Auto-Injection**: Intercepts `llm.resolveModelInfo` and `settings.mutate` to automatically attach vision input and thinking levels both in runtime and in `settings.yaml` (`~/.dsh/settings.yaml`).
3. **Zero Official Interference**: Only affects custom third-party providers; native DeepSeek channels remain untouched.
---
## 🧭 Compatibility
| Environment | Supported Versions | Status |
| :--- | :--- | :--- |
| **DeepSeek Harness (DSH)** | `0.1.0-rc.1` ~ `mainline` | ✅ Verified (Runtime Compatible) |
| **Cordis Framework** | `^3.0.0` | ✅ Verified |
| **Node.js** | `^20.0.0 || ^22.0.0 || >=24.0.0` | ✅ Verified |
| **OS** | Linux, macOS, Windows | ✅ Cross-Platform |
---
## ✨ Key Features
- ⚡ **Zero-Config Automation**: Works right out of the box when adding custom providers in Web Settings.
- 📏 **Accurate Capacities**: Automatic 1M context for Gemini 3.7 Flash, 1000K for DeepSeek V4 Pro, 128K for GPT-4o, 256K for MiMo 2.5, etc.
- 👁️ **Automatic Vision Activation**: Unlocks image uploads and visual reasoning in Web chat for multimodal models (Gemini, Claude, GPT-4o, MiMo, Qwen-VL, etc.).
- 🧠 **Thinking Intensity Tiers**: Injects reasoning effort gears (`off`, `low`, `medium`, `high`, `max`) for reasoning models.
- 💾 **Dual-Layer Persistence**: Automatically writes clean parameters into `settings.yaml` on save, and patches legacy placeholder models in memory.
- 🛡️ **Fault-Tolerant & Offline Fallback**: Built-in 30+ core model definitions, local caching, timeout circuit-breaking, and fuzzy matching for dated model snapshots (`-20241120`).
---
## Install
As a standard DSH Profile Bundle, installation is one simple command:
```bash
dsh plugin --profile web add github:cinob/dsh-plugin-custom-provider-enhancer
```
> **Note**: As a Profile Bundle, the plugin automatically mounts and activates. There is **no need** to manually insert `custom-provider-enhancer` in `profiles/web/cordis.patch.yml`.
### Uninstallation
```bash
dsh plugin --profile web remove dsh-plugin-custom-provider-enhancer
```
---
## ⚙️ Configuration
Optional configuration in `$DSH_HOME/profiles/web/cordis.patch.yml`:
```yaml
- id: custom-provider-enhancer
config:
# Remote LiteLLM metadata catalog URL
metadataUrl: https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json
# Remote OpenRouter official model metadata URL
openrouterMetadataUrl: https://openrouter.ai/api/v1/models
# Request timeout in milliseconds (default: 6000ms)
timeoutMs: 6000
# In-memory cache TTL in milliseconds (default: 1 hour)
cacheTtlMs: 3600000
# Fallback context window when model is unknown (default: 128000)
defaultContextWindow: 128000
# Fallback max output tokens (default: 4096)
defaultMaxTokens: 4096
```
---
## ⚡ Quick Start
1. Start DSH Web GUI (`dsh web`).
2. Go to **Settings ➔ Models ➔ Add Provider**.
3. Fill in your Base URL and API Key, then click **Fetch available models**.
4. Check desired models and click **Adopt**, then click **Save**.
5. All specifications (`contextWindow`, `maxTokens`, `input`, `reasoningEfforts`) are automatically configured and saved!
---
## 🔒 Permissions & Data Security
- **Network Access**: Only requests the user-specified custom endpoint `GET /models` and public model specification database (`github.com/BerriAI/litellm`).
- **Zero Credential Leaks**: API Keys are passed through standard authorization headers only during user-initiated discovery; keys are never logged, forwarded, or stored by this plugin.
- **Local Sandbox Safe**: Strictly operates in-process through Cordis service hooks (`ctx.llm`, `ctx.settings`); creates no subprocesses or arbitrary file modifications.
---
## 🛠️ Troubleshooting & Rollback
- **Changes not reflecting**:
Ensure you click **Save** in Web Settings. If models were added prior to installing the plugin, opening Settings and clicking **Save** will auto-enrich them.
- **Rollback**:
Run `dsh plugin --profile web remove dsh-plugin-custom-provider-enhancer`.
---
## 💻 Development & Testing
```bash
# Clone repository
git clone https://github.com/cinob/dsh-plugin-custom-provider-enhancer.git
cd dsh-plugin-custom-provider-enhancer
# Install dependencies
pnpm install
# Run automated tests
pnpm test
# Build distribution bundle
pnpm build
```
---
## 📄 License
[MIT License](LICENSE)
Install
dsh plugin --profile web add github:cinob/dsh-plugin-custom-provider-enhancer
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-plugin-custom-provider-enhancer from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.