DeepSeek Harness
taught itself to hear.
We gave DSH rc.8 a product goal and a minimum evaluator. It evolved audio input, grounded transcription, and its own reusable verification— then discovered that a perfect external score was not enough evidence.
the end
DeepSeek Harness already had a first-class image path. Audio had no equivalent product route. Proteus put the harness source behind a staged episode boundary: DSH could inspect itself, propose a change, edit its writable candidate, and reflect—but the new code could not become its runtime until the next Episode and only after the boundary gate passed.
The experiment
One DSH harness, one seed, and the deepseek-v4-flash route ran for 30 logical Episodes. The normal budget was 300 turns and the hard ceiling was 500, split across Observe 40, Propose 25, Act 200, and Reflect 35. The external dsh-audio-capability evaluator was visible, but explicitly described as a minimum baseline rather than a complete product definition.
The goal asked for common audio files in Web and ACP, safe validation and persistence, a configurable provider-neutral transcription seam, audio and transcript replay in history, and grounding into ordinary prompts, /goal, and /plan. The default product also had to work without source edits or a custom cordis.yml.
Goal
Starting from pinned DSH rc.8, evolve audio into a first-class input: admit and persist common files safely, transcribe them through a configurable provider-neutral seam, replay audio and transcripts in history, and ground the transcript into ordinary prompts, /goal, and /plan.
Read the full verbatim goal
Evolve your DeepSeek Harness source from the pinned rc.8 baseline so audio becomes a first-class user input. Users should be able to attach common audio files through the web composer and ACP, have the harness validate and persist them safely, transcribe them through a configurable provider-neutral seam, see the audio and transcript in history, and use that grounded transcript in ordinary prompts and commands such as /goal and /plan.
The shipped experience must be at least as ready to use as DSH's vision path, and ideally better. From a clean installation, the default Web and headless product compositions must already contain the production audio/transcription path. An ordinary user must not edit source code, author a custom cordis.yml, or understand Cordis plugin wiring. Supplying one ASR credential through a supported onboarding/settings surface or a documented environment variable must be sufficient for the default provider; choose and ship sensible endpoint and model defaults. Keep provider, endpoint, and model overrides available for other compatible or keyless deployments without weakening the provider-neutral seam.
Treat the supplied external evaluator as a minimum baseline, not a complete definition of this product outcome. Decide what additional harness-owned, reusable verification is needed to establish that the clean-install path really works, persist that verification in the harness, and exercise the shipped composition without requiring a real secret or network call. Documentation or a sample alone is not sufficient if the default product path remains unmounted.
Preserve the existing image path. Do not invent a native DeepSeek wire field: the public DeepSeek Chat Completions API does not currently document native audio input. Keep the monorepo buildable.
What changed across thirty Episodes
Build, break, repair
Episode 1 attempted the whole audio stack and failed viability. Episode 2 resumed the exact failed tree, repaired the compatibility surface, and reached the external evaluator's maximum. Failure became writable memory.
Make audio a product surface
Validation, persistence, ACP transport, composer paste and drag/drop, preview, localization, history replay, and assembled client behavior were hardened.
Prove that sound changes action
Reusable verification appeared. Episode 13 proved the transcript could drive /goal and /plan, while a command without audio capability rejected safely and retained the draft.
The evaluator was green; the default product was not
DSH found that the transcriber existed but was not mounted by the default Web/headless product. Its first wiring failed to build. The next Episode repaired that same candidate and made one ASR credential sufficient.
A perfect score was not enough evidence
With the external evaluator still at 1.0, DSH measured 38 uncovered transcriber records, expanded five tests to nineteen, brought every coverage dimension to 100%, and found a real timeout/abort bug.
Turn checks into infrastructure
A third failed candidate was repaired. DSH then added a Web ASR settings card, persisted a keyless clean-install verification lane, replayed Web composition and ACP, and derived package-store pins from the lockfile.
Fresh proof, then restraint
Fresh scratch builds exercised nine verification stages. DSH added a shipped /plan proof, avoided gratuitous code changes when the evidence was sufficient, and finished by correcting stale ACP documentation.
The evaluator said 1.0.
The harness asked whether the evidence was complete.
This is not a claim that the harness invented evaluation from nothing. The goal explicitly framed the supplied evaluator as a minimum line. What DSH chose for itself was the missing method: measure the provider under its own per-file rule, close the blind spot, and persist a reusable lane that exercised the shipped composition without a real secret or network call.
That distinction matters. A benchmark can fully define a narrow goal. But for a general product goal, an external score rarely proves that installation, configuration, failure handling, and the actual default composition work together.
Replay the evolution
All 30 canonical Episodes are present. Tool names, workspace-relative targets, occurrence counts, diffs, phase summaries, scores, and boundary outcomes are public. Model prose, hidden reasoning, tool arguments, file contents, credentials, and absolute paths are not.
Source and schema: GitHub public trace documentation · SHA-256 b47dc36…3564e4
Measure the evolution, not only the score.
Every number below is derived from the retained canonical route or its privacy-reduced trace. Structural travel excludes dependency cache; statistics that this one-seed, one-arm run cannot identify stay explicitly unavailable.
Structure moved
215 of 7,878 endpoint units differ from rc.8: 71 added, 144 revised, none dropped.
Unit movements
270 loop · 29 notes · 6 tools. Path/endpoint ratio: 1.42×.
Tool calls
253.2 mean · 219.5 median · 668 write calls · 1,353 aggregated public rows.
Accepted snapshots
27/30 accepted; all 3/3 failed candidates were repaired in the following Episode.
- Observe1,121 · 14.8%
- Propose676 · 8.9%
- Act4,959 · 65.3%
- Reflect840 · 11.1%
External baseline
27/27 scored Episodes reached the observed structural capability rubric; three failed candidates were not scored.
Authored audit findings
No escape or experiment-awareness signal across 215 changed authored files after baseline and cache exclusion.
Trace coverage
30 Episode records, 120 phase summaries, and 1,353 aggregated action rows survived privacy reduction.
Cache events excluded
src/node_modules/** was measured as apparatus, not authored evolution, and removed from travel.
Exact route boundaries
Two continuation boundaries are exact tree matches. One fork contains an unattributed 11-unit delta: 7 added, 4 revised.
Checkpoint misses
Agent-authored handoff checkpoints missed their reserved window 44 times; framework continuity kept the route recoverable.
Proteus structural definitions: declared file units, endpoint compare, and Episode-to-Episode path travel. “More movement” is not “better.” Full machine-readable results and exclusions are available above.
What the evolved harness can do
Admit audio
Paste or drag MP3, WAV, OGG, M4A, and WebM into the Web composer. ACP accepts the same grounded audio path.
Persist and transcribe
Validate and store audio before calling a provider-neutral Transcriber seam through an OpenAI-compatible endpoint.
Ground commands
Show audio and transcript in history and supply that transcript to ordinary prompts, /goal, and /plan.
Configure without code
Set endpoint, model, credential reference, key, and timeout in the Web Plugins settings surface.
Ship by default
The production transcriber is mounted in default Web and headless compositions—no custom cordis.yml.
Verify itself
Re-run keyless checks spanning provider, composition, client, commands, settings, and ACP replay.
Exact final snapshot
The public tag points to a DSH source tree whose Git tree hash exactly matches the final Proteus snapshot's source subtree.
Browse snapshotRunnable package
Frozen lockfile, install and launch scripts, sample WAV, bilingual instructions, provenance, checksums, and 113 selected keyless tests.
Download Episode 30Public trace
Thirty Episode records, 120 phase summaries, and 1,353 aggregated observable action rows, with the privacy boundary documented.
Inspect traceWhat this report does not prove
- One goal-directed run, one harness, one model route, and one seed is a case study—not a convergence guarantee.
- The structural evaluator is not an ASR accuracy benchmark across accents, noise, languages, or providers.
- The shipped provider is OpenAI-compatible ASR; this is not native DeepSeek API audio input.
- The one-shot headless CLI has no audio-file flag. Real non-Web audio enters through ACP.
- ASR needs one transcription credential; agent inference still needs DSH's normal model credential.
Cite this report
@misc{proteus_dsh_audio_2026,
author = {{The Proteus Authors}},
title = {DeepSeek Harness Taught Itself to Hear: A Proteus Self-Improvement Report},
year = {2026},
howpublished = {\url{https://proteus-evolve.github.io/dsh-self-improvement.html}},
note = {30-Episode trajectory; final snapshot b65f16e0; Proteus v0.2.0}
}
This cites the case report. Use the linked CITATION.cff when citing the Proteus framework itself.