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 +56 -34
- package/README.es.md +53 -31
- package/README.fr.md +52 -30
- package/README.it.md +47 -25
- package/README.ja.md +54 -32
- package/README.ko.md +55 -33
- package/README.md +53 -31
- package/README.pt.md +47 -25
- package/README.ru.md +52 -30
- package/README.zh-TW.md +52 -30
- package/README.zh.md +46 -24
- package/client.js +2344 -40
- package/cordis.patch.yml +24 -8
- package/host/config.js +31 -0
- package/host/context-watch.js +424 -84
- package/host/dispatch.js +107 -6
- package/host/handover-state.js +38 -0
- package/host/lang.js +211 -36
- package/host/lib/dsh-home.js +18 -0
- package/host/routes.js +143 -8
- package/host/subagent-model.js +147 -0
- package/host/subagents.js +160 -0
- package/host/teams.js +583 -0
- package/host/ui-locale.js +35 -0
- package/host/vision.js +367 -0
- package/index.js +40 -8
- package/package.json +1 -1
- package/skills/db-query/package.json +1 -1
- package/skills/db-query/scripts/lib/cli.js +23 -23
- package/skills/db-query/scripts/lib/config.js +78 -61
- package/skills/db-query/scripts/lib/mysql-readonly.js +167 -158
- package/skills/db-query/scripts/lib/output.js +56 -55
- package/skills/db-query/scripts/lib/redis-readonly.js +116 -111
- package/skills/db-query/scripts/mysql-query.js +46 -42
- package/skills/db-query/scripts/redis-query.js +32 -29
- package/skills/db-query/scripts/setup.sh +16 -16
package/README.it.md
CHANGED
|
@@ -2,27 +2,42 @@
|
|
|
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](./README.de.md) | **Italiano** | [Português](./README.pt.md) | [Русский](./README.ru.md)
|
|
4
4
|
|
|
5
|
-
> **La famiglia switchman**, stesso autore, stessa orchestrazione: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (l'originale per OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (il port per ZCode) · **dsh-switchman** (questo repository,
|
|
5
|
+
> **La famiglia switchman**, stesso autore, stessa orchestrazione: [opencode-switchman](https://github.com/mrzturn/opencode-switchman) (l'originale per OpenCode) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman) (il port per ZCode) · **dsh-switchman** (questo repository, l'edizione DeepSeek Harness).
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
-
> Contesto al contatore
|
|
9
|
+
> Contesto al contatore: ogni task trova da sé la corsia giusta.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## Perché serve
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Se lavori con DSH, col passare del tempo ti imbatti in due cose: la sessione pesa sempre di più — la cronologia gonfia il contesto fino a centinaia di migliaia di token, il modello inizia a dimenticare, rallenta e costa di più, e il /compact manuale comprime perdendo dettagli nel farlo; e il modello principale fa tutto da solo — leggere un file, lanciare un test, confrontare dati: è sempre lui a masticarli, lento e costoso, quando gran parte di quel lavoro spetterebbe a un modello economico.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
dsh-switchman è un plugin per [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH). Una volta installato, il modello principale smette di «fare tutto da solo» e diventa un dispatcher: misura il livello dell'acqua, sceglie la corsia, assegna i task, verifica il risultato. Non è un nuovo modello: è un regolamento di orchestrazione agganciato a DSH più un'interfaccia di configurazione. In concreto fa sette cose:
|
|
16
16
|
|
|
17
|
-
**
|
|
17
|
+
**1. Livello dell'acqua del contesto: le sessioni lunghe non esplodono.** A ogni turno conta i token della sessione in tempo reale, e tre soglie inaspriscono a gradini: 50k (soft, regolabile) ricorda che «è ora di delegare»; 90k (hard) stringe il budget di lettura per singola chiamata e spinge verso la chiusura; 130k (force) avvia l'handover automatico — fork della sessione come copia di backup, contesto compattato, continuazione risvegliata: il task non si interrompe. Nemmeno i subagent in background ancora in corsa al momento del passaggio si perdono: id, descrizione del task e percorso del report finiscono nel documento di handover, così la sessione ripresa sa dove raccogliere i report invece di ri-assegnare lo stesso lavoro. Ogni subagent inviato porta con sé un tetto massimo indipendente e, raggiunto il limite, esce dopo aver scritto il riepilogo HANDOFF. Se l'intervento automatico non ti torna, prendi tu il comando in qualsiasi momento: `/ctx-pause` ferma tutte le azioni della soglia (la misurazione continua, l'avviso passa a paused — smette solo di agire), `/ctx-resume` ripristina in qualsiasi momento — dopo un riavvio di DSH l'intervento torna anche da solo, un mollare la presa temporaneo, non uno spegnimento definitivo; `/ctx-handover` non aspetta che la soglia tocchi il limite e avvia su richiesta lo stesso handover: fork di una copia di backup, compattazione del contesto, risveglio della continuazione (la sessione viene prima guidata fino al confine di inattività, quindi il risultato può richiedere qualche minuto).
|
|
18
18
|
|
|
19
|
-
**
|
|
19
|
+
**2. Sei pool di dispatch: a ogni lavoro il suo modello.** Pool leggero (economy, piccoli lavori in serie), pool meccanico (mechanical, riscritture modellate), pool principale (main, coding di tutti i giorni), pool ad alta difficoltà (hard, ragionamento complesso e refactoring su larga scala), pool multimodale (vision, lettura delle immagini), pool di revisione (review, verifica indipendente). Nella pagina delle impostazioni spunti i candidati, ordini le priorità (con fasce opzionali S/A/B/C) e fichi un reasoning effort per ogni route — il menu a tendina elenca i livelli che quel modello supporta davvero, non tre livelli generici. A ogni turno il prompt del modello principale viaggia con una tabella di raccomandazioni `[SWITCHMAN:POOLS]`: si assegna il lavoro seguendo la tabella. La modalità di esecuzione ha tre stati: off / advice / enforce (enforce = i modelli fuori pool vengono rifiutati sul posto).
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**3. Modalità Agent Teams: dal lavoro solitario alla squadra.** Disattivata di default: appena installato si lavora con un dispatch leggero via subagent. Nella pagina delle impostazioni, due interruttori indipendenti:
|
|
22
|
+
|
|
23
|
+
- **Modalità Agent Teams** — una volta attivata, inietta la dottrina di squadra (delega per default + verifica a livelli + disciplina del task board condiviso) e abilita automaticamente gli Agent Teams di DSH: il modello principale può arruolare compagni permanenti (`spawn_teammate`), assegnare lavori al task board condiviso (`team_task_*`) e scambiarsi messaggi con loro. Quando formare la squadra segue una disciplina precisa: sotto-task indipendenti parallelizzabili, lavori voluminosi e autosufficienti, livello dell'acqua del contesto principale già alto, necessità di separare i ruoli; le indagini una-tantum restano al subagent. Ri-spegnendo l'interruttore, le clausole di squadra spariscono senza residui, e gli strumenti di squadra nelle sessioni in corso non vengono ritirati.
|
|
24
|
+
- **Sincronizzazione della whitelist dei modelli per i subagent** — DSH ha una whitelist di autorizzazione «Consenti agli agenti di scegliere i modelli per i subagent»: le route scelte nei pool ma non autorizzate vengono rifiutate se il modello principale le nomina esplicitamente (in modalità squadra, vengono marcate con ⚠). Con questo interruttore attivo, l'unione dei sei pool viene scritta in un colpo solo in quella whitelist — niente configurazione doppia: switchman è l'unica fonte di verità. La whitelist scatta come snapshot alla «nuova sessione»: la sincronizzazione vale solo per le sessioni aperte dopo.
|
|
25
|
+
|
|
26
|
+
L'intestazione della sessione dà un riscontro immediato: badge ⚡ «Squadra autonoma», ◇ modello effettivo della sessione in corso; durante un handover automatico compare un avviso in tempo reale del tipo «Handover in corso · backup della sessione / compattazione del contesto / risveglio della continuazione».
|
|
27
|
+
|
|
28
|
+
**4. Preferenze linguistiche: chiede una volta, ricorda per sempre.** Un menu a tendina per ciascuna delle tre lingue — risposte, commenti nel codice, documenti — con ambito a scelta globale o per progetto (`.switchman/lang.json`). Puoi anche non impostarlo: al primo utilizzo ti viene chiesto una volta, nella lingua dell'interfaccia DSH, e da lì in poi ogni sessione lo rispetta da sé.
|
|
29
|
+
|
|
30
|
+
**5. Lingua dell'interfaccia: il plugin parla anche la tua lingua.** In cima alla pagina delle impostazioni arriva una nuova sezione «Interfaccia» con un menu a tendina «Lingua dell'interfaccia» (chiave di impostazione `uiLocale`): Automatico (predefinito — segue la lingua dell'app DeepSeek Harness) o una qualsiasi delle lingue dell'interfaccia del plugin, sempre mostrata con il suo endonimo, mai tradotta. Cambia solo l'interfaccia del plugin stesso — il badge nell'intestazione, il pannello home e la pagina delle impostazioni —, non la lingua dell'app DSH: l'anteprima è immediata, senza riavvio; il salvataggio ricorda la scelta; il prossimo avvio la ripristina; ogni errore ricade sulla lingua dell'app; e tutti i dizionari viaggiano nel bundle, nessun download.
|
|
31
|
+
|
|
32
|
+
**6. Verifica a livelli: finita la modifica, si controlla.** Le modifiche oltre 20 righe vanno a un tester per la verifica; oltre 300 righe, o quando si toccano logica centrale / sicurezza / coerenza dei dati, subentra anche un reviewer con revisione indipendente. Il modello del reviewer si sceglie ancorandolo a quello dell'«agente che ha scritto il diff», evitandolo per quanto possibile; se nel pool proprio non si riesce, la conclusione dichiara DOWNGRADED. Basta dire «non usare le squadre» e torna subito a lavorare da solo.
|
|
33
|
+
|
|
34
|
+
**7. `/vision`: anche i modelli solo testo trattano le immagini.** Quando il modello principale non sa leggere le immagini, DSH rifiuta al varco i messaggi che le contengono. Alleghi l'immagine e digiti `/vision dov'è l'errore in questa immagine`: l'immagine viene affidata alla lettura di un modello del pool multimodale, e la conclusione torna nella sessione corrente. Sopra la casella di input compare in anticipo l'avviso «il modello corrente non supporta la lettura delle immagini»; se un invio diretto dell'immagine viene rifiutato, il messaggio viene riscritto una volta in `/vision` e reinviato da solo, senza dover rifare tutto a mano; senza pool multimodale configurato, il comando rifiuta e indica come configurarlo.
|
|
35
|
+
|
|
36
|
+
Un solo modello? Vale comunque la pena installarlo — il controllo del livello dell'acqua e la verifica a livelli non guardano a quanti modelli hai, e ne giovancono allo stesso modo le sessioni lunghe con un modello unico.
|
|
22
37
|
|
|
23
38
|
## Skill incluse
|
|
24
39
|
|
|
25
|
-
- **db-query** — verifica in sola lettura su MySQL/Redis: esegui SQL per controllare record, chiavi di cache / TTL, coerenza tra store. Rifiuta ogni scrittura.
|
|
40
|
+
- **db-query** — verifica in sola lettura su MySQL/Redis: esegui SQL per controllare record, chiavi di cache / TTL, coerenza tra store. Rifiuta ogni scrittura. Inizializzazione al primo uso (vedi sotto).
|
|
26
41
|
- **git-commit-message** — testo di commit conforme alle convenzioni. Solo testo; non tocca mai git.
|
|
27
42
|
- **requirement-docs** — un'unica specifica per requisiti / PRD / documenti di design, archiviata in `docs/requirements-and-design/`.
|
|
28
43
|
|
|
@@ -40,23 +55,29 @@ Un solo modello? Vale comunque la pena — il controllo del livello dell'acqua e
|
|
|
40
55
|
plugin_manager: install_bundle target=/path/to/dsh-switchman
|
|
41
56
|
```
|
|
42
57
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
3. **Apri la pagina delle impostazioni** — Settings → dsh-switchman. La prima schermata è le preferenze linguistiche: un menu a tendina per risposte / commenti / documenti, ciascuno con una riga live `current: …`. Salta pure — ti verrà chiesto una volta e verrà ricordato.
|
|
58
|
+
oppure da un terminale tramite la CLI `dsh` — scegli il profilo che corrisponde a come esegui DSH:
|
|
46
59
|
|
|
47
|
-
|
|
60
|
+
```bash
|
|
61
|
+
dsh plugin --profile web add dsh-switchman # Web GUI
|
|
62
|
+
dsh plugin --profile desktop add dsh-switchman # app desktop
|
|
63
|
+
```
|
|
48
64
|
|
|
49
|
-
|
|
65
|
+
2. **Riavvia DSH** — chiudi completamente l'app e riaprila (ricaricare la pagina non basta), così la tabella dei moduli client rileva il bundle.
|
|
50
66
|
|
|
51
|
-
|
|
67
|
+
3. **Configura** — Impostazioni → dsh-switchman, oppure la voce «Switchman Control Center» nella barra laterale della home. La configurazione sta tutta in una pagina; eccola — un giro dall'alto in basso e hai finito:
|
|
52
68
|
|
|
53
|
-
|
|
69
|
+

|
|
54
70
|
|
|
55
|
-
|
|
71
|
+
- **Interfaccia** — la lingua dell'interfaccia del plugin stesso. Nella schermata è selezionato «Italiano»: è l'anteprima immediata, l'intera pagina cambia all'istante; per predefinito c'è «Automatico», che segue la lingua dell'app DSH. La scelta viene ricordata al salvataggio, e puoi tornare a «Automatico» quando vuoi.
|
|
72
|
+
- **Lingua** — la lingua di ciò che produce l'agente. L'ambito nella schermata è «Globale (questo profilo)» (si può anche per progetto, ognuno legge il proprio `.switchman/lang.json`); i tre menu a tendina risposte / commenti nel codice / documenti sono tutti fissati su «Italiano (it)», ciascuno con la riga di stato «Attuale: …» sotto. Puoi anche non impostarli: al primo uso viene chiesto una volta e ricordato.
|
|
73
|
+
- **Pool di dispatch** — sei schede su due righe da tre: in alto leggero / meccanico / principale; in basso alta difficoltà / multimodale / revisione. In ogni scheda si spuntano i candidati raggruppati per provider; spunta «ordine manuale» e diventa una lista di priorità numerata da riordinare con ↑ ↓ ×; accanto a ogni route puoi fichare il reasoning effort (predefinito «segui la corsia»). La riga di riepilogo in alto si aggiorna in tempo reale; nella schermata: «4/6 pool configurati · 2 in classifica · modalità advice».
|
|
74
|
+
- **Classifica di capacità + modalità di esecuzione** — l'unione dei modelli scelti nei sei pool, ordinata per capacità con i più forti davanti (nella schermata glm-5.3 ancorato in S e glm-5.3-flash ancorato in A); si può riordinare e ridurre; la modalità di esecuzione va da advice / enforce (enforce = i modelli fuori pool vengono rifiutati sul posto).
|
|
75
|
+
- **Squadra di agenti** — i due interruttori, modalità squadra e sincronizzazione della whitelist, partono spenti; nella schermata sono accesi, con sotto una riga di stato della sincronizzazione.
|
|
76
|
+
- **Livello dell'acqua del contesto** — le tre soglie (nella schermata 50000 / 90000 / 130000), il budget di lettura per singola chiamata (1500), il comportamento della soglia hard (passa con limitazione / blocca), l'interruttore dell'handover automatico e il tetto indipendente dei subagent: tutto in quest'area. Una riga di comandi in fondo: `/ctx-pause` sospende gli interventi · `/ctx-resume` li riprende · `/ctx-handover` fa subito backup e passaggio di consegne (guida la sessione fino al confine di inattività prima di compattare: il risultato può richiedere alcuni minuti).
|
|
56
77
|
|
|
57
|
-
|
|
78
|
+
4. **Verifica** — nell'intestazione della sessione compare il badge ⚡ «Squadra autonoma» (accanto, il ◇ mostra il modello della sessione in corso); oppure chiedi direttamente al modello «qual è il titolo dell'ultima sezione del tuo system prompt?» — la risposta dovrebbe menzionare la dottrina dsh-switchman.
|
|
58
79
|
|
|
59
|
-
**
|
|
80
|
+
**Inizializzazione di db-query al primo uso** (le dipendenze degli script vivono nella directory della skill, senza sporcare il progetto):
|
|
60
81
|
|
|
61
82
|
```bash
|
|
62
83
|
bash <install-dir>/skills/db-query/scripts/setup.sh
|
|
@@ -64,15 +85,16 @@ bash <install-dir>/skills/db-query/scripts/setup.sh
|
|
|
64
85
|
|
|
65
86
|
## Come funziona
|
|
66
87
|
|
|
67
|
-
- La parte Host (`index.js` + `host/`) inietta
|
|
68
|
-
- La parte Client (`client.js`) renderizza il badge ⚡
|
|
69
|
-
-
|
|
88
|
+
- La parte Host (`index.js` + `host/`) inietta le sezioni dinamiche del system prompt (lingue / corsie / livello dell'acqua / squadra), il doppio cancello budget di lettura + enforce e i quattro comandi slash (il trio ctx più `/vision`). Ogni impostazione salvata vale già dall'assemblaggio del prompt successivo, senza riavvio.
|
|
89
|
+
- La parte Client (`client.js`) renderizza la pagina delle impostazioni, il badge ⚡ e l'identificativo ◇ del modello nell'intestazione della sessione e l'avviso dinamico durante l'handover; gli snapshot di configurazione si leggono e scrivono tramite la famiglia di route Host.
|
|
90
|
+
- La voce «Switchman Control Center» nella barra laterale della home apre con un clic questa stessa pagina di configurazione come pannello centrale; la voce nelle impostazioni resta al suo posto.
|
|
91
|
+
- `cordis.patch.yml` conserva integralmente la lista di plugin dei preset di fabbrica e interviene solo sul persona suffix; gli strumenti Agent Teams in sé vengono dal bundle di fabbrica e vengono abilitati automaticamente all'attivazione della modalità squadra.
|
|
70
92
|
|
|
71
93
|
## Manutenzione
|
|
72
94
|
|
|
73
|
-
- Dopo un upgrade di DSH che cambia
|
|
74
|
-
- Le righe di protocollo
|
|
75
|
-
- `npm pack --dry-run` deve restare alla forma auditata di
|
|
95
|
+
- Dopo un upgrade di DSH che cambia la lista di plugin dei preset di serie, risincronizza `cordis.patch.yml` dai nuovi `presets/*.patch.yml` (mantieni il doctrine suffix), poi reinstalla.
|
|
96
|
+
- Le righe di protocollo (`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`) restano deliberatamente in inglese e stabili al byte — non localizzarle.
|
|
97
|
+
- `npm pack --dry-run` deve restare alla forma auditata di 50 file / ~205 kB (gli screenshot in `docs/` non viaggiano nel pacchetto).
|
|
76
98
|
|
|
77
99
|
## License
|
|
78
100
|
|
package/README.ja.md
CHANGED
|
@@ -2,77 +2,99 @@
|
|
|
2
2
|
|
|
3
3
|
[English](./README.md) | [简体中文](./README.zh.md) | [繁體中文](./README.zh-TW.md) | **日本語** | [한국어](./README.ko.md) | [Español](./README.es.md) | [Français](./README.fr.md) | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
|
|
4
4
|
|
|
5
|
-
> **switchman
|
|
5
|
+
> **switchman ファミリー**。同じ作者、同じディスパッチ思想:[opencode-switchman](https://github.com/mrzturn/opencode-switchman)(OpenCode 原版)· [zcode-switchman](https://github.com/mrzturn/zcode-switchman)(ZCode 移植版)· **dsh-switchman**(本リポジトリ、DeepSeek Harness 版)。
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|
|
|
9
|
-
>
|
|
9
|
+
> コンテキストに水量計を付けろ。タスクは自分でレーンを見つける。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## なぜ必要か
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
DSHで長く作業していると、悩みが2つ出てくる。1つはセッションの肥大化。履歴がコンテキストを数十万トークンまで膨らませ、モデルは忘れ始め、遅くなり、高くつき、手動の /compact は細部を失う。もう1つは主力モデルが何でも自分でやること。ファイルを追い、テストを回し、データを突き合わせる——その大半は実は安いモデルに任せるべき仕事だ。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
dsh-switchman は [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)のプラグインだ。入れると主モデルは「自分で作業する」役から運転指令へ変わる:水位を測り、レーンを選び、タスクを投げ、受け入れを確認する。新モデルではない。DSHに取り付けるディスパッチ規程と設定ページであり、7つのことを行う。
|
|
16
16
|
|
|
17
|
-
**
|
|
17
|
+
**1. コンテキスト水位:長いセッションを破裂させない。** 毎ターンリアルタイムでセッショントークンを数え、3本の水位線が段階的に締め上げる:50k(soft、調整可)は「そろそろ委譲を」、90k(hard)は1回の読み取り予算を引き締めて収束へ導き、130k(force)で自動引き継ぎ——セッションをフォークして記録に残し、コンテキストを圧縮し、後継を起こして継続する。タスクは切れない。引き継ぎの瞬間に走っているバックグラウンドのサブエージェントも失われない:id・タスク・レポートパスを引き継ぎドキュメントに書き込み、再開したセッションはどこでレポートを受け取るか分かっていて、同じ仕事を二度投げない。各サブエージェントは独立のハード上限を持ち、到達したら HANDOFF サマリを書いて退場する。自動介入が手に合わないときは、いつでも一時的に手動で引き取れる:`/ctx-pause` は水位の動作をすべて止める(計測は走り続け、バナーは paused に切り替わる、ただ手を出さなくなるだけ)、`/ctx-resume` でいつでも復帰。DSH を再起動しても介入は自動で戻る。一時的に手を離すだけで、恒久的なオフではない。`/ctx-handover` は水位が満ちるのを待たず、同じ引き継ぎを自分から起こす:フォークしてバックアップを残し、コンテキストを圧縮し、後継を起こす(セッションはまずアイドル境界まで導かれるため、結果には数分かかることがある)。
|
|
18
18
|
|
|
19
|
-
**
|
|
19
|
+
**2. 6つのディスパッチプール:仕事に合ったモデルを。** economy(小口の雑務のバッチ)、mechanical(テンプレート化された書き換え)、main(日常のコーディング)、hard(難問推論と大規模リファクタリング)、vision(画像)、review(独立検証)。設定ページで候補にチェックを付け、優先順を決め、S/A/B/C のグレードを付け、さらにルートごとに思考強度をピン留めできる——強度のドロップダウンはそのモデルが実際に対応するレベルから立ち上がり、汎用の3段ではない。主モデルの毎ターンのプロンプトには必ず `[SWITCHMAN:POOLS]` 推薦表が載り、表に従って投げる。実行モードは3態:オフ / アドバイス / 強制(強制=プール外のモデルは即拒否)。
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**3. Agent Teams モード:単独作業からチーム運用へ。** 既定はオフで、インストール直後は軽量なサブエージェント運用。設定ページに独立したトグルが2つ:
|
|
22
|
+
|
|
23
|
+
- **エージェントチーム**——オンにするとチーム規程(デフォルト委譲+段階的検証+共有タスクボードの規律)を注入し、DSH の Agent Teams を自動で有効にする:主モデルは常駐のチームメイトを引く(`spawn_teammate`)、共有タスクボードに仕事を置く(`team_task_*`)、チームメイトとメッセージをやり取りする。チームを組むべき場面は規律で決まっている:並列化できる独立サブタスク、量が多く自己完結した作業、主コンテキストの水位が既に高い、役割の分離が必要——使い捨ての単発調査は引き続きサブエージェントへ。トグルを戻せばチーム条項は跡形なく消え、実行中のセッションからチームツールを引き上げることもない。
|
|
24
|
+
- **サブエージェントモデルのホワイトリスト同期**——DSH には「エージェントにサブエージェントのモデル選択を許可する」認可リストがある:プールで選んだのに認可されていないルートは、名指しでの発令が拒否される(チームモードでは ⚠ 表示)。このトグルを入れると、6プールの和集合がまるごとそのリストへ書き込まれる——switchman が唯一の情報源になり、二重管理は不要。リストは「新規セッション」単位のスナップショットで効き、同期はそれ以降に開いたセッションにだけ効く。
|
|
25
|
+
|
|
26
|
+
セッションヘッダーには即座に分かるフィードバックがある:⚡「自律チーム」バッジ、◇ 現在セッションの実際のモデル。自動引き継ぎの実行中は「引き継ぎ実行中 ・ バックアップセッション / コンテキスト圧縮 / 後継の起動」のライブ表示が出る。
|
|
27
|
+
|
|
28
|
+
**4. 言語設定:一度聞けば、ずっと守る。** 返信・コードコメント・ドキュメントの3言語にそれぞれドロップダウンが1つ。スコープはグローバルまたはプロジェクト単位(`.switchman/lang.json`)。未設定のままでもよい——初回使用時に DSH インターフェースの言語で一度だけ尋ね、覚えれば以後すべてのセッションが守る。
|
|
29
|
+
|
|
30
|
+
**5. インターフェース言語:プラグイン自身もあなたの言葉で。** 設定ページ最上部の「インターフェース」領域にある「インターフェース言語」ドロップダウン(設定キー `uiLocale`):自動(既定、DeepSeek Harness アプリの言語に追従)または内蔵のインターフェース言語から任意に選択——選択肢は常にその言語の原語名のまま、翻訳しない。切り替わるのはプラグイン自身のインターフェース(バッジ・ホームパネル・設定ページ)だけで、DSH アプリの言語は動かさない:選択はその場でプレビュー、再起動不要、保存後に記憶し次回起動時に復元、失敗時はすべてアプリの言語へフォールバックする。辞書はすべてプラグインバンドルに内蔵、ダウンロード不要。
|
|
31
|
+
|
|
32
|
+
**6. 段階的検証:直したら必ず検査する。** 20行超の変更は tester へ。300行超、またはコア / セキュリティ / データ整合性に触れる変更は、さらに reviewer の独立再審へ。再審モデルは「その diff を書いたエージェント」のモデルを錨に選び、極力避ける。プール内で避けきれない場合は、結論の中で DOWNGRADED と宣言される。「チームは使うな」の一言で即座に単独へ戻る。
|
|
33
|
+
|
|
34
|
+
**7. `/vision`:テキスト専用モデルでも画像を扱える。** 主力モデルが画像を読めないとき、DSH は画像付きメッセージを入口で拒否する。画像を貼って `/vision この画像のどこが悪い` と打てば、画像は vision プールのモデルへ渡され、結論は現在のセッションに戻る。入力欄の上には「現在のモデルは画像を読めません」の事前表示が出る。画像を直接送って拒否されたら、自動で `/vision` に書き換えて再送するので手直しは不要。vision プールが未設定ならコマンドは拒否し、設定への案内を出す。
|
|
35
|
+
|
|
36
|
+
モデルが1つでも入れる価値はある——水位制御と段階的検証はモデルの数と無関係で、単一モデルの長いセッションも同じく恩恵を受ける。
|
|
22
37
|
|
|
23
38
|
## 同梱スキル
|
|
24
39
|
|
|
25
|
-
- **db-query
|
|
26
|
-
- **git-commit-message
|
|
27
|
-
- **requirement-docs
|
|
40
|
+
- **db-query**——MySQL / Redis の読み取り専用検証:SQL でデータを突き合わせ、キャッシュキー / TTL を調べ、クロスDBの整合性を検査する。書き込みは一切拒否。初回使用前に初期化が必要(下記)。
|
|
41
|
+
- **git-commit-message**——規約に沿ったコミットメッセージを生成する。テキストだけ出し、git を代行することはない。
|
|
42
|
+
- **requirement-docs**——要件分析 / PRD / 設計ドキュメントの統一規程。成果物は `docs/requirements-and-design/` にアーカイブする。
|
|
28
43
|
|
|
29
44
|
## クイックスタート
|
|
30
45
|
|
|
31
|
-
1.
|
|
46
|
+
1. **インストール**——任意のセッションで agent に実行させるか、Web のプラグイン管理ページで:
|
|
32
47
|
|
|
33
48
|
```
|
|
34
49
|
plugin_manager: install_bundle target=dsh-switchman
|
|
35
50
|
```
|
|
36
51
|
|
|
37
|
-
|
|
52
|
+
またはローカルのチェックアウトから(link 方式。更新後は `remove_bundle` + `install_bundle` で入れ直す):
|
|
38
53
|
|
|
39
54
|
```
|
|
40
55
|
plugin_manager: install_bundle target=/path/to/dsh-switchman
|
|
41
56
|
```
|
|
42
57
|
|
|
43
|
-
|
|
58
|
+
または端末で `dsh` コマンドを——実行方法に合う profile を選ぶ:
|
|
44
59
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
60
|
+
```bash
|
|
61
|
+
dsh plugin --profile web add dsh-switchman # Web GUI
|
|
62
|
+
dsh plugin --profile desktop add dsh-switchman # デスクトップアプリ
|
|
63
|
+
```
|
|
48
64
|
|
|
49
|
-
|
|
65
|
+
2. **DSH を再起動**——アプリを完全に終了して開き直す(ページの再読み込みでは不可)。そうしてはじめてクライアントのモジュール表がこの bundle を認識する。
|
|
50
66
|
|
|
51
|
-
|
|
67
|
+
3. **設定**——設定 → dsh-switchman、またはホームサイドバーの「Switchman ディスパッチセンター」。設定は1ページだけ。見た目はこうで、上から下へ一度なぞれば終わり:
|
|
52
68
|
|
|
53
|
-
|
|
69
|
+

|
|
54
70
|
|
|
55
|
-
|
|
71
|
+
- **インターフェース**——プラグイン自身の UI 言語。図のドロップダウンは「日本語」——切り替えのライブプレビュー。出荷時の既定は「自動」(DSH アプリの言語に追従)。言語を選べばその場でページ全体が切り替わり、保存後に記憶、いつでも「自動」に戻せる。
|
|
72
|
+
- **言語**——エージェントの成果物の言語。図のスコープは「グローバル(この profile)」(プロジェクト単位も可、それぞれ `.switchman/lang.json` を読む)。返信 / コードコメント / ドキュメントの3つのドロップダウンは図ではすべて日本語で、各項目は「原語名(タグ)」表示——例えば「日本語 (ja)」。下には「現在:…」の状態行が付く。全部未設定でもよい——初回使用時に一度尋ね、覚えたらそれを使う。
|
|
73
|
+
- **ディスパッチプール**——六枚のカードが三列二段(上段 economy・mechanical・main、下段 hard・vision・review)。カードはプロバイダーごとに候補モデルにチェックを付ける。「手動順」にチェックすると番号付きの優先リストになり、↑ ↓ × で並べ替える。各ルートには思考強度をピン留めできる(既定「レーンに追従」)。最上部の集計行はリアルタイムに更新され、図では「4/6 プール構成済み ・ 順位 2 件 ・ モード アドバイス」。
|
|
74
|
+
- **能力順位 + 実行モード**——6プールの選択モデルの和集合を能力順に並べ、最強を先頭に(図では glm-5.3 を S、glm-5.3-flash を A に錨付き)。並べ替え・削減は自由。実行モードはアドバイス / 強制(強制=プール外のモデルを即拒否)。
|
|
75
|
+
- **エージェントチーム**——チームモードとホワイトリスト同期の2つのトグル。既定は両方オフ。図ではオンで、トグルの下に同期状態行がある。
|
|
76
|
+
- **コンテキスト水位**——3段の閾値(図で 50000 / 90000 / 130000)、1回の読み取り予算(1500)、hard 段の挙動(絞って通す / ブロック)、自動引き継ぎトグル、サブエージェントの独立上限——すべてこの領域にある。最下部のコマンド行:`/ctx-pause` 介入を一時停止 ・ `/ctx-resume` 再開 ・ `/ctx-handover` すぐバックアップして引き継ぎ(セッションをアイドル境界まで導いてから圧縮するため、結果には数分かかることがある)。
|
|
56
77
|
|
|
57
|
-
|
|
78
|
+
4. **確認**——セッションヘッダーに ⚡「自律チーム」バッジ(隣の ◇ に現在セッションのモデル)。あるいはモデルに「あなたのシステムプロンプトの最終段落の見出しは何か」と尋ねる——答えに dsh-switchman の規程が出てくれば正しい。
|
|
58
79
|
|
|
59
|
-
**db-query
|
|
80
|
+
**db-query の初回初期化**(スクリプトの依存はスキルディレクトリ内に置かれ、プロジェクトを汚さない):
|
|
60
81
|
|
|
61
82
|
```bash
|
|
62
|
-
bash
|
|
83
|
+
bash <インストールディレクトリ>/skills/db-query/scripts/setup.sh
|
|
63
84
|
```
|
|
64
85
|
|
|
65
86
|
## 仕組み
|
|
66
87
|
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
88
|
+
- ホスト側(`index.js` + `host/`)が動的なシステムプロンプト段(言語 / レーン / 水位 / チーム)、読み取り予算と enforce の二重ゲート、4つのスラッシュコマンド(ctx 3点セット + `/vision`)を注入する。保存した設定は次のターンのプロンプト組み立てで即効き、再起動は不要。
|
|
89
|
+
- クライアント側(`client.js`)は設定ページ、セッションヘッダーの ⚡ バッジと ◇ モデル表示、引き継ぎ中のライブ表示を描画する。設定スナップショットは Host のルートファミリー経由で読み書きする。
|
|
90
|
+
- ホームサイドバーの「Switchman ディスパッチセンター」入口は、ワンクリックで同じ設定ページを中央パネルで開く。元の設定入口は残る。
|
|
91
|
+
- `cordis.patch.yml` は出荷プリセットのプラグイン一覧を完全に保ち、persona suffix だけを拡張する。Agent Teams ツール本体は出荷バンドル由来で、チームモードをONにすると自動で有効になる。
|
|
70
92
|
|
|
71
|
-
##
|
|
93
|
+
## メンテナンスの注意
|
|
72
94
|
|
|
73
|
-
- DSH
|
|
74
|
-
- プロトコル行(`[SWITCHMAN:LANG|POOLS|WATERMARK]
|
|
75
|
-
- `npm pack --dry-run` は監査済みの
|
|
95
|
+
- DSH のアップグレードで出荷プリセットのプラグイン一覧が変わったら、新しい `presets/*.patch.yml` から `cordis.patch.yml` を再同期(doctrine suffix は保持)し、入れ直す。
|
|
96
|
+
- プロトコル行(`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`)は意図的に英語のままバイト安定——ローカライズしない。
|
|
97
|
+
- `npm pack --dry-run` は監査済みの 50 ファイル / ~205 kB の形状を保つこと(`docs/` のスクリーンショットはパッケージに入らない)。
|
|
76
98
|
|
|
77
99
|
## License
|
|
78
100
|
|
package/README.ko.md
CHANGED
|
@@ -2,77 +2,99 @@
|
|
|
2
2
|
|
|
3
3
|
[English](./README.md) | [简体中文](./README.zh.md) | [繁體中文](./README.zh-TW.md) | [日本語](./README.ja.md) | **한국어** | [Español](./README.es.md) | [Français](./README.fr.md) | [Deutsch](./README.de.md) | [Italiano](./README.it.md) | [Português](./README.pt.md) | [Русский](./README.ru.md)
|
|
4
4
|
|
|
5
|
-
> **switchman 패밀리**, 같은 저자, 같은
|
|
5
|
+
> **switchman 패밀리**, 같은 저자, 같은 디스패치 사상: [opencode-switchman](https://github.com/mrzturn/opencode-switchman)(OpenCode 원판) · [zcode-switchman](https://github.com/mrzturn/zcode-switchman)(ZCode 이식판) · **dsh-switchman**(이 저장소, DeepSeek Harness 버전).
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|
|
|
9
|
-
> 컨텍스트에
|
|
9
|
+
> 컨텍스트에 수도계를 달면, 태스크가 스스로 차선을 찾는다.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## 왜 필요한가
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
DSH로 오래 일하면 귀찮은 일이 두 가지 생긴다. 첫째, 세션이 길어질수록 무거워진다. 히스토리가 컨텍스트를 수십만 토큰까지 밀어 올리면 모델은 까먹기 시작하고, 느려지고, 비싸진다. 수동 /compact 은 디테일을 잃는다. 둘째, 주력 모델이 뭐든 직접 한다. 파일을 뒤지고, 테스트를 돌리고, 데이터를 맞춰 보는 일 — 그 대부분은 사실 싼 모델에게 맡겨야 할 일이다.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
dsh-switchman은 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH) 플러그인이다. 설치하면 주 모델은 '직접 일하기'에서 디스패처로 바뀐다: 수위를 재고, 차선을 고르고, 태스크를 던지고, 인수를 검수한다. 새 모델이 아니다. DSH에 얹는 디스패치 규정과 설정 화면이며, 일곱 가지 일을 한다.
|
|
16
16
|
|
|
17
|
-
**
|
|
17
|
+
**1. 컨텍스트 수위: 긴 세션도 터지지 않게.** 매 턴 세션 토큰을 실시간으로 세고 세 단계 수위선이 순서대로 조인다: 50k(soft, 조정 가능)은 '이제 위임할 때', 90k(hard)은 1회 읽기 예산을 조이고 마무리로 유도하며, 130k(force)은 자동 인계다 — 세션을 fork해 기록으로 남기고, 컨텍스트를 압축하고, 후속을 깨워 이어 달린다. 태스크는 끊기지 않는다. 인계 순간에 돌고 있던 백그라운드 서브에이전트도 잃지 않는다: id, 태스크, 보고서 경로를 인계 문서에 적어 두어 재개된 세션은 어디서 보고를 받을지 알고 중복 발령하지 않는다. 서브에이전트마다 독립 하드 상한이 있어 도달하면 HANDOFF 요약을 쓰고 퇴장한다. 자동 개입이 손에 맞지 않으면 언제든 임시로 직접 맡을 수 있다: `/ctx-pause`는 수위 동작을 전부 멈춘다(측정은 계속 돌고 배너는 paused로 바뀐다, 그냥 손을 놓을 뿐), `/ctx-resume`으로 언제든 복구한다 — DSH를 재시작해도 개입은 자동으로 돌아온다. 잠시 손을 놓는 것이지 영구 끄기가 아니다. `/ctx-handover`는 수위가 차오르기를 기다리지 않고 같은 인계를 직접 시작한다: fork로 백업을 남기고, 컨텍스트를 압축하고, 후속을 깨워 이어 달린다(세션은 먼저 유휴 경계로 유도되므로 결과까지 몇 분 걸릴 수 있다).
|
|
18
18
|
|
|
19
|
-
**
|
|
19
|
+
**2. 6개 디스패치 풀: 일에 맞는 모델.** economy(잔일 배치), mechanical(템플릿 개작), main(일상 코딩), hard(고난도 추론과 대규모 리팩터링), vision(이미지), review(독립 검증). 설정 페이지에서 후보에 체크하고, 우선순위를 정하고, S/A/B/C 등급을 매기고, 루트별로 추론 강도를 고정할 수도 있다 — 강도 드롭다운은 그 모델이 실제 지원하는 수준에서 오고, 범용 3단이 아니다. 주 모델의 매 턴 프롬프트에는 항상 `[SWITCHMAN:POOLS]` 추천표가 실리고, 표대로 발령한다. 실행 모드는 세 가지: 끔 / 조언 / 강제(강제 = 풀 밖 모델은 즉시 거절).
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
**3. Agent Teams 모드: 혼자 일하던 데서 팀 운영으로.** 기본은 꺼져 있고, 설치 직후에는 가벼운 subagent 발령이다. 설정 페이지에 독립 토글 두 개:
|
|
22
|
+
|
|
23
|
+
- **에이전트 팀** — 켜면 팀 규정(기본 위임 + 단계별 검증 + 공유 태스크보드 규율)을 주입하고 DSH의 Agent Teams를 자동으로 켠다: 주 모델은 상주 팀원(`spawn_teammate`)을 뽑고, 공유 태스크보드(`team_task_*`)에 일을 올리고, 팀원과 메시지를 주고받는다. 팀을 꾸릴 때는 명확한 규율이 있다: 병렬로 돌릴 수 있는 독립 서브태스크, 양이 많고 자립적인 작업, 주 컨텍스트 수위가 이미 높음, 역할 분리 필요 — 한 번 쓰고 끝내는 단발 조사는 여전히 subagent로. 토글을 끄면 팀 조항은 흔적 없이 사라지고, 돌고 있는 세션에서 팀 도구를 걷어 가지도 않는다.
|
|
24
|
+
- **서브에이전트 모델 화이트리스트 동기화** — DSH에는 '에이전트가 서브에이전트 모델을 고르도록 허용' 인가 화이트리스트가 있다: 풀에서 골랐지만 인가되지 않은 루트는 지명 발령이 거절된다(팀 모드에서는 ⚠ 표시). 이 토글을 켜면 6개 풀의 합집합이 통째로 그 화이트리스트에 기록된다 — switchman이 유일한 원천이 되어 이중 설정이 없어진다. 화이트리스트는 '새 세션' 스냅샷으로 적용되고, 동기화는 그 이후에 새로 연 세션에만 적용된다.
|
|
25
|
+
|
|
26
|
+
세션 헤더에는 바로 보이는 피드백이 있다: ⚡ '자율 팀' 배지, ◇ 현재 세션의 실제 모델. 자동 인계가 진행 중일 때는 '인계 진행 중 · 백업 세션 / 컨텍스트 압축 / 후속 기상' 실시간 표시가 뜬다.
|
|
27
|
+
|
|
28
|
+
**4. 언어 기본 설정: 한 번 물으면 평생 기억.** 답장, 코드 주석, 문서 세 가지 언어에 각각 드롭다운 하나. 범위는 전역 또는 프로젝트별(`.switchman/lang.json`). 안 두어도 된다 — 처음 쓸 때 DSH 인터페이스 언어로 한 번 물어보고, 기억하면 이후 모든 세션이 따른다.
|
|
29
|
+
|
|
30
|
+
**5. 인터페이스 언어: 플러그인도 당신 말을 쓴다.** 설정 페이지 맨 위 '인터페이스' 영역의 '인터페이스 언어' 드롭다운(설정 키 `uiLocale`): 자동(기본, DeepSeek Harness 앱 언어를 따름) 또는 내장 인터페이스 언어 중 아무거나 직접 선택 — 옵션은 항상 그 언어의 원명 그대로, 번역하지 않는다. 바뀌는 건 플러그인 자신의 인터페이스(배지, 홈 패널, 설정 페이지)뿐이고 DSH 앱 언어는 건드리지 않는다: 선택 즉시 미리보기, 재시작 불필요, 저장 후 기억하고 다음 실행 때 복원, 실패 시 모두 앱 언어로 되돌아간다. 사전은 전부 플러그인 번들에 내장, 다운로드 불필요.
|
|
31
|
+
|
|
32
|
+
**6. 단계별 검증: 고치면 반드시 검사.** 20줄 넘는 변경은 tester에게. 300줄 초과, 또는 코어 / 보안 / 데이터 일관성 로직을 건드린 변경은 reviewer 독립 재검까지. 재검 모델은 '그 diff를 쓴 에이전트'의 모델을 앵커로 골라 최대한 피하고, 풀 안에서 피할 수 없으면 결론에 DOWNGRADED를 명시한다. "팀 쓰지 마" 한마디면 즉시 혼자 일하는 모드로 돌아간다.
|
|
33
|
+
|
|
34
|
+
**7. `/vision`: 텍스트 전용 모델도 이미지를 다룬다.** 주력 모델이 이미지를 못 읽으면 DSH는 이미지 포함 메시지를 입구에서 거절한다. 이미지를 붙이고 `/vision 이 이미지 어디가 잘못됐어`라고 입력하면 이미지는 vision 풀 모델에게 넘어가고 결론이 현재 세션으로 돌아온다. 입력창 위에는 '현재 모델은 이미지를 읽을 수 없음' 안내가 미리 뜬다. 이미지를 직접 보내다 거절되면 자동으로 `/vision`으로 고쳐 다시 보낸다 — 손으로 다시 할 필요 없다. vision 풀이 비어 있으면 명령은 거절하고 설정 안내를 준다.
|
|
35
|
+
|
|
36
|
+
모델이 하나뿐이어도 설치할 가치가 있다 — 수위 제어와 단계별 검증은 모델 수와 무관하고, 단일 모델의 긴 세션도 같은 혜택을 본다.
|
|
22
37
|
|
|
23
38
|
## 번들 스킬
|
|
24
39
|
|
|
25
|
-
- **db-query** — MySQL / Redis 읽기 전용 검증: SQL
|
|
26
|
-
- **git-commit-message** —
|
|
27
|
-
- **requirement-docs** — 요구사항 분석 / PRD / 설계 문서의 통일 규범. 산출물은 `docs/requirements-and-design
|
|
40
|
+
- **db-query** — MySQL / Redis 읽기 전용 검증: SQL로 데이터를 대조하고, 캐시 키 / TTL을 조회하고, DB 간 일관성을 검사한다. 쓰기는 일절 거절. 첫 사용 전 초기화 필요(아래).
|
|
41
|
+
- **git-commit-message** — 규칙에 맞는 커밋 메시지를 만든다. 텍스트만 내고 git을 대신 실행하지 않는다.
|
|
42
|
+
- **requirement-docs** — 요구사항 분석 / PRD / 설계 문서의 통일 규범. 산출물은 `docs/requirements-and-design/`에 보관된다.
|
|
28
43
|
|
|
29
44
|
## 빠른 시작
|
|
30
45
|
|
|
31
|
-
1. **설치** — 아무
|
|
46
|
+
1. **설치** — 아무 세션이나 agent에게 실행시키거나, Web 플러그인 관리 페이지에서:
|
|
32
47
|
|
|
33
48
|
```
|
|
34
49
|
plugin_manager: install_bundle target=dsh-switchman
|
|
35
50
|
```
|
|
36
51
|
|
|
37
|
-
또는 로컬 체크아웃에서(link 방식. 업데이트
|
|
52
|
+
또는 로컬 체크아웃에서 설치(link 방식. 업데이트 후에는 `remove_bundle` + `install_bundle`으로 재설치):
|
|
38
53
|
|
|
39
54
|
```
|
|
40
55
|
plugin_manager: install_bundle target=/path/to/dsh-switchman
|
|
41
56
|
```
|
|
42
57
|
|
|
43
|
-
|
|
58
|
+
또는 터미널에서 `dsh` 명령으로 — 실행 방식에 맞는 profile을 고른다:
|
|
44
59
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
60
|
+
```bash
|
|
61
|
+
dsh plugin --profile web add dsh-switchman # Web GUI
|
|
62
|
+
dsh plugin --profile desktop add dsh-switchman # 데스크톱 앱
|
|
63
|
+
```
|
|
48
64
|
|
|
49
|
-
|
|
65
|
+
2. **DSH 재시작** — 앱을 완전히 끄고 다시 연다(페이지 새로고침은 안 된다). 그래야 클라이언트 모듈 테이블이 이 번들을 알아본다.
|
|
50
66
|
|
|
51
|
-
|
|
67
|
+
3. **설정** — 설정 → dsh-switchman, 또는 홈 사이드바의 'Switchman 디스패치 센터'. 설정은 한 페이지, 생김새는 이렇다. 위에서 아래로 한 번 훑으면 끝:
|
|
52
68
|
|
|
53
|
-
|
|
69
|
+

|
|
54
70
|
|
|
55
|
-
|
|
71
|
+
- **인터페이스** — 플러그인 자체 UI 언어. 그림의 드롭다운은 '한국어' — 전환 미리보기. 출고 기본은 '자동'(DSH 앱 언어를 따름). 언어를 고르면 그 자리에서 페이지 전체가 바뀌고 저장 후 기억된다. 언제든 '자동'으로 되돌릴 수 있다.
|
|
72
|
+
- **언어** — 에이전트 산출물의 언어. 그림의 범위는 '전역(이 profile)'(프로젝트별도 가능, 각자 `.switchman/lang.json`을 읽는다). 답장 / 코드 주석 / 문서 세 드롭다운은 그림에서 모두 한국어, 각 항목은 '원명 (태그)' 표기 — 예: '한국어 (ko)'. 아래에는 '현재: …' 상태 줄이 따른다. 셋 다 안 두어도 된다 — 처음 쓸 때 한 번 물어보고 기억하면 그걸 쓴다.
|
|
73
|
+
- **디스패치 풀** — 두 줄에 세 장씩 여섯 카드(위 economy/mechanical/main, 아래 hard/vision/review). 카드는 공급자별로 묶은 후보 모델에 체크. '수동 순서'에 체크하면 번호 매긴 우선 목록이 되고 ↑ ↓ ×로 순서를 정한다. 루트별로 추론 강도를 고정할 수 있다(기본 '레인 따름'). 맨 위 요약 줄은 실시간 갱신되고 그림에서는 '4/6 풀 구성됨 · 순위 2건 · 모드 조언'.
|
|
74
|
+
- **능력 순위 + 실행 모드** — 6개 풀에서 선택한 모델의 합집합을 능력순으로, 최강이 맨 앞(그림에서 glm-5.3은 S, glm-5.3-flash는 A에 고정). 순서 조정과 삭제가 가능하다. 실행 모드는 조언 / 강제(강제 = 풀 밖 모델 즉시 거절).
|
|
75
|
+
- **에이전트 팀** — 팀 모드와 화이트리스트 동기화 두 토글. 기본은 둘 다 꺼짐. 그림에서는 켜져 있고 토글 아래에 동기화 상태 줄이 있다.
|
|
76
|
+
- **컨텍스트 수위** — 3단 임계값(그림에서 50000 / 90000 / 130000), 1회 읽기 예산(1500), hard 단계 동작(조여 통과 / 차단), 자동 인계 토글, 서브에이전트 독립 상한이 모두 이 영역에 있다. 맨 아래 명령 줄: `/ctx-pause` 개입 일시정지 · `/ctx-resume` 재개 · `/ctx-handover` 즉시 백업하고 인계(세션을 유휴 경계로 이끈 뒤 압축하므로 결과까지 몇 분 걸릴 수 있다).
|
|
56
77
|
|
|
57
|
-
|
|
78
|
+
4. **확인** — 세션 헤더에 ⚡ '자율 팀' 배지(옆 ◇에 현재 세션 모델)가 뜬다. 또는 모델에게 '너의 시스템 프롬프트 마지막 단락 제목이 뭐야?'라고 물어보라 — 답에 dsh-switchman 규정이 언급되어야 한다.
|
|
58
79
|
|
|
59
|
-
**db-query
|
|
80
|
+
**db-query 첫 사용 초기화**(스크립트 의존성은 스킬 디렉터리 안에 설치되어 프로젝트를 오염시키지 않는다):
|
|
60
81
|
|
|
61
82
|
```bash
|
|
62
|
-
bash
|
|
83
|
+
bash <설치-디렉터리>/skills/db-query/scripts/setup.sh
|
|
63
84
|
```
|
|
64
85
|
|
|
65
|
-
##
|
|
86
|
+
## 작동 원리
|
|
66
87
|
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
88
|
+
- 호스트 쪽(`index.js` + `host/`)이 동적 시스템 프롬프트 단(언어 / 레인 / 수위 / 팀), 읽기 예산과 enforce 이중 게이트, 슬래시 명령 4개(ctx 3종 + `/vision`)를 주입한다. 설정을 저장하면 다음 턴 프롬프트 조립 때 바로 반영되고 재시작은 필요 없다.
|
|
89
|
+
- 클라이언트 쪽(`client.js`)은 설정 페이지, 세션 헤더의 ⚡ 배지와 ◇ 모델 표시, 인계 진행 중 동적 표시를 그린다. 설정 스냅샷은 Host 라우트 패밀리를 통해 읽고 쓴다.
|
|
90
|
+
- 홈 사이드바의 'Switchman 디스패치 센터' 입구는 클릭 한 번으로 같은 설정 페이지를 중앙 패널로 연다. 기존 설정 입구는 그대로 둔다.
|
|
91
|
+
- `cordis.patch.yml`은 출고 프리셋 플러그인 목록을 온전히 유지하고 persona suffix만 확장한다. Agent Teams 도구 본체는 출고 번들에서 오며 팀 모드를 켜면 자동으로 활성화된다.
|
|
70
92
|
|
|
71
|
-
##
|
|
93
|
+
## 유지보수 주의사항
|
|
72
94
|
|
|
73
|
-
- DSH 업그레이드 후
|
|
74
|
-
- 프로토콜
|
|
75
|
-
- `npm pack --dry-run
|
|
95
|
+
- DSH 업그레이드 후 출고 프리셋 플러그인 목록이 바뀌면 새 `presets/*.patch.yml`에서 `cordis.patch.yml`을 다시 동기화하고(doctrine suffix 유지) 재설치한다.
|
|
96
|
+
- 프로토콜 행(`[SWITCHMAN:LANG|POOLS|WATERMARK|TEAMS]`)은 의도적으로 영어 그대로 바이트 안정으로 둔다 — 현지화하지 않는다.
|
|
97
|
+
- `npm pack --dry-run`은 감사된 50 파일 / ~205 kB 형태를 유지해야 한다(`docs/` 스크린샷은 패키지에 들어가지 않는다).
|
|
76
98
|
|
|
77
99
|
## License
|
|
78
100
|
|