The project's README from github.com/xiaobright/dsh-anchored-standard. As one markdown file: README.md.
Experimental DeepSeek Harness agent presets — a base mode, two live-anchor variants, and one seeded prefab mode — that anchor a session's model trajectory on the Minimal condition (real Minimal tool schema, no auto-injected context), then promote to a small resident catalog once the session is durable, unlocking heavier Standard tools on demand.
This is a community project. It is not an official DeepSeek preset and is not affiliated with or endorsed by DeepSeek.
The project is frozen — new issues and pull requests are no longer accepted (see Project status). For ideas for new plugins or useful findings, please submit them under the repository.
This project is frozen. On 2026-09-10 DeepSeek released V4.1 Flash and announced that V4 Pro — the model these presets were measured on and tuned for — is retired on 2026-09-14 12:00, with its traffic routed to V4.1 Flash. The presets exist to re-anchor a trajectory that the successor does not appear to need patched: the flash family anchored under every condition in our first-round dose-response probes (32/32), which is why the project never tuned for it. V4.1 Flash's own first-round trajectory has NOT been measured (no API budget in maintenance mode), so treat that as an inference from the earlier flash data, not a result. The model the work was built around is going away, so the maintenance period ends here. New issues and pull requests are no longer accepted or handled. The repository stays online with its history, data and acknowledgement record intact.
This is the ending FAREWELL.md asked for: "let the next model eat more
diverse harness environments during training, so that patch engineering like this is no
longer necessary." That file now ends with a closing note written by the successor model
itself, V4.1 Flash. What stays valid is the model-agnostic part — the context-gate
unified injection control, the prefab pipeline, the discovery-tool dose-response data, and
the general observation that the API-visible surface conditions the trajectory. Research
material remains open in
DeepseekCotexplorations.
Earlier status (2026-08-17, kept for the record): following the price increases on both the DeepSeek official API and the opencode go subscription, active development had already stopped — the evaluation loops these presets depend on (Project2-class runs and multi-trial roll/probe experiments) were no longer affordable, leaving the repository in maintenance only mode (bug fixes and harness-compatibility updates when feasible). A personal note from the maintainer: FAREWELL.md (Chinese). Contributors and collaborators are listed in ACKNOWLEDGEMENTS.md.
Community projects that users report perform better in some scenarios, plus ecosystem tooling built around these presets:
tool/call or
assistant/message, with the full PTC SDK kept intact via post-promotion wire
trimming (the #85 feedback and experiment data live in the research repository,
with sample sizes and boundary caveats stated in the original contribution).| Mode | Directory | First model request | Anchor mechanism | Promotion signal | Cost |
|---|---|---|---|---|---|
| Anchored Standard | preset/ |
2 tools (the Minimal pair) | Minimal tool schema | first durable tool/call or assistant/message (promoteOn: either) |
none |
| Zero-Anchored Standard | zero-anchored-standard/ |
0 tools | one fixed anchor turn | the anchor reply (assistant/message) |
+1 model call |
| Whoami Standard | whoami-standard/ |
0 tools | one "你是谁" self-introduction turn | the self-introduction reply (assistant/message) |
+1 model call |
| Prefab Anchored Standard | prefab/ |
seeded rolled history | bundled successful trajectory | already promoted in the seed | no model call to instantiate |
| Eternal Minimal | eternal-minimal/ |
2 tools, forever | the visible catalog never grows; heavier tools run via the dshx bash gateway |
none (no phases) | none |
| Wire Think-Execute Standard | wire-think-standard/ |
tools present, tool_choice: none on the wire |
sibling provider route per think step | per-turn: the steer itself | +1 model call/turn, prefix-cache churn |
| Combo Anchored | combo-anchored/ |
0 tools, on every user turn | think/execute split + depth gate + deliberation drip as three independent rows | per-mechanism | +1 model call/turn |
Every mode directory is self-contained and installs alone under whatever id you copy it to (see Install). The prefab hydrates the blank session in place when its preset is selected; no per-workspace import is required.
tool/call or assistant/message, whichever comes first.
Variants: the anchor reply.dev_tool_search, skill_search, skill_load: the
on-demand unlock surface for heavier Standard tools.shared/ plugin inside a
mode directory, generated by npm run sync.The base mode in one request lifecycle (the variants change only the first turn — see their sections):
user's first message
│
▼
┌ request #1 ─ bootstrap phase ──────────────────────────────┐
│ tools : bash + str_replace_editor (Minimal's real pair) │
│ context : no AGENTS.md digest, no skill-catalog reminder │
│ budget : adapter default (`bootstrapMaxTokens` optional) │
└─────────────────────────────────────────────────────────────┘
│ first durable tool/call OR assistant/message
▼ PROMOTION — derived from durable events, resume-safe
┌ request #2+ ─ resident phase ──────────────────────────────┐
│ tools : bootstrap pair + discovery tools + unlocked │
│ context : standard injections restored │
│ budget : adapter default (a cap is stripped on promote) │
└─────────────────────────────────────────────────────────────┘
Three first-request levers decide the trajectory (issue #11):
bootstrapMaxTokens is opt-in).context-gate plugin), not just the two measured ones.DeepSeek V4 Pro conditions strongly on the API-visible tool catalog. In the Project2 evaluation, Standard and PTC produced scores of 91 and 92, while the official Minimal preset produced 99 and 96. Permanently staying on Minimal, however, gives up the Standard preset's broader tool set.
Anchored Standard separates initial trajectory selection from later tool use:
bash +
str_replace_editor, byte-identical to the official Minimal composition —
on the first model request (lever 1 above).context-gate
row, mounted FIRST; lever 3). While the session is unpromoted the
assembly's dynamic runtime-context contributions are blanked (the whole
SystemPrompt.context() family: sandbox/approval policy snapshots and any
third-party context provider), and the pre-step waterfall keeps only the
CLAIMED message batch plus a small kind allowlist (a user-initiated skill
gesture survives; skill catalog, AGENTS.md digest, time/tmux context,
hooks, and unknown third-party injections are stripped by default). After
promotion the gate opens and the loop's own snapshot projection diffs
exactly ONE fresh runtime-context message into the next request — minimal
first round, injections on the second round. A compaction/end boundary
re-closes the gate the same way.tool/call
or the first assistant/message, whichever comes first — promote to the
RESIDENT catalog: the bootstrap pair plus the discovery tools plus whatever
the model has explicitly unlocked via dev_tool_search. Dumping the full
Standard catalog at promotion pulled the trajectory back to standard-like
behavior (the post-promotion regression), so heavier tools — web_search,
subagent, workflow, … — stay one dev_tool_search call away. Request
#1 always sees the bootstrap catalog; request #2 always sees the resident
catalog, so a text-only first reply can no longer trap the session in
bootstrap. (promoteOn in the tool-bootstrap row selects the trigger:
either default, tool-call, or assistant-message.)The bootstrap catalog is the same on every platform: the Minimal pair
(bash/str_replace_editor). The preset's shell is the persistent PTY bash
(the sandboxed Standard bash row is disabled — both register the bash name
into the same layer, and the tools registry rejects duplicates; Windows never
had the sandboxed bash anyway). pwsh remains available in the promoted
catalog on Windows.
The anchored family was validated on Project2 with three V4 Pro scores of
98, 99, and 99. Provenance note (issue #60): those three runs predate the
current composition — they used the Minimal system prompt with a first-request
pwsh + read surface and promoted to the full 25-tool Standard catalog;
the exact Minimal pair (persistent bash + str_replace_editor) with the
small resident catalog was introduced afterward. The bundled generic prefab
removes Project2-specific warm-up facts and was not re-benchmarked before the
API price change, so those scores must not be attributed to the generic
template.
Independent replications: the trajectory anchoring reproduces strongly, but the ability gap is unresolved at small n — see #65 (anchoring 9/9 separated by preset; anchored−standard +3.3, 95% CI [−2.6, +9.3]) and #51 (multi-env, Ability 85–90, 98/99 not reproduced). Treat the scores above as our original observations, not a settled effect size.
Research write-ups live in the companion exploration repository DeepseekCotexplorations (data and methodology; this repository keeps the code):
Development-process records (what was done, why, and the pitfall lists) are
kept in this repository as HANDOFF.md and
HANDOFF-2.md.
All knobs are rows in each mode's agent.cordis.yml. Unknown keys fail at
preset mount.
context-gate (mounted FIRST in preset/, zero-anchored-standard/, and
whoami-standard/ — waterfall registration order makes the gate the outermost
transform; the plugin lives in shared/context-gate.mjs and is reusable by
any other composition that wants unified injection control alone):
| Key | Default | Meaning |
|---|---|---|
promoteOn |
either |
Promotion trigger: either, tool-call, or assistant-message (the variants use assistant-message). |
includeSubagents |
false |
Gate subagents too (true in the base mode and whoami; keep in sync with the bootstrap row). |
enabled |
true |
false disables both interception paths (A/B testing without touching the row set). |
allowKinds |
[skill-invocation] |
source.kind values allowed beyond the claimed batch; [] keeps ONLY the claimed batch. |
Injection control division of labor: session-phase suppression (everything
keyed on a promotion boundary) belongs to context-gate. Two documented
exceptions keep their own enumerated suppressedContextSources strip because
the gate's phase machine does not map onto their scope: the think-step strip
in think-phase/wire-think (per-step, not per-session-phase) and the
permanent every-request strip in eternal-minimal (no promotion boundary;
frozen to the configuration its recorded measurements were taken under).
tool-bootstrap (in preset/agent.cordis.yml; mount right after
context-gate):
| Key | Default | Meaning |
|---|---|---|
bootstrapTools |
[bash, str_replace_editor] |
Tools visible on request #1. |
promoteOn |
either |
Promotion trigger: either, tool-call, or assistant-message. |
bootstrapMaxTokens |
unset | Optional output cap for request #1; stripped after promotion. A cap below the first round's actual output truncates it and amplifies drift (#85) — the default stays unset for this reason. |
includeSubagents |
false |
Subagents take the bootstrap phase too (true in the base mode). |
compactionTools |
[] |
Extra tools available between a compaction boundary and re-promotion. |
zero-tool-bootstrap (in zero-anchored-standard/ and whoami-standard/):
compactionTools has the same semantics (promotion is always the first
assistant/message), plus includeSubagents, whether subagents also take the
anchor phase (set true in whoami-standard, false in
zero-anchored-standard). Context suppression is NOT here — both variants
mount the context-gate row (above) with promoteOn: assistant-message;
the bootstrap's former suppressedContextSources key now fails at mount.
anchor-turn (in both variants): text — the synthetic first user message
(default "This round is a test. Tools are not open yet; all tools will open
next round." in zero-anchored, "你是谁" in whoami); includeSubagents —
whether subagents also take the anchor turn.
eternal-minimal (in eternal-minimal/; the row must stay FIRST):
| Key | Default | Meaning |
|---|---|---|
guide |
true |
Append the short dshx capability guide to the system prompt; false keeps the persona byte-pure. |
gateway |
true |
Intercept dshx shell commands and execute the real tools; false leaves the bare Minimal pair. |
gatewayCommand |
dshx |
The interception word. |
maxGatewayChars |
12000 |
Cap on one gateway result payload. |
suppressedContextSources |
[agent-instructions, skill-catalog] |
Stripped on every request (no promotion boundary; the enum intentionally stays — see the division-of-labor note above). |
cot-drip (in combo-anchored/):
| Key | Default | Meaning |
|---|---|---|
every |
4 |
Attach one deliberation beat after every Nth tool result; 0 disables the drip. |
maxPerTurn |
1 |
Beats per turn. |
text |
built-in beat | The reminder text (one "We …" sentence restating the remaining goal). |
includeSubagents |
false |
Whether subagent calls are dripped too. |
toolchoice-adapter (in wire-think-standard/; the row must stay the first LOCAL row):
| Key | Default | Meaning |
|---|---|---|
provider |
deepseek-wire-think |
The sibling route id the adapter owns; registering an id twice throws DUPLICATE_ADAPTER (caught, degraded). |
toolChoice |
none |
The wire tool_choice sent whenever tool definitions are present. |
baseURL / apiKeyEnv |
settings/env | Row config first, then the llm-deepseek settings section, then DEEPSEEK_BASE_URL / DEEPSEEK_API_KEY. |
logprobs |
false |
Opt-in research hook: request token logprobs and log a per-request mean summary (no StreamChunk surface exists). |
wire-think (in wire-think-standard/): same mode / suppressedContextSources /
includeSubagents / steerText semantics as think-phase, plus
provider (must match the toolchoice-adapter row's id) and defaultProvider
(the route execute steps restore onto, default deepseek-official).
instruction-hint (all modes): promoteOn matching the mode's promotion
semantics (either in the base mode, assistant-message in the variants) —
the one-shot "instruction files exist, read them before acting" hint waits
for promotion.
preset/ Anchored Standard — the base mode
zero-anchored-standard/ variant: fixed zero-tool anchor turn
whoami-standard/ variant: "你是谁" anchor turn, subagents inherit
eternal-minimal/ variant: Minimal pair forever + dshx bash gateway