dsh-switchman 1.3.1 → 1.6.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,78 +2,100 @@
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 Dispositions-Philosophie: [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 Weichen und wirft jede Aufgabe in 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 ihre Spur von selbst.
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 dsh-switchman?
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, ärgert sich über zwei Dinge. Erstens werden Sessions mit der Zeit schwer: Die Historie bläht den Kontext auf Hunderttausende Token, das Modell vergisst, wird langsam und teuer, und ein manuelles /compact verliert Details. Zweitens erledigt das Hauptmodell alles selbst — Dateien nachschlagen, Tests laufen lassen, Daten abgleichen —, obwohl der Großteil dieser Arbeit auf ein billigeres Modell gehörte.
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
+ dsh-switchman ist ein Plugin für [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Nach der Installation wandelt sich das Hauptmodell vom Selbermacher zum Disponenten: Wasserstand messen, Spur wählen, Aufgaben vergeben, Abnahme prüfen. Es ist kein neues Modell, sondern ein Dispositionsregelwerk an DSH plus eine Einstellungsseite — und es tut sieben Dinge:
16
16
 
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.
17
+ **1. Kontext-Wasserstand: lange Sessions platzen nicht.** Jede Runde zählt die Session-Tokens in Echtzeit; drei Stufen schrauben sich hoch: 50k (soft, einstellbar) mahnt „zeit zu delegieren“; 90k (hard) strafft das Einzellese-Budget und lenkt auf den Abschluss; 130k (force) übergibt automatisch — die Session wird zur Ablage geforkt, der Kontext komprimiert, der Nachfolger geweckt und läuft weiter, ohne dass die Aufgabe abreißt. Auch Hintergrund-Subagents, die im Moment der Übergabe noch laufen, gehen nicht verloren: id, Aufgabe und Report-Pfad landen im Übergabedokument; die fortgesetzte Session weiß, wo sie Reports abholt, und vergibt nichts doppelt. Jeder Subagent trägt eine eigene harte Obergrenze und verlässt nach seinem HANDOFF-Summary die Bühne. Passt dir die automatische Intervention nicht, übernimm jederzeit von Hand: `/ctx-pause` stoppt alle Wasserstands-Aktionen (die Messung läuft weiter, das Banner springt auf paused — es wird nur nicht mehr gehandelt), `/ctx-resume` holt alles jederzeit zurück — nach einem DSH-Neustart greift die Intervention auch von selbst wieder, ein temporäres Loslassen, kein Dauer-Aus; `/ctx-handover` wartet nicht, bis der Wasserstand oben ist, und startet dieselbe Übergabe auf Zuruf: Session zur Sicherung forken, Kontext verdichten, Fortsetzung wecken (die Session wird erst an eine Leerlauf-Grenze geführt, das Ergebnis kann daher ein paar Minuten dauern).
18
18
 
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.
19
+ **2. Sechs Dispatch-Pools: das richtige Modell für jede Arbeit.** Economy (Massen-Kleinkram), Mechanical (Schablonen-Umformung), Main (tägliche Codearbeit), Hard (schwere Schlussfolgerungen und große Refactorings), Vision (Bilder), Review (unabhängige Prüfung). Auf der Einstellungsseite kreuzt man Kandidaten an, ordnet Prioritäten, vergibt Noten S/A/B/C und nagelt je Route einen Reasoning-Aufwand fest — das Aufwand-Dropdown führt die Stufen, die das Modell tatsächlich beherrscht, nicht generische drei. Im Prompt jeder Runde steckt eine `[SWITCHMAN:POOLS]`-Empfehlungstabelle; nach der wird vergeben. Drei Enforcement-Modi: aus / Empfehlung / Erzwingen (Erzwingen = Modelle außerhalb der Pools werden glatt abgelehnt).
20
20
 
21
- Nur ein Modell? Lohnt sich trotzdem — die Wasserstandskontrolle und die Doktrin interessieren sich nicht dafür, wie viele Modelle Sie haben.
21
+ **3. Agent-Teams-Modus: vom Einzeltäter zum Team.** Standardmäßig aus — nach der Installation ist es schlanke Subagent-Vergabe. Zwei unabhängige Schalter auf der Einstellungsseite:
22
+
23
+ - **Agent-Teams** — eingeschaltet injiziert das Team-Regelwerk (Delegation als Standard + gestufte Verifikation + Disziplin fürs gemeinsame Task-Board) und aktiviert die Agent-Teams-Funktion von DSH automatisch: das Hauptmodell rekrutiert Dauerteammates (`spawn_teammate`), legt Aufgaben auf das gemeinsame Task-Board (`team_task_*`) und tauscht Nachrichten mit Teammates aus. Wann ein Team fällig ist, ist klar geregelt: parallelisierbare unabhängige Subtasks, große in sich abgeschlossene Mengen, hoher Wasserstand im Hauptkontext, nötige Rollentrennung; einmalige Punktuntersuchungen bleiben beim Subagent. Wieder ausgeschaltet verschwinden die Team-Klauseln restlos, und laufenden Sessions werden die Team-Werkzeuge nie entrissen.
24
+ - **Whitelist-Sync für Subagent-Modelle** — DSH führt eine Autorisierungs-Whitelist „Agenten dürfen Modelle für Subagents wählen“: in einem Pool gewählte, aber nicht autorisierte Routen werden bei namentlicher Vergabe abgelehnt (im Teams-Modus mit ⚠ markiert). Dieser Schalter schreibt die Vereinigung aller sechs Pools en bloc in ebendiese Whitelist — switchman ist die einzige Quelle der Wahrheit, doppelte Konfiguration entfällt. Die Whitelist gilt als Snapshot je neuer Session; der Sync wirkt nur auf danach gestartete Sessions.
25
+
26
+ Die Session-Kopfzeile zeigt sofort, was los ist: das ⚡-Abzeichen „autonomes Team“ und ◇ mit dem tatsächlich genutzten Modell der Session; während einer laufenden Auto-Übergabe erscheint live „Übergabe läuft · Backup-Session / Kontext komprimieren / Nachfolger wecken“.
27
+
28
+ **4. Sprachpräferenzen: einmal fragen, für immer merken.** Je ein Dropdown für Antworten, Code-Kommentare und Dokumente; Geltungsbereich global oder je Projekt (`.switchman/lang.json`). Leer lassen geht auch — beim ersten Einsatz wird einmal in der Sprache deiner DSH-Oberfläche gefragt, danach hält sich jede Session daran.
29
+
30
+ **5. Oberflächensprache: das Plugin selbst spricht mit.** Oben auf der Einstellungsseite, im Bereich „Oberfläche“, sitzt das Dropdown „Oberflächensprache“ (Setting-Schlüssel `uiLocale`): Auto (Standard, folgt der Sprache der DeepSeek-Harness-App) oder jede eingebaute Oberflächensprache nach Wahl — die Optionen erscheinen stets als Eigenname der Sprache, unübersetzt. Umgeschaltet wird nur die Oberfläche des Plugins selbst (Abzeichen, Home-Panel, Einstellungsseite), nie die Sprache der DSH-App: die Auswahl ist sofortige Live-Vorschau ohne Neustart, wird nach dem Speichern gemerkt und beim nächsten Start wiederhergestellt, und jeder Fehler fällt auf die App-Sprache zurück; die Wörterbücher liegen vollständig im Plugin-Bundle, kein Download.
31
+
32
+ **6. Gestufte Verifikation: jede Änderung wird geprüft.** Änderungen über 20 Zeilen gehen an einen Tester; über 300 Zeilen oder an Kern- / Sicherheits- / Datenkonsistenz-Logik zusätzlich an einen unabhängigen Reviewer. Das Review-Modell wird am Modell des „Agents, der den Diff geschrieben hat“ verankert und möglichst vermieden; wenn der Pool es nicht hergibt, wird im Ergebnis DOWNGRADED deklariert. Ein „nutz kein Team“ genügt — sofort wieder Einzeltäter.
33
+
34
+ **7. `/vision`: reine Textmodelle kriegen trotzdem Bilder.** Kann das Hauptmodell keine Bilder lesen, lehnt DSH Bildnachrichten an der Tür ab. Bild einfügen, `/vision was ist an diesem Bild falsch` eintippen — das Bild geht an ein Modell aus dem Vision-Pool, das Urteil kommt in die laufende Session zurück. Über dem Eingabefeld steht vorab „das aktuelle Modell kann keine Bilder lesen“; wird der direkte Bildversand abgelehnt, wird die Nachricht automatisch als `/vision` umgeschrieben und erneut gesendet — kein manueller zweiter Versuch. Ohne konfigurierten Vision-Pool verweigert der Befehl und weist auf die Einstellungen.
35
+
36
+ Auch mit nur einem Modell lohnt sich die Installation — Wasserstandskontrolle und gestufte Verifikation hängen nicht von der Modellzahl ab; lange Single-Model-Sessions profitieren genauso.
22
37
 
23
38
  ## Mitgelieferte Skills
24
39
 
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/`.
40
+ - **db-query** — Nur-Lese-Prüfung für MySQL / Redis: SQL-Abgleiche fahren, Cache-Keys / TTL nachschlagen, Konsistenz über Datenbanken hinweg prüfen; jede Schreiboperation wird abgelehnt. Vor der ersten Nutzung einmalig initialisieren (siehe unten).
41
+ - **git-commit-message** — erzeugt regelkonforme Commit-Texte; nur Text, nie git.
42
+ - **requirement-docs** — der einheitliche Standard für Anforderungsanalyse / PRD / Design-Dokumente; Ergebnisse werden nach `docs/requirements-and-design/` archiviert.
28
43
 
29
44
  ## Schnellstart
30
45
 
31
- 1. **Installieren** — aus einer beliebigen Agent-Sitzung oder über den Web-Plugin-Manager:
46
+ 1. **Installieren** — in einer beliebigen Session den Agent ranlassen oder über die Plugin-Verwaltung der Web-Oberfläche:
32
47
 
33
48
  ```
34
49
  plugin_manager: install_bundle target=dsh-switchman
35
50
  ```
36
51
 
37
- oder aus einem lokalen Checkout (verlinkt; nach dem Pullen von Änderungen `remove_bundle` + `install_bundle` erneut ausführen):
52
+ Oder aus einem lokalen Checkout installieren (link-Modus; nach einem Update per `remove_bundle` + `install_bundle` neu installieren):
38
53
 
39
54
  ```
40
55
  plugin_manager: install_bundle target=/path/to/dsh-switchman
41
56
  ```
42
57
 
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.
58
+ Oder im Terminal mit dem `dsh`-Befehl — das Profil passend zur Betriebsart wählen:
44
59
 
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.
46
-
47
- ![Einstellungsseite und Spracheinstellungen](docs/assets/conf-demo1.png)
60
+ ```bash
61
+ dsh plugin --profile web add dsh-switchman # Web GUI
62
+ dsh plugin --profile desktop add dsh-switchman # Desktop-App
63
+ ```
48
64
 
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”.
65
+ 2. **DSH neu starten** — die App vollständig beenden und wieder öffnen (ein Seiten-Reload zählt nicht); erst dann erkennt die Client-Modultabelle das Bundle.
50
66
 
51
- ![Dispatch-Pools](docs/assets/conf-demo2.png)
67
+ 3. **Konfigurieren** — Einstellungen → dsh-switchman oder das „Switchman-Dispatch-Center“ in der Startseiten-Seitenleiste. Die Konfiguration ist eine einzige Seite und sieht so aus — einmal von oben nach unten durchgehen, fertig:
52
68
 
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.
69
+ ![Die Konfigurationsseite von dsh-switchman im Überblick: Oberflächensprache, Sprachpräferenzen, sechs Dispatch-Pools, Fähigkeits-Ranking und Enforcement-Modus, Team-Schalter, Kontext-Wasserstand und Befehle](docs/assets/conf-interface-de.png)
54
70
 
55
- ![Ranking und Kontext-Watermark](docs/assets/conf-demo3.png)
71
+ - **Oberfläche** — die Oberflächensprache des Plugins selbst. Im Screenshot steht das Dropdown auf „Deutsch“ — eine Live-Vorschau des Umschaltens; der Auslieferungs-Standard ist Auto (folgt der App-Sprache von DSH). Eine gewählte Sprache schaltet die Seite sofort um und wird nach dem Speichern gemerkt; jederzeit zurück auf Auto.
72
+ - **Sprachen** — die Sprachen der Agent-Ergebnisse. Der Geltungsbereich steht im Screenshot auf „Global (dieses Profil)“ (je Projekt ebenfalls möglich, jedes liest `.switchman/lang.json`); die drei Dropdowns Antwort / Code-Kommentare / Dokumente stehen im Screenshot alle auf Deutsch, jedes angezeigt als „Eigenname (Tag)“ — z. B. „Deutsch (de)“ — mit einer Statuszeile „aktuell: …“ darunter. Alle drei leer lassen geht auch — beim ersten Einsatz wird einmal gefragt, danach gemerkt.
73
+ - **Dispatch-Pools** — sechs Karten in zwei Reihen zu drei: oben Economy / Mechanical / Main, unten Hard / Vision / Review. Kandidaten je Provider ankreuzen; ein Haken bei „manuelle Reihenfolge“ macht daraus eine nummerierte Prioritätsliste, sortiert mit ↑ ↓ ×; je Route lässt sich der Reasoning-Aufwand festnageln (Standard „wie Spur“). Die Zusammenfassungszeile oben aktualisiert live — im Screenshot: „4/6 Pools konfiguriert · 2 gerankt · Modus Empfehlung“.
74
+ - **Fähigkeits-Ranking + Enforcement-Modus** — die Vereinigung der gewählten Modelle über alle sechs Pools, nach Fähigkeit sortiert, das stärkste zuerst (im Screenshot glm-5.3 auf S und glm-5.3-flash auf A verankert), umsortier- und kürzbar; Enforcement-Modus Empfehlung / Erzwingen (Erzwingen = Modelle außerhalb der Pools werden glatt abgelehnt).
75
+ - **Agent-Teams** — die zwei Schalter für Team-Modus und Whitelist-Sync, beide standardmäßig aus; im Screenshot an, mit Sync-Statuszeile unter dem Schalter.
76
+ - **Kontext-Wasserstand** — die drei Schwellen (im Screenshot 50000 / 90000 / 130000), das Einzellese-Budget (1500), das Verhalten der Hard-Stufe (drosselnd durchlassen / blockieren), der Schalter für die Auto-Übergabe und die eigenen Obergrenzen der Subagents — alles in diesem Bereich. Unten die Befehlszeile: `/ctx-pause` Eingriffe pausieren · `/ctx-resume` fortsetzen · `/ctx-handover` sofort sichern und übergeben (die Session wird erst an eine Leerlauf-Grenze geführt und dann komprimiert — das Ergebnis kann ein paar Minuten dauern).
56
77
 
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.
78
+ 4. **Prüfen** — in der Session-Kopfzeile erscheint das ⚡-Abzeichen „autonomes Team“ (daneben ◇ mit dem Modell der Session); oder das Modell einfach fragen: „Wie lautet die Überschrift des letzten Abschnitts deines System-Prompts?“ — die Antwort sollte das dsh-switchman-Regelwerk nennen.
58
79
 
59
- **db-query – einmalige Einrichtung** (die Skript-Abhängigkeiten liegen im Skill-Verzeichnis):
80
+ **Einmalige Initialisierung von db-query** (Skript-Abhängigkeiten landen im Skill-Verzeichnis und verschmutzen das Projekt nicht):
60
81
 
61
82
  ```bash
62
- bash <install-dir>/skills/db-query/scripts/setup.sh
83
+ bash <Installationsverzeichnis>/skills/db-query/scripts/setup.sh
63
84
  ```
64
85
 
65
- ## Wie es funktioniert
86
+ ## Funktionsweise
66
87
 
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`.
88
+ - Die Host-Hälfte (`index.js` + `host/`) injiziert die dynamischen System-Prompt-Abschnitte (Sprache / Spuren / Wasserstand / Teams), das Lese-Budget samt Enforcement-Doppeltor und vier Slash-Befehle (das ctx-Trio + `/vision`). Gespeicherte Einstellungen wirken ab der nächsten Prompt-Montage — kein Neustart.
89
+ - Die Client-Hälfte (`client.js`) rendert die Einstellungsseite, das ⚡-Abzeichen und die ◇-Modellmarkierung in der Session-Kopfzeile und die Live-Anzeige während einer Übergabe; Konfigurations-Snapshots werden über die Host-Routenfamilie gelesen und geschrieben.
90
+ - Der Eintrag „Switchman-Dispatch-Center“ in der Startseiten-Seitenleiste öffnet dieselbe Einstellungsseite mit einem Klick als Zentral-Panel; der ursprüngliche Einstellungszugang bleibt.
91
+ - `cordis.patch.yml` hält die Werks-Preset-Pluginliste vollständig intakt und erweitert nur den Persona-Suffix; die Agent-Teams-Werkzeuge selbst stammen aus dem Werks-Bundle und schalten sich mit dem Team-Modus automatisch scharf.
70
92
 
71
- ## Wartung
93
+ ## Hinweise zur Wartung
72
94
 
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).
95
+ - Ändert ein DSH-Upgrade die Werks-Preset-Pluginliste, `cordis.patch.yml` aus dem neuen `presets/*.patch.yml` neu synchronisieren (Doctrine-Suffix behalten) und neu installieren.
96
+ - Die Protokollzeilen (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) sind bewusst englisch und byte-stabil — nicht lokalisieren.
97
+ - `npm pack --dry-run` muss die auditierte Form mit 50 Dateien / ~205 kB behalten (`docs/`-Screenshots kommen nicht ins Paket).
76
98
 
77
- ## Lizenz
99
+ ## License
78
100
 
79
101
  MIT
package/README.es.md CHANGED
@@ -2,61 +2,82 @@
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: 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 el /compact manual de por medio pierde detalles en cada compresión; y el modelo principal lo hace todo él solo — leer un archivo, lanzar un test, cotejar datos: todo lo mastica él, cuando la mayor parte de ese trabajo correspondería a un modelo barato.
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
+ 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 siete cosas:
16
16
 
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.
17
+ **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 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. Si la intervención automática no te encaja, toma el mando manualmente en cualquier momento: `/ctx-pause` detiene todas las acciones del nivel (la medición sigue corriendo, el aviso pasa a paused — solo deja de actuar), `/ctx-resume` lo devuelve en cualquier momento — tras reiniciar DSH la intervención también vuelve sola, lo sueltas por un rato, no lo apagas para siempre; `/ctx-handover` no espera a que el nivel llegue arriba y lanza esa misma entrega a demanda: bifurca una copia de respaldo, compacta el contexto, despierta la continuación (la sesión se conduce primero a la frontera de inactividad, así que el resultado puede tardar unos minutos).
18
18
 
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.
19
+ **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).
20
20
 
