dsh-switchman 1.3.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.de.md CHANGED
@@ -2,61 +2,92 @@
2
2
 
3
3
  [English](./README.md) | [简体中文](./README.zh.md) | [繁體中文](./README.zh-TW.md) | [日本語](./README.ja.md) | [한국어](./README.ko.md) | [Español](./README.es.md) | [Français](./README.fr.md) | **Deutsch** | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
4
4
 
5
- > **Die Switchman-Familie**, gleicher Autor, gleiche Orchestrierung: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (das OpenCode-Original) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (die ZCode-Portierung) · **dsh-switchman** (dieses Repo, für DeepSeek Harness).
5
+ > **Die Switchman-Familie**, gleicher Autor, gleiche Orchestrierung: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (das OpenCode-Original) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (die ZCode-Portierung) · **dsh-switchman** (dieses Repo, die DeepSeek-Harness-Edition).
6
6
 
7
- ![dsh-switchman — der Kontext-Wasserstand steuert den Weichenwärter und stellt die Route](docs/assets/hero.svg)
7
+ ![dsh-switchman — der Kontext-Wasserstand stellt die Weiche und lenkt jede Aufgabe auf die richtige Spur](docs/assets/hero.svg)
8
8
 
9
- > Kontext auf einer Anzeige. Aufgaben verteilen sich selbst.
9
+ > Dem Kontext einen Wasserzähler geben — jede Aufgabe findet von selbst ihre Spur.
10
10
 
