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:
- Providers — one row per provider with its key state and model count on the right. Only providers whose API key is set appear here.
- Models —
Enteron 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
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-plugin | Switch | Providers |
|---|---|---|
tui-opencode-gateways | qialike-opencode: { enabled: false } | OpenCode Zen / Go |
tui-china-gateways | qialike-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:
qialike-llm: providers: qialike: displayName: qialike baseURL: https://qialike.cn/bee/v1 apiKeyEnv: QIALIKE_API_KEY models: - id: deepseek-v4-flash - id: glm-5.2api 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-llmsettings section and where credentials live - Permissions — the file-effect boundary a model can reach