21
- ¿Solo un modelo? Sigue mereciendo la pena — el control del nivel de agua y la doctrina no dependen de cuántos modelos tengas.
21
+ **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:
22
+
23
+ - **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. 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. 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.
24
+ - **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, se marca con ⚠). Al encender este interruptor, la unión de los seis pools se escribe entera en esa lista blanca — switchman es la única fuente de verdad, sin configurar dos veces. 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.
25
+
26
+ 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».
27
+
28
+ **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.
29
+
30
+ **5. Idioma de la interfaz: el plugin también habla tu idioma.** En lo más alto de la página de ajustes aparece una nueva sección «Interfaz» con un desplegable «Idioma de la interfaz» (clave de ajuste `uiLocale`): Auto (por defecto — sigue el idioma de la app de DeepSeek Harness) o cualquier idioma en el que venga la interfaz del plugin, siempre con su endónimo, sin traducir. Solo cambia la interfaz del propio plugin — la insignia de la cabecera, el panel de inicio y la página de ajustes —, no el idioma de la app de DSH: la vista previa es inmediata y sin reinicio; al guardar, la elección se recuerda; el siguiente arranque la restaura; cualquier fallo vuelve al idioma de la app; y todos los diccionarios viajan dentro del bundle, sin descargas.
31
+
32
+ **6. 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.
33
+
34
+ **7. `/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 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.
35
+
36
+ ¿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
37
 
23
38
  ## Skills incluidas
24
39
 
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/`.
40
+ - **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).
41
+ - **git-commit-message** — genera el texto de commit conforme a la convención; solo texto, nunca hace git por ti.
42
+ - **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
43
 
