Skip to content

Models

Pick models in qialike, or bring your own provider keys.

qialike talks to providers through its own adapter layer. A model is always identified by two things: a provider route (for example deepseek-official or qialike) and a model id (for example deepseek-v4-flash). In configuration and in the docs the two are written together as route/model-id, e.g. qialike/deepseek-v4-flash.

Default provider

There is currently no default provider.

Choosing a model

/models opens the model manager, which has two levels:

  1. Providers — one row per provider with its key state and model count on the right. Only providers whose API key is set appear here.
  2. Models — Enter on a provider drills into its model sub-list.

All lists have live type-to-filter (a bordered ⌕ type to filter box on top); long lists support PgUp/PgDn (page) and Home/End (first/last). Esc clears the filter first and then backs out. Picking a model and pressing Enter saves it: the live session switches on the next request and the choice is persisted as the default.

The bottom of the card shows the current selection, for example DeepSeek · DeepSeek V4 Flash. For a gateway route with a live catalog, qialike fetches GET {baseURL}/models and falls back to a static catalog on failure or timeout.

Reasoning effort

Models that declare reasoning effort add a third step to the picker: after the model, an Effort list (Off / Low / High / Max for the built-in DeepSeek routes). ↑/↓ or a number selects, Enter confirms, Esc goes back — the model choice completes only once an effort is confirmed. The effort persists with the selection and rides on every request as thinking / reasoning_effort.

From the main window, Ctrl+T (Alt+T where the terminal takes Ctrl+T) cycles the current model’s declared effort levels, wrapping at the ends; each press persists and applies to later requests, and the composer label shows the effort as a chip. Effort sets are model-declared and provider-specific: DeepSeek offers Off/Low/High/Max while another gateway may declare low/medium/high/xhigh/max. Providers without declared efforts skip the step.

Overriding the model per run

Terminal window
qialike --model deepseek-flash

--model takes a provider/name override, e.g. deepseek-flash or qialike/deepseek-v4-flash. The provider is part of the value; it is not restricted to your saved selection.

Bring your own provider keys

The Add provider list carries the Chinese providers qialike supports, plus the built-in deepseek-official endpoint: Qwen, GLM, Kimi, MiniMax, StepFun, Volcano Engine (Doubao), Xiaomi MiMo, Ant Ling, and aggregation gateways such as SiliconFlow and Qiniu. Most are OpenAI-compatible. Rows marked endpoint required need a deployment-specific base URL.

Three groups come from loadable sub-plugins, all enabled by default and removable as a whole — write the matching switch in qialike.json and the templates plus any configured routes disappear from /models and from the adapters:

Sub-pluginSwitchProviders
tui-opencode-gatewaysqialike-opencode: { enabled: false }OpenCode Zen / Go
tui-china-gatewaysqialike-china-gateways: { enabled: false }Qiniu, SiliconFlow (incl. cn endpoints)

Configured OpenAI-compatible providers show the gateway’s live model list (a dynamic GET {baseURL}/models, falling back to the template’s preset models on failure or timeout). OpenCode Zen is a single entry showing all 63 models; picking any of them and saving routes the request to the right protocol endpoint by model prefix — claude-/qwen- → Anthropic messages, gpt-/grok-/muse- → OpenAI Responses, gemini- → Google generateContent, everything else → chat/completions. All four auth paths are verified.

Pick a provider in Add provider and a sub-dialog sets or replaces its API key — the key dialog says “replaces the current key” when one already exists. Setting a key on a dormant template activates the route on the spot: its endpoint and model catalog are written to the qialike-llm: settings section and its models appear in the picker.

Keys are stored in ~/.dsh/.credentials.yaml under the route’s derived credential reference (route qialike → QIALIKE_API_KEY) and resolved per request; the key never reaches the transcript or the model. If a key is already present in the environment under that name, it shadows the store and wins — and an environment-supplied key cannot be deleted from the dialog, which reports that instead.

To deactivate a provider without deleting the route, press Ctrl+D (Alt+D) on the first level: it removes the key and hides the route from the picker. The hidden list persists in qialike.json (hidden_providers); re-adding the provider from the catalog and setting its key again clears the flag.

Custom providers by hand

The Add-provider form writes a settings section like this; you can also maintain it directly:

~/.dsh/settings.yaml
qialike-llm:
providers:
qialike:
displayName: qialike
baseURL: https://qialike.cn/bee/v1
apiKeyEnv: QIALIKE_API_KEY
models:
- id: deepseek-v4-flash
- id: glm-5.2

api defaults to OpenAI-compatible; set it to openai-responses, anthropic-messages or google-generative for a route that speaks one of the other protocols.

Image input

Models that declare image input (for example the DeepSeek vision route, GPT-4o, or Claude) accept images attached to the conversation: a pasted local image path attaches the file, and the adapter encodes it as image_url parts (OpenAI) or base64 source blocks (Anthropic). Models without the declaration refuse the attachment.

Next steps

  • Config — the qialike-llm settings section and where credentials live
  • Permissions — the file-effect boundary a model can reach