DeepSeek Harness

Written for DeepSeek Harness 0.2.2 (the desktop app and the dsh profiles), from its provider schema and profile loader. The Harness reaches zdr.sh over Chat Completions through its llm-pi-ai profile entry.

Configure#

Add the provider to your profile patch, ~/.dsh/profiles/desktop/cordis.patch.yml for the desktop app. The key is read from RACKDUCKSH_API_KEY.

yaml
- id: llm-pi-ai  name: "@deepseek-ai/dsh-llm-pi-ai"  config:    providers:      zdrsh:        apiKeyEnv: RACKDUCKSH_API_KEY        api: openai-completions        baseURL: https://api.zdr.sh/v1        compat:          supportsReasoningEffort: true        models:          - id: glm-5.3            name: GLM 5.3            contextWindow: 1048576            maxTokens: 131072            reasoningEfforts:              off: null              low: low              high: high              max: max

Then restart the Harness, or let it reload the profile patch, and pick a model in the composer. The thinking selector appears beside a model that declares reasoningEfforts.

The parts that matter#

  • reasoningEfforts is the selector. A model without it is reported as non-reasoning, even when the model always thinks. The keys are the Harness levels; each value is the reasoning_effort sent on the wire. off: null offers the off level without sending a value.
  • The levels are the model's own. Only the values a model publishes in supported_reasoning_efforts on Models are accepted. glm-5.3 and deepseek-v4.1-flash publish low, high and max; glm-5.3-flash publishes none, so a mapping for it would be ignored or refused.
  • compat.supportsReasoningEffort is required on a custom base URL. Without it the selector would appear and the request would drop the field.
  • One entry per model. Each id is one model with its own limits and its own reasoningEfforts.
  • No discovery. The Harness uses the models in the profile patch; it does not read GET /v1/models.

Check#

A request with "reasoning_effort":"high" to a model that publishes high is accepted, and the answer carries reasoning_content. The dsh CLI can print the composed profile without launching it:

bash
dsh --profile web --patch ~/.dsh/profiles/desktop/cordis.patch.yml --dump-config