29
44
  ## Inicio rápido
30
45
 
31
- 1. **Instalar** — desde cualquier sesión de agente, o desde el gestor de plugins web:
46
+ 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
47
 
33
48
  ```
34
49
  plugin_manager: install_bundle target=dsh-switchman
35
50
  ```
36
51
 
37
- o desde un checkout local (enlazado; reejecuta `remove_bundle` + `install_bundle` tras incorporar cambios):
52
+ o instálalo desde un checkout local (en modo link; tras actualizar toca reinstalar con `remove_bundle` + `install_bundle`):
38
53
 
39
54
  ```
40
55
  plugin_manager: install_bundle target=/path/to/dsh-switchman
41
56
  ```
42
57
 
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.
58
+ o instálalo desde una terminal con el comando `dsh` — elige el perfil según cómo ejecutes DSH:
44
59
 
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á.
46
-
47
- ![Página de ajustes y preferencias de idioma](docs/assets/conf-demo1.png)
60
+ ```bash
61
+ dsh plugin --profile web add dsh-switchman # Web GUI
62
+ dsh plugin --profile desktop add dsh-switchman # app de escritorio
63
+ ```
48
64
 
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”.
65
+ 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.
50
66
 
51
- ![Pools de despacho](docs/assets/conf-demo2.png)
67
+ 3. **Configurar** — Ajustes → dsh-switchman, o «Central de despacho Switchman» en la barra lateral de la página de inicio. La configuración cabe en una sola página; así se ve — un repaso de arriba abajo y la tienes lista:
52
68
 
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.
69
+ ![Vista completa de la página de configuración de dsh-switchman: idioma de la interfaz, preferencias de idioma, seis pools de despacho, orden por capacidad y modo de ejecución, interruptores de equipo, nivel de agua del contexto y comandos](docs/assets/conf-interface-es.png)
54
70
 
