knowhycodata/dsh-plugin-llmtr0

dsh-plugin-llmtr

LLMTR AI gateway provider for the DeepSeek Harness LLM seam: 170+ chat models and Türkiye-hosted LLMs behind one OpenAI-compatible key

AI Analysis

核心用途是为 DSH 接入 LLMTR 聚合网关的丰富模型资源。适合需要一键切换、免去繁琐配置多平台 API 的用户。需要从 llmtr.com 获取 API 密钥并填入设置。

Package
dsh-plugin-llmtr
Version
0.1.0
License
MIT
Last updated
Aug 15, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:knowhycodata/dsh-plugin-llmtr

Configuration

Every field is optional and lives in the llm-llmtr section of $DSH_HOME/settings.yaml (or in the plugin row's config). Changes reach the next request without a restart; an in-flight stream keeps the values it started with.

FieldDefaultWhat it decides
apiKeyEnvLLMTR_API_KEYCredential reference resolved per request
baseURLhttps://llmtr.com/v1Endpoint; $LLMTR_BASE_URL from a trusted launch layer overrides the default
headers{}Extra request headers; authentication and attribution names always win
catalogScopechatchat, turkey-hosted, or all
catalogTtlMs900000How long a fetched listing is reused
models[]A pinned list; non-empty replaces the live listing entirely
modelOverrides{}Per-model corrections applied over the live listing
reasoningEfforts[]Effort ids the gateway accepts for your models
maxTokens32768Default per-request output cap
defaultContextWindow131072Capacity assumed for a model you have not sized
streamIdleTimeoutMs300000Idle ceiling while a stream read is outstanding
retryPolicyharness defaultProvider-owned retry policy

Context windows

The LLMTR listing publishes ids and operations, not capacities, so every model is sized at defaultContextWindow until you say otherwise. Correct the ones you actually use:

llm-llmtr:
  modelOverrides:
    openai/gpt-5.4:
      contextWindow: 400000
    llmtr/muse-glimmer-30b-tr:
      contextWindow: 32768
      maxTokens: 8192

Reasoning effort

Reasoning output works out of the box: the adapter reads both reasoning_content and reasoning deltas, so a reasoning model's thinking shows up in the transcript with no configuration.

Selecting an effort level is opt-in, because the gateway fans requests out to upstreams that reject reasoning_effort on non-reasoning models. Declare what your models accept and the harness offers exactly those:

llm-llmtr:
  reasoningEfforts: [low, medium, high]

With the list empty, no selector is shown and nothing reaches the wire. A request carrying an undeclared effort is refused by name rather than silently dropped.

Pinning a model list

A deployment that must fix exactly which models its users can reach replaces the listing instead of filtering it:

llm-llmtr:
  models:
    - id: llmtr/muse-glimmer-30b-tr
      name: Muse Glimmer 30B
      contextWindow: 32768
    - id: llmtr/trendyol-asure-12b

With models non-empty the gateway listing is never fetched.