@mcptoolshop/style-dataset-lab 3.1.0 → 3.3.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/CHANGELOG.md +61 -0
- package/README.es.md +96 -63
- package/README.fr.md +97 -64
- package/README.hi.md +108 -77
- package/README.it.md +97 -64
- package/README.ja.md +105 -72
- package/README.md +33 -0
- package/README.pt-BR.md +94 -61
- package/README.zh.md +98 -65
- package/bin/sdlab.js +71 -0
- package/lib/adapters/ai-toolkit.js +209 -0
- package/lib/adapters/comfyui-runner.js +36 -2
- package/lib/adapters/comfyui-workflows.js +133 -2
- package/lib/adapters/diffusers-lora.js +46 -66
- package/lib/adapters/generic-image-caption.js +22 -50
- package/lib/canon-build/build.js +450 -0
- package/lib/canon-build/emitters/base.js +122 -0
- package/lib/canon-build/emitters/character.js +167 -0
- package/lib/canon-build/emitters/deity.js +165 -0
- package/lib/canon-build/emitters/faction.js +161 -0
- package/lib/canon-build/emitters/index.js +38 -0
- package/lib/canon-build/emitters/location.js +153 -0
- package/lib/canon-build/emitters/monster.js +131 -0
- package/lib/canon-build/emitters/relic.js +142 -0
- package/lib/canon-build/emitters/ship.js +154 -0
- package/lib/canon-build/emitters/species.js +165 -0
- package/lib/canon-build/frontmatter.js +76 -0
- package/lib/canon-build/lane-resolve.js +64 -0
- package/lib/canon-build/load-config.js +117 -0
- package/lib/canon-build/load-entry.js +62 -0
- package/lib/canon-build/load-schema.js +46 -0
- package/lib/captions.js +197 -0
- package/lib/config.js +19 -0
- package/lib/critique-engine.js +46 -1
- package/lib/critique-render.js +45 -0
- package/lib/freeze-events.js +109 -0
- package/lib/freeze-gate.js +208 -0
- package/lib/freeze-stamp.js +161 -0
- package/lib/rows.js +228 -0
- package/lib/run-manifest.js +308 -0
- package/lib/snapshot.js +7 -1
- package/lib/training-adapters.js +5 -0
- package/lib/training-packages.js +24 -18
- package/lib/training-profiles.js +33 -0
- package/lib/verifier.js +67 -0
- package/package.json +12 -3
- package/scripts/_batch_cut.py +71 -0
- package/scripts/_seam_cutout.py +74 -0
- package/scripts/canon-build.js +88 -0
- package/scripts/canon-drift.js +193 -0
- package/scripts/canon-freeze-status.js +85 -0
- package/scripts/canon-freeze.js +211 -0
- package/scripts/canon-unfreeze.js +137 -0
- package/scripts/critique.js +32 -7
- package/scripts/curate.js +33 -0
- package/scripts/generate-controlnet.js +12 -0
- package/scripts/generate-identity.js +20 -4
- package/scripts/generate-ipadapter.js +11 -0
- package/scripts/generate.js +262 -102
- package/scripts/qwen_generate.py +327 -0
- package/scripts/run-generate.js +3 -0
package/README.it.md
CHANGED
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
Scrivi le tue regole visive. Genera immagini. Valuta ogni immagine in base a tali regole. Pubblica i risultati come dati di addestramento verificabili e versionati, quindi utilizza i modelli addestrati in flussi di lavoro di produzione reali e reintroduci gli output migliori nel tuo corpus.
|
|
17
17
|
|
|
18
|
-
Style Dataset Lab collega le
|
|
18
|
+
Style Dataset Lab collega le indicazioni che hai fornito sullo stile artistico al set di dati da cui effettivamente esegui l'addestramento, quindi completa il ciclo fino alla fase di produzione. Definisci una serie di regole: regole sulla silhouette, vincoli sulla palette, linguaggio dei materiali o qualsiasi altro elemento rilevante per il tuo progetto. Il flusso di lavoro genera candidati, li valuta in base alle regole e raggruppa gli elementi approvati in set di dati riproducibili, dove ogni record spiega perché è stato incluso.
|
|
19
19
|
|
|
20
|
-
Successivamente,
|
|
20
|
+
Successivamente, l'ambiente di lavoro di produzione prende il sopravvento: compila le specifiche per la generazione a partire dai dati del progetto, eseguile tramite ComfyUI, valuta gli output, genera in batch fogli di espressione e schede ambientali, seleziona i risultati migliori e reintroducili come nuovi candidati. Il ciclo si chiude: produci, seleziona, rivedi, rafforza.
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## Il flusso di lavoro
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
25
|
# Write your canon. Scaffold the project.
|
|
@@ -56,56 +56,87 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
|
|
|
56
56
|
sdlab reingest selected --selection selection_2026-04-16_001
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
Quest'ultimo comando è
|
|
59
|
+
Quest'ultimo comando è il punto cruciale. Gli output selezionati vengono reintrodotti nello stesso processo di revisione insieme a tutti gli altri elementi. Il corpus si espande e le regole rimangono valide.
|
|
60
|
+
|
|
61
|
+
## Definizione del canone
|
|
62
|
+
|
|
63
|
+
Prima che il flusso di lavoro del set di dati venga eseguito, lo spazio dei nomi `sdlab canon *` trasforma l'archivio delle entità del canone del tuo progetto nelle tre proiezioni utilizzate effettivamente per l'addestramento e la produzione, e blocca le voci che non devono subire modifiche.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Build three projections from the canon entity store:
|
|
67
|
+
# dataset.jsonl → training adapters
|
|
68
|
+
# prompts/*.j2 → ComfyUI workflow invocation
|
|
69
|
+
# context/*.md → Role OS narrative dispatch
|
|
70
|
+
sdlab canon build --project my-project
|
|
71
|
+
|
|
72
|
+
# Freeze an entry so regeneration can't silently change it
|
|
73
|
+
sdlab canon freeze kael_maren --project my-project --reason "prologue portrait locked"
|
|
74
|
+
|
|
75
|
+
# Report drift on frozen entries since the last clean build
|
|
76
|
+
sdlab canon drift --project my-project
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`canon build` è basato sull'indirizzamento dei contenuti: il suo output è identificato da un codice `canon_sha` ed è memorizzato nella cache, quindi una ricostruzione del canone invariata viene eseguita istantaneamente. `canon freeze` registra ogni "congelamento" rispetto a una versione specifica e lo aggiunge a una traccia di controllo in `freeze-events.jsonl`: le voci "congelate" rifiutano esplicitamente la rigenerazione, mentre le voci "soft-advisory" rifiutano per impostazione predefinita (è possibile ignorare l'impostazione con `--i-know`). `canon drift` ricalcola l'hash di ogni voce monitorata e segnala eventuali modifiche rispetto all'ultima versione pulita.
|
|
80
|
+
|
|
81
|
+
Flusso di lavoro completo nel manuale: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) e [Two-LoRA stacking](handbook/two-lora-stacking/).
|
|
60
82
|
|
|
61
83
|
## Cosa produce
|
|
62
84
|
|
|
63
|
-
|
|
85
|
+
Sette artefatti del set di dati e un ambiente di lavoro di produzione completo. Ogni artefatto è collegato ai suoi predecessori, in modo da poter risalire a qualsiasi record di addestramento fino alla regola che lo ha approvato.
|
|
64
86
|
|
|
65
|
-
| Artefatto
|
|
87
|
+
| Artefatto | Cos'è |
|
|
66
88
|
|----------|-----------|
|
|
67
|
-
| **Snapshot** | Selezione di record
|
|
68
|
-
| **Split** | Partizione
|
|
69
|
-
| **Export package** | Set di dati autonomo:
|
|
70
|
-
| **Eval pack** |
|
|
71
|
-
| **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`).
|
|
72
|
-
| **Eval scorecard** | Valutazione
|
|
73
|
-
| **Implementation pack** | Esempi di prompt, errori noti, test di continuità e indicazioni per
|
|
89
|
+
| **Snapshot** | Selezione di record congelati con impronta di configurazione. Ogni inclusione ha una motivazione esplicita. |
|
|
90
|
+
| **Split** | Partizione train/val/test in cui le famiglie di soggetti non superano i confini. |
|
|
91
|
+
| **Export package** | Set di dati autonomo: manifesto, metadati, immagini, suddivisioni, scheda del set di dati, checksum. |
|
|
92
|
+
| **Eval pack** | Attività di test consapevoli del canone: copertura delle corsie, divieto di modifiche, ancoraggio/oro, continuità dei soggetti. |
|
|
93
|
+
| **Training package** | Layout pronto per l'addestramento tramite adattatori (`diffusers-lora`, `generic-image-caption`). Stessi dati, formato diverso. |
|
|
94
|
+
| **Eval scorecard** | Valutazione per attività con esito positivo/negativo basata sulla valutazione degli output generati rispetto ai pacchetti di valutazione. |
|
|
95
|
+
| **Implementation pack** | Esempi di prompt, errori noti, test di continuità e indicazioni per la reintroduzione. |
|
|
74
96
|
|
|
75
|
-
L'ambiente di lavoro di produzione
|
|
97
|
+
L'ambiente di lavoro di produzione aggiunge:
|
|
76
98
|
|
|
77
|
-
| Superficie
|
|
99
|
+
| Superficie | Cosa fa |
|
|
78
100
|
|---------|-------------|
|
|
79
|
-
| **Compiled brief** |
|
|
80
|
-
| **Run** | Artefatto di esecuzione
|
|
81
|
-
| **Critique** | Valutazione strutturata
|
|
82
|
-
| **Batch** | Produzione coordinata
|
|
83
|
-
| **Selection** | Artefatto
|
|
84
|
-
| **Re-ingest** | Gli output selezionati vengono
|
|
101
|
+
| **Compiled brief** | Istruzioni di generazione deterministiche dal profilo del flusso di lavoro + dati del progetto. |
|
|
102
|
+
| **Run** | Artefatto di esecuzione congelato: breve descrizione + seed + output ComfyUI + manifesto. |
|
|
103
|
+
| **Critique** | Valutazione strutturata multidimensionale degli output rispetto al canone. |
|
|
104
|
+
| **Batch** | Produzione coordinata multi-slot (fogli di espressione, schede ambientali, pacchetti di silhouette). |
|
|
105
|
+
| **Selection** | Artefatto decisionale creativo: quali output sono stati scelti, perché e da dove provengono. |
|
|
106
|
+
| **Re-ingest** | Gli output selezionati vengono reintrodotti come record candidati con la cronologia completa della generazione. |
|
|
85
107
|
|
|
86
108
|
## Perché esiste
|
|
87
109
|
|
|
88
|
-
I dati di addestramento sono l'
|
|
110
|
+
I dati di addestramento sono l'artefatto più importante in qualsiasi flusso di lavoro di intelligenza artificiale visiva. Ma la maggior parte dei dati di addestramento è una cartella di immagini senza cronologia, senza traccia delle valutazioni e senza collegamento con le regole di stile che avrebbero dovuto seguire.
|
|
111
|
+
|
|
112
|
+
Style Dataset Lab rende esplicita questa connessione. La tua costituzione definisce le regole. La tua rubrica definisce le dimensioni della valutazione. I tuoi record di curatela registrano la valutazione. Il tuo legame con il canone dimostra la connessione. E il tuo set di dati conserva tutto questo come informazioni strutturate, ricercabili e riproducibili.
|
|
113
|
+
|
|
114
|
+
Il risultato pratico: quando il tuo LoRA subisce modifiche indesiderate, puoi chiedere *perché*. Quando il tuo prossimo ciclo di addestramento richiede dati migliori, sai esattamente quali record sono quasi corretti e quale singola regola hanno violato. Quando un nuovo membro del team chiede qual è il linguaggio visivo del progetto, la risposta non è una bacheca Figma, ma una costituzione ricercabile con 1.182 esempi valutati.
|
|
115
|
+
|
|
116
|
+
## Testato in produzione
|
|
117
|
+
|
|
118
|
+
Non si tratta di una pipeline dimostrativa. Due modelli LoRA reali sono stati elaborati integralmente attraverso questa pipeline: lo stesso ciclo canonico → curatela → addestramento → distribuzione, agli estremi opposti dello spettro della curatela.
|
|
89
119
|
|
|
90
|
-
|
|
120
|
+
- **[Tallow Fen](handbook/case-study-tallow-fen/)** (progettazione di creature): un canone di bestiario creato da zero, con circa il **34% di approvazioni** su 293 record curati (169 rifiutati: la fase di selezione è rigorosa). È stato distribuito `tallow_fen_style_v3.safetensors` a 1.5 su `qwen-image`.
|
|
121
|
+
- **[Rustline](handbook/case-study-rustline/)** (progettazione concettuale): un canone denso e predefinito, con circa il **96% di approvazioni** su 180 record. È stato distribuito `rustline_v3ckpt_1500.safetensors` a 1.0 su `qwen-image`, ed è stato riutilizzato in un secondo progetto.
|
|
91
122
|
|
|
92
|
-
|
|
123
|
+
La stessa pipeline, due profili di produzione: la fase di curatela è reale (rifiuta rigorosamente i contenuti inappropriati) e un canone ben definito produce alti tassi di accettazione.
|
|
93
124
|
|
|
94
125
|
## Cinque domini, regole reali
|
|
95
126
|
|
|
96
|
-
Non modelli di esempio. Ogni dominio viene fornito con regole
|
|
127
|
+
Non semplici modelli di esempio. Ogni dominio viene fornito con regole della costituzione adatte alla produzione, definizioni delle corsie, rubriche di valutazione e vocabolario di gruppo.
|
|
97
128
|
|
|
98
|
-
| Dominio
|
|
129
|
+
| Dominio | Corsie | Cosa viene valutato |
|
|
99
130
|
|--------|-------|-----------------|
|
|
100
|
-
| **game-art** | personaggio, ambiente, oggetto, interfaccia utente, nave, interno, attrezzatura
|
|
101
|
-
| **character-design** | ritratto, figura intera,
|
|
102
|
-
| **creature-design** |
|
|
103
|
-
| **architecture** | esterno, interno, paesaggio urbano, dettaglio strutturale, rovina, paesaggio
|
|
104
|
-
| **vehicle-mech** | esterno, cabina di pilotaggio, componente, schema, foglio di silhouette, variante danneggiata
|
|
131
|
+
| **game-art** | personaggio, ambiente, oggetto di scena, interfaccia utente, nave, interno, attrezzatura | Silhouette su scala di gioco, identificazione della fazione, usura e invecchiamento |
|
|
132
|
+
| **character-design** | ritratto, figura intera, rotazione a 360 gradi, foglio di espressioni, posa d'azione | Proporzioni, logica del costume, personalità, chiarezza dei gesti |
|
|
133
|
+
| **creature-design** | concetto, ortografico, studio dettagliato, azione, riferimento alla scala, habitat | Anatomia, logica evolutiva, distinzione della silhouette |
|
|
134
|
+
| **architecture** | esterno, interno, paesaggio urbano, dettaglio strutturale, rovina, paesaggio | Struttura, coerenza dei materiali, prospettiva, coerenza dell'epoca |
|
|
135
|
+
| **vehicle-mech** | esterno, cabina di pilotaggio, componente, schema, foglio di silhouette, variante danneggiata | Logica meccanica, linguaggio del design, punti di accesso, narrazione dei danni |
|
|
105
136
|
|
|
106
137
|
## Struttura del progetto
|
|
107
138
|
|
|
108
|
-
Ogni progetto è autonomo. Cinque file di configurazione JSON definiscono le regole; il resto
|
|
139
|
+
Ogni progetto è autonomo. Cinque file di configurazione JSON definiscono le regole; tutto il resto sono dati.
|
|
109
140
|
|
|
110
141
|
```
|
|
111
142
|
projects/my-project/
|
|
@@ -127,19 +158,21 @@ projects/my-project/
|
|
|
127
158
|
inbox/generated/ Re-ingested images awaiting review
|
|
128
159
|
```
|
|
129
160
|
|
|
130
|
-
##
|
|
161
|
+
## Proprietà di affidabilità
|
|
131
162
|
|
|
132
|
-
|
|
163
|
+
Queste non sono semplici aspirazioni. Sono applicate rigorosamente.
|
|
133
164
|
|
|
134
|
-
- **Gli snapshot sono immutabili.** L'impronta
|
|
135
|
-
- **Le suddivisioni
|
|
136
|
-
- **I
|
|
137
|
-
- **
|
|
138
|
-
- **
|
|
165
|
+
- **Gli snapshot sono immutabili.** L'impronta della configurazione (SHA-256) dimostra che nulla è stato modificato.
|
|
166
|
+
- **Le suddivisioni prevengono la dispersione dei dati.** Le famiglie di soggetti (per identità, discendenza o suffisso ID) non superano mai i confini delle partizioni.
|
|
167
|
+
- **I manifest sono contratti vincolanti.** Esportazione dell'hash + impronta della configurazione. Se qualcosa cambia, crearne uno nuovo.
|
|
168
|
+
- **Le esecuzioni fissano il loro grafo esatto.** Ogni generazione registra `comfy_workflow_sha` + hash del contenuto del modello/LoRA + politica dei seed, in modo che un ciclo possa essere riprodotto byte per byte: identico sia nell'ambiente JS che Python. L'hashing del modello è opzionale (`--hash-models`) e non viene mai falsificato.
|
|
169
|
+
- **Nessun modello verifica il proprio output.** Le valutazioni registrano `judged_by_model` e `generator_model`; se questi valori sono mai uguali, viene visualizzato un avviso.
|
|
170
|
+
- **Gli adattatori non possono alterare la verità.** Layout diverso, stessi record. Nessuna aggiunta, nessuna rimozione, nessuna riclassificazione.
|
|
171
|
+
- **Gli output generati vengono reintrodotti attraverso la revisione.** Nessun bypass. Curatela e collegamento come per tutti gli altri elementi.
|
|
139
172
|
|
|
140
173
|
## Star Freight
|
|
141
174
|
|
|
142
|
-
Il repository include un esempio completo
|
|
175
|
+
Il repository include un esempio completo funzionante: 1.182 record, 5 fazioni, 7 percorsi, 24 regole costitutive, 892 risorse approvate, 2 profili di addestramento. Un canone visivo di fantascienza RPG, completamente curato.
|
|
143
176
|
|
|
144
177
|
```bash
|
|
145
178
|
git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
|
|
@@ -149,9 +182,9 @@ sdlab snapshot create --project star-freight # 839 eligible records
|
|
|
149
182
|
sdlab split build --project star-freight # zero subject leakage
|
|
150
183
|
```
|
|
151
184
|
|
|
152
|
-
## Formati
|
|
185
|
+
## Formati downstream
|
|
153
186
|
|
|
154
|
-
`sdlab` è
|
|
187
|
+
`sdlab` è il proprietario del set di dati. La conversione del formato è gestita da [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e altro. `repo-dataset` esegue il rendering; non decide mai l'inclusione.
|
|
155
188
|
|
|
156
189
|
## Installazione
|
|
157
190
|
|
|
@@ -159,11 +192,11 @@ sdlab split build --project star-freight # zero subject leakage
|
|
|
159
192
|
npm install -g @mcptoolshop/style-dataset-lab
|
|
160
193
|
```
|
|
161
194
|
|
|
162
|
-
Richiede Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI)
|
|
195
|
+
Richiede Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI) su localhost:8188 per la generazione.
|
|
163
196
|
|
|
164
197
|
### Prova senza ComfyUI
|
|
165
198
|
|
|
166
|
-
È possibile esplorare l'intera interfaccia
|
|
199
|
+
È possibile esplorare l'intera interfaccia non di generazione (ispezione, curatela, snapshot, suddivisione, esportazione) utilizzando il progetto Star Freight incluso, senza installare ComfyUI o scaricare alcun peso SDXL.
|
|
167
200
|
|
|
168
201
|
```bash
|
|
169
202
|
# Scaffold a fresh project (no ComfyUI needed)
|
|
@@ -176,13 +209,13 @@ sdlab project doctor --project test
|
|
|
176
209
|
sdlab snapshot create --dry-run --project star-freight
|
|
177
210
|
```
|
|
178
211
|
|
|
179
|
-
|
|
212
|
+
`sdlab project doctor` convalida la configurazione di ogni progetto (costituzione, percorsi, rubrica, terminologia) e segnala l'idoneità senza toccare la GPU. Qualsiasi comando che modifica lo stato generato accetta `--dry-run` per visualizzare in anteprima l'effetto.
|
|
180
213
|
|
|
181
|
-
Se si dimentica `--project`, la CLI
|
|
214
|
+
Se si dimentica `--project`, la CLI torna al primo progetto che trova nella cartella `projects/` e stampa un avviso; passare `--project` esplicitamente per disattivare l'avviso.
|
|
182
215
|
|
|
183
|
-
###
|
|
216
|
+
### Ripresa di un'esecuzione interrotta
|
|
184
217
|
|
|
185
|
-
|
|
218
|
+
Le lunghe esecuzioni di generazione possono essere riprese senza ripetere il lavoro completato:
|
|
186
219
|
|
|
187
220
|
```bash
|
|
188
221
|
# Skip subjects whose record + image are already on disk.
|
|
@@ -194,36 +227,36 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
|
|
|
194
227
|
sdlab batch generate --resume batch_2026-04-22_001 --project my-project
|
|
195
228
|
```
|
|
196
229
|
|
|
197
|
-
Entrambi i comandi funzionano perché ogni
|
|
230
|
+
Entrambi i comandi funzionano perché ogni slot scrive la sua voce del manifest in modo atomico al termine; un arresto anomalo durante l'esecuzione non corrompe mai lo stato parziale.
|
|
198
231
|
|
|
199
232
|
## Risoluzione dei problemi
|
|
200
233
|
|
|
201
234
|
Modalità di errore comuni e soluzioni:
|
|
202
235
|
|
|
203
|
-
**`ECONNREFUSED 127.0.0.1:8188` in qualsiasi
|
|
204
|
-
ComfyUI non è in esecuzione.
|
|
236
|
+
**`ECONNREFUSED 127.0.0.1:8188` in qualsiasi `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
|
|
237
|
+
ComfyUI non è in esecuzione. Avviare ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) e confermare con `curl http://127.0.0.1:8188/system_stats`. Per puntare a un host/porta diverso, impostare `COMFY_URL=http://host:port`.
|
|
205
238
|
|
|
206
239
|
**`missing checkpoint` / `LoRA weight not found`**
|
|
207
|
-
Il profilo del flusso di lavoro
|
|
240
|
+
Il profilo del flusso di lavoro fa riferimento a un file modello che non si trova nelle cartelle `models/checkpoints/` o `models/loras/` di ComfyUI. Aprire `projects/<project>/workflows/profiles/<profile>.json`, individuare il campo `checkpoint` o `lora` e scaricare il peso di riferimento oppure sostituirlo con uno che si ha già. Rieseguire `sdlab project doctor --project <project>` per confermare la correzione.
|
|
208
241
|
|
|
209
242
|
**Errori di `sdlab project doctor`**
|
|
210
|
-
Doctor restituisce codici di errore strutturati. Alcuni
|
|
211
|
-
- `E_PROJECT_NOT_FOUND
|
|
212
|
-
- `E_CONFIG_INVALID
|
|
213
|
-
- `E_RECORD_DRIFT
|
|
243
|
+
Doctor restituisce codici di errore strutturati. Alcuni comuni:
|
|
244
|
+
- `E_PROJECT_NOT_FOUND`: la directory del progetto non esiste in `projects/`. Controllare l'ortografia.
|
|
245
|
+
- `E_CONFIG_INVALID`: uno dei cinque file di configurazione JSON ha fallito la convalida dello schema. Il campo `hint` indica il file e il campo problematici.
|
|
246
|
+
- `E_RECORD_DRIFT`: l'impronta della configurazione di un record non corrisponde più alla sua origine. Rielaborare o ricollegare come suggerisce l'indicazione.
|
|
214
247
|
|
|
215
|
-
**`
|
|
216
|
-
Un avviso
|
|
248
|
+
**`No --project specified, falling back to <name>`**
|
|
249
|
+
Un avviso lieve. Passare `--project <name>` esplicitamente per selezionare il progetto corretto e disattivare l'avviso.
|
|
217
250
|
|
|
218
|
-
**Problemi
|
|
219
|
-
Consultare
|
|
251
|
+
**Problemi di memoria VRAM / "Painterly"**
|
|
252
|
+
Consultare `docs/internal/HANDOFF.md` per le note sulla regolazione del denoising "painterly". In breve: ridurre la forza del denoising, diminuire la dimensione del batch o passare a un checkpoint più piccolo nel profilo del flusso di lavoro.
|
|
220
253
|
|
|
221
254
|
**Segnalazione di bug**
|
|
222
|
-
Aprire una segnalazione
|
|
255
|
+
Aprire una segnalazione su https://github.com/mcp-tool-shop-org/style-dataset-lab/issues con la versione di sdlab (`sdlab --version`), la versione di Node (`node -v`), il comando completo e l'output strutturato dell'errore. Un modello per la segnalazione di bug precompila i campi.
|
|
223
256
|
|
|
224
257
|
## Sicurezza
|
|
225
258
|
|
|
226
|
-
|
|
259
|
+
Solo locale. Nessun telemetria, nessuna analisi, nessuna richiesta esterna. Le immagini rimangono sulla GPU e sul file system.
|
|
227
260
|
|
|
228
261
|
## Licenza
|
|
229
262
|
|
|
@@ -231,4 +264,4 @@ MIT
|
|
|
231
264
|
|
|
232
265
|
---
|
|
233
266
|
|
|
234
|
-
|
|
267
|
+
Realizzato da <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
package/README.ja.md
CHANGED
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
自分のビジュアルルールを記述します。アートを生成します。すべての画像をそれらのルールに対して評価します。結果をバージョン管理された、監査可能なトレーニングデータとして出力し、次に、トレーニング済みのモデルを実際の制作ワークフローで活用し、最高の出力をコーパスに再投入します。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
スタイルデータセットラボは、アートスタイルに関する記述と、実際にトレーニングに使用するデータセットを結びつけ、その後、制作プロセス全体を通してそのループを閉じます。プロジェクトにとって重要な要素(シルエットルール、パレットの制約、マテリアルの表現など)を定義します。パイプラインは候補を生成し、それらをルールに基づいて評価し、承認されたものを再現可能なデータセットにパッケージ化します。各レコードには、なぜそれが含まれたのかが説明されています。
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
次に、制作ワークベンチが引き継ぎます。プロジェクトの要件から生成指示をまとめ、ComfyUIで実行し、出力を評価し、表現シートや環境ボードを一括作成し、最良の結果を選択して、新しい候補として再取り込みます。このループは、生成、選択、レビュー、強化という流れで閉じられます。
|
|
21
21
|
|
|
22
22
|
## パイプライン
|
|
23
23
|
|
|
@@ -56,56 +56,87 @@ sdlab select --run run_2026-04-16_001 --approve 001.png,003.png
|
|
|
56
56
|
sdlab reingest selected --selection selection_2026-04-16_001
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
最後のコマンドがポイントです。選択された出力は、他のすべてのものと同様に、同じレビュープロセスを経て再利用されます。コーパスが増加し、ルールは維持されます。
|
|
60
60
|
|
|
61
|
-
##
|
|
61
|
+
## カノンオーサリング
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
データセットパイプラインを実行する前に、`sdlab canon *`名前空間は、プロジェクトのカノンエンティティストアを、実際のトレーニングと制作で使用される3つのプロジェクションに変換し、変更してはならないエントリをロックします。
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
```bash
|
|
66
|
+
# Build three projections from the canon entity store:
|
|
67
|
+
# dataset.jsonl → training adapters
|
|
68
|
+
# prompts/*.j2 → ComfyUI workflow invocation
|
|
69
|
+
# context/*.md → Role OS narrative dispatch
|
|
70
|
+
sdlab canon build --project my-project
|
|
71
|
+
|
|
72
|
+
# Freeze an entry so regeneration can't silently change it
|
|
73
|
+
sdlab canon freeze kael_maren --project my-project --reason "prologue portrait locked"
|
|
74
|
+
|
|
75
|
+
# Report drift on frozen entries since the last clean build
|
|
76
|
+
sdlab canon drift --project my-project
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`canon build`はコンテンツアドレス指定であり、その出力は`canon_sha`でキー付けされ、キャッシュされます。そのため、変更されていないカノンは瞬時に再構築されます。`canon freeze`は、各フリーズを特定のビルドに対して記録し、`freeze-events.jsonl`監査トレイルに追加します。`frozen`エントリは完全に再生成を拒否し、`soft-advisory`エントリはデフォルトで拒否しますが(`--i-know`オプションで回避できます)。`canon drift`は、監視対象のすべてのエントリのハッシュを再計算し、最後のクリーンビルド以降に変更されたものをフラグします。
|
|
80
|
+
|
|
81
|
+
完全なワークフローについては、ハンドブックをご覧ください。[カノンビルド](handbook/canon-build/)、[カノンフリーズ](handbook/canon-freeze/)、および[Two-LoRAスタッキング](handbook/two-lora-stacking/)。
|
|
82
|
+
|
|
83
|
+
## 生成されるもの
|
|
84
|
+
|
|
85
|
+
7つのデータセット成果物と完全な制作ワークベンチ。各成果物は、その先行するものにリンクされており、トレーニングレコードを承認したルールまで追跡できます。
|
|
86
|
+
|
|
87
|
+
| 成果物 | 概要 |
|
|
66
88
|
|----------|-----------|
|
|
67
|
-
| **Snapshot** |
|
|
68
|
-
| **Split** |
|
|
69
|
-
| **Export package** |
|
|
70
|
-
| **Eval pack** |
|
|
71
|
-
| **Training package** | アダプター(`diffusers-lora`、`generic-image-caption
|
|
72
|
-
| **Eval scorecard** |
|
|
73
|
-
| **Implementation pack** |
|
|
89
|
+
| **Snapshot** | 構成のフィンガープリントを持つフリーズされたレコード選択。すべての包含には明確な理由があります。 |
|
|
90
|
+
| **Split** | 被験者グループが境界を越えない、トレーニング/検証/テストの分割。 |
|
|
91
|
+
| **Export package** | 自己完結型のデータセット:マニフェスト、メタデータ、画像、分割、データセットカード、チェックサム。 |
|
|
92
|
+
| **Eval pack** | カノンを意識したテストタスク:レーンカバレッジ、禁止されたドリフト、アンカー/ゴールド、被験者の連続性。 |
|
|
93
|
+
| **Training package** | アダプター(`diffusers-lora`、`generic-image-caption`)を介したトレーナー対応のレイアウト。同じ情報でありながら、異なる形式です。 |
|
|
94
|
+
| **Eval scorecard** | 生成された出力を評価パックに対してスコアリングし、タスクごとの合格/不合格を判定します。 |
|
|
95
|
+
| **Implementation pack** | プロンプト例、既知の失敗、連続性テスト、および再取り込みガイダンス。 |
|
|
74
96
|
|
|
75
|
-
|
|
97
|
+
制作ワークベンチは以下を追加します:
|
|
76
98
|
|
|
77
|
-
|
|
|
99
|
+
| 表面 | 機能 |
|
|
78
100
|
|---------|-------------|
|
|
79
|
-
| **Compiled brief** |
|
|
80
|
-
| **Run** |
|
|
81
|
-
| **Critique** |
|
|
82
|
-
| **Batch** |
|
|
83
|
-
| **Selection** |
|
|
84
|
-
| **Re-ingest** |
|
|
101
|
+
| **Compiled brief** | ワークフロープロファイルとプロジェクトの要件からの決定的な生成指示。 |
|
|
102
|
+
| **Run** | フリーズされた実行成果物:ブリーフィング+シード+ComfyUI出力+マニフェスト。 |
|
|
103
|
+
| **Critique** | カノンに対する実行出力の構造化された多次元評価。 |
|
|
104
|
+
| **Batch** | 調整されたマルチスロット制作(表現シート、環境ボード、シルエットパック)。 |
|
|
105
|
+
| **Selection** | クリエイティブな意思決定成果物:どの出力が選択され、その理由は何で、どこから来たのか。 |
|
|
106
|
+
| **Re-ingest** | 選択された出力は、完全な生成の来歴とともに、候補レコードとして返されます。 |
|
|
107
|
+
|
|
108
|
+
## このシステムが存在する理由
|
|
109
|
+
|
|
110
|
+
トレーニングデータは、あらゆるビジュアルAIパイプラインにおいて最も効果的な成果物です。しかし、ほとんどのトレーニングデータは、履歴も、判断の記録も、従うべきスタイルルールとの関連性もない、単なる画像のフォルダーにすぎません。
|
|
111
|
+
|
|
112
|
+
スタイルデータセットラボは、この関連性を明確にします。あなたの憲法がルールを定義します。あなたのルーブリックがスコアリングの次元を定義します。あなたのキュレーションが判断を記録します。あなたのカノンバインディングがその関連性を証明します。そして、あなたのデータセットは、それらすべてを構造化され、クエリ可能で、再現可能な情報として前進させます。
|
|
113
|
+
|
|
114
|
+
実用的な結果:LoRAがドリフトした場合、なぜそうなるのかを尋ねることができます。次のトレーニングラウンドにより良いデータが必要な場合、どのレコードがほぼ合格であり、どの単一のルールに失敗したかを正確に知ることができます。新しいチームメンバーがプロジェクトのビジュアル言語について質問した場合、答えはFigmaボードではなく、1,182件の評価された例を含む検索可能な憲法です。
|
|
85
115
|
|
|
86
|
-
##
|
|
116
|
+
## 実運用で実績あり
|
|
87
117
|
|
|
88
|
-
|
|
118
|
+
これはデモ用のパイプラインではありません。2つの実際のスタイルLoRAが、このパイプラインを通じて最初から最後まで処理されました。キュレーションの範囲において正反対の位置にある、同じ「原作 → キュレーション → トレーニング → 配信」というサイクルです。
|
|
89
119
|
|
|
90
|
-
|
|
120
|
+
- **[Tallow Fen](handbook/case-study-tallow-fen/)**(クリーチャーデザイン)—最初から作成されたベストiaryの原作で、293件のキュレーション済みレコードのうち約34%が承認されました(169件は却下され、厳しい基準で審査されています)。`tallow_fen_style_v3.safetensors`を`qwen-image`上で1.5で使用して配信しました。
|
|
121
|
+
- **[Rustline](handbook/case-study-rustline/)**(コンセプトデザイン)—密度が高く、事前に形成された原作で、180件のレコードのうち約96%が承認されました。`rustline_v3ckpt_1500.safetensors`を`qwen-image`上で1.0で使用して配信し、別のプロジェクトでも再利用しました。
|
|
91
122
|
|
|
92
|
-
|
|
123
|
+
同じパイプラインで、2つの実運用プロファイル:キュレーションゲートは本物であり(オープンなテーマに対して厳しい基準で審査します)、厳格な原作によって高い承認率が得られます。
|
|
93
124
|
|
|
94
|
-
## 5
|
|
125
|
+
## 5つのドメイン、実際のルール
|
|
95
126
|
|
|
96
|
-
|
|
127
|
+
プレースホルダーテンプレートではありません。各ドメインには、実運用レベルのカノン憲法ルール、レーン定義、スコアリングルーブリック、およびグループ語彙が付属しています。
|
|
97
128
|
|
|
98
|
-
| ドメイン |
|
|
129
|
+
| ドメイン | レーン | 評価対象となるもの |
|
|
99
130
|
|--------|-------|-----------------|
|
|
100
|
-
| **game-art** | キャラクター、環境、小道具、UI
|
|
101
|
-
| **character-design** |
|
|
102
|
-
| **creature-design** |
|
|
103
|
-
| **architecture** |
|
|
104
|
-
| **vehicle-mech** |
|
|
131
|
+
| **game-art** | キャラクター、環境、小道具、UI、船、インテリア、装備 | ゲームプレイ規模でのシルエット、派閥の識別、摩耗と経年変化 |
|
|
132
|
+
| **character-design** | ポートレート、全身像、ターンアラウンド、表現シート、アクションポーズ | プロポーション、衣装の論理、個性、ジェスチャーの明確さ |
|
|
133
|
+
| **creature-design** | コンセプト、オルソグラフィック、詳細な研究、アクション、スケール参照、生息地 | 解剖学、進化の論理、シルエットの区別 |
|
|
134
|
+
| **architecture** | 外観、内装、街並み、構造的な詳細、廃墟、風景 | 構造、マテリアルの整合性、視点、時代の整合性 |
|
|
135
|
+
| **vehicle-mech** | 外観、コックピット、コンポーネント、図面、シルエットシート、損傷バリアント | 機械的な論理、デザイン言語、アクセスポイント、損傷の物語 |
|
|
105
136
|
|
|
106
|
-
##
|
|
137
|
+
## プロジェクトの構造
|
|
107
138
|
|
|
108
|
-
|
|
139
|
+
各プロジェクトは独立しています。5つのJSON設定ファイルでルールを定義します。それ以外はすべてデータです。
|
|
109
140
|
|
|
110
141
|
```
|
|
111
142
|
projects/my-project/
|
|
@@ -127,19 +158,21 @@ projects/my-project/
|
|
|
127
158
|
inbox/generated/ Re-ingested images awaiting review
|
|
128
159
|
```
|
|
129
160
|
|
|
130
|
-
##
|
|
161
|
+
## 信頼性のためのプロパティ
|
|
131
162
|
|
|
132
|
-
|
|
163
|
+
これらは理想的なものではありません。強制的に適用されます。
|
|
133
164
|
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
165
|
+
- **スナップショットは不変です。**構成のフィンガープリント(SHA-256)により、変更がないことが証明されます。
|
|
166
|
+
- **分割により情報漏洩を防ぎます。**被験者グループ(同一性、系統、またはIDサフィックスによって分類)は、決してパーティション境界を越えません。
|
|
167
|
+
- **マニフェストは固定された契約です。**エクスポートハッシュと構成のフィンガープリントが含まれます。変更がある場合は、新しいものを生成します。
|
|
168
|
+
- **実行は正確なグラフに固定されます。**すべての生成処理において、`comfy_workflow_sha` + モデル/LoRAコンテンツハッシュ + シードポリシーが記録されるため、一連の処理をバイト単位で完全に再現できます。これは、JavaScriptとPythonの両方のランナーで同じ結果になります。モデルのハッシュ化はオプション(`--hash-models`)であり、偽造されることはありません。
|
|
169
|
+
- **どのモデルも自身の出力を検証しません。**評価では、`judged_by_model`と`generator_model`が記録され、これらが同一のモデルである場合、警告が表示されます。
|
|
170
|
+
- **アダプターは真実を改ざんできません。**レイアウトは異なりますが、同じレコードを使用します。追加、削除、再分類は行われません。
|
|
171
|
+
- **生成された出力は、レビューを通じて再度処理されます。**バイパスはありません。他のものと同様に、キュレーションとバインドを行います。
|
|
139
172
|
|
|
140
|
-
##
|
|
173
|
+
## スター・フレイト
|
|
141
174
|
|
|
142
|
-
|
|
175
|
+
このリポジトリには、完全な動作例が含まれています:1,182件のレコード、5つの派閥、7つのルート、24の憲法ルール、892個の承認済みアセット、2つのトレーニングプロファイル。洗練されたSF RPGのビジュアルカノンで、完全にキュレーションされています。
|
|
143
176
|
|
|
144
177
|
```bash
|
|
145
178
|
git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
|
|
@@ -149,9 +182,9 @@ sdlab snapshot create --project star-freight # 839 eligible records
|
|
|
149
182
|
sdlab split build --project star-freight # zero subject leakage
|
|
150
183
|
```
|
|
151
184
|
|
|
152
|
-
##
|
|
185
|
+
## 下流形式
|
|
153
186
|
|
|
154
|
-
`sdlab
|
|
187
|
+
`sdlab`がデータセットを所有します。フォーマット変換は[`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset)によって処理されます:TRL、LLaVA、Qwen2-VL、JSONL、Parquetなど。`repo-dataset`はレンダリングを行い、データの選択は行いません。
|
|
155
188
|
|
|
156
189
|
## インストール
|
|
157
190
|
|
|
@@ -159,11 +192,11 @@ sdlab split build --project star-freight # zero subject leakage
|
|
|
159
192
|
npm install -g @mcptoolshop/style-dataset-lab
|
|
160
193
|
```
|
|
161
194
|
|
|
162
|
-
|
|
195
|
+
Node.js 20+と、ローカルホストの8188ポートで動作する[ComfyUI](https://github.com/comfyanonymous/ComfyUI)が必要です(生成用)。
|
|
163
196
|
|
|
164
197
|
### ComfyUIなしで試す
|
|
165
198
|
|
|
166
|
-
ComfyUI
|
|
199
|
+
バンドルされたスター・フレイトプロジェクトを使用して、完全な非生成機能(検査、キュレーション、スナップショット、分割、エクスポート)を、ComfyUIのインストールやSDXLウェイトのダウンロードなしで探索できます。
|
|
167
200
|
|
|
168
201
|
```bash
|
|
169
202
|
# Scaffold a fresh project (no ComfyUI needed)
|
|
@@ -176,13 +209,13 @@ sdlab project doctor --project test
|
|
|
176
209
|
sdlab snapshot create --dry-run --project star-freight
|
|
177
210
|
```
|
|
178
211
|
|
|
179
|
-
`sdlab project doctor
|
|
212
|
+
`sdlab project doctor`は、すべてのプロジェクト設定(憲法、ルート、ルーブリック、用語)を検証し、GPUに触れることなく有効性を報告します。生成された状態を変更するコマンドはすべて、最初に効果をプレビューするために`--dry-run`を受け入れます。
|
|
180
213
|
|
|
181
|
-
`--project
|
|
214
|
+
`--project`を忘れた場合、CLIは`projects/`の下で最初に見つかったプロジェクトにフォールバックし、警告を表示します。警告を抑制するには、`--project`を明示的に指定してください。
|
|
182
215
|
|
|
183
|
-
###
|
|
216
|
+
### 中断された実行の再開
|
|
184
217
|
|
|
185
|
-
|
|
218
|
+
長時間の生成実行は、完了した作業をやり直さずに再開できます。
|
|
186
219
|
|
|
187
220
|
```bash
|
|
188
221
|
# Skip subjects whose record + image are already on disk.
|
|
@@ -194,41 +227,41 @@ sdlab generate inputs/prompts/wave1.json --project my-project --resume
|
|
|
194
227
|
sdlab batch generate --resume batch_2026-04-22_001 --project my-project
|
|
195
228
|
```
|
|
196
229
|
|
|
197
|
-
|
|
230
|
+
両方のコマンドが機能するのは、各スロットが完了時にマニフェストエントリをアトミックに書き込むためです。実行中にクラッシュが発生しても、部分的な状態が破損することはありません。
|
|
198
231
|
|
|
199
232
|
## トラブルシューティング
|
|
200
233
|
|
|
201
|
-
|
|
234
|
+
一般的なエラーとその修正:
|
|
202
235
|
|
|
203
|
-
**`
|
|
204
|
-
ComfyUIが実行されていません。ComfyUIを起動します(`python main.py --listen 127.0.0.1 --port 8188
|
|
236
|
+
**`sdlab generate` / `sdlab run generate` / `sdlab batch generate`のいずれかで`ECONNREFUSED 127.0.0.1:8188`が発生した場合**
|
|
237
|
+
ComfyUIが実行されていません。ComfyUIを起動します(`python main.py --listen 127.0.0.1 --port 8188`)そして、`curl http://127.0.0.1:8188/system_stats`で確認してください。別のホスト/ポートを指定するには、`COMFY_URL=http://host:port`を設定します。
|
|
205
238
|
|
|
206
|
-
**`missing checkpoint` / `LoRA weight not found
|
|
207
|
-
|
|
239
|
+
**`missing checkpoint` / `LoRA weight not found`**
|
|
240
|
+
ワークフロープロファイルで、ComfyUIの`models/checkpoints/`または`models/loras/`フォルダにないモデルファイルを指定しています。`projects/<project>/workflows/profiles/<profile>.json`を開き、`checkpoint`または`lora`フィールドを見つけて、参照されているウェイトをダウンロードするか、すでに持っているものと置き換えます。`sdlab project doctor --project <project>`を再実行して、修正を確認します。
|
|
208
241
|
|
|
209
|
-
**`sdlab project doctor
|
|
210
|
-
Doctor
|
|
211
|
-
- `E_PROJECT_NOT_FOUND
|
|
212
|
-
- `E_CONFIG_INVALID
|
|
213
|
-
- `E_RECORD_DRIFT
|
|
242
|
+
**`sdlab project doctor`のエラー**
|
|
243
|
+
Doctorは構造化されたエラーコードを返します。一般的なもの:
|
|
244
|
+
- `E_PROJECT_NOT_FOUND` — プロジェクトディレクトリが`projects/`の下に存在しません。スペルを確認してください。
|
|
245
|
+
- `E_CONFIG_INVALID` — 5つのJSON設定ファイルのいずれかが、スキーマ検証に失敗しました。`hint`フィールドには、問題のあるファイルとフィールドの名前が表示されます。
|
|
246
|
+
- `E_RECORD_DRIFT` — レコードの設定フィンガープリントが、そのソースと一致しなくなりました。ヒントに従って、再キュレーションまたは再バインドしてください。
|
|
214
247
|
|
|
215
|
-
**`No --project specified, falling back to <name
|
|
216
|
-
|
|
248
|
+
**`No --project specified, falling back to <name>`**
|
|
249
|
+
軽度の警告です。`--project <name>`を明示的に指定して、適切なプロジェクトを選択し、警告を抑制します。
|
|
217
250
|
|
|
218
|
-
|
|
219
|
-
|
|
251
|
+
**Painterly / VRAMのメモリ不足の問題**
|
|
252
|
+
`docs/internal/HANDOFF.md`を参照して、Painterlyのデノイズ調整に関する注意事項を確認してください。要するに:デノイズ強度を下げたり、バッチサイズを減らしたり、ワークフロープロファイルでより小さいチェックポイントに切り替えたりします。
|
|
220
253
|
|
|
221
254
|
**バグの報告**
|
|
222
|
-
|
|
255
|
+
https://github.com/mcp-tool-shop-org/style-dataset-lab/issues に、sdlabバージョン(`sdlab --version`)、Nodeバージョン(`node -v`)、完全なコマンド、および構造化されたエラー出力を添えて問題を報告してください。バグ報告テンプレートには、フィールドが事前に設定されています。
|
|
223
256
|
|
|
224
257
|
## セキュリティ
|
|
225
258
|
|
|
226
|
-
|
|
259
|
+
ローカルでのみ動作します。テレメトリ、分析、外部リクエストはありません。画像はGPUとファイルシステムにのみ保存されます。
|
|
227
260
|
|
|
228
261
|
## ライセンス
|
|
229
262
|
|
|
230
|
-
MIT
|
|
263
|
+
MIT
|
|
231
264
|
|
|
232
265
|
---
|
|
233
266
|
|
|
234
|
-
|
|
267
|
+
MCP Tool Shopによって作成されました。
|