55
- ![Ranking y watermark de contexto](docs/assets/conf-demo3.png)
71
+ - **Interfaz** — el idioma de la interfaz del propio plugin. En la captura está seleccionado «Español»: es la vista previa inmediata, toda la página cambia al momento; por defecto está «Auto», que sigue el idioma de la app de DSH. Se recuerda al guardar, y puedes volver a «Auto» cuando quieras.
72
+ - **Idioma** — el idioma de lo que produce el agente. El ámbito de la captura es «Global (este perfil)» (también puede ser por proyecto, cada uno lee su `.switchman/lang.json`); los tres desplegables de respuestas / comentarios de código / documentos están fijados en «Español (es)», cada uno con su línea de estado «actual: …». Puedes no configurar ninguno: en el primer uso se pregunta una vez y se recuerda.
73
+ - **Pools de despacho** — seis tarjetas en dos filas de tres: arriba ligero / mecánico / principal; abajo alta dificultad / multimodal / revisión. Cada tarjeta agrupa los modelos candidatos por proveedor; marca «orden manual» y se convierte en una lista de prioridades numerada que se reordena con ↑ ↓ ×; junto a cada ruta puedes fijar el effort de razonamiento (por defecto «seguir el carril»). La línea de resumen superior se actualiza en vivo; en la captura: «pools configurados: 4/6 · posiciones en el ranking: 2 · modo advice».
74
+ - **Orden por capacidad + modo de ejecución** — la unión de los modelos elegidos en los seis pools, ordenada por capacidad y con los más fuertes delante (en la captura glm-5.3 anclado en S y glm-5.3-flash anclado en A); se puede reordenar y recortar; el modo de ejecución va de advice / enforce (enforce = los modelos fuera del pool se rechazan sin más).
75
+ - **Equipo de agentes** — los dos interruptores, modo de equipo y sincronización de la lista blanca, vienen apagados; en la captura están encendidos, y debajo de cada uno hay una línea de estado de sincronización.
76
+ - **Nivel de agua del contexto** — los tres umbrales (en la captura 50000 / 90000 / 130000), el presupuesto de lectura por llamada (1500), el comportamiento del umbral duro (dejar pasar limitando / bloquear), el interruptor de entrega automática y el techo 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 antes de compactar; el resultado puede tardar unos minutos).
56
77
 
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.
78
+ 4. **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
79
 
