Skip to content

0.94

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Nov 13:07
· 1 commit to main since this release

0.94 release notes

Pictures, documents and voice

  • Pictures are on by default. Paste, drop, screenshot or photograph a picture into the chat, or send one through
    the API. On one graphics card they are read on the CPU (no VRAM taken from the model); with multi-GPU on, on the
    second card (about 0.4 s a picture). On PCs with less than about 170 GB of RAM the picture reader on the CPU starts
    with the first picture (about 7 s once, longer while the model is writing) and stops after 10 idle minutes, so its
    ~4 GB of RAM is free the rest of the time. If the picture reader cannot start (a broken PyTorch, say), the model
    still starts and answers text. Disable Pictures.bat turns pictures off.
  • Chats with pictures can reuse earlier turns instead of re-reading the whole conversation, when the app sends
    the pictures back unchanged (it took about a minute a turn in a long agent session). A changed picture is always read
    again.
  • Documents: attach PDF, Word, Excel, PowerPoint, HTML, CSV or text files; the chat shows how many tokens they
    are and how long the first read takes. Agents can send document blocks too (Claude Code reading a PDF).
  • Voice (optional, Enable Voice.bat): push-to-talk dictation, read-aloud on every answer, and a hands-free talk
    mode you can interrupt. Runs on the CPU's efficiency cores or a second card, never on the model's card.
    /v1/audio/transcriptions and /v1/audio/speech for apps.

Everyday use

  • The page opens at once and shows the model loading, with an estimate from your last start.
  • Pause / Resume frees the RAM and the graphics card (for a game) and loads again on your next message; optional
    auto-pause when a game takes the card.
  • Chat history (search, pins, rename, export) when you turn on "Save chats in this browser".
  • Use it from your phone: one switch sets a key, shows a QR code, and offers the firewall rule; the page can be
    added to your home screen.
  • Downloads you can leave alone: the PC stays awake, stalled downloads restart, one progress line, a notification
    when done; a drive check before the big download (free space, drive type, page file, time estimate).
  • Chat modes (Quick / Think / Code / Write), a "Connect an app" card with copy-ready settings, and a health card with
    fixes for common Windows problems.

For coding agents

  • Claude Code: its small background calls (titles, command checks, the quota check) are answered quickly and
    never push your real request back; tool search keeps hidden tools out of the prompt; WebSearch works when you set a
    search provider (off by default).
  • A cancelled request (Esc) no longer throws the conversation away - the next message continues where it was
    instead of re-reading everything.
  • Loop guard (on by default): when an agent makes the same tool call 4 times in a row, the model gets one short
    note to try something else or stop. "loop_guard": false in the run config turns it off.
  • Structured output and tool controls now work on all three APIs; long reads send keep-alive pings so agents do not
    time out; /v1/embeddings and /v1/rerank (optional), stored Responses with previous_response_id, and the small
    endpoints agents ask for (/tokenize, token counts, a Codex model catalog).