11
- Ein Plugin für [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Einmal installiert, hört Ihr Hauptmodell auf, alles selbst zu erledigen, und wird zum Dispatcher: Wasserstand messen, Spur wählen, Aufgabe verteilen, Arbeit prüfen. Vier Dinge:
11
+ ## Warum Sie es brauchen
12
12
 
13
- **1. Kontext-Wasserstandskontrolle.** Jeder Turn misst die Live-Tokens der Sitzung. Soft (Standard 50k) empfiehlt zu delegieren, hard (90k) verengt das Lesebudget pro Turn und drängt zum Abschluss, force (130k) sichert die Sitzung und übergibt sie an die Kompaktierung — automatisch. Fahren Sie eine Sitzung den ganzen Tag; Ihr Kontext ertrinkt nie im eigenen Verlauf. Jeder dispatchte Subagent trägt sein eigenes Hard Cap und endet mit einer HANDOFF-Zusammenfassung, sobald es erreicht ist.
13
+ Wer lange mit DSH arbeitet, stößt früher oder später auf zwei Probleme:
14
14
 
15
- **2. Dispatch auf sechs Spuren.** economy / mechanical / main / hard / vision / review — sechs kognitive Spuren. Wählen Sie auf der Einstellungsseite Kandidatenmodelle pro Spur, sortieren Sie sie stärkste zuerst (optionale S/A/B/C-Tier-Verankerung) und pinnen Sie pro Route einen Reasoning-Effort — das Dropdown listet die Stufen, die jedes Modell *tatsächlich* unterstützt, nicht drei generische Stufen. Jedem Prompt liegt eine `[SWITCHMAN:POOLS]`-Tabelle bei, damit das Modell weiß, wen es aufrufen soll; der `enforce`-Modus lehnt Modelle außerhalb des Pools rundweg ab.
15
+ 1. **Die Sitzung wird mit der Zeit immer schwerer.** Der Verlauf bläht den Kontext auf Hunderttausende Tokens auf; das Modell beginnt zu vergessen, wird langsamer, wird teurer — bis nur noch ein manuelles /compact hilft, und jede Komprimierung schluckt zwangsläufig Details.
16
+ 2. **Ihr Hauptmodell macht alles selbst.** Eine Datei nachschlagen, einen Test laufen lassen, Daten abgleichen — es wühlt sich allein durch alles, langsam und teuer, obwohl der Großteil dieser Arbeit eigentlich zu einem deutlich billigeren Modell gehören würde.
16
17
 
17
- **3. Spracheinstellungen.** Je ein Dropdown für Antworten, Codekommentare und verfasste Dokumente. Nicht gesetzt? Sie werden einmal gefragt, es wird für immer gemerkt, und jede spätere Sitzung hält sich daran.
18
+ dsh-switchman ist ein Plugin für [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Nach der Installation hört das Hauptmodell auf, alles selbst zu erledigen, und arbeitet als Dispatcher: Wasserstand messen, Spur wählen, Aufgaben verteilen, Ergebnis prüfen. Es ist kein neues Modell — es ist eine auf DSH aufgesetzte Orchestrierungs-Doktrin plus eine Einstellungsseite. Konkret tut es sechs Dinge:
18
19
 
19
- **4. Doktrin: standardmäßig delegieren.** Ersetzt die mit DSH ausgelieferte konservative Team-Policy („Teammates nur auf Anfrage erstellen“): Kleinkram bleibt in eigener Hand (<200 gelesene Zeilen, <50 geänderte), echte Arbeit wird standardmäßig delegiert; jede Änderung wird verifiziert — >20 Zeilen gehen an einen Tester, >300 Zeilen oder Kernlogik an einen Reviewer. Sag „keine Teams nutzen“, und er tritt sofort zurück.
20
+ **1. Kontext-Wasserstand: Lange Sitzungen laufen nie über.** Jeder Turn zählt die Live-Tokens der Sitzung und hält sie gegen drei Wassermarken, die sich Stufe um Stufe verschärfen: 50k (soft, einstellbar) mahnt „Zeit zu delegieren“; 90k (hard) verengt das Lesebudget für Dateien pro Turn und drängt zum Abschluss; 130k (force) übernimmt automatisch — ein Fork der Sitzung wird archiviert, der Kontext komprimiert, die Fortsetzung geweckt, und die Aufgabe reißt nicht ab. Auch Hintergrund-Subagents, die in diesem Moment noch laufen, gehen nicht verloren: id, Aufgabenbeschreibung und Berichtspfad werden ins Übergabedokument geschrieben, und die fortgesetzte Sitzung weiß, wo sie die Berichte einsammelt, statt Arbeit doppelt zu verteilen. Jeder losgeschickte Subagent trägt sein eigenes hartes Limit; ist es erreicht, schreibt er seine HANDOFF-Zusammenfassung und verabschiedet sich.
20
21
 
21
- Nur ein Modell? Lohnt sich trotzdem — die Wasserstandskontrolle und die Doktrin interessieren sich nicht dafür, wie viele Modelle Sie haben.
22
+ **2. Sechs Dispatch-Pools: das passende Modell für jede Arbeit.** Ein Pool für Leichtes (economy, Kleinkram in Serie), ein mechanischer Pool (mechanical, Umschreibungen nach Vorlage), ein Hauptpool (main, der Coding-Alltag), ein Pool für Schweres (hard, anspruchsvolles Reasoning und große Refaktorierungen), ein Multimodal-Pool (vision, Bilder lesen) und ein Review-Pool (review, unabhängige Verifikation). Auf der Einstellungsseite haken Sie Kandidaten ab, sortieren sie nach Priorität (optional mit S/A/B/C-Tiers) und pinnen pro Route einen eigenen Reasoning-Effort — das Stufen-Dropdown listet, was dieses Modell tatsächlich unterstützt, nicht drei generische Stufen. Jeder Prompt des Hauptmodells trägt eine `[SWITCHMAN:POOLS]`-Empfehlungstabelle mit sich, und nach ihr wird dispatcht. Der Ausführungsmodus kennt drei Zustände: off / advice / enforce (enforce = Modelle außerhalb des Pools werden rundweg abgelehnt).
23
+
24
+ **3. Agent-Teams-Modus: vom Alleingang zum eigenen Team.** Standardmäßig aus — direkt nach der Installation bleibt es beim leichten subagent-Dispatch. Zwei unabhängige Schalter finden sich auf der Einstellungsseite:
25
+
26
+ - **Agent-Teams-Modus** — eingeschaltet injiziert er die Team-Doktrin (standardmäßig delegieren + gestufte Verifikation + Disziplin des gemeinsamen Task-Boards) und aktiviert automatisch DSHs Agent Teams: Das Hauptmodell darf feste Teammitglieder anwerben (`spawn_teammate`), Arbeit auf das gemeinsame Task-Board legen (`team_task_*`) und mit ihnen Nachrichten austauschen (`send_message`). Wann ein Team gebildet wird, folgt einer klaren Disziplin: parallelisierbare unabhängige Teilaufgaben, umfangreiche in sich geschlossene Pakete, ein bereits hoch stehender Hauptkontext, der Bedarf an Rollentrennung; einmalige Punktuntersuchungen laufen weiter über einen subagent. DSHs Werksstrategie lautet „kein Team, solange der Nutzer keins nennt“ — hier kippt sie zu „einsetzen, wenn es passt“. Den Schalter wieder auszuschalten hinterlässt keinerlei Rest der Team-Klauseln und nimmt laufenden Sitzungen die Team-Tools niemals weg.
27
+ - **Synchronisation der Subagent-Modell-Whitelist** — DSH führt eine Autorisierungs-Whitelist „Modelle, die Agents für Subagents wählen dürfen“: Eine im Pool ausgewählte, aber nie freigegebene Route bekommt beim namentlichen Dispatch eine Absage (im Team-Modus markieren die Pools-Tabelle und die Einstellungsseite solche Routen mit ⚠). Diesen Schalter einschalten, und die Vereinigung aller sechs Pools wird in einem Rutsch in die Whitelist geschrieben — keine doppelte Konfiguration mehr, switchman bleibt die alleinige Wahrheitsquelle, und auch der Fork-Dispatch-Pfad ist abgedeckt. Die Whitelist greift als Schnappschuss je neuer Sitzung; die Synchronisierung wirkt also nur auf Sitzungen, die danach geöffnet werden.
28
+
29
+ Die Sitzungskopfzeile hält Sie auf dem Laufenden: ein ⚡-Badge „autonomes Team“ und ein ◇-Chip mit dem Modell, das die Sitzung tatsächlich nutzt; läuft gerade eine automatische Übergabe, erscheint live der Hinweis „Übergabe läuft · Sitzung wird gesichert / Kontext wird komprimiert / Fortsetzung wird geweckt“.
30
+
31
+ **4. Spracheinstellungen: einmal gefragt, für immer gemerkt.** Je ein Dropdown für Antworten, Codekommentare und Dokumentation, mit globaler oder projektspezifischer Geltung (`.switchman/lang.json`). Ungesetzt lassen ist erlaubt — beim ersten echten Bedarf wird einmal gefragt, in der Sprache Ihrer DSH-Oberfläche, die Antwort bleibt gemerkt, und jede spätere Sitzung hält sich automatisch daran.
32
+
33
+ **5. Gestufte Verifikation: Jede Änderung wird geprüft.** Änderungen über 20 Zeilen gehen an einen Tester; über 300 Zeilen oder sobald Kern- / Sicherheits- / Datenkonsistenz-Logik berührt wird, zusätzlich an einen unabhängigen Reviewer. Das Reviewer-Modell wird so gewählt, dass es das Modell „des Agents, der den Diff geschrieben hat“ meidet — so weit die Pools es zulassen; wenn wirklich nicht, erklärt die Schlussfolgerung DOWNGRADED. Einmal „nutze keine Teams“ gesagt, und er fällt sofort ins Solo zurück.
34
+
35
+ **6. `/vision`: Auch reine Textmodelle kommen mit Bildern zurecht.** Kann das Hauptmodell keine Bilder lesen, weist DSH Bildnachrichten schon am Eingang zurück. Bild anhängen, `/vision wo liegt der Fehler in diesem Bild` eingeben — das Bild wird zu einem Dateipfad aufgelöst und einem Modell des Multimodal-Pools zum Lesen übergeben; die Erkenntnisse kehren in die aktuelle Sitzung zurück. Über dem Eingabefeld erscheint früh ein Hinweis: „Das aktuelle Modell kann keine Bilder lesen“; wird ein gewöhnlicher Bildversand abgewiesen, wird der Entwurf einmalig als `/vision` umgeschrieben und von selbst erneut gesendet — ohne neues Eintippen; ohne konfigurierten Multimodal-Pool lehnt der Befehl ab und nennt die Einrichtungsschritte.
36
+
37
+ Nur ein Modell? Die Installation lohnt sich trotzdem — Wasserstandskontrolle und gestufte Verifikation interessieren sich nicht dafür, wie viele Modelle Sie haben; lange Ein-Modell-Sitzungen profitieren genauso.
22
38
 
23
39
  ## Mitgelieferte Skills
24
40
 
25
- - **db-query** — Read-only-Verifikation für MySQL/Redis: führt SQL aus, um Datensätze, Cache-Keys / TTLs und store-übergreifende Konsistenz zu prüfen. Verweigert jede Schreiboperation. Einmalige Einrichtung unten.
26
- - **git-commit-message** — konventionskonformer Commit-Text. Nur Text; fasst git nie an.
27
- - **requirement-docs** — eine einzige Spezifikation für Anforderungen / PRD / Design-Dokumente, archiviert unter `docs/requirements-and-design/`.
41
+ - **db-query** — Read-only-Verifikation für MySQL / Redis: SQL ausführen, um Datensätze abzugleichen, Cache-Keys / TTLs zu prüfen und die Konsistenz über Stores hinweg zu kontrollieren; lehnt jede Schreiboperation ab. Einmalige Einrichtung unten.
42
+ - **git-commit-message** — erzeugt konventionskonformen Commit-Text. Nur Text; es führt niemals git für Sie aus.
43
+ - **requirement-docs** — eine einheitliche Spezifikation für Anforderungsanalyse / PRD / Design-Dokumente, archiviert unter `docs/requirements-and-design/`.
28
44
 
29
45
  ## Schnellstart
30
46
 
31
- 1. **Installieren** — aus einer beliebigen Agent-Sitzung oder über den Web-Plugin-Manager:
47
+ 1. **Installieren** — aus einer beliebigen Agent-Sitzung oder über die Web-Plugin-Verwaltung:
32
48
 
33
49
  ```
34
50
  plugin_manager: install_bundle target=dsh-switchman
35
51
  ```
36
52
 
37
- oder aus einem lokalen Checkout (verlinkt; nach dem Pullen von Änderungen `remove_bundle` + `install_bundle` erneut ausführen):
53
+ oder aus einem lokalen Checkout (verlinkt; nach Updates `remove_bundle` + `install_bundle` erneut ausführen):
38
54
 
39
55
  ```
40
56
  plugin_manager: install_bundle target=/path/to/dsh-switchman
41
57
  ```
42
58
 
43
- 2. **DSH neu starten** — beenden Sie die App vollständig und öffnen Sie sie neu (ein Seiten-Reload genügt nicht), damit die Client-Modul-Tabelle das Bundle aufnimmt.
59
+ oder im Terminal über den `dsh`-Befehl — wählen Sie das Profil, das dazu passt, wie Sie DSH ausführen:
60
+
61
+ ```bash
62
+ dsh plugin --profile web add dsh-switchman # Web GUI
63
+ dsh plugin --profile desktop add dsh-switchman # Desktop-App
64
+ ```
65
+
66
+ 2. **DSH neu starten** — die App vollständig beenden und neu öffnen (Seite neu laden genügt nicht), damit die Client-Modul-Tabelle das Bundle erkennt.
67
+
68
+ 3. **Spracheinstellungen** — Settings → dsh-switchman, oder das „Switchman-Control-Center“ in der Startseiten-Seitenleiste. Der erste Bildschirm wählt zuerst den Geltungsbereich: global (dieses Profil) oder pro Projekt (die `.switchman/lang.json` des jeweiligen Projekts); dann legen drei Dropdowns die Sprachen für Antworten / Kommentare / Dokumente fest, jedes mit einer „aktuell: …“-Statuszeile darunter. Überspringen ist erlaubt — beim ersten Gebrauch wird einmal gefragt und die Antwort gemerkt (gefragt wird in der Sprache Ihrer DSH-Oberfläche).
69
+
70
+ ![Spracheinstellungen: Geltungsbereich und drei Sprachen](docs/assets/conf-language-en.png)
71
+
72
+ 4. **Die Dispatch-Pools füllen** — jede Pool-Karte listet Kandidatenmodelle gruppiert nach Anbieter; haken Sie die gewünschten ab. „Manuelle Reihenfolge“ anhaken, und die Karte wird zu einer nummerierten Prioritätsliste, die sich mit ↑ ↓ × umsortieren lässt; neben jeder Route lässt sich zusätzlich ein Reasoning-Effort anpinnen (standardmäßig „der Spur folgen“; beim Anpinnen listet er die Stufen, die dieses Modell tatsächlich unterstützt). Eine Zusammenfassungszeile oben verfolgt den Fortschritt live, zum Beispiel „6/6 Pools konfiguriert · 2 gerankt · Modus advice“.
73
+
74
+ ![Dispatch-Pools: die vier Pools economy / mechanical / main / hard](docs/assets/conf-pool-1-en.png)
44
75
 
45
- 3. **Einstellungsseite öffnen** — Settings → dsh-switchman. Der erste Bildschirm sind die Spracheinstellungen: je ein Dropdown für Antworten / Kommentare / Dokumente, jedes mit einer Live-Zeile `current: …`. Sie dürfen sie überspringen — Sie werden einmal gefragt, und es bleibt gemerkt.
76
+ Multimodal-Pool und Review-Pool stehen darunter; weiter unten folgen das **Fähigkeits-Ranking** (die Vereinigung der in den sechs Pools gewählten Modelle — der Rang ist die Fähigkeitsreihenfolge, das stärkste zuerst, optional mit S/A/B/C-Tiers) und der **Ausführungsmodus** (advice / enforce).
46
77
 
47
- ![Einstellungsseite und Spracheinstellungen](docs/assets/conf-demo1.png)
78
+ ![Multimodal-Pool, Review-Pool, Fähigkeits-Ranking und Ausführungsmodus](docs/assets/conf-pool-2-en.png)
48
79
 
49
- 4. **Die sechs Pools füllen** — jede Pool-Karte listet Kandidaten gruppiert nach Provider; haken Sie die gewünschten an. Haken Sie **manual order** an, und die Karte wird zu einer nummerierten Prioritätsliste mit ↑ ↓ ×-Steuerungen. Das Effort-Dropdown neben jeder ausgewählten Route steht standardmäßig auf *follow lane*; beim Fixieren listet es die Stufen, die dieses Modell tatsächlich unterstützt (Low / High / Max…). Eine Zusammenfassungszeile verfolgt den Fortschritt live: “6/6 pools set · 3 ranked · mode advice”.
80
+ 5. **Agent-Teams** — beide Schalter sind standardmäßig aus; starten Sie mit reinem subagent-Dispatch. Soll das Modell selbst Teams anwerben, schalten Sie den „Agent-Teams-Modus“ ein; um dieselben Routen nicht doppelt freigeben zu müssen, schalten Sie die „Synchronisation der Subagent-Modell-Whitelist“ ein — eine Statuszeile „synchronisiert: N Routen + Zeitstempel“ unter dem Schalter bestätigt, was geschrieben wurde.
50
81
 
51
- ![Dispatch-Pools](docs/assets/conf-demo2.png)
82
+ ![Agent-Teams: die beiden Schalter und der Whitelist-Synchronisierungsstatus](docs/assets/conf-team-en.png)
52
83
 
53
- 5. **Ranking und Watermark** — die Reihenfolge der Ranking-Tabelle ist die Fähigkeitsreihenfolge (stärkste zuerst), mit optionalen S/A/B/C-Tiers; der Ausführungsmodus ist `off` / advice / enforce (enforce = Modelle außerhalb des Pools werden abgelehnt). Darunter verengt der Watermark-Abschnitt das Verhalten entlang des Token-Verbrauchs: drei Schwellenwerte, ein Lesebudget pro Aufruf, das Hard-Mode-Verhalten (cap / deny), ein Schalter für automatische Übergabe und ein separates Limit für Subagents. Die unterste Zeile trägt die Befehle: `/ctx-pause` zum Stoppen der Eingriffe · `/ctx-resume` zum Fortsetzen · `/ctx-handover` zum Sichern und sofortigen Übergeben.
84
+ 6. **Kontext-Wasserstand** — die drei Schwellenwerte (Standard 50000 / 90000 / 130000), das Lesebudget pro Aufruf, das Hard-Mode-Verhalten (gedrosselter Durchlass / Blockade), der Schalter für automatische Übergabe und das eigene Subagent-Limit liegen alle in diesem Bereich. Die unterste Zeile trägt die Befehle: `/ctx-pause` pausiert die Eingriffe · `/ctx-resume` setzt fort · `/ctx-handover` sichert und übergibt sofort (es lenkt die Sitzung an eine Leerlaufgrenze und wartet das Komprimierungs-Wiederholungsfenster ab — das Ergebnis kann einige Minuten dauern).
54
85
 
55
- ![Ranking und Kontext-Watermark](docs/assets/conf-demo3.png)
86
+ ![Kontext-Wasserstand: Schwellenwerte, Budgets und Befehle](docs/assets/conf-ctx-en.png)
56
87
 
57
- 6. **Verifizieren** — das ⚡-Badge erscheint neben dem Preset-Chip in der Kopfzeile jeder Sitzung; fragen Sie das Modell „was sagt der letzte Abschnitt deines Systemprompts?“ — es sollte die dsh-switchman-Doktrin erwähnen.
88
+ 7. **Verifizieren** — in der Sitzungskopfzeile erscheint ein ⚡-Badge „autonomes Team“ (neben einem ◇, das das Modell der aktuellen Sitzung zeigt); oder fragen Sie das Modell einfach: „Wie lautet die Überschrift des letzten Abschnitts deines Systemprompts?“ — die Antwort sollte die dsh-switchman-Doktrin erwähnen.
58
89
 
59
- **db-query – einmalige Einrichtung** (die Skript-Abhängigkeiten liegen im Skill-Verzeichnis):
90
+ **db-query – einmalige Einrichtung** (die Skript-Abhängigkeiten landen im Skill-Verzeichnis — Ihr Projekt bleibt sauber):
60
91
 
61
92
  ```bash
62
93
  bash <install-dir>/skills/db-query/scripts/setup.sh
@@ -64,15 +95,16 @@ bash <install-dir>/skills/db-query/scripts/setup.sh
64
95
 
65
96
  ## Wie es funktioniert
66
97
 
67
- - Die Host-Hälfte (`index.js` + `host/`) injiziert drei dynamische Systemprompt-Abschnitte, die Lesebudget- und Enforce-Schranken, die automatische Antworterfassung und drei Slash-Befehle. Alle Einstellungen sind flüchtige Felder — gespeicherte Änderungen greifen bei der nächsten Prompt-Zusammenstellung, ohne Neustart.
68
- - Die Client-Hälfte (`client.js`) rendert das ⚡-Badge neben dem Preset-Chip sowie die Einstellungsseite über die offiziellen Settings-Form-Dienste.
69
- - `cordis.patch.yml` gibt die Plugin-Liste jedes mitgelieferten Presets wortgleich wieder und erweitert nur das Persona-Suffix; die Agent-Teams-Tools selbst kommen weiterhin aus dem mitgelieferten `@deepseek-ai/dsh-experimental-agent-team-profile`.
98
+ - Die Host-Hälfte (`index.js` + `host/`) injiziert die dynamischen Systemprompt-Abschnitte (Sprache / Spuren / Wasserstand / Teams), die doppelten Schranken aus Lesebudget und enforce sowie die vier Slash-Befehle (das ctx-Trio + `/vision`). Jede gespeicherte Einstellung greift bei der nächsten Prompt-Zusammenstellung — ohne Neustart.
99
+ - Die Client-Hälfte (`client.js`) rendert die Einstellungsseite, das ⚡-Badge und den ◇-Modell-Chip in der Sitzungskopfzeile sowie die dynamische Anzeige „Übergabe läuft“ — über die offiziellen settings-form-Dienste.
100
+ - Der Eintrag „Switchman-Control-Center“ in der Startseiten-Seitenleiste öffnet per Klick dieselbe Konfigurationsseite (Spracheinstellungen, Dispatch-Pools & Ranking, Wasserstand) als zentrales Panel; der ursprüngliche Einstieg in die Einstellungen bleibt erhalten.
101
+ - `cordis.patch.yml` übernimmt die Plugin-Liste der Werks-Presets vollständig und erweitert ausschließlich das persona suffix; die Agent-Teams-Tools selbst stammen aus dem Werks-Bundle und werden beim Einschalten des Team-Modus automatisch aktiviert.
70
102
 
71
103
  ## Wartung
72
104
 
73
- - Nach einem DSH-Upgrade, das die Plugin-Listen der mitgelieferten Presets ändert: `cordis.patch.yml` aus den neuen `presets/*.patch.yml` neu synchronisieren (das Doktrin-Suffix behalten) und anschließend neu installieren.
74
- - Die modellseitigen Protokollzeilen (`[SWITCHMAN:LANG|POOLS|WATERMARK]`) sind bewusst Englisch und byte-stabil — nicht lokalisieren.
75
- - `npm pack --dry-run` muss in der geprüften Form von 34 Dateien / ~111 kB bleiben (die `docs/`-Screenshots werden nie mitgeliefert).
105
+ - Ändert ein DSH-Upgrade die Plugin-Listen der Werks-Presets, `cordis.patch.yml` aus den neuen `presets/*.patch.yml` neu synchronisieren (das doctrine suffix behalten) und anschließend neu installieren.
106
+ - Die Protokollzeilen (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) bleiben bewusst englisch und byte-stabil — nicht lokalisieren.
107
+ - `npm pack --dry-run` muss in der auditierten Form von 50 Dateien / ~205 kB bleiben (die `docs/`-Screenshots wandern nicht ins Paket).
76
108
 
77
109
  ## Lizenz
78
110
 
package/README.es.md CHANGED
@@ -2,61 +2,92 @@
2
2
 
3
3
  [English](./README.md) | [简体中文](./README.zh.md) | [繁體中文](./README.zh-TW.md) | [日本語](./README.ja.md) | [한국어](./README.ko.md) | **Español** | [Français](./README.fr.md) | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
4
4
 
5
- > **La familia switchman**, mismo autor, misma orquestación: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (el original para OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (el port para ZCode) · **dsh-switchman** (este repositorio, para DeepSeek Harness).
5
+ > **La familia switchman**, mismo autor, misma filosofía de despacho: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (el original para OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (el port para ZCode) · **dsh-switchman** (este repositorio, la versión para DeepSeek Harness).
6
6
 
7
- ![dsh-switchman — el nivel de agua del contexto mueve al guardagujas y lanza la ruta](docs/assets/hero.svg)
7
+ ![dsh-switchman — el nivel de agua del contexto maneja la palanca del guardagujas y cada tarea toma su carril](docs/assets/hero.svg)
8
8
 
9
- > Contexto en un medidor. Las tareas se despachan solas.
9
+ > Contexto con medidor. Cada tarea encuentra su carril.
10
10
 
11
- Un plugin para [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Una vez instalado, tu modelo principal deja de hacerlo todo por su cuenta y pasa a ser un despachador: medir el nivel de agua, elegir el carril, repartir la tarea, revisar el trabajo. Cuatro cosas:
11
+ ## Por qué lo necesitas
12
12
 
13
- **1. Control del nivel de agua del contexto.** Cada turno mide los tokens en vivo de la sesión. Soft (50k por defecto) aconseja delegar, hard (90k) aprieta el presupuesto de lectura por turno y empuja al cierre, force (130k) respalda la sesión y la entrega a la compactación — automáticamente. Usa una sesión todo el día; tu contexto nunca se ahoga en su propio historial. Cada subagente despachado lleva su propio hard cap y termina con un resumen HANDOFF al alcanzarlo.
13
+ Trabajando con DSH, tarde o temprano te topas con dos cosas:
14
14
 
15
- **2. Despacho de seis carriles.** economy / mechanical / main / hard / vision / review — seis carriles cognitivos. Elige modelos candidatos por carril en la página de ajustes, ordénalos del más fuerte al más débil (anclaje de tiers S/A/B/C opcional) y fija un effort de razonamiento por ruta — el desplegable lista los niveles que cada modelo *realmente* soporta, no tres niveles genéricos. Cada prompt incluye una tabla `[SWITCHMAN:POOLS]` para que el modelo sepa a quién llamar; el modo `enforce` rechaza de plano los modelos fuera del pool.
15
+ 1. **La sesión pesa cada vez más.** El historial hincha el contexto hasta cientos de miles de tokens: el modelo empieza a olvidar, a ir lento y a encarecerse, y al final solo queda el /compact manual, que encima pierde detalles en cada compresión.
16
+ 2. **El modelo principal lo hace todo él solo.** Leer un archivo, lanzar un test, cotejar datos: todo lo mastica él — lento y caro, siendo la mayor parte un trabajo que correspondería a un modelo barato.
16
17
 
17
- **3. Preferencias de idioma.** Un desplegable para cada una: respuestas, comentarios de código y documentos redactados. ¿Sin definir? Se te pregunta una vez, se recuerda para siempre y cada sesión posterior lo sigue.
18
+ dsh-switchman es un plugin para [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Una vez instalado, el modelo principal deja de «hacerlo todo él solo» y pasa a ser el guardagujas: medir el nivel de agua, elegir el carril, repartir tareas y aceptar el trabajo. No es un modelo nuevo: es un reglamento de despacho enganchado a DSH, más una página de configuración. En concreto hace seis cosas:
18
19
 
19
- **4. Doctrina de delegación por defecto.** Sustituye la política de equipo conservadora que trae DSH («solo crea teammates cuando se lo pidan»): lo trivial se gestiona directamente (<200 líneas leídas, <50 modificadas), el trabajo real se delega por defecto; todo cambio se verifica — >20 líneas van a un tester, >300 líneas o lógica central van a un reviewer. Di «no uses equipos» y se aparta al instante.
20
+ **1. Nivel de agua del contexto: la sesión larga no se desborda.** Cada turno contabiliza los tokens de la sesión en vivo, y tres líneas de nivel aprietan por etapas: 50k (soft, ajustable) avisa «toca delegar»; 90k (hard) recorta el presupuesto de lectura de archivos por llamada y empuja al cierre; 130k (force) lanza la entrega automática — bifurca una copia de la sesión como respaldo, compacta el contexto y despierta la continuación, sin que el trabajo se corte. Los subagentes en segundo plano que sigan corriendo en el momento de la entrega tampoco se pierden: id, descripción de la tarea y ruta del informe quedan escritos en el documento de entrega, y la sesión que continúa sabe dónde recoger los informes en vez de volver a despachar el trabajo. Cada subagente despachado lleva su propio techo duro independiente: al alcanzarlo, termina con un resumen HANDOFF.
20
21
 
21
- ¿Solo un modelo? Sigue mereciendo la pena — el control del nivel de agua y la doctrina no dependen de cuántos modelos tengas.
22
+ **2. Seis pools de despacho: a cada trabajo, su modelo.** Pool ligero (economy, tareas pequeñas en lote), mecánico (mechanical, reescrituras con plantilla), principal (main, código del día a día), de alta dificultad (hard, razonamiento difícil y refactorizaciones a gran escala), multimodal (vision, leer imágenes) y de revisión (review, verificación independiente). En la página de ajustes marcas candidatos, ordenas prioridades (con anclaje opcional a las categorías S/A/B/C) y fijas un effort de razonamiento por ruta — el desplegable de categorías sale de los niveles que ese modelo soporta de verdad, no de tres genéricos. Cada turno, el prompt del modelo principal lleva consigo una tabla de recomendaciones `[SWITCHMAN:POOLS]`, y el trabajo se despacha siguiéndola. El modo de ejecución tiene tres estados: off / advice / enforce (enforce = los modelos fuera del pool se rechazan sin más).
23
+
24
+ **3. Modo Agent Teams: de ir por libre a llevar un equipo.** Desactivado por defecto: recién instalado solo hay despacho ligero por subagent. En la página de ajustes hay dos interruptores independientes:
25
+
26
+ - **Modo de equipo de agentes** — al activarlo se inyecta el reglamento de equipo (delegación por defecto + verificación por niveles + disciplina del tablero de tareas compartido) y se habilitan automáticamente los Agent Teams de DSH: el modelo principal puede reclutar compañeros residentes (`spawn_teammate`), asignarles trabajo en el tablero compartido (`team_task_*`) e intercambiar mensajes con ellos (`send_message`). Hay una disciplina clara sobre cuándo formar equipo: subtareas independientes que puedan ir en paralelo, trabajo abundante y autocontenido, nivel de agua del contexto principal ya alto o necesidad de separar roles; una investigación puntual de un solo uso sigue yendo por subagent. La política de fábrica de DSH es «no crees equipo si el usuario no lo pide»; aquí se invierte a «úsalo cuando toque». Si vuelves a apagar el interruptor, de las cláusulas de equipo no queda rastro, y las herramientas de equipo no se retiran de las sesiones en marcha.
27
+ - **Sincronizar la lista blanca de modelos de subagentes** — DSH tiene una lista blanca de autorización «permitir que los agentes elijan modelos para subagentes»: una ruta elegida en un pool pero no autorizada hace que el despacho explícito del modelo principal sea rechazado (en modo equipo, la tabla de recomendaciones y la página de ajustes marcan esas rutas con ⚠). Al encender este interruptor, la unión de los seis pools se escribe entera en esa lista blanca — sin configurar dos veces: switchman es la única fuente de verdad, y la vía de despacho por fork también queda cubierta. La lista blanca entra en vigor según la instantánea de «nueva sesión»: la sincronización solo afecta a las sesiones abiertas a partir de entonces.
28
+
29
+ La cabecera de la sesión da un feedback visual claro: la insignia ⚡ «equipo autónomo» y ◇ con el modelo real de la sesión actual; mientras hay una entrega automática en marcha, aparece un aviso en vivo: «entrega en curso · sesión de respaldo / compactación del contexto / continuación despertada».
30
+
31
+ **4. Preferencias de idioma: pregunta una vez, lo recuerda para siempre.** Un desplegable para cada una de las tres: respuestas, comentarios de código y documentos; el ámbito puede ser global o por proyecto (`.switchman/lang.json`). No hace falta configurarlo: la primera vez que se necesite pregunta una sola vez, en el idioma de la interfaz de tu DSH, y una vez recordado, cada sesión lo respeta automáticamente.
32
+
33
+ **5. Verificación por niveles: cambiado, comprobado.** Los cambios de más de 20 líneas pasan a verificación de un tester; los de más de 300 líneas, o que toquen lógica central / de seguridad / de consistencia de datos, pasan además a una revisión independiente de un reviewer. El modelo del reviewer se elige anclado al modelo del agente que escribió ese diff, esquivándolo cuando se puede; si en el pool no hay forma de esquivarlo, en la conclusión se declara DOWNGRADED. Dices «no uses equipos» y al instante vuelve al trabajo en solitario.
34
+
35
+ **6. `/vision`: hasta un modelo de solo texto puede con las imágenes.** Cuando el modelo principal no sabe leer imágenes, DSH rechaza en la puerta de entrada los mensajes con imágenes. Adjunta la imagen y escribe `/vision ¿qué está mal en esta imagen?` — la imagen se resuelve a una ruta de archivo y se entrega a un modelo del pool multimodal para leerla, y la conclusión vuelve a la sesión actual. Sobre el cuadro de entrada aparece por adelantado el aviso «el modelo actual no sabe leer imágenes»; si un envío directo de imagen es rechazado, se reescribe una vez de forma automática a `/vision` y se reenvía, sin rehacer nada a mano; con el pool multimodal sin configurar, el comando se niega y da indicaciones de configuración.
36
+
37
+ ¿Solo tienes un modelo? Sigue mereciendo la instalación — el control del nivel de agua y la verificación por niveles no dependen de cuántos modelos tengas, y una sesión larga con un solo modelo se beneficia igual.
22
38
 
23
39
  ## Skills incluidas
24
40
 
25
- - **db-query** — verificación de solo lectura sobre MySQL/Redis: ejecuta SQL para comprobar registros, claves de caché / TTLs y la consistencia entre almacenes. Rechaza toda escritura. Configuración única más abajo.
26
- - **git-commit-message** — texto de commit conforme a la convención. Solo texto; nunca toca git.
27
- - **requirement-docs** — una sola especificación para requisitos / PRD / documentos de diseño, archivada en `docs/requirements-and-design/`.
41
+ - **db-query** — verificación de MySQL / Redis en solo lectura: ejecuta SQL para cotejar datos, consulta claves de caché / TTL y la consistencia entre almacenes; rechaza cualquier escritura. Requiere inicialización en el primer uso (ver abajo).
42
+ - **git-commit-message** — genera el texto de commit conforme a la convención; solo texto, nunca hace git por ti.
43
+ - **requirement-docs** — una especificación unificada para análisis de requisitos / PRD / documentos de diseño; los entregables se archivan en `docs/requirements-and-design/`.
28
44
 
29
45
  ## Inicio rápido
30
46
 
31
- 1. **Instalar** — desde cualquier sesión de agente, o desde el gestor de plugins web:
47
+ 1. **Instalar** — pide a un agent que lo ejecute en cualquier sesión, o ve a la página web de gestión de plugins:
32
48
 
33
49
  ```
34
50
  plugin_manager: install_bundle target=dsh-switchman
35
51
  ```
36
52
 
37
- o desde un checkout local (enlazado; reejecuta `remove_bundle` + `install_bundle` tras incorporar cambios):
53
+ o instálalo desde un checkout local (en modo link; tras actualizar toca reinstalar con `remove_bundle` + `install_bundle`):
38
54
 
39
55
  ```
40
56
  plugin_manager: install_bundle target=/path/to/dsh-switchman
41
57
  ```
42
58
 
43
- 2. **Reiniciar DSH** — cierra la app por completo y vuelve a abrirla (recargar la página no basta) para que la tabla de módulos del cliente recoja el bundle.
59
+ o instálalo desde una terminal con el comando `dsh` — elige el perfil según cómo ejecutes DSH:
60
+
61
+ ```bash
62
+ dsh plugin --profile web add dsh-switchman # Web GUI
63
+ dsh plugin --profile desktop add dsh-switchman # app de escritorio
64
+ ```
65
+
66
+ 2. **Reiniciar DSH** — cierra la app por completo y vuelve a abrirla (recargar la página no cuenta) — solo así la tabla de módulos del cliente reconocerá el bundle.
67
+
68
+ 3. **Preferencias de idioma** — Ajustes → dsh-switchman, o «Central de despacho Switchman» en la barra lateral de la página de inicio. En la primera pantalla se elige primero el ámbito: global (este profile) o por proyecto (el `.switchman/lang.json` de cada proyecto); después, tres desplegables fijan el idioma de respuestas / comentarios / documentos, cada uno con su línea de estado «actual: …». Puedes saltarlo: en el primer uso se pregunta una vez y se recuerda (se pregunta en el idioma de la interfaz de DSH).
69
+
70
+ ![Preferencias de idioma: ámbito y tres idiomas](docs/assets/conf-language-en.png)
71
+
72
+ 4. **Configurar los pools de despacho** — en cada tarjeta de pool marcas los modelos candidatos agrupados por proveedor; marca «orden manual» y la tarjeta se convierte en una lista de prioridades numerada que se reordena con ↑ ↓ ×, y junto a cada ruta puedes fijar el effort de razonamiento (por defecto «seguir el carril»; al fijarlo, el desplegable lista los niveles que ese modelo soporta de verdad). La línea de resumen superior refleja el progreso en vivo, por ejemplo: «pools configurados: 6/6 · posiciones en el ranking: 2 · modo advice».
73
+
74
+ ![Pools de despacho: cuatro pools — ligero / mecánico / principal / de alta dificultad](docs/assets/conf-pool-1-en.png)
44
75
 
45
- 3. **Abrir la página de ajustes** — Settings → dsh-switchman. La primera pantalla son las preferencias de idioma: un desplegable para respuestas / comentarios / documentos, cada uno con una línea `current: …` en vivo. Sáltatelos si quieres — se te preguntará una vez y se recordará.
76
+ El pool multimodal y el de revisión están más abajo; después vienen el **orden por capacidad** (la unión de los modelos elegidos en los seis pools, donde el número es el puesto por capacidad, el más fuerte primero, con anclaje opcional a las categorías S/A/B/C) y el **modo de ejecución** (advice / enforce).
46
77
 
47
- ![Página de ajustes y preferencias de idioma](docs/assets/conf-demo1.png)
78
+ ![Pool multimodal, pool de revisión, orden por capacidad y modo de ejecución](docs/assets/conf-pool-2-en.png)
48
79
 
49
- 4. **Rellenar los seis pools** — cada tarjeta de pool lista candidatos agrupados por proveedor; marca los que quieras. Marca **manual order** y la tarjeta pasa a ser una lista de prioridades numerada con controles ↑ ↓ ×. El desplegable de effort junto a cada ruta seleccionada queda por defecto en *follow lane*; al fijarlo se listan los niveles que ese modelo realmente soporta (Low / High / Max…). Una línea de resumen sigue el progreso en vivo: “6/6 pools set · 3 ranked · mode advice”.
80
+ 5. **Equipo de agentes** — ambos interruptores vienen apagados: arranca primero en modo subagent puro. Si quieres que reclute al equipo por su cuenta, enciende «modo de equipo de agentes»; si quieres ahorrarte la autorización duplicada en dos sitios, enciende «sincronizar la lista blanca de modelos de subagentes»: bajo el interruptor hay una línea de estado «N entradas sincronizadas + fecha» que confirma el resultado de la escritura.
50
81
 
51
- ![Pools de despacho](docs/assets/conf-demo2.png)
82
+ ![Equipo de agentes: dos interruptores y estado de sincronización de la lista blanca](docs/assets/conf-team-en.png)
52
83
 
53
- 5. **Ranking y watermark** — el orden de la tabla de ranking es el orden de capacidad (el más fuerte primero), con tiers S/A/B/C opcionales; el modo de ejecución es `off` / advice / enforce (enforce = los modelos fuera del pool se rechazan). Debajo, la sección de watermark aprieta el comportamiento según el uso de tokens: tres umbrales, un presupuesto de lectura por llamada, el comportamiento del modo hard (cap / deny), un interruptor de entrega automática y un tope separado para subagentes. La última línea lleva los comandos: `/ctx-pause` para dejar de intervenir · `/ctx-resume` para reanudar · `/ctx-handover` para respaldar y entregar ya.
84
+ 6. **Nivel de agua del contexto** — tres umbrales (por defecto 50000 / 90000 / 130000), presupuesto de lectura por llamada, comportamiento del umbral duro (dejar pasar limitando / bloquear), interruptor de entrega automática y tope independiente para subagentes: todo en esta zona. Abajo, una línea de comandos: `/ctx-pause` pausa la intervención · `/ctx-resume` la reanuda · `/ctx-handover` respalda y entrega ahora mismo (conduce la sesión a la frontera de inactividad y espera la ventana de reintento de compactación; el resultado puede tardar unos minutos).
54
85
 
55
- ![Ranking y watermark de contexto](docs/assets/conf-demo3.png)
86
+ ![Nivel de agua del contexto: umbrales, presupuesto y comandos](docs/assets/conf-ctx-en.png)
56
87
 
57
- 6. **Verificar** — la insignia ⚡ aparece junto al chip de preset en la cabecera de cualquier sesión; pregúntale al modelo “¿qué dice la última sección de tu system prompt?” — debería mencionar la doctrina de dsh-switchman.
88
+ 7. **Verificar** — en la cabecera de la sesión aparece la insignia ⚡ «equipo autónomo» (al lado, ◇ muestra el modelo de la sesión actual); o pregúntale directamente al modelo «¿cómo se titula la última sección de tu system prompt?» — debería mencionar el reglamento de dsh-switchman.
58
89
 
59
- **Configuración única de db-query** (las dependencias del script viven dentro del directorio del skill):
90
+ **Inicialización de db-query en el primer uso** (las dependencias del script se instalan dentro del directorio del skill y no ensucian el proyecto):
60
91
 
61
92
  ```bash
62
93
  bash <install-dir>/skills/db-query/scripts/setup.sh
@@ -64,15 +95,16 @@ bash <install-dir>/skills/db-query/scripts/setup.sh
64
95
 
65
96
  ## Cómo funciona
66
97
 
67
- - La mitad Host (`index.js` + `host/`) inyecta tres secciones dinámicas en el system prompt, las compuertas de presupuesto de lectura y de enforce, la captura automática de respuestas y tres comandos slash. Todos los ajustes son campos volátiles — los cambios guardados se aplican en el siguiente ensamblado del prompt, sin reinicio.
68
- - La mitad Client (`client.js`) pinta la insignia ⚡ junto al chip de preset y la página de ajustes, mediante los servicios oficiales de formularios de ajustes.
69
- - `cordis.patch.yml` vuelve a declarar textualmente la lista de plugins de cada preset incluido y solo amplía el sufijo de persona; las herramientas de Agent Teams en sí siguen viniendo del `@deepseek-ai/dsh-experimental-agent-team-profile` incluido.
98
+ - La mitad Host (`index.js` + `host/`) inyecta las secciones dinámicas del system prompt (idioma / carriles / nivel de agua / equipo), la doble compuerta de presupuesto de lectura y enforce, y cuatro comandos slash (el trío ctx + `/vision`). Todos los ajustes, una vez guardados, surten efecto en el siguiente ensamblado del prompt, sin reinicio.
99
+ - La mitad Client (`client.js`) pinta la página de ajustes, la insignia ⚡ y la marca de modelo ◇ en la cabecera de la sesión y el aviso dinámico de entrega en curso, apoyándose en los servicios oficiales settings-form.
100
+ - La entrada «Central de despacho Switchman» en la barra lateral de la página de inicio: un clic abre esta misma página de configuración (preferencias de idioma, pools y ranking, nivel de agua) como panel central; la entrada de ajustes original se conserva.
101
+ - `cordis.patch.yml` conserva íntegra la lista de plugins de los presets de fábrica y solo amplía el persona suffix; las herramientas de Agent Teams en sí vienen del bundle de fábrica y se habilitan automáticamente al encender el modo equipo.
70
102
 
71
103
  ## Mantenimiento
72
104
 
73
- - Tras una actualización de DSH que cambie las listas de plugins de los presets incluidos, resincroniza `cordis.patch.yml` desde los nuevos `presets/*.patch.yml` (conserva el sufijo de doctrina) y reinstala.
74
- - Las líneas de protocolo dirigidas al modelo (`[SWITCHMAN:LANG|POOLS|WATERMARK]`) son deliberadamente en inglés y byte-estables — no las localices.
75
- - `npm pack --dry-run` debe mantenerse en la forma auditada de 34 archivos / ~111 kB (las capturas de `docs/` nunca se incluyen).
105
+ - Si tras una actualización de DSH cambia la lista de plugins de los presets de fábrica, resincroniza `cordis.patch.yml` desde los nuevos `presets/*.patch.yml` (conserva el doctrine suffix) y reinstala.
106
+ - Las líneas de protocolo (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) están deliberadamente en inglés y son estables byte a byte — no las localices.
107
+ - `npm pack --dry-run` debe mantenerse en la forma auditada de 50 archivos / ~205 kB (las capturas de `docs/` no entran en el paquete).
76
108
 
77
109
  ## Licencia
78
110
 
package/README.fr.md CHANGED
@@ -2,61 +2,92 @@
2
2
 
3
3
  [English](./README.md) | [简体中文](./README.zh.md) | [繁體中文](./README.zh-TW.md) | [日本語](./README.ja.md) | [한국어](./README.ko.md) | [Español](./README.es.md) | **Français** | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
4
4
 
5
- > **La famille switchman**, même auteur, même orchestration : [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (l'original OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (le portage ZCode) · **dsh-switchman** (ce dépôt, pour DeepSeek Harness).
5
+ > **La famille switchman**, même auteur, même orchestration : [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (l'original OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (le portage ZCode) · **dsh-switchman** (ce dépôt, l'édition DeepSeek Harness).
6
6
 
7
- ![dsh-switchman — le niveau d'eau du contexte commande l'aiguilleur et lance l'itinéraire](docs/assets/hero.svg)
7
+ ![dsh-switchman — le niveau d'eau du contexte manie l'aiguillage et envoie chaque tâche sur la bonne voie](docs/assets/hero.svg)
8
8
 
9
9
  > Le contexte sur un compteur. Les tâches se dispatchent seules.
10
10
 
11
- Un plugin pour [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Une fois installé, votre modèle principal cesse de tout faire lui-même et devient répartiteur : mesurer le niveau d'eau, choisir le couloir, distribuer la tâche, vérifier le travail. Quatre choses :
11
+ ## Pourquoi en avoir besoin
12
12
 
13
- **1. Contrôle du niveau d'eau du contexte.** Chaque tour mesure les tokens vivants de la session. Soft (50k par défaut) conseille de déléguer, hard (90k) resserre le budget de lecture par tour et pousse à conclure, force (130k) sauvegarde la session et passe le relais à la compaction — automatiquement. Faites tourner une session toute la journée ; votre contexte ne se noie jamais dans son propre historique. Chaque sous-agent dispatché porte son propre hard cap et se termine par un résumé HANDOFF une fois celui-ci atteint.
13
+ À force de travailler avec DSH, on finit par se heurter à deux problèmes :
14
14
 
15
- **2. Dispatch à six couloirs.** economy / mechanical / main / hard / vision / review — six couloirs cognitifs. Choisissez les modèles candidats par couloir dans la page de réglages, classez-les du plus fort au plus faible (ancrage de tiers S/A/B/C optionnel) et épinglez un effort de raisonnement par route — le menu déroulant liste les niveaux que chaque modèle *supporte réellement*, pas trois niveaux génériques. Une table `[SWITCHMAN:POOLS]` accompagne chaque prompt pour que le modèle sache qui appeler ; le mode `enforce` rejette sans appel les modèles hors pool.
15
+ 1. **La session s'alourdit à mesure que la conversation s'étire.** L'historique gonfle le contexte à des centaines de milliers de tokens ; le modèle commence à oublier, à ralentir, à coûter cher — jusqu'au moment où seul un /compact manuel dépanne, et chaque compression avale inévitablement des détails.
16
+ 2. **Le modèle principal fait tout lui-même.** Retrouver un fichier, lancer un test, recouper des données — il mâche tout cela seul, lentement et à grands frais, alors que l'essentiel de ce travail gagnerait à être confié à un modèle bien moins cher.
16
17
 
17
- **3. Préférences de langue.** Un menu déroulant pour chacun : réponses, commentaires de code et documents rédigés. Non défini ? On vous le demande une fois, c'est retenu pour toujours, et chaque session suivante s'y tient.
18
+ dsh-switchman est un plugin pour [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Une fois installé, le modèle principal passe de « tout faire lui-même » au rôle de répartiteur : mesurer le niveau d'eau, choisir le couloir, distribuer les tâches, contrôler le résultat. Ce n'est pas un nouveau modèle — c'est une doctrine d'orchestration accrochée à DSH, accompagnée d'une page de réglages. Concrètement, il fait six choses :
18
19
 
19
- **4. Doctrine de délégation par défaut.** Remplace la politique d'équipe conservatrice livrée avec DSH (« ne créer des teammates que sur demande ») : le trivial reste traité en direct (<200 lignes lues, <50 modifiées), le vrai travail est délégué par défaut ; toute modification est vérifiée — >20 lignes vont à un testeur, >300 lignes ou la logique centrale vont à un réviseur. Dites « pas d'équipes » et il s'efface aussitôt.
20
+ **1. Niveau d'eau du contexte : les longues sessions ne débordent jamais.** Chaque tour compte en direct les tokens de la session et les confronte à trois lignes d'eau qui durcissent par paliers : 50k (soft, réglable) rappelle qu'« il est temps de déléguer » ; 90k (hard) resserre le budget de lecture de fichiers par tour et pousse à conclure ; 130k (force) déclenche la remise automatique — un fork de la session est archivé, le contexte compacté, la continuation réveillée, et la tâche ne s'interrompt jamais. Les subagents d'arrière-plan encore en course à cet instant ne sont pas perdus pour autant : leurs id, descriptions de tâche et chemins de rapport sont consignés dans le document de remise, et la session relancée sait où récupérer les rapports au lieu de redéspatcher en double. Chaque subagent dispatché embarque son propre plafond strict ; une fois atteint, il écrit son résumé HANDOFF et se retire.
20
21
 
21
- Un seul modèle ? Ça vaut toujours le coup — le contrôle du niveau d'eau et la doctrine ne dépendent pas de votre nombre de modèles.
22
+ **2. Six pools de dispatch : le bon modèle pour chaque tâche.** Un pool léger (economy, les petites tâches en série), un pool mécanique (mechanical, les réécritures sur gabarit), un pool principal (main, le code au quotidien), un pool haute difficulté (hard, raisonnement corsé et refontes à grande échelle), un pool multimodal (vision, lire les images) et un pool de relecture (review, vérification indépendante). Dans la page de réglages, vous cochez les candidats, les classez par priorité (avec tiers S/A/B/C en option) et épinglez un effort de raisonnement pour chaque route — le menu déroulant des niveaux reflète ce que ce modèle supporte réellement, pas trois niveaux génériques. Chaque prompt du modèle principal embarque une table de recommandations `[SWITCHMAN:POOLS]`, et le dispatch suit cette table. Le mode d'exécution a trois états : off / advice / enforce (enforce = tout modèle hors pool est refusé sans appel).
23
+
24
+ **3. Mode Agent Teams : passer du solo à la direction d'une équipe.** Désactivé par défaut — juste après l'installation, on reste sur le dispatch subagent léger. Deux interrupteurs indépendants dans la page de réglages :
25
+
26
+ - **Mode équipe d'agents** — l'activer injecte la doctrine d'équipe (délégation par défaut + vérification par paliers + discipline du tableau de tâches partagé) et active automatiquement les Agent Teams de DSH : le modèle principal peut recruter des coéquipiers permanents (`spawn_teammate`), confier du travail au tableau de tâches partagé (`team_task_*`) et échanger des messages avec eux (`send_message`). Le moment de constituer une équipe obéit à une discipline explicite : sous-tâches indépendantes parallélisables, gros lots autoportants, contexte principal déjà bien chargé, besoin de séparer les rôles ; les enquêtes ponctuelles restent du ressort du subagent. La politique d'usine de DSH dit « pas d'équipe tant que l'utilisateur n'en demande pas » — ici, elle devient « on en prend une dès que c'est utile ». Refermer l'interrupteur ne laisse aucun résidu des clauses d'équipe, et ne retire jamais les outils d'équipe aux sessions déjà en cours.
27
+ - **Synchronisation de la liste blanche des modèles de subagents** — DSH tient une liste d'autorisation « modèles qu'un agent peut choisir pour ses subagents » : une route cochée dans un pool mais jamais autorisée se voit refuser le dispatch quand le modèle principal la désigne nommément (en mode équipe, la table de pools et la page de réglages marquent ces routes d'un ⚠). Activez cet interrupteur et l'union des six pools est d'un coup écrite dans cette liste — fini la double configuration, switchman reste l'unique source de vérité, et le chemin de dispatch par fork est couvert lui aussi. La liste blanche s'applique par instantané à chaque nouvelle session : la synchronisation ne concerne que les sessions ouvertes ensuite.
28
+
29
+ L'en-tête de session donne un retour immédiat : un badge ⚡ « équipe autonome » et une puce ◇ indiquant le modèle réellement utilisé par la session ; pendant une remise automatique, une bannière en direct annonce « remise en cours · sauvegarde de la session / compactage du contexte / réveil de la continuation ».
30
+
31
+ **4. Préférences de langue : une question posée une fois, retenue pour toujours.** Un menu déroulant chacun pour les réponses, les commentaires de code et la documentation, avec un scope global ou par projet (`.switchman/lang.json`). Ne rien régler est permis — au premier besoin, on vous pose la question une fois dans la langue de votre interface DSH, la réponse est retenue, et chaque session suivante s'y conforme automatiquement.
32
+
33
+ **5. Vérification par paliers : chaque modification est contrôlée.** Au-delà de 20 lignes modifiées, passage au testeur ; au-delà de 300 lignes, ou dès que l'on touche à la logique cœur / sécurité / cohérence des données, en plus un relecteur indépendant. Le modèle du relecteur est choisi pour éviter celui de « l'agent qui a écrit le diff », autant que les pools le permettent ; quand c'est vraiment impossible, la conclusion le déclare DOWNGRADED. Dites « pas d'équipes » et il repasse aussitôt en solo.
34
+
35
+ **6. `/vision` : même un modèle purement textuel peut travailler avec des images.** Quand le modèle principal ne sait pas lire les images, DSH refuse les messages avec image dès l'entrée. Collez l'image, tapez `/vision où est l'erreur sur cette image`, et l'image est résolue en chemin de fichier puis confiée à un modèle du pool multimodal pour lecture ; les conclusions reviennent dans la session courante. Un avertissement apparaît tôt au-dessus du champ de saisie — « le modèle courant ne sait pas lire les images » ; si un envoi d'image ordinaire est refusé, le brouillon est réécrit une fois en `/vision` et renvoyé tout seul, sans rien retaper ; sans pool multimodal configuré, la commande refuse et donne les indications de configuration.
36
+
37
+ Un seul modèle ? Ça vaut quand même l'installation — le contrôle du niveau d'eau et la vérification par paliers se moquent du nombre de modèles, et une longue session mono-modèle en profite tout autant.
22
38
 
23
39
  ## Skills incluses
24
40
 
25
- - **db-query** — vérification MySQL/Redis en lecture seule : exécute du SQL pour vérifier les enregistrements, les clés de cache / TTL et la cohérence inter-stores. Refuse toute écriture. Configuration unique ci-dessous.
26
- - **git-commit-message** — texte de commit conforme aux conventions. Texte uniquement ; ne touche jamais à git.
27
- - **requirement-docs** — une seule spécification pour exigences / PRD / documents de conception, archivée dans `docs/requirements-and-design/`.
41
+ - **db-query** — vérification MySQL / Redis en lecture seule : exécuter du SQL pour recouper les enregistrements, contrôler les clés de cache / TTL et auditer la cohérence entre stores ; refuse toute écriture. Configuration unique ci-dessous.
42
+ - **git-commit-message** — produit un texte de commit conforme aux conventions. Du texte seulement ; il ne lance jamais git à votre place.
43
+ - **requirement-docs** — une spécification unifiée pour l'analyse des besoins / PRD / documents de conception, avec archivage dans `docs/requirements-and-design/`.
28
44
 
29
45
  ## Démarrage rapide
30
46
 
31
- 1. **Installer** — depuis n'importe quelle session d'agent, ou depuis le gestionnaire de plugins web :
47
+ 1. **Installer** — depuis n'importe quelle session d'agent, ou depuis la page de gestion des plugins Web :
32
48
 
33
49
  ```
34
50
  plugin_manager: install_bundle target=dsh-switchman
35
51
  ```
36
52
 
37
- ou depuis un checkout local (lié ; relancez `remove_bundle` + `install_bundle` après avoir récupéré des modifications) :
53
+ ou depuis un checkout local (en lien ; après mise à jour, refaire `remove_bundle` + `install_bundle`) :
38
54
 
39
55
  ```
40
56
  plugin_manager: install_bundle target=/path/to/dsh-switchman
41
57
  ```
42
58
 
43
- 2. **Redémarrer DSH** — quittez entièrement l'application puis rouvrez-la (recharger la page ne suffit pas) pour que la table des modules client prenne en compte le bundle.
59
+ ou depuis un terminal avec la commande `dsh` — choisissez le profil correspondant à votre façon d'exécuter DSH :
60
+
61
+ ```bash
62
+ dsh plugin --profile web add dsh-switchman # Web GUI
63
+ dsh plugin --profile desktop add dsh-switchman # appli desktop
64
+ ```
65
+
66
+ 2. **Redémarrer DSH** — quittez complètement l'application puis rouvrez-la (recharger la page ne suffit pas) pour que la table des modules client reconnaisse le bundle.
67
+
68
+ 3. **Préférences de langue** — Settings → dsh-switchman, ou « Centre de contrôle Switchman » dans la barre latérale de la page d'accueil. Le premier écran choisit d'abord le scope : global (ce profil) ou par projet (le `.switchman/lang.json` de chaque projet) ; puis trois menus déroulants fixent la langue des réponses / commentaires / documents, chacun suivi d'une ligne d'état « actuel : … ». Passer l'étape ne coûte rien — on vous posera la question une fois au premier usage et la réponse sera retenue (la question est posée dans la langue de l'interface DSH).
69
+
70
+ ![Préférences de langue : scope et trois langues](docs/assets/conf-language-en.png)
71
+
72
+ 4. **Remplir les pools de dispatch** — chaque carte de pool liste les modèles candidats groupés par fournisseur ; cochez ceux qu'il vous faut. Cochez « ordre manuel » et la carte devient une liste de priorités numérotée, à réordonner avec ↑ ↓ × ; à côté de chaque route, vous pouvez aussi épingler un effort de raisonnement (par défaut « suivre le couloir » ; l'épinglage liste les niveaux réellement supportés par ce modèle). Une ligne de résumé en haut suit la progression en direct, par exemple « 6/6 pools configurés · 2 classés · mode advice ».
73
+
74
+ ![Pools de dispatch : les quatre pools economy / mechanical / main / hard](docs/assets/conf-pool-1-en.png)
44
75
 
45
- 3. **Ouvrir la page de réglages** — Settings → dsh-switchman. Le premier écran est celui des préférences de langue : un menu déroulant pour réponses / commentaires / documents, chacun avec une ligne `current: …` en direct. Passez-les si vous voulez — on vous demandera une fois et ce sera retenu.
76
+ Les pools multimodal et relecture se trouvent en dessous ; plus bas encore viennent le **classement des capacités** (l'union des modèles sélectionnés dans les six pools — le rang donne l'ordre de capacité, du plus fort au plus faible, avec tiers S/A/B/C en option) et le **mode d'exécution** (advice / enforce).
46
77
 
47
- ![Page de réglages et préférences de langue](docs/assets/conf-demo1.png)
78
+ ![Pool multimodal, pool de relecture, classement des capacités et mode d'exécution](docs/assets/conf-pool-2-en.png)
48
79
 
49
- 4. **Remplir les six pools** — chaque carte de pool liste les candidats groupés par fournisseur ; cochez ceux que vous voulez. Cochez **manual order** et la carte devient une liste de priorités numérotée avec des contrôles ↑ ↓ ×. Le menu d'effort à côté de chaque route sélectionnée vaut *follow lane* par défaut ; l'épingler liste les niveaux que ce modèle supporte réellement (Low / High / Max…). Une ligne de résumé suit la progression en direct : “6/6 pools set · 3 ranked · mode advice”.
80
+ 5. **Équipes d'agents** — les deux interrupteurs sont désactivés par défaut ; commencez avec le simple dispatch subagent. Pour laisser le modèle constituer lui-même des équipes, activez « mode équipe d'agents » ; pour éviter d'autoriser deux fois les mêmes routes, activez « synchronisation de la liste blanche des modèles de subagents » — une ligne d'état « synchronisé : N routes + horodatage » sous l'interrupteur confirme ce qui a été écrit.
50
81
 
51
- ![Pools de dispatch](docs/assets/conf-demo2.png)
82
+ ![Équipes d'agents : les deux interrupteurs et l'état de synchronisation de la liste blanche](docs/assets/conf-team-en.png)
52
83
 
53
- 5. **Classement et watermark** — l'ordre de la table de classement est l'ordre de capacité (le plus fort d'abord), avec des tiers S/A/B/C optionnels ; le mode d'exécution est `off` / advice / enforce (enforce = les modèles hors pool sont rejetés). En dessous, la section watermark resserre le comportement selon la consommation de tokens : trois seuils, un budget de lecture par appel, le comportement du mode hard (cap / deny), un interrupteur de remise automatique et un plafond séparé pour les sous-agents. La ligne du bas porte les commandes : `/ctx-pause` pour cesser d'intervenir · `/ctx-resume` pour reprendre · `/ctx-handover` pour sauvegarder et passer le relais maintenant.
84
+ 6. **Niveau d'eau du contexte** — les trois seuils (par défaut 50000 / 90000 / 130000), le budget de lecture par appel, le comportement du mode hard (passage à débit limité / blocage), l'interrupteur de remise automatique et le plafond propre aux subagents tiennent tous dans cette section. La ligne du bas porte les commandes : `/ctx-pause` suspend les interventions · `/ctx-resume` reprend · `/ctx-handover` sauvegarde et remet immédiatement (il conduit la session jusqu'à une limite d'inactivité et attend la fenêtre de relance du compactage — le résultat peut prendre quelques minutes).
54
85
 
55
- ![Classement et watermark du contexte](docs/assets/conf-demo3.png)
86
+ ![Niveau d'eau du contexte : seuils, budgets et commandes](docs/assets/conf-ctx-en.png)
56
87
 
57
- 6. **Vérifier** — le badge ⚡ apparaît à côté de la puce de preset dans l'en-tête de n'importe quelle session ; demandez au modèle “que dit la dernière section de ton system prompt ?” — il devrait mentionner la doctrine dsh-switchman.
88
+ 7. **Vérifier** — un badge ⚡ « équipe autonome » apparaît dans l'en-tête de session (avec à côté une puce ◇ montrant le modèle de la session en cours) ; ou demandez simplement au modèle « quel est le titre du dernier paragraphe de ton prompt système » — la réponse doit mentionner la doctrine dsh-switchman.
58
89
 
59
- **Configuration unique de db-query** (les dépendances du script vivent dans le répertoire du skill) :
90
+ **Configuration unique de db-query** (les dépendances du script s'installent dans le répertoire du skill — votre projet reste propre) :
60
91
 
61
92
  ```bash
62
93
  bash <install-dir>/skills/db-query/scripts/setup.sh
@@ -64,15 +95,16 @@ bash <install-dir>/skills/db-query/scripts/setup.sh
64
95
 
65
96
  ## Fonctionnement
66
97
 
67
- - La partie Host (`index.js` + `host/`) injecte trois sections dynamiques dans le system prompt, les gardes de budget de lecture et d'enforce, la capture automatique des réponses et trois commandes slash. Tous les réglages sont des champs volatils — les changements enregistrés s'appliquent au prochain assemblage de prompt, sans redémarrage.
68
- - La partie Client (`client.js`) rend le badge ⚡ à côté de la puce de preset ainsi que la page de réglages, via les services officiels de formulaires de réglages.
69
- - `cordis.patch.yml` reprend textuellement la liste de plugins de chaque preset livré et n'étend que le suffixe de persona ; les outils Agent Teams eux-mêmes viennent toujours du `@deepseek-ai/dsh-experimental-agent-team-profile` livré.
98
+ - La partie Host (`index.js` + `host/`) injecte les sections dynamiques du prompt système (langue / couloirs / niveau d'eau / équipes), les deux verrous budget de lecture et enforce, et les quatre commandes slash (le trio ctx + `/vision`). Tout réglage enregistré prend effet au prochain assemblage de prompt — sans redémarrage.
99
+ - La partie Client (`client.js`) rend la page de réglages, le badge ⚡ et la puce ◇ du modèle dans l'en-tête de session, ainsi que la bannière dynamique « remise en cours », via les services officiels de settings-form.
100
+ - L'entrée « Centre de contrôle Switchman » dans la barre latérale de la page d'accueil ouvre en un clic, sous forme de panneau central, la même page de configuration (préférences de langue, pools de dispatch et classement, niveau d'eau) ; l'entrée de réglages d'origine reste en place.
101
+ - `cordis.patch.yml` reprend intégralement la liste de plugins des presets d'usine et n'étend que le persona suffix ; les outils Agent Teams eux-mêmes viennent du bundle d'usine et s'activent automatiquement quand le mode équipe est allumé.
70
102
 
71
103
  ## Maintenance
72
104
 
73
- - Après une mise à niveau de DSH qui modifie les listes de plugins des presets livrés, resynchronisez `cordis.patch.yml` depuis les nouveaux `presets/*.patch.yml` (gardez le suffixe de doctrine), puis réinstallez.
74
- - Les lignes de protocole destinées au modèle (`[SWITCHMAN:LANG|POOLS|WATERMARK]`) sont volontairement en anglais et stables à l'octet — ne les localisez pas.
75
- - `npm pack --dry-run` doit rester à la forme auditée de 34 fichiers / ~111 kB (les captures d'écran de `docs/` ne partent jamais).
105
+ - Si une mise à niveau de DSH change la liste de plugins des presets d'usine, resynchronisez `cordis.patch.yml` depuis les nouveaux `presets/*.patch.yml` (conservez le doctrine suffix), puis réinstallez.
106
+ - Les lignes de protocole (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) restent volontairement en anglais et stables à l'octet — ne les localisez pas.
107
+ - `npm pack --dry-run` doit conserver la forme auditée de 50 fichiers / ~205 kB (les captures d'écran de `docs/` ne partent pas dans le paquet).
76
108
 
77
109
  ## Licence
78
110