59
- **Configuración única de db-query** (las dependencias del script viven dentro del directorio del skill):
80
+ **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
81
 
61
82
  ```bash
62
83
  bash <install-dir>/skills/db-query/scripts/setup.sh
@@ -64,16 +85,17 @@ bash <install-dir>/skills/db-query/scripts/setup.sh
64
85
 
65
86
  ## Cómo funciona
66
87
 
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.
88
+ - 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.
89
+ - 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; las instantáneas de configuración se leen y escriben por la familia de rutas Host.
90
+ - 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 como panel central; la entrada de ajustes original se conserva.
91
+ - `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
92
 
71
93
  ## Mantenimiento
72
94
 
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).
95
+ - 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.
96
+ - 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.
97
+ - `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
98
 
77
- ## Licencia
99
+ ## License
78
100
 
79
101
  MIT
package/README.fr.md CHANGED
@@ -2,61 +2,82 @@
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 : 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, et le /compact manuel avale des détails à chaque compression ; et 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.
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
+ 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 sept choses :
16
16
 
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.
17
+ **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 par appel 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. Quand l'intervention automatique ne vous convient pas, reprenez la main à tout moment : `/ctx-pause` arrête toutes les actions de niveau (la mesure continue, la bannière passe en paused — il n'agit plus, c'est tout), `/ctx-resume` rétablit à tout moment — après un redémarrage de DSH, l'intervention revient aussi d'elle-même, un lâcher-prise temporaire, pas une extinction définitive ; `/ctx-handover` n'attend pas que le niveau touche le plafond et déclenche à la demande la même remise : forker une sauvegarde, compacter le contexte, réveiller la continuation (la session est d'abord conduite jusqu'à la limite d'inactivité, le résultat peut donc prendre quelques minutes).
18
18
 
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.
19
+ **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).
20
20
 
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.
21
+ **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 :
22
+
23
+ - **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. 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. 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.
24
+ - **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, elle est marquée d'un ⚠). Activez cet interrupteur et l'union des six pools est d'un coup écrite dans cette liste — switchman reste l'unique source de vérité, fini la double configuration. La liste blanche s'applique par instantané à chaque nouvelle session : la synchronisation ne concerne que les sessions ouvertes ensuite.
25
+
26
+ 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 ».
27
+
28
+ **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.
29
+
30
+ **5. Langue de l'interface : le plugin parle votre langue aussi.** Tout en haut de la page de réglages, une nouvelle section « Interface » accueille un menu déroulant « Langue de l'interface » (clé de réglage `uiLocale`) : Auto (par défaut — suit la langue de l'appli DeepSeek Harness) ou n'importe quelle langue de l'interface du plugin, toujours affichée par son endonyme, jamais traduite. Elle ne bascule que l'interface du plugin lui-même — le badge d'en-tête, le panneau d'accueil et la page de réglages —, pas la langue de l'appli DSH : l'aperçu est immédiat, sans redémarrage ; l'enregistrement retient le choix ; le prochain démarrage le restaure ; tout échec retombe sur la langue de l'appli ; et tous les dictionnaires voyagent dans le bundle, sans téléchargement.
31
+
32
+ **6. 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.
33
+
34
+ **7. `/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 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.
35
+
36
+ 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
37
 
