cqnxnzg/dsh-llm-openai-compatible0

dsh-llm-openai-compatible

Universal OpenAI-compatible LLM provider plugin for DeepSeek Harness (万能插头) — point any local or remote OpenAI-compatible endpoint at the harness and chat with it

包名
dsh-llm-openai-compatible
版本
0.1.0
许可证
MIT
最近更新
2026年8月19日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:cqnxnzg/dsh-llm-openai-compatible

配置

最小配置(本地 vLLM 等)

默认 baseURL = http://127.0.0.1:8000/v1,默认模型目录里有几个常见本地模型 id。打开 Settings → Plugins → llm-openai-compatible,把 models[].id 改成你本地服务实际提供的模型 id(见下文「UNKNOWN_MODEL 怎么消除」),保存即可在模型选择器里选中聊天。

配置字段(全部可选)

字段默认说明
apiKeyEnvOPENAI_API_KEY凭据引用(环境变量名);未配置/为空 → 匿名请求(本地端点可用)
baseURLhttp://127.0.0.1:8000/v1OpenAI 兼容端点;自动归一化到 /v1
models4 个示例模型端点实际服务的模型目录;未列出则请求报 UNKNOWN_MODEL
maxTokens全局默认输出上限;模型行未声明时兜底
defaultContextWindow131072模型未声明 contextWindow 时的上下文容量
streamIdleTimeoutMs300000流式读取空闲超时
retryPolicy正常默认重试策略(见下)

models[].* 字段语义:

字段说明
id端点接受的模型 id(必须与端点实际服务的一致,否则 UNKNOWN_MODEL
name选择器显示名;省略用 id
description选择器里的补充说明(可选)
contextWindow该模型上下文容量(token)
maxTokens该模型专属输出上限,优先于全局 maxTokens;请求级 maxTokens 又优先于它
visiontrue = 接受图片输入(请求带图时输入模态含 image)
thinkingtrue = 支持原生思考;选择器可调 thinking 等级(off/low/medium/high/max)
defaultEffort聊天选择器的默认思考等级;需 thinking: true 且等级在支持集合内才生效
tools遗留能力标志,运行时忽略,仍被解码

retryPolicy 可配置值(省略 = 正常默认:最多重试 2 次,重试码 EMPTY_RESPONSE/RATE_LIMIT/SERVER/TIMEOUT/TRANSPORT,退避 initialDelayMs: 500 / maxDelayMs: 10000 / jitterRatio: 0.1):

retryPolicy:
  mode: normal            # normal | always
  maxRetries: 3           # normal 模式:最大重试次数
  retryableCodes: [RATE_LIMIT, SERVER, TIMEOUT, TRANSPORT]  # normal 模式:可重试错误码
  backoff:
    initialDelayMs: 500
    maxDelayMs: 10000
    jitterRatio: 0.1

### 最小配置(本地 vLLM 等)

默认 `baseURL = http://127.0.0.1:8000/v1`,默认模型目录里有几个常见本地模型 id。打开 **Settings → Plugins → llm-openai-compatible**,把 `models[].id` 改成你本地服务**实际提供**的模型 id(见下文「UNKNOWN_MODEL 怎么消除」),保存即可在模型选择器里选中聊天。

### 配置字段(全部可选)

| 字段 | 默认 | 说明 |
|---|---|---|
| `apiKeyEnv` | `OPENAI_API_KEY` | 凭据引用(环境变量名);未配置/为空 → 匿名请求(本地端点可用) |
| `baseURL` | `http://127.0.0.1:8000/v1` | OpenAI 兼容端点;自动归一化到 `/v1` |
| `models` | 4 个示例模型 | 端点实际服务的模型目录;未列出则请求报 `UNKNOWN_MODEL` |
| `maxTokens` | — | **全局**默认输出上限;模型行未声明时兜底 |
| `defaultContextWindow` | `131072` | 模型未声明 contextWindow 时的上下文容量 |
| `streamIdleTimeoutMs` | `300000` | 流式读取空闲超时 |
| `retryPolicy` | 正常默认 | 重试策略(见下) |

**`models[].*` 字段语义:**

| 字段 | 说明 |
|---|---|
| `id` | 端点接受的模型 id(**必须**与端点实际服务的一致,否则 `UNKNOWN_MODEL`) |
| `name` | 选择器显示名;省略用 `id` |
| `description` | 选择器里的补充说明(可选) |
| `contextWindow` | 该模型上下文容量(token) |
| `maxTokens` | **该模型专属**输出上限,优先于全局 `maxTokens`;请求级 `maxTokens` 又优先于它 |
| `vision` | `true` = 接受图片输入(请求带图时输入模态含 image) |
| `thinking` | `true` = 支持原生思考;选择器可调 thinking 等级(off/low/medium/high/max) |
| `defaultEffort` | 聊天选择器的默认思考等级;需 `thinking: true` 且等级在支持集合内才生效 |
| `tools` | 遗留能力标志,运行时忽略,仍被解码 |

**`retryPolicy` 可配置值**(省略 = 正常默认:最多重试 2 次,重试码 `EMPTY_RESPONSE`/`RATE_LIMIT`/`SERVER`/`TIMEOUT`/`TRANSPORT`,退避 `initialDelayMs: 500` / `maxDelayMs: 10000` / `jitterRatio: 0.1`):

```yaml
retryPolicy:
  mode: normal            # normal | always
  maxRetries: 3           # normal 模式:最大重试次数
  retryableCodes: [RATE_LIMIT, SERVER, TIMEOUT, TRANSPORT]  # normal 模式:可重试错误码
  backoff:
    initialDelayMs: 500
    maxDelayMs: 10000
    jitterRatio: 0.1