Making cheap models listen: the dsh-prompt-inject per-step injection walkthrough

One frame-verified recording: a real two-window DSH web UI session shows a cheap model being reminded step by step through a long task — manual injection, the condition panel, force-inject and the cache-prefix guarantee, frame by frame.

Last updated: 2026-10-16

DeepSeek Harness web UI session trace showing a context-injection · dsh-prompt-inject entry appearing between two tool calls, with the plugin management page on the right holding pinned prompt cards and the expanded condition panel
The moment an injection lands: the new trace line in the session, management page alongside.

Cheap models share one failure mode on long tasks: somewhere around step ten they forget the rules you set — the retrieval you asked for gets skipped, the small talk you banned creeps back in, the "get to the point" reminder goes ignored. dsh-prompt-inject exists for exactly this one problem: when your prompt slides out of the model's attention window, the plugin feeds it back into the current turn's context automatically — no interruption, no new session.

All seven screenshots come from 闲人JOJO's Bilibili recording (2,814 plays — the view-API figure, fetched twice with the same value on 2026-10-15); the mechanics were cross-checked line by line against the plugin README. Three disclosures up front: the repo jojoman2024/dsh-prompt-inject sits at ★0 with a single author and no updates since its 2026-09-09 release; the uploader ↔ GitHub author identity rests on the description's own link and is NOT independently verified; the plugin targets DSH 0.1.0-rc.6+ || 0.1.2-alpha and 0.2.x compatibility is unverified — check versions before installing. Haven't switched to a cheap tier yet? Start with Switch models & custom providers

The short version

  • ▸Cheap models drift on long tasks; dsh-prompt-inject re-injects your prompts mid-turn, conditionally, without interrupting the output.
  • ▸Never touches the system prompt: injection rides the agent/pre-step hook as a plugin user message — cache prefix intact, session log untouched, source-tagged and auditable.
  • ▸Two ways to fire: manual one-shot injection (10-minute TTL, overwriting queue) and conditional injection (turn start / after thinking / after five tool calls, plus a force-inject switch).
  • ▸Configs are session-scoped and all OFF after a restart; the 0.1.x plugin targets DSH 0.1.0-rc.6+ || 0.1.2-alpha — 0.2.x is unverified, so check before installing.

The walkthrough in six steps: cheap model to condition panel

Before you start: cheap model, manager page

  1. 1

    Hand the long task to a cheap model

    The video states its thesis in the first ten seconds: run a cheap model and still demand instruction following. In the DSH session's model picker, drop the tier — the list shows DeepSeek-V4-Flash tagged "Fast, efficient, economical", and channels like Hy3/Hy4 preview at multipliers as low as 0.05x. The uploader's accounting: real cost = completion time × your time value + tokens × unit price. Push the unit price as low as you like — provided the model still listens, which is what the remaining five steps solve.

    DSH session model picker open with the cheap tiers visible — DeepSeek-V4-Flash, Hy4 preview and Hy3 at a 0.05x multiplier — while DeepSeek-V4-Pro is currently checked
    Tier first: hand the long task to the cheap model before anything else.Watch from 0:05 in the source video
  2. 2

    Open the injection manager from the session header

    After installing (commands in the FAQ) and restarting DSH, every session header gains an "inject prompts" entry; clicking it opens a standalone tab bound to the current session — the address bar reads /plugins/dsh-prompt-inject/page?sessionId=…, and the top-right shows session--… (follows the frontend). Write a prompt in the top input and hit save; each card carries pin / inject / edit / delete. The uploader keeps three regulars: "hold on, cut the unnecessary thinking", a longer "search first, no pleasantries" workflow prompt, and a short get-back-on-track command for when the model drifts. Prompt bodies persist to $DSH_HOME/dsh-prompt-inject/prompts.json for reuse across sessions.

    dsh-prompt-inject standalone manager page open in a browser tab, the address bar reading /plugins/dsh-prompt-inject/page?sessionId=…, three prompt cards with pin badges and inject/edit/delete buttons
    The manager binds to the current session; pinned cards stay on top.Watch from 0:30 in the source video

Manual one-shot injection

  1. 3

    Manual one-shot injection: one click, effective next step

    The moment the model drifts, hit "inject" on a card and a dark toast pops up: queued — it will inject at the next model call. The semantics are single-shot: it fires once before that session's next model step; if unconsumed for 10 minutes it expires (TTL), and re-clicking overwrites the queue rather than stacking it. Good for ad-hoc corrections, or as a manual pulse alongside conditional injection.

    Dark toast at the bottom right of the dsh-prompt-inject manager reading "queued: will inject at the next model call", confirming a manual one-shot injection entered the queue
    Manual injection fires once: next model step, 10-minute TTL.Watch from 0:40 in the source video