23
38
  ## Skills incluses
24
39
 
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/`.
40
+ - **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 la cohérence entre stores ; refuse toute écriture. Initialisation au premier usage (voir ci-dessous).
41
+ - **git-commit-message** — produit un texte de commit conforme aux conventions. Du texte seulement ; il ne lance jamais git à votre place.
42
+ - **requirement-docs** — une spécification unifiée pour l'analyse des besoins / PRD / documents de conception, avec archivage dans `docs/requirements-and-design/`.
28
43
 
29
44
  ## Démarrage rapide
30
45
 
31
- 1. **Installer** — depuis n'importe quelle session d'agent, ou depuis le gestionnaire de plugins web :
46
+ 1. **Installer** — depuis n'importe quelle session d'agent, ou depuis la page de gestion des plugins Web :
32
47
 
33
48
  ```
34
49
  plugin_manager: install_bundle target=dsh-switchman
35
50
  ```
36
51
 
37
- ou depuis un checkout local (lié ; relancez `remove_bundle` + `install_bundle` après avoir récupéré des modifications) :
52
+ ou depuis un checkout local (en lien ; après mise à jour, refaire `remove_bundle` + `install_bundle`) :
38
53
 
39
54
  ```
40
55
  plugin_manager: install_bundle target=/path/to/dsh-switchman