Speed

  • Writing is about 5% faster at the default sampling (temperature 1, top-p 0.95): 41.3 vs 0.93's 39.2 tok/s on
    UD-IQ2_XXS at 192 GB, and 41.7 vs 40.8 greedy,
  • Long prompts are read faster: a fresh 60K-token prompt at 811 vs 0.93's 747 tok/s, 30K at 860 vs 758, 7K at 551
    short chat prompts read as before. The model's later layers now read only
    the last 128 tokens of a prompt, as DeepSeek's own design does. This changes the output slightly but not its quality: our
    7-task agent test scores the same with it on and off, and short and long prompts agree with DeepSeek's own model as
    often as before. Each conversation keeps its own window, so a short request after a long one is read normally.
    STRATA_ENC_BOUND=0 turns it off.
  • The drafter guesses better:
    • drafts now stop when the product of the drafter's confidences falls below 0.25 (it used to stop at the first
      guess under 0.6): +6.5% writing speed at temperature 1 in agent sessions, the same at greedy;
    • it keeps the experts the 1017 model's drafter uses most: 112 / 80 / 48 per block on cards of 22 GB or more,
      96 / 64 / 32 on smaller cards and on PCs with less than 80 GB of RAM. On 22 GB cards it accepts as many guesses
      as keeping all 128 experts, in less VRAM than all 128 (a little more than 0.93's 64 per block); below that it
      uses the same VRAM as 0.93;
    • new installs get a slightly better drafter (the same size, its experts shrunk with an importance matrix): +0.6% of
      its guesses accepted at greedy, +0.2-0.3% at temperature 1. See "Updating from 0.93" for existing installs.
      The first two are in the writing figure above, which was measured with 0.93's drafter (what an update keeps); the
      new drafter adds its small gain on top for new installs.
  • The first answer after a start comes about 2 s sooner: the drafter file is read into memory while the model
    loads.
  • Exact routing for answers (opt-in): STRATA_ANSWER_ROUTE_BIAS=0 keeps the usual route bias while the model
    thinks and routes exactly in the answer after it (another value sets another bias there). Off by default: it cost
    10-13% of writing speed in agent sessions, and its quality gain is not measured yet.

Security and privacy

  • The server refuses to listen on your network without an API key (it used to warn); "allow_no_key": true
    keeps the old behaviour on a network you trust.
  • Picture URLs are never fetched from inside your PC or home network (STRATA_IMAGE_FETCH_PRIVATE=1 allows it).
    The check covers the address each connection really reaches, so a web name that changes its answer (DNS
    rebinding) cannot get around it. Web fetch has the same check.
  • Pictures by file path are read only up to 32 MiB. A server that listens beyond this PC (the phone page, a LAN)
    no longer reads them at all, unless "image_local_files": true is in the run config; an app on your network should
    send the picture itself (a data: URL) instead.
  • Documents: an Office file that would unpack to a huge size (a "zip bomb") is refused, and the document reader
    runs with a 2 GB memory limit and a cap on the text it returns. Web fetch reads PDFs in that same reader, not
    inside the server.
  • Patterns with a time limit: tool search and JSON-schema pattern checks stop after a short time, so a pattern
    that never finishes cannot freeze the server (one that runs out of time counts as no match).
  • Voice: the speech helpers refuse requests from other web sites and take only the server's own.
  • No framing: other web sites cannot show the chat page or the request monitor inside a frame to trick a click.
  • Hugging Face usage reports are off in every launcher and download script.
  • Pictures are decoded only as JPEG, PNG, GIF, BMP or WebP (TIFF and AVIF no longer open), and Pillow is 13.0.0 on
    Python 3.11 and newer: 0.93's Pillow 12.3.0 has published advisories reachable through pictures. Python 3.10 keeps
    12.3.0 with the format list.
  • certifi 2026.10.23: downloads no longer trust a certificate authority whose keys were compromised.
  • An update whose package step fails (offline, for example) now starts with the packages already installed and
    says so, instead of stopping; the next start tries again.
  • These change what worked in 0.93: the API-key refusal, the picture URL check, and pictures by file path on a
    server that listens on your network.

Models

  • New downloads of UD-Q2_K_XL get Unsloth's re-made file (the same quality in our tests); every other file was
    already their latest.

Updating from 0.93

  • Update as usual (git pull or UPDATE.bat, or unpack the new ZIP), then double-click Start DeepSeek.bat. The
    first start:
    • updates the Python packages;
    • asks to download the 0.94 engine (under 1 GB);
    • asks about the picture reader (0.97 GB, plus PyTorch 124 MB). If you say N it starts text-only, but the question
      comes back at every start until you run Disable Pictures.bat;
    • keeps your drafter. The slightly better one is optional: setup-ds41-models.bat drafter-imx makes it (it
      downloads 7.9 GB once). If the full-size drafter files are still in your model folder, the first start makes it
      from them, with no download;
    • leaves your model files as they are.
  • A ZIP copy: keep your ds41-paths.bat (copy it back after unpacking), or enter your model folder again when asked.

Fixed

  • Speculative sampling is now exact when n-gram lookup and sampled drafts mix (it slightly changed the output
    distribution at temperature > 0).
  • Tool calls: a stray word where the model writes the tool-call marker no longer turns a call into plain answer
    text (which ended an agent's run).
  • Tool calls: parameters are read by the tool's schema, so a number that may also be empty arrives as a number,
    and a number in a text parameter stays text.
  • Streamed tool calls never carry "name": null or an empty tool_calls list (OpenCode reportedly failed on
    them).
  • A client that closes the connection right after an answer's last byte no longer has that answer marked as
    disconnected.
  • Windows handle leak: the engine no longer leaks a Windows handle for each short-lived reader thread (7,596 ->
    629 handles in a test session).
  • GPU faults: a GPU fault now ends the engine, and the next request starts a fresh one. Before, every later
    request failed until a restart by hand.
  • GGUF files without engram.compressed_vocab_size (ISTA's GSQ-RCO files leave it out) load.
  • Settings and choice files saved as "UTF-8 with BOM" are read as written. Before, such a delta-settings.json
    silently dropped the Setup card's choices.
  • A broken pending entry in the Setup card's settings no longer stops the launcher.
  • Multi-GPU: a second-card helper that stops or cannot start no longer stops the model: it runs on one card and
    the server window says so (a multi-GPU start takes about 2 s longer).
  • Multi-GPU: the second card must be an RTX 20 or newer (a GTX 1080 Ti or a Tesla P40 made the start fail), and
    of two equal cards the one on the wider PCIe link is used.
  • Pictures: a picture reader that cannot start no longer stops the model; text works, and a picture says why.

Which zip do I download?

File Who it's for
build-ds41-portable.zip Almost everyone: Intel 4th gen / AMD Ryzen or newer CPU, NVIDIA RTX 20 / 30 / 40 / 50 card
build-ds41-compat-avx.zip Older CPUs without AVX2
build-ds41-compat.zip Very old CPUs (slowest)

SHA256SUMS.txt lists the checksums; Start DeepSeek.bat checks them by itself.

Updating from 0.93? Run UPDATE.bat, then Start DeepSeek.bat