Run the DeepSeek Harness on it
The harness talks to any OpenAI-compatible endpoint, so this is a provider entry rather than an integration.
https://189.24.66.33/v1The form
In the harness, open the provider settings and choose Custom provider. Five fields matter and the rest can stay as they are.
| Field | What to put in it |
|---|---|
| Provider ID | relay (lowercase; it is also the credential name — keep it short) |
| Display name | 黑曜 |
| Base URL | https://189.24.66.33/v1 |
| API protocol | openai-completions |
| API key | your key, sk-relay-... |
Base URL keeps the /v1. This is the OpenAI-shaped route, and an openai-completions client appends only /chat/completions. Dropping the /v1 gives a 404 that reads like an auth failure.
The file, if you would rather not click
The same thing lives in ~/.dsh/settings.yaml. The harness ships one provider, deepseek-official, and this repoints it rather than adding a second:
llm-deepseek:
baseURL: https://189.24.66.33/v1
apiKeyEnv: DEEPSEEK_API_KEY
models:
- id: glm-5.3-flash-xploded
contextWindow: 131072
agent-default-model:
provider: deepseek-official
model: glm-5.3-flash-xplodedThe key is read from the environment rather than the file, so it has to be set where the harness will see it:
export DEEPSEEK_API_KEY=sk-relay-...On Windows that means the user environment, not just the shell you are standing in. Set it and open a new terminal, or the harness starts before the variable exists and fails with an invalid key.
The Models list
The Models list only decides what appears in the picker. An id you leave out can still be sent directly, so there is no need to paste the whole catalogue in; add the two or three you actually use and fetch the rest from the catalogue endpoint.
If it will not start
An invalid-key error immediately after setting the variable is almost always the terminal, not the key: the old shell still carries the old environment. A key that has genuinely stopped working says so in API Keys.