Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心
模型与提供方 #ai-gateway#deepseek-harness#dsh-plugin#llm#llmtr

dsh-plugin-llmtr

DeepSeek Harness 的 LLMTR 网关供应商接入:一个 OpenAI 兼容 Key 即可访问 170+ 聊天模型与土耳其本地托管 LLM。

knowhycodata @knowhycodata ⬇ 2 ★ 0 main

安装

dsh plugin --profile web add github:knowhycodata/dsh-plugin-llmtr
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

DeepSeek Harness 的 LLMTR 网关供应商接入:一个 OpenAI 兼容 Key 即可访问 170+ 聊天模型与土耳其本地托管 LLM。

该插件未提供要点说明,请参考仓库 README。

ai-gatewaydeepseek-harnessdsh-pluginllmllmtr
  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/knowhycodata/dsh-plugin-llmtr
许可证MIT
主要语言main
下载量2
GitHub 星标0
最近推送2026-08-15
收录日期2026-09-19
分类模型与提供方

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# dsh-plugin-llmtr

English | [Türkçe](README.tr.md)

An [LLMTR](https://llmtr.com) provider route for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`).

LLMTR is an OpenAI-compatible AI gateway. One API key reaches 170+ chat models from OpenAI, Anthropic, Google, Qwen, Mistral, xAI and others — plus the models LLMTR runs on its own infrastructure in Türkiye, for deployments that need their prompts to stay in-country.

This plugin registers those models as the `llmtr` provider route on `ctx.llm`, so they appear in the harness model picker and can be selected per session, per agent, and per subagent like any other route.

## Install

```sh
dsh plugin add dsh-plugin-llmtr
```

The package ships a bundle patch, so `plugin add` inserts the row for you. Then open **Settings → Models**, find the **LLMTR** card, paste a key from [llmtr.com](https://llmtr.com), and save. The key is stored in `$DSH_HOME/.credentials.yaml`; settings retain only its reference.

The model picker fills itself from the gateway's live listing — nothing to type, and models LLMTR adds later appear without an upgrade.

### Without the plugin CLI

Add the row to your own `cordis.yml` or `--patch` overlay:

```yaml
- insert:
    - id: llm-llmtr
      name: dsh-plugin-llmtr
```

and export the key instead of storing it:

```sh
export LLMTR_API_KEY=llmtr-...
```

## Model ids

Model ids are the gateway's own, `owner/model`, and are sent verbatim:

```
openai/gpt-5.4          anthropic/claude-...      google/gemini-3.7-flash
qwen/qwen3-8-...        mistral/...               deepseek/deepseek-v4-...
llmtr/muse-glimmer-30b-tr   llmtr/trendyol-asure-12b   llmtr/gemma-4
```

Ids starting with `llmtr/` are the ones LLMTR hosts in Türkiye; the picker labels them "Hosted in Türkiye on LLMTR infrastructure". Everything else is routed to its upstream provider and processed under that provider's own terms — the plugin does not claim otherwise for them.

## Data residency

To offer only the in-country models, narrow the catalog scope:

```yaml
llm-llmtr:
  catalogScope: turkey-hosted
```

The picker then lists nothing else, so a session cannot be started on a model whose prompts leave the country.

## 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.

| 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:

```yaml
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:

```yaml
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:

```yaml
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.

## Scope

- **Chat completions only.** Requests go to `/v1/chat/completions` with streaming and usage reporting on. LLMTR's embeddings, image, video, rerank, and realtime models are listed by `catalogScope: all` but cannot be routed by this adapter, which is why `chat` is the default.
- **Text in, text out.** Image content is refused before it is sent, naming the model, rather than being flattened away.
- **One attempt per call.** Retries belong to the harness retry policy, so a failure is visible once rather than hidden inside the adapter.

## Privacy

The plugin sends the harness's standard `User-Agent`, an `x-llmtr-client` header naming this package and version, and your API key. No session id, prompt text, file path, or user identifier is added to any header.

## Development

```sh
npm install
npm test          # 80 unit tests, no network and no key required
npm run typecheck
npm run build
```

`tests/mock-server.ts` stands in for the gateway, so the suite runs offline.

## License

[MIT](LICENSE). Portions derive from DeepSeek Harness — see [NOTICE](NOTICE).

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。