knowhycodata/dsh-plugin-llmtr ↗★ 0
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 분석
核心用途是为 DSH 接入 LLMTR 聚合网关的丰富模型资源。适合需要一键切换、免去繁琐配置多平台 API 的用户。需要从 llmtr.com 获取 API 密钥并填入设置。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:knowhycodata/dsh-plugin-llmtrConfiguration
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.
| Field | Default | What it decides |
|---|---|---|
apiKeyEnv | LLMTR_API_KEY | Credential reference resolved per request |
baseURL | https://llmtr.com/v1 | Endpoint; $LLMTR_BASE_URL from a trusted launch layer overrides the default |
headers | {} | Extra request headers; authentication and attribution names always win |
catalogScope | chat | chat, turkey-hosted, or all |
catalogTtlMs | 900000 | How 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 |
maxTokens | 32768 | Default per-request output cap |
defaultContextWindow | 131072 | Capacity assumed for a model you have not sized |
streamIdleTimeoutMs | 300000 | Idle ceiling while a stream read is outstanding |
retryPolicy | harness default | Provider-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.