41
56
  ```
42
57
 
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.
58
+ ou depuis un terminal avec la commande `dsh` — choisissez le profil correspondant à votre façon d'exécuter DSH :
44
59
 
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.
46
-
47
- ![Page de réglages et préférences de langue](docs/assets/conf-demo1.png)
60
+ ```bash
61
+ dsh plugin --profile web add dsh-switchman # Web GUI
62
+ dsh plugin --profile desktop add dsh-switchman # appli desktop
63
+ ```
48
64
 
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”.
65
+ 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.
50
66
 
51
- ![Pools de dispatch](docs/assets/conf-demo2.png)
67
+ 3. **Configurer** — Réglages → dsh-switchman, ou « Centre de contrôle Switchman » dans la barre latérale de la page d'accueil. Tout tient sur une seule page ; la voici — un passage de haut en bas et c'est réglé :
52
68
 
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.
69
+ ![Vue complète de la page de réglages de dsh-switchman : langue de l'interface, préférences de langue, six pools de dispatch, classement des capacités et mode d'exécution, interrupteurs d'équipe, niveau d'eau du contexte et commandes](docs/assets/conf-interface-fr.png)
54
70
 
55
- ![Classement et watermark du contexte](docs/assets/conf-demo3.png)
71
+ - **Interface** — la langue de l'interface du plugin lui-même. Sur la capture, « Français » est sélectionné : c'est l'aperçu immédiat, toute la page bascule sur-le-champ ; par défaut, « Auto » suit la langue de l'appli DSH. Le choix est retenu à l'enregistrement, et on peut repasser sur « Auto » à tout moment.
72
+ - **Langue** — la langue de ce que produit l'agent. Le scope de la capture est « Global (ce profil) » (possible aussi par projet, chacun lit son `.switchman/lang.json`) ; les trois menus déroulants réponses / commentaires de code / documentation sont tous fixés sur « Français (fr) », chacun suivi d'une ligne d'état « actuel : … ». Tout laisser vide se fait sans douleur : une question posée une fois au premier usage, puis retenue.
73
+ - **Pools de dispatch** — six cartes sur deux rangées de trois : en haut léger / mécanique / principal ; en bas haute difficulté / multimodal / révision. Chaque carte coche les modèles candidats groupés par fournisseur ; cochez « ordre manuel » et elle devient une liste de priorités numérotée, à réordonner avec ↑ ↓ × ; chaque route peut épingler un effort de raisonnement (par défaut « suivre le couloir »). La ligne de résumé en haut se met à jour en direct ; sur la capture : « 4/6 pools configurés · 2 classés · mode advice ».
74
+ - **Classement des capacités + mode d'exécution** — l'union des modèles cochés dans les six pools, classée par capacité, les plus forts devant (sur la capture glm-5.3 ancré S et glm-5.3-flash ancré A) ; on peut réordonner et retirer ; le mode d'exécution va de advice / enforce (enforce = tout modèle hors pool est refusé sans appel).
75
+ - **Équipe d'agents** — les deux interrupteurs, mode équipe et synchronisation de la liste blanche, arrivent désactivés ; sur la capture ils sont activés, avec sous chacun une ligne d'état de synchronisation.
76
+ - **Niveau d'eau du contexte** — les trois seuils (sur la capture 50000 / 90000 / 130000), le budget de lecture par appel (1500), le comportement du palier hard (passage à débit limité / blocage), l'interrupteur de remise automatique et le plafond indépendant des subagents : tout tient dans cette zone. 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é avant de compacter — le résultat peut prendre quelques minutes).
56
77
 
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.
78
+ 4. **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
79
 
59
- **Configuration unique de db-query** (les dépendances du script vivent dans le répertoire du skill) :
80
+ **Initialisation de db-query au premier usage** (les dépendances du script s'installent dans le répertoire du skill — votre projet reste propre) :
60
81
 
61
82
  ```bash
62
83
  bash <install-dir>/skills/db-query/scripts/setup.sh
@@ -64,16 +85,17 @@ bash <install-dir>/skills/db-query/scripts/setup.sh
64
85
 
65
86
  ## Fonctionnement
66
87
 
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é.
88
+ - 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.
89
+ - 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 » ; les instantanés de configuration se lisent et s'écrivent via la famille de routes Host.
90
+ - 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, cette même page de configuration ; l'entrée de réglages d'origine reste en place.
91
+ - `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
92
 
71
93
  ## Maintenance
72
94
 
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).
95
+ - 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.
96
+ - Les lignes de protocole (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) restent volontairement en anglais et stables à l'octet — ne les localisez pas.
97
+ - `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
98
 
77
- ## Licence
99
+ ## License
78
100
 
79
101
  MIT