---
name: vllm-mod-patches
description: Modify VLLM/engine code inside the docker-images build trees by authoring minimal anchor-based patcher scripts (resolve module paths at runtime, refuse on non-matching source, idempotent --check/apply/--check) and wiring them into a Dockerfile. Use whenever changing engine behavior shipped in an image, or reviewing existing patches.
---
# vLLM/Engine Mod Patches
This repo ships engine modifications as **patcher scripts** run at image build
time, not as vendored rewrites of whole files. The rules below come from the
DeepSeek-V4 DSpark / reasoning_effort work: a full-file replacement silently
drops independent upstream updates; a targeted patch keeps everything the image
ships and only modifies/adds exactly what is needed.
## Where things live
- Patch scripts: `docker-images/
/patches/*.py`
(e.g. `deepseek-v4-flash-eugr/patches/`, `deepseek-v4-flash-dspark38/patches/`)
- They are `COPY`ed into the image and run in a `RUN` step (see the image's
`Dockerfile`). Because they live under `docker-images//`, they fold into
the `sm121.checksum` — a change triggers a rebuild.
- Host-side helper scripts (not engine code) go in `host-scripts/` and are
embedded via `include_str!` in `src/builtin_scripts.rs`; referenced from
recipes as `{ script = "" }`.
## Core conventions
1. **Minimal, not wholesale.** Locate the exact region to change and target it
with a precise string replacement. Keep the file's own structure, imports,
and unrelated behavior intact. Never overwrite the whole file with a
"reference" variant — check whether the upstream reference is a superset
first (diff before you copy).
2. **Resolve paths at runtime**, never hardcode. Different images install vLLM
in different places (system `dist-packages`, `/opt/env/lib/python3.12/...`).
Resolve from Python itself:
```python
import vllm, os
BASE = os.path.join(vllm.__path__[0], "tokenizers") # or "model_executor/..."
```
3. **Anchor-based apply that refuses on drift.** Every edit is an
`(old, new)` pair. `apply` requires the old anchor to appear **exactly
once**; if the source changed, `SystemExit` and the Docker build fails
instead of shipping a silently-broken image.
4. **Idempotent `--check`.** It must pass both *before* apply (pristine) and
*after* apply (patched), so the Dockerfile can do
`--check → apply → --check`. Handle overlap: when `new` embeds `old` (e.g.
an inserted import block that starts with the original lines), count old
occurrences relative to how many sit inside `new`. A file is "consistent"
if it is pristine-old OR already-patched — not both, not neither.
5. **Verify after patching.** Follow the apply with `python3 -m py_compile` of
the touched files and remove stray `__pycache__` dirs. Keep both patcher
steps in the same `RUN` so a compile failure fails the build.
6. **Optional behavior = env-gated, default OFF.** For changes that are
experimental or a second-test variant, gate them on an env var checked at
module import (e.g. `_USE_X = bool(os.environ.get("VLLM_X", "").lower() in
("1","true","yes","on"))`). Unset = byte-identical behavior to stock; opt in
from the recipe `[env]` / `-e`. Make the Dockerfile block its own step so it
can also be commented out to remove entirely.
## Canonical patcher skeleton
```python
#!/usr/bin/env python3
import os, sys
import vllm
FILE = os.path.join(vllm.__path__[0], "tokenizers/deepseek_v4_encoding.py")
OLDER = "exact text currently in the image"
NEWER = "exact replacement text"
def _consistent(src, old, new):
co, cn = src.count(old), src.count(new)
if cn >= 1: # patched: new present once, and any
return cn == 1 and co <= new.count(old) # old is only inside new
return co == 1 # pristine: old present once
def main():
check = "--check" in sys.argv
src = open(FILE).read()
if check:
if not _consistent(src, OLDER, NEWER):
raise SystemExit(f"CHECK FAIL: {FILE} is neither pristine nor patched")
print(f"check OK: {FILE} state is consistent"); return
if src.count(OLDER) != 1:
raise SystemExit(f"refusing: {FILE} old anchor matched "
f"{src.count(OLDER)}x; re-sync patch")
out = src.replace(OLDER, NEWER)
assert out.count(NEWER) == 1
open(FILE, "w").write(out)
print(f"patched {FILE}")
if __name__ == "__main__":
main()
```
## Dockerfile wiring
```dockerfile
COPY patches/patch_x.py /tmp/patch_x.py
RUN set -eux; \
SRC="$(python3 -c 'import vllm, os; print(vllm.__path__[0])')"; \
python3 /tmp/patch_x.py --check; \
python3 /tmp/patch_x.py; \
python3 /tmp/patch_x.py --check; \
python3 -m py_compile "$SRC/tokenizers/deepseek_v4.py" "$SRC/tokenizers/deepseek_v4_encoding.py"; \
find "$SRC" -name '__pycache__' -type d -prune -exec rm -rf {} + 2>/dev/null || true; \
rm -f /tmp/patch_x.py
```
## Testing workflow (do this before shipping)
1. `cp` the patcher + a test script to a node and run it in a **throwaway
container** of the base image so you never mutate a live/serving image:
```bash
docker run --rm -v /tmp/p_x.py:/tmp/p_x.py -v /tmp/t.sh:/tmp/t.sh \
--entrypoint bash /tmp/t.sh
```
In the test script: pristine `--check` → apply → post `--check` →
`py_compile` → behavior probes (import the module prefix and assert the
flag/values) → re-run `--check` to confirm idempotency. Then start from a
fresh container for the next iteration (throwaway containers reset state).
2. Only after the anchors match cleanly on the real image, wire the `COPY`+`RUN`
into the Dockerfile and do `cargo run -- -d serve --recipe --cluster `
(dry-run) then, with user sign-off, `sm121 serve` / `sm121 build`.
3. To verify a rebuild took effect, `sm121 health`/`logs`; a `versions.env`,
`[build.versions]` or patch change alters the checksum and forces the build.
## Pitfalls (learned the hard way)
- **`main()` reading the wrong object**: unpack `path` from `TARGETS[0][0]` and
`open(path).read()` — don't destructure a `(path, [edits])` tuple straight
into `src` or you patch an empty list.
- **Overlapping anchors**: if `new` is a prefix-superset of `old`, a naive
`old-or-new` check reports inconsistency after apply. Use the
`co <= new.count(old)` form above.
- **Stale mounts / quoting**: when testing over SSH, confirm the mounted script
is the latest `scp`'d copy; avoid deep nested quotes — write a `.sh` test
script and run it, don't inline big heredocs through `ssh`.
- **Two images → two layouts**: production-3.8 style vs eugr style differ in
path and in whether `b12x` is a separate module or integrated. Re-resolve
paths per image; never assume.
- **Never patch a serving container.** Patches apply at image build. If you
need to test on the cluster, rebuild the image (checksum-aware) and adjust the
recipe, per the `sm121-launcher` skill — and remember: health first, confirm
not serving, before any `stop`/`power`.
## References
- Launcher operations, safety, build flow: `sm121-launcher` skill
- Existing examples to model after: `docker-images/deepseek-v4-flash-eugr/patches/`
(minimal effort + env-gated reasoning_content), `deepseek-v4-flash-dspark38/`
(uniform padding, b12x routing), `glm52-nf3-hybrid/` (build-time patch script)
- Recipe image/build semantics: `AGENTS.md`