Preface¶
In the plugin architecture of DeepSeek Harness (DSH), managing the catalogs of multiple model providers, building model portraits, and selecting the primary model for Agents are common needs in daily development. The dsh-multi-model-provider plugin is maintained by AlexKaiqi and aims to provide a unified model catalog, portrait building support, Agent model selection, and multimodal runtime capabilities. This plugin uses the MIT license and belongs to the model inference category.
Core Features¶
The plugin mainly provides the following three core capabilities:
- Model Registration: Registers language models and other task models (such as image, audio, video, Embedding, etc.) into a unified catalog.
- Portrait Building: Provides evidence-based portraits for registered or selected models and performs eight Token speed probing.
- Agent Model Selection: Selects the primary language model for Agents from a dynamic catalog.
Usage¶
Agent Model Selection¶
Other plugins read catalog information by injecting modelCatalog. To get the current list of available Agent model candidates, use snapshot(). Then, specify the primary model for the Agent using selectAgentModel().
// 注入 modelCatalog
export const inject = ['modelCatalog']
// 获取当前的语言模型候选列表
const snapshot = await ctx.modelCatalog.snapshot()
// 选择指定的主模型
await ctx.modelCatalog.selectAgentModel({
provider: 'volcengine',
model: 'doubao-seed-1-6',
})
Model Routing and Task Model Management¶
The plugin provides command-line tools to manage model routing and task model registration.
Language Model Routing¶
Use configure_model_route and list_model_routes to manage the primary language model.
// 配置模型路由
await ctx.modelCatalog.configure_model_route(...)
// 列出所有模型路由
await ctx.modelCatalog.list_model_routes()
Task Model Registration¶
For non-language models (such as reranking), use register_task_model and list_task_models to register and manage them.
// 注册任务模型
await ctx.modelCatalog.register_task_model(...)
// 列出任务模型注册
await ctx.modelCatalog.list_task_models()
Disabling Routes¶
If you need to disable all routes on the connection, pass an empty array in select_task_models.
// 禁用连接上的所有路由
await ctx.modelCatalog.select_task_models({ ids: [] })
Settings Interface Configuration¶
In DSH 0.1.2-rc.1 and later, you can directly configure Volcengine Ark through the settings interface. The path is:
Settings → Models → Configure Volcengine Ark.
On this page, enter the official pay-as-you-go base URL https://ark.cn-beijing.volces.com/api/v3, fill in the API Key, retrieve the account catalog, select a model ID, and then save. Errors in the list remain visible, and you can also manually enter an exact model ID or ep-* endpoint ID.
Important Notes¶
- Non-Language Model Invocation Limitations: Installing this plugin does not make image, audio, or realtime models callable. Realtime model adapters are provided by
dsh-realtime-voice. - Route Status: A route is declared as “registration only” until its declared runtime adapter and credentials are available.
- Disabled Models: OpenAI Sora 2 / Pro and Music 3.0 remain disabled because the provider API is a legacy interface or is unavailable to new users.
- Metadata Persistence:
maxTokensmetadata used only for discovery is validated but not persisted as a request default, to prevent large values from causing incompatiblemax_output_tokensvalues. - Credential References: Registration tools accept credential references (such as
OPENAPI_KEY) rather than actual API Key values. Users enter actual values only in secure credential fields in the settings. - Data Authenticity: The plugin does not fabricate benchmark scores, latency ranges, or
lastProberesults.lastProbeis recorded only when the Agent explicitly callsvalidate_model_portrait(liveProbe=true).
Summary¶
This plugin is one of the core tools in DeepSeek Harness for managing the multi-model ecosystem. Through it, developers can centrally manage model catalogs and portraits and control Agent model selection programmatically. For more details and source code, refer to the project repository.