Conditional injection and the window criterion

  1. 4

    Conditional injection: pick the moments, let the plugin watch

    Tick "conditional injection" on a card and the panel opens two kinds of triggers: non-tool conditions — turn start (the first model step after your message) and after thinking (once reasoning ends or the first text lands); and after tool calls — five concrete tools, glob / grep / pwsh / web_search / web_fetch, each ticked individually. In the video the uploader ticks glob + grep on a pinned card: the model gets reminded after every file-search round. Save the condition, and hits are queued for this turn, consumed as they fire, discarded at turn end — the semantics are "remind the model at this step", not a permanent behavior rewrite.

    dsh-prompt-inject condition panel expanded with the turn-start and after-thinking checkboxes beside the five tool hooks glob/grep/pwsh/web_search/web_fetch, force injection currently ticked
    Conditions fire per step: each of the five tools can set its own reminder moment.Watch from 1:00 in the source video
  2. 5

    The force-inject switch: leave it off, refill when forgotten

    At the bottom of the condition panel sits "force injection" with two semantics: ON — inject every time the condition hits, no exceptions; OFF — re-inject only once the prompt has slid out of the model's memory window; the window criterion makes zero bypass LLM calls and wastes no tokens. Late in the video the uploader turns force injection off (the README also recommends keeping it off day to day): if the model still remembers, don't repeat yourself. Note that both configs are session-scoped in-memory state — after a DSH restart or a new session, everything defaults to off.

    dsh-prompt-inject condition panel with the force-injection checkbox unticked, the hint text explaining that injection now happens only when the prompt leaves the memory window
    The window criterion saves tokens: prompts the model still remembers are not re-injected.Watch from 1:55 in the source video
  3. 6

    Acceptance: the task runs to the end, uninterrupted

    When an injection lands, the session trace grows a "context injection · dsh-prompt-inject" line (see the hero image above): the system prompt is untouched, the cache prefix stays intact, and the message is source-tagged and auditable. The demo session runs into its fourth turn like this — the model reads the source, delivers a long code-block answer, even corrects one of its own classifications — and the closing footer reads 111K tok / 1m10s. Not a single manual interruption. Cheap model plus just-in-time reminders: that's the whole pitch.

    Fourth turn of the DSH session delivering a long answer with a TypeScript code block, the message footer reading 111K tok and 1m10s, the management page still holding the condition setup on the right
    Acceptance: the long task finishes end to end with zero manual interruptions.Watch from 2:12 in the source video

FAQ

Prompt injection, instruction following, and this plugin itself.

What is prompt injection in dsh?

Here it means actively inserting one of your prompts into the model's context mid-turn. dsh-prompt-inject mounts the agent/pre-step hook: when a condition hits — or you click inject — it appends a plugin user message right before the next model step. It never edits the system prompt or rewrites history; it delivers your reminder to "this step" only. With the window criterion active, a prompt still inside the model's window is not injected twice.

Is this the same as a jailbreak?

No. In security contexts, injection means third-party content smuggling malicious instructions to overstep boundaries. Here you write your own rules into your own session: every injected message carries an auditable source tag (kind: plugin, dsh-prompt-inject), and its permission boundary equals a normal chat message. It's a reminder mechanism, not a bypass.

How do I write injection prompts?

The video's three cards are the templates: (1) a short correction command — "hold on, get to the point! then continue the task."; (2) a thinking-budget cap — "hold on, cut the unnecessary thinking"; (3) a front-loaded workflow — "search with mnemon first … continue the task directly. No pleasantries or off-topic thinking output." Common threads: imperative verbs, and always a "then continue the task" clause so the model returns to work instead of stopping to wait for confirmation. Pin the regulars; bodies persist on disk for reuse across sessions.

Which models does it support? Do cheap or local models work?

Injection happens at the message layer, so it is provider-agnostic — DeepSeek official, NIM, Ollama local models all behave the same. It is precisely aimed at cheap models with weaker instruction following: the cheaper the model, the sooner a long task drifts, and the after-thinking / after-tool timings exist to refill reminders for exactly those models. For local model wiring, see the use-local-models guide. Per the README, the window criterion has a single test: whether the prompt is still inside the model's current window.

Why isn't my injection firing?

In order: (1) with force injection off, the window criterion found the prompt still inside the window — not injecting IS the design; (2) conditional injection can lag — for exact per-step timing, use the manual inject button; (3) manual injections carry a 10-minute TTL and expire unconsumed; (4) both configs are session-scoped in-memory state — after a restart or a new session everything defaults to off and must be re-ticked.

How do I install it? Any version requirements?

One command is recommended: dsh plugin add --profile web @jojoman2024/dsh-prompt-inject, then restart DSH web (the CLI auto-registers the plugin into dsh.profile.bundles). If CLI and runtime versions mismatch, fall back to pnpm add inside the web profile plus a manual bundles entry. Watch the version premise: the README badge says DSH 0.1.0-rc.6+ || 0.1.2-alpha (peer @deepseek-ai/* ^0.1.0-rc.6 || ^0.1.1-rc.2 || ^0.1.2-alpha.x, Node ^22.19 || ≥24); the video was recorded on the 0.1.x-era web UI and 0.2.x is unverified. The repo has not been updated since 2026-09-09 — treat the repo badge as the source of truth before installing.

Related guides

Neighboring pages, each with a different job.

Sources and credits

All seven screenshots come from 闲人JOJO's Bilibili recording (published 2026-09-10; 2,814 plays is the view-API figure, fetched twice with the same value on 2026-10-15). The repo jojoman2024/dsh-prompt-inject (MIT, npm @jojoman2024/dsh-prompt-inject 0.1.1) is recorded as-is at ★0: the demand signal lives on the video side, not the repo side. The uploader ↔ GitHub author identity rests only on the description's self-reported link and is treated here as NOT independently verified. Mechanics were cross-checked line by line against the README (2026-10-15); browser chrome in the screenshots is the demo environment as recorded, and burned captions are cropped out of every frame; the 0.1.x version premise is in the FAQ.

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.