@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.es.md +96 -63
  3. package/README.fr.md +97 -64
  4. package/README.hi.md +108 -77
  5. package/README.it.md +97 -64
  6. package/README.ja.md +105 -72
  7. package/README.md +33 -0
  8. package/README.pt-BR.md +94 -61
  9. package/README.zh.md +98 -65
  10. package/bin/sdlab.js +71 -0
  11. package/lib/adapters/ai-toolkit.js +209 -0
  12. package/lib/adapters/comfyui-runner.js +36 -2
  13. package/lib/adapters/comfyui-workflows.js +133 -2
  14. package/lib/adapters/diffusers-lora.js +46 -66
  15. package/lib/adapters/generic-image-caption.js +22 -50
  16. package/lib/canon-build/build.js +450 -0
  17. package/lib/canon-build/emitters/base.js +122 -0
  18. package/lib/canon-build/emitters/character.js +167 -0
  19. package/lib/canon-build/emitters/deity.js +165 -0
  20. package/lib/canon-build/emitters/faction.js +161 -0
  21. package/lib/canon-build/emitters/index.js +38 -0
  22. package/lib/canon-build/emitters/location.js +153 -0
  23. package/lib/canon-build/emitters/monster.js +131 -0
  24. package/lib/canon-build/emitters/relic.js +142 -0
  25. package/lib/canon-build/emitters/ship.js +154 -0
  26. package/lib/canon-build/emitters/species.js +165 -0
  27. package/lib/canon-build/frontmatter.js +76 -0
  28. package/lib/canon-build/lane-resolve.js +64 -0
  29. package/lib/canon-build/load-config.js +117 -0
  30. package/lib/canon-build/load-entry.js +62 -0
  31. package/lib/canon-build/load-schema.js +46 -0
  32. package/lib/captions.js +197 -0
  33. package/lib/config.js +19 -0
  34. package/lib/critique-engine.js +46 -1
  35. package/lib/critique-render.js +45 -0
  36. package/lib/freeze-events.js +109 -0
  37. package/lib/freeze-gate.js +208 -0
  38. package/lib/freeze-stamp.js +161 -0
  39. package/lib/rows.js +228 -0
  40. package/lib/run-manifest.js +308 -0
  41. package/lib/snapshot.js +7 -1
  42. package/lib/training-adapters.js +5 -0
  43. package/lib/training-packages.js +24 -18
  44. package/lib/training-profiles.js +33 -0
  45. package/lib/verifier.js +67 -0
  46. package/package.json +12 -3
  47. package/scripts/_batch_cut.py +71 -0
  48. package/scripts/_seam_cutout.py +74 -0
  49. package/scripts/canon-build.js +88 -0
  50. package/scripts/canon-drift.js +193 -0
  51. package/scripts/canon-freeze-status.js +85 -0
  52. package/scripts/canon-freeze.js +211 -0
  53. package/scripts/canon-unfreeze.js +137 -0
  54. package/scripts/critique.js +32 -7
  55. package/scripts/curate.js +33 -0
  56. package/scripts/generate-controlnet.js +12 -0
  57. package/scripts/generate-identity.js +20 -4
  58. package/scripts/generate-ipadapter.js +11 -0
  59. package/scripts/generate.js +262 -102
  60. package/scripts/qwen_generate.py +327 -0
  61. package/scripts/run-generate.js +3 -0
package/README.md CHANGED
@@ -58,6 +58,28 @@ sdlab reingest selected --selection selection_2026-04-16_001
58
58
 
59
59
  That last command is the point. Selected outputs come back through the same review process as everything else. The corpus grows and the rules hold.
60
60
 
61
+ ## Canon authoring
62
+
63
+ Before the dataset pipeline runs, the `sdlab canon *` namespace turns your project's canon entity store into the three projections training and production actually consume — and locks the entries that must not drift.
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` is content-addressable — its output is keyed by a `canon_sha` and cached, so an unchanged canon rebuilds instantly. `canon freeze` witnesses each freeze against a specific build and appends to a `freeze-events.jsonl` audit trail: `frozen` entries refuse regeneration outright, `soft-advisory` entries refuse by default (bypass with `--i-know`). `canon drift` recomputes every watched entry's hash and flags anything that moved since the last clean build.
80
+
81
+ Full workflow in the handbook: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/), and [Two-LoRA stacking](handbook/two-lora-stacking/).
82
+
61
83
  ## What it produces
62
84
 
63
85
  Seven dataset artifacts and a full production workbench. Each artifact links to its predecessors so you can trace any training record back to the rule that approved it.
@@ -91,6 +113,15 @@ Style Dataset Lab makes the connection explicit. Your constitution defines the r
91
113
 
92
114
  The practical result: when your LoRA drifts, you can ask *why*. When your next training round needs better data, you know exactly which records are near-misses and what single rule they failed. When a new team member asks what the project's visual language is, the answer isn't a Figma board — it's a searchable constitution with 1,182 graded examples.
93
115
 
116
+ ## Proven in production
117
+
118
+ This isn't a demo pipeline. Two real style-LoRAs have shipped end-to-end through it — the same canon → curate → train → ship loop, at opposite ends of the curation spectrum.
119
+
120
+ - **[Tallow Fen](handbook/case-study-tallow-fen/)** (creature-design) — a from-scratch bestiary canon, **~34% approval** across 293 curated records (169 rejected — the gate rejects hard). Shipped `tallow_fen_style_v3.safetensors` @ 1.5 on `qwen-image`.
121
+ - **[Rustline](handbook/case-study-rustline/)** (concept-design) — dense, pre-formed canon, **~96% approval** across 180 records. Shipped `rustline_v3ckpt_1500.safetensors` @ 1.0 on `qwen-image`, reused downstream by a second project.
122
+
123
+ Same pipeline, two production profiles: the curation gate is real (it rejects hard on open subjects), and disciplined canon yields high acceptance.
124
+
94
125
  ## Five domains, real rules
95
126
 
96
127
  Not placeholder templates. Each domain ships with production-grade constitution rules, lane definitions, scoring rubrics, and group vocabulary.
@@ -134,6 +165,8 @@ These are not aspirational. They are enforced.
134
165
  - **Snapshots are immutable.** Config fingerprint (SHA-256) proves nothing changed.
135
166
  - **Splits prevent leakage.** Subject families (by identity, lineage, or ID suffix) never cross partition boundaries.
136
167
  - **Manifests are frozen contracts.** Export hash + config fingerprint. If anything changes, create a new one.
168
+ - **Runs pin their exact graph.** Every generation records `comfy_workflow_sha` + model/LoRA content hashes + seed policy, so a wave is byte-for-byte replayable — identical across the JS and Python runners. Model hashing is opt-in (`--hash-models`) and never fabricated.
169
+ - **No model verifies its own output.** Judgments record `judged_by_model` and `generator_model`; a warning fires if they are ever the same model.
137
170
  - **Adapters cannot mutate truth.** Different layout, same records. No additions, no removals, no reclassification.
138
171
  - **Generated outputs re-enter through review.** No bypass. Curate and bind like everything else.
139
172
 
package/README.pt-BR.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
- Escreva suas regras visuais. Gere imagens. Avalie cada imagem com base nessas regras. Envie os resultados como dados de treinamento versionados e auditáveis, e então coloque os modelos treinados em operação em fluxos de trabalho de produção reais, e alimente os melhores resultados de volta para o seu conjunto de dados.
16
+ Escreva suas regras visuais. Gere arte. Avalie cada imagem com base nessas regras. Envie os resultados como dados de treinamento auditáveis e versionados — e, em seguida, coloque modelos treinados para trabalhar em fluxos de trabalho de produção reais e insira as melhores saídas de volta no seu corpus.
17
17
 
18
- O Style Dataset Lab conecta o que você escreveu sobre o estilo da sua arte ao conjunto de dados que você realmente usa para treinamento. Você define uma estrutura – regras de silhueta, restrições de paleta, linguagem de materiais, o que for importante para o seu projeto. O processo gera candidatos, os avalia com base nessas regras e organiza as obras aprovadas em conjuntos de dados reproduzíveis, onde cada registro explica por que foi incluído.
18
+ O Style Dataset Lab conecta o que você escreveu sobre seu estilo artístico ao conjunto de dados do qual você realmente treina, e então fecha o ciclo até a produção. Você define uma constituição — regras de silhueta, restrições de paleta, linguagem dos materiais, qualquer coisa que seja importante para o seu projeto. O pipeline gera candidatos, avalia-os com base nessas regras e empacota o trabalho aprovado em conjuntos de dados reproduzíveis, onde cada registro explica por que foi incluído.
19
19
 
20
- Em seguida, a área de trabalho de produção assume o controle: compile as instruções de geração a partir da "verdade" do projeto, execute-as no ComfyUI, critique os resultados, produza em lote planilhas de expressões e painéis de ambiente, selecione os melhores resultados e reintroduza-os como novos candidatos. O ciclo se fecha: produza, selecione, revise, fortaleça.
20
+ Em seguida, a estação de trabalho de produção assume o controle: compile resumos de geração a partir da verdade do projeto, execute-os no ComfyUI, critique as saídas, produza em lote folhas de expressão e painéis de ambiente, selecione os melhores resultados e reintroduza-os como novos candidatos. O ciclo se fecha: produzir, selecionar, revisar, fortalecer.
21
21
 
22
- ## O processo
22
+ ## O pipeline
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
- Essa última instrução é o ponto crucial. Os resultados selecionados passam pelo mesmo processo de revisão que tudo o mais. O conjunto de dados cresce e as regras permanecem válidas.
59
+ Esse último comando é o ponto crucial. As saídas selecionadas retornam pelo mesmo processo de revisão que tudo o mais. O corpus cresce e as regras permanecem válidas.
60
+
61
+ ## Criação do cânone
62
+
63
+ Antes que o pipeline do conjunto de dados seja executado, o namespace `sdlab canon *` transforma o repositório de entidades do cânone do seu projeto nas três projeções que o treinamento e a produção realmente usam — e bloqueia as entradas que não devem ser alteradas.
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` é endereçável por conteúdo — sua saída é identificada por um `canon_sha` e armazenada em cache, para que uma reconstrução do cânone inalterado seja feita instantaneamente. `canon freeze` registra cada congelamento em relação a uma construção específica e anexa a um rastreamento de auditoria `freeze-events.jsonl`: as entradas `frozen` rejeitam explicitamente a regeneração, as entradas `soft-advisory` rejeitam por padrão (ignore com `--i-know`). `canon drift` recalcula o hash de cada entrada monitorada e sinaliza qualquer coisa que tenha sido alterada desde a última construção limpa.
80
+
81
+ Fluxo de trabalho completo no manual: [Canon build](handbook/canon-build/), [Canon freeze](handbook/canon-freeze/) e [Two-LoRA stacking](handbook/two-lora-stacking/).
60
82
 
61
83
  ## O que ele produz
62
84
 
63
- Sete artefatos do conjunto de dados e uma área de trabalho de produção completa. Cada artefato está vinculado aos seus predecessores, para que você possa rastrear qualquer registro de treinamento até a regra que o aprovou.
85
+ Sete artefatos de conjunto de dados e uma estação de trabalho de produção completa. Cada artefato está vinculado aos seus predecessores para que você possa rastrear qualquer registro de treinamento até a regra que o aprovou.
64
86
 
65
87
  | Artefato | O que é |
66
88
  |----------|-----------|
67
- | **Snapshot** | Seleção de registros fixos com impressão digital de configuração. Cada inclusão tem uma razão explícita. |
68
- | **Split** | Partição de treinamento/validação/teste, onde as famílias de elementos nunca ultrapassam as fronteiras. |
69
- | **Export package** | Conjunto de dados autônomo: manifesto, metadados, imagens, divisões, descrição do conjunto de dados e checksums. |
70
- | **Eval pack** | Tarefas de verificação compatíveis com as referências: cobertura de aspectos, prevenção de desvios indesejados, pontos de referência/referências, continuidade do sujeito. |
71
- | **Training package** | Formato pronto para treinamento através de adaptadores (`diffusers-lora`, `generic-image-caption`). A mesma informação, em formato diferente. |
72
- | **Eval scorecard** | Avaliação de aprovação/reprovação para cada tarefa, com base na avaliação das saídas geradas. |
73
- | **Implementation pack** | Exemplos de prompts, falhas conhecidas, testes de continuidade e diretrizes para reintrodução. |
89
+ | **Snapshot** | Seleção de registros congelados com impressão digital da configuração. Cada inclusão tem uma razão explícita. |
90
+ | **Split** | Partição de treinamento/validação/teste onde as famílias de assuntos nunca cruzam os limites. |
91
+ | **Export package** | Conjunto de dados autônomo: manifesto, metadados, imagens, divisões, cartão do conjunto de dados, somas de verificação. |
92
+ | **Eval pack** | Tarefas de teste com reconhecimento do cânone: cobertura da faixa, desvio proibido, âncora/ouro, continuidade do assunto. |
93
+ | **Training package** | Layout pronto para o treinador por meio de adaptadores (`diffusers-lora`, `generic-image-caption`). A mesma verdade, formato diferente. |
94
+ | **Eval scorecard** | Resultado de aprovação/reprovação por tarefa a partir da pontuação das saídas geradas em relação aos pacotes de avaliação. |
95
+ | **Implementation pack** | Exemplos de prompts, falhas conhecidas, testes de continuidade e orientação para reintrodução. |
74
96
 
75
- A área de trabalho de produção adiciona:
97
+ A estação de trabalho de produção adiciona:
76
98
 
77
- | Interface | O que ela faz |
99
+ | Superfície | O que faz |
78
100
  |---------|-------------|
79
- | **Compiled brief** | Geração determinística a partir do perfil do fluxo de trabalho + "verdade" do projeto. |
80
- | **Run** | Artefato de execução congelado: instrução + sementes + resultados do ComfyUI + manifesto. |
81
- | **Critique** | Avaliação estruturada e multidimensional dos resultados em relação ao padrão. |
82
- | **Batch** | Produção coordenada em vários canais (planilhas de expressões, painéis de ambiente, pacotes de silhuetas). |
83
- | **Selection** | Artefato de decisão criativa: quais resultados foram escolhidos, por quê e de onde vieram. |
84
- | **Re-ingest** | Os resultados selecionados são retornados como registros candidatos com total rastreabilidade da geração. |
101
+ | **Compiled brief** | Instrução de geração determinística a partir do perfil do fluxo de trabalho + verdade do projeto. |
102
+ | **Run** | Artefato de execução congelado: resumo + sementes + saídas do ComfyUI + manifesto. |
103
+ | **Critique** | Avaliação estruturada multidimensional das saídas da execução em relação ao cânone. |
104
+ | **Batch** | Produção coordenada multislot (folhas de expressão, painéis de ambiente, pacotes de silhueta). |
105
+ | **Selection** | Artefato de decisão criativa: quais saídas foram escolhidas, por quê e de onde vieram. |
106
+ | **Re-ingest** | As saídas selecionadas retornam como registros candidatos com toda a proveniência da geração. |
85
107
 
86
108
  ## Por que isso existe
87
109
 
88
- Os dados de treinamento são o recurso mais valioso em qualquer pipeline de IA visual. No entanto, a maioria dos dados de treinamento é apenas uma pasta de imagens sem histórico, sem rastreamento de avaliação e sem conexão com as regras de estilo que deveria seguir.
110
+ Os dados de treinamento são o artefato de maior impacto em qualquer pipeline de IA visual. Mas, na maioria das vezes, os dados de treinamento são apenas uma pasta de imagens sem histórico, sem rastreamento de julgamento e sem conexão com as regras de estilo que deveriam ser seguidas.
111
+
112
+ O Style Dataset Lab torna a conexão explícita. Sua constituição define as regras. Seu rubrica define as dimensões de pontuação. Seus registros de curadoria registram o julgamento. Sua vinculação do cânone prova a conexão. E seu conjunto de dados carrega tudo isso para frente como uma verdade estruturada, pesquisável e reproduzível.
113
+
114
+ O resultado prático: quando seu LoRA se desvia, você pode perguntar *por quê*. Quando sua próxima rodada de treinamento precisar de melhores dados, você saberá exatamente quais registros estão próximos do ideal e qual regra única eles não cumpriram. Quando um novo membro da equipe perguntar qual é a linguagem visual do projeto, a resposta não será uma placa Figma — será uma constituição pesquisável com 1.182 exemplos graduados.
115
+
116
+ ## Comprovado em produção
117
+
118
+ Este não é um fluxo de trabalho de demonstração. Duas LoRAs reais foram processadas integralmente através dele — o mesmo ciclo de criação → curadoria → treinamento → lançamento, em extremos opostos do espectro da curadoria.
89
119
 
90
- O Style Dataset Lab torna essa conexão explícita. Sua estrutura define as regras. Sua rubrica define as dimensões de avaliação. Seus registros de curadoria documentam a avaliação. Seu cânone vinculante prova a conexão. E seu conjunto de dados carrega tudo isso como uma verdade estruturada, pesquisável e reproduzível.
120
+ - **[Tallow Fen](handbook/case-study-tallow-fen/)** (design de criaturas) — um bestiário criado do zero, com aproximadamente **34% de aprovação** em 293 registros selecionados (169 rejeitados — a triagem é rigorosa). Lançado `tallow_fen_style_v3.safetensors` @ 1.5 no `qwen-image`.
121
+ - **[Rustline](handbook/case-study-rustline/)** (design de conceito) — um conjunto denso e pré-definido, com aproximadamente **96% de aprovação** em 180 registros. Lançado `rustline_v3ckpt_1500.safetensors` @ 1.0 no `qwen-image`, reutilizado posteriormente por um segundo projeto.
91
122
 
92
- O resultado prático: quando seu LoRA se desvia, você pode perguntar *por quê*. Quando sua próxima rodada de treinamento precisar de melhores dados, você saberá exatamente quais registros estão próximos do ideal e qual regra específica eles não cumpriram. Quando um novo membro da equipe perguntar qual é a linguagem visual do projeto, a resposta não é um quadro do Figma – é uma estrutura pesquisável com 1.182 exemplos classificados.
123
+ O mesmo fluxo de trabalho, dois perfis de produção: a triagem da curadoria é real (rejeita rigorosamente temas abertos) e uma abordagem disciplinada na criação resulta em alta aceitação.
93
124
 
94
125
  ## Cinco domínios, regras reais
95
126
 
96
- Não são modelos genéricos. Cada domínio é fornecido com regras de estrutura de produção, definições de categorias, rubricas de avaliação e vocabulário específico.
127
+ Não são apenas modelos de exemplo. Cada domínio é fornecido com regras de constituição de nível de produção, definições de faixa, rubricas de pontuação e vocabulário de grupo.
97
128
 
98
- | Domínio | Aspectos | O que é avaliado. |
129
+ | Domínio | Faixas | O que é avaliado |
99
130
  |--------|-------|-----------------|
100
- | **game-art** | personagem, ambiente, acessório, interface do usuário, nave, interior, equipamento | Silhueta em escala de jogabilidade, identificação de facção, desgaste e envelhecimento. |
101
- | **character-design** | retrato, corpo inteiro, vista de 360 graus, folha de expressões, pose de ação | Proporções, lógica de figurino, personalidade, clareza de gestos. |
102
- | **creature-design** | conceito, ortográfico, estudo de detalhes, ação, referência de escala, habitat | Anatomia, lógica evolutiva, distinção de silhueta. |
103
- | **architecture** | exterior, interior, paisagem urbana, detalhe estrutural, ruína, paisagem | Estrutura, consistência de materiais, perspectiva, coerência de época. |
104
- | **vehicle-mech** | exterior, cockpit, componente, esquema, folha de silhuetas, variação de dano | Lógica mecânica, linguagem de design funcional, pontos de acesso, descrição de danos. |
131
+ | **game-art** | personagem, ambiente, adereço, interface do usuário, nave, interior, equipamento | Silhueta na escala de jogabilidade, leitura da facção, desgaste e envelhecimento |
132
+ | **character-design** | retrato, corpo inteiro, rotação, folha de expressão, pose de ação | Proporções, lógica do traje, personalidade, clareza dos gestos |
133
+ | **creature-design** | conceito, ortográfico, estudo de detalhes, ação, referência de escala, habitat | Anatomia, lógica evolutiva, distinção da silhueta |
134
+ | **architecture** | exterior, interior, paisagem urbana, detalhe estrutural, ruína, paisagem | Estrutura, consistência do material, perspectiva, coerência de época |
135
+ | **vehicle-mech** | exterior, cabine, componente, esquema, folha de silhueta, variante de dano | Lógica mecânica, linguagem de design, pontos de acesso, narrativa de danos |
105
136
 
106
137
  ## Estrutura do projeto
107
138
 
108
- Cada projeto é autônomo. Cinco arquivos de configuração JSON definem as regras; o resto é apenas dados.
139
+ Cada projeto é autocontido. Cinco arquivos de configuração JSON definem as regras; tudo o mais são dados.
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
- ## Propriedades de confiabilidade
161
+ ## Propriedades de confiança
131
162
 
132
- Essas propriedades não são apenas desejáveis; elas são aplicadas.
163
+ Estas não são apenas aspirações. Elas são aplicadas.
133
164
 
134
- - **Os snapshots são imutáveis.** A impressão digital de configuração (SHA-256) prova que nada foi alterado.
135
- - **As divisões evitam vazamentos.** As famílias de elementos (por identidade, linhagem ou sufixo de ID) nunca ultrapassam as fronteiras das partições.
136
- - **Os manifestos são contratos fixos.** Hash de exportação + impressão digital de configuração. Se algo mudar, crie um novo.
137
- - **Os adaptadores não podem alterar a verdade.** Formato diferente, mesmos registros. Sem adições, sem remoções, sem reclassificações.
138
- - **As saídas geradas são submetidas à revisão.** Sem atalhos. Curadoria e vinculação como tudo o mais.
165
+ - **Os instantâneos são imutáveis.** A impressão digital da configuração (SHA-256) comprova que nada foi alterado.
166
+ - **As divisões evitam vazamentos.** As famílias de temas (por identidade, linhagem ou sufixo de ID) nunca cruzam os limites das partições.
167
+ - **Os manifestos são contratos fixos.** Exporta o hash + impressão digital da configuração. Se algo mudar, crie um novo.
168
+ - **As execuções fixam seu grafo exato.** Cada geração registra `comfy_workflow_sha` + hashes do conteúdo do modelo/LoRA + política de semente, para que uma série possa ser reproduzida byte a byte — idêntica nos executores JS e Python. O hash do modelo é opcional (`--hash-models`) e nunca é fabricado.
169
+ - **Nenhum modelo verifica seu próprio resultado.** As avaliações registram `judged_by_model` e `generator_model`; um aviso é exibido se eles forem o mesmo modelo.
170
+ - **Os adaptadores não podem alterar a verdade.** Layout diferente, os mesmos registros. Sem adições, sem remoções, sem reclassificação.
171
+ - **As saídas geradas são reintroduzidas através da revisão.** Sem desvio. Curadoria e vinculação como em tudo o mais.
139
172
 
140
173
  ## Star Freight
141
174
 
142
- O repositório inclui um exemplo completo e funcional: 1.182 registros, 5 facções, 7 caminhos, 24 regras constitucionais, 892 ativos aprovados e 2 perfis de treinamento. Um cânone visual de RPG de ficção científica, totalmente organizado.
175
+ O repositório inclui um exemplo completo e funcional: 1.182 registros, 5 facções, 7 rotas, 24 regras de constituição, 892 ativos aprovados, 2 perfis de treinamento. Um cânone visual de RPG de ficção científica sombrio, totalmente selecionado.
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
- ## Formatos compatíveis
185
+ ## Formatos downstream
153
186
 
154
- O projeto `sdlab` é o proprietário do conjunto de dados. A conversão de formatos é gerenciada pelo [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e outros. O `repo-dataset` é responsável pela renderização; ele nunca decide a inclusão de dados.
187
+ `sdlab` é o proprietário do conjunto de dados. A conversão de formato é tratada por [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset): TRL, LLaVA, Qwen2-VL, JSONL, Parquet e muito mais. `repo-dataset` renderiza; nunca decide a inclusão.
155
188
 
156
189
  ## Instalação
157
190
 
@@ -159,11 +192,11 @@ O projeto `sdlab` é o proprietário do conjunto de dados. A conversão de forma
159
192
  npm install -g @mcptoolshop/style-dataset-lab
160
193
  ```
161
194
 
162
- Requer Node.js 20 ou superior e o [ComfyUI](https://github.com/comfyanonymous/ComfyUI) instalado localmente no endereço localhost:8188 para a geração.
195
+ Requer Node.js 20+ e [ComfyUI](https://github.com/comfyanonymous/ComfyUI) no localhost:8188 para geração.
163
196
 
164
197
  ### Experimente sem o ComfyUI
165
198
 
166
- Você pode explorar toda a interface de geração — inspeção, curadoria, instantâneo, divisão, exportação — usando o projeto Star Freight incluso, sem instalar o ComfyUI ou baixar nenhum arquivo de peso do SDXL.
199
+ Você pode explorar toda a funcionalidade não relacionada à geração — inspeção, curadoria, snapshot, divisão, exportação — usando o projeto Star Freight incluído, sem instalar o ComfyUI ou baixar quaisquer pesos 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
- O comando `sdlab project doctor` valida todas as configurações do projeto (constituição, caminhos, critérios, terminologia) e informa a elegibilidade sem acessar a GPU. Qualquer comando que modifique o estado gerado aceita a opção `--dry-run` para visualizar o efeito primeiro.
212
+ `sdlab project doctor` valida cada configuração de projeto (constituição, rotas, rubrica, terminologia) e relata a elegibilidade sem tocar na GPU. Qualquer comando que altere o estado gerado aceita `--dry-run` para visualizar o efeito primeiro.
180
213
 
181
- Se você esquecer `--project`, a interface de linha de comando (CLI) volta para o primeiro projeto que encontra em `projects/` e exibe um aviso — use `--project` explicitamente para silenciá-lo.
214
+ Se você esquecer `--project`, a CLI voltará ao primeiro projeto que encontrar em `projects/` e imprimirá um aviso — passe `--project` explicitamente para silenciá-lo.
182
215
 
183
216
  ### Retomando uma execução interrompida
184
217
 
185
- Execuções longas de geração podem ser retomadas sem a necessidade de refazer o trabalho já concluído:
218
+ Execuções de geração longas podem ser retomadas sem refazer o trabalho concluído:
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
- Ambos os comandos funcionam porque cada slot escreve sua entrada de manifesto de forma atômica ao finalizar — um erro durante a execução nunca corrompe o estado parcial.
230
+ Ambos os comandos funcionam porque cada slot grava sua entrada de manifesto atomicamente ao terminar — uma falha no meio da execução nunca corrompe o estado parcial.
198
231
 
199
232
  ## Solução de problemas
200
233
 
201
234
  Modos de falha comuns e soluções:
202
235
 
203
- **`ECONNREFUSED 127.0.0.1:8188` em qualquer comando `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
236
+ **`ECONNREFUSED 127.0.0.1:8188` em qualquer `sdlab generate` / `sdlab run generate` / `sdlab batch generate`**
204
237
  O ComfyUI não está em execução. Inicie o ComfyUI (`python main.py --listen 127.0.0.1 --port 8188`) e confirme com `curl http://127.0.0.1:8188/system_stats`. Para apontar para um host/porta diferente, defina `COMFY_URL=http://host:port`.
205
238
 
206
239
  **`missing checkpoint` / `LoRA weight not found`**
207
- O perfil do seu fluxo de trabalho nomeia um arquivo de modelo que não está na pasta `models/checkpoints/` ou `models/loras/` do ComfyUI. Abra `projects/<projeto>/workflows/profiles/<perfil>.json`, localize o campo `checkpoint` ou `lora` e, em seguida, baixe o arquivo de peso referenciado ou substitua-o por um que você já tenha. Execute novamente `sdlab project doctor --project <projeto>` para confirmar a correção.
240
+ O perfil de fluxo de trabalho especifica um arquivo de modelo que não está na pasta `models/checkpoints/` ou `models/loras/` do ComfyUI. Abra `projects/<project>/workflows/profiles/<profile>.json`, localize o campo `checkpoint` ou `lora` e, ou baixe o peso referenciado ou substitua-o por um que você já tenha. Execute novamente `sdlab project doctor --project <project>` para confirmar a correção.
208
241
 
209
- **Erros do `sdlab project doctor`**
210
- O Doctor retorna códigos de erro estruturados. Alguns comuns:
242
+ **Erros de `sdlab project doctor`**
243
+ Doctor retorna códigos de erro estruturados. Alguns comuns:
211
244
  - `E_PROJECT_NOT_FOUND` — o diretório do projeto não existe em `projects/`. Verifique a ortografia.
212
- - `E_CONFIG_INVALID` — um dos cinco arquivos de configuração JSON falhou na validação do esquema. O campo `hint` indica qual arquivo e campo estão incorretos.
213
- - `E_RECORD_DRIFT` — a impressão digital de configuração de um registro não corresponde mais à sua origem. Reavalie ou redefina conforme sugerido na dica.
245
+ - `E_CONFIG_INVALID` — um dos cinco arquivos de configuração JSON falhou na validação do esquema. O campo `hint` indica o arquivo e o campo com problemas.
246
+ - `E_RECORD_DRIFT` — a impressão digital da configuração de um registro não corresponde mais à sua fonte. Reavalie ou redefina conforme sugerido no aviso.
214
247
 
215
248
  **`No --project specified, falling back to <name>`**
216
- Um aviso leve. Use `--project <nome>` explicitamente para selecionar o projeto correto e silenciar o aviso.
249
+ Um aviso leve. Passe `--project <name>` explicitamente para selecionar o projeto correto e silenciar o aviso.
217
250
 
218
- **Problemas relacionados à renderização / Falta de memória na VRAM**
219
- Consulte o arquivo `docs/internal/HANDOFF.md` para obter informações sobre o ajuste fino da remoção de ruído (denoise). Em resumo: diminua a intensidade da remoção de ruído, reduza o tamanho do lote ou utilize um modelo (checkpoint) menor no seu perfil de trabalho.
251
+ **Problemas de VRAM / "Painterly" (estilo pictórico) / falta de memória**
252
+ Consulte `docs/internal/HANDOFF.md` para obter as notas sobre o ajuste do ruído no estilo pictórico. Em resumo: diminua a intensidade do ruído, reduza o tamanho do lote ou altere para um checkpoint menor em seu perfil de fluxo de trabalho.
220
253
 
221
- **Relatando erros**
222
- Registre um problema em https://github.com/mcp-tool-shop-org/style-dataset-lab/issues, incluindo a versão do sdlab (`sdlab --version`), a versão do Node (`node -v`), o comando completo e a saída de erro formatada. Um modelo de relatório de erro preenche automaticamente os campos.
254
+ **Relatando bugs**
255
+ Crie uma solicitação em https://github.com/mcp-tool-shop-org/style-dataset-lab/issues com sua versão do sdlab (`sdlab --version`), versão do Node (`node -v`), o comando completo e a saída de erro estruturada. Um modelo de relatório de bug preenche os campos automaticamente.
223
256
 
224
257
  ## Segurança
225
258
 
226
- Funciona apenas localmente. Não há coleta de dados de uso, análises ou requisições externas. As imagens permanecem na sua GPU e no seu sistema de arquivos.
259
+ Apenas local. Sem telemetria, sem análises, sem solicitações externas. As imagens permanecem em sua GPU e sistema de arquivos.
227
260
 
228
261
  ## Licença
229
262
 
@@ -231,4 +264,4 @@ MIT
231
264
 
232
265
  ---
233
266
 
234
- Criado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a
267
+ Criado por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
package/README.zh.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
- Style Dataset Lab 将您关于艺术风格的描述与实际用于训练的数据集联系起来。您定义一套规范,包括轮廓规则、调色板限制、材质语言,以及对您的项目而言重要的任何内容。流水线生成候选作品,根据这些规则对其进行评分,并将通过的成果打包成可重复的数据集,其中每个记录都解释了它被包含的原因。
18
+ “风格数据集实验室”将你记录下来的关于艺术风格的内容与你实际用于训练的数据集联系起来,然后贯穿整个生产过程,形成一个闭环。你可以定义一套规范——轮廓规则、调色板约束、材质语言,或者对你的项目有意义的任何内容。流水线会生成候选作品,根据这些规则对其进行评分,并将批准的作品打包成可重现的数据集,其中每条记录都解释了它被包含的原因。
19
19
 
20
- 然后,生产工作台接管:从项目基础信息中提取生成指令,通过 ComfyUI 运行这些指令,评估输出结果,批量生成表情图和环境板,选择最佳结果,并将它们作为新的候选对象重新导入。循环完成:生成、选择、审查、改进。
20
+ 然后,生产工作台接管:从项目的真实数据中编译生成简报,通过 ComfyUI 运行它们,评估输出结果,批量生成表现图和环境板,选择最佳结果,并将这些结果作为新的候选作品重新导入。循环完成:生成、选择、审查、改进。
21
21
 
22
22
  ## 流水线
23
23
 
@@ -56,52 +56,83 @@ 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 *”命名空间会将你的项目的规范实体存储转换为三个投影,这些投影是训练和生产实际使用的——并且锁定那些不应发生变化的项目。
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/)和[双 LoRA 堆叠](handbook/two-lora-stacking/)。
82
+
83
+ ## 它产生的结果
84
+
85
+ 七个数据集工件和一个完整的生产工作台。每个工件都链接到其前身,因此你可以追溯任何训练记录到批准它的规则。
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** | 冻结的执行文件:包含指令、种子、ComfyUI 输出和清单。 |
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
+ 这不是一个演示流水线。两个真实的风格 LoRA 都通过它完成了端到端的流程——相同的规范 → 策划 → 训练 → 发布循环,位于策划频谱的两端。
89
119
 
90
- Style Dataset Lab 明确地建立了这种联系。您的规范定义了规则。您的评分标准定义了评分维度。您的筛选记录记录了评估结果。您的规范证明了这种联系。您的数据集将所有这些信息以结构化、可查询、可重复的方式传递下去。
120
+ - **[Tallow Fen](handbook/case-study-tallow-fen/)**(生物设计)——一个从头开始构建的奇幻生物典籍规范,在 293 个策划记录中,大约有 **34% 的批准率**(169 个被拒绝——审核严格)。发布了 `tallow_fen_style_v3.safetensors`,权重为 1.5,用于 `qwen-image`。
121
+ - **[Rustline](handbook/case-study-rustline/)**(概念设计)——密集、预先构建的规范,在 180 个记录中,大约有 **96% 的批准率**。发布了 `rustline_v3ckpt_1500.safetensors`,权重为 1.0,用于 `qwen-image`,并在后续项目中被第二个项目重用。
91
122
 
92
- 实际结果:当您的 LoRA 出现偏差时,您可以询问*原因*。当您的下一个训练轮需要更好的数据时,您清楚地知道哪些记录是接近理想的,以及它们违反了哪个规则。当新团队成员询问项目的视觉语言是什么时,答案不是一个 Figma 板,而是一份包含 1182 个已评分示例的可搜索规范。
123
+ 相同的流水线,两种生产配置:策划审核是真实的(它会严格拒绝开放主题),并且严谨的规范可以产生很高的接受率。
93
124
 
94
125
  ## 五个领域,真实的规则
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** | 角色、环境、道具、用户界面、飞船、内部场景、设备 | 游戏中的轮廓、阵营特征、磨损和老化效果 |
132
+ | **character-design** | 肖像、全身图、旋转图、表情表、动作姿势 | 比例、服装逻辑、个性、手势清晰度 |
133
+ | **creature-design** | 概念图、正投影图、细节研究、动态效果、比例参考、栖息地 | 解剖结构、进化逻辑、轮廓区分 |
134
+ | **architecture** | 外部、内部、街景、结构细节、废墟、景观 | 结构、材质一致性、透视、时代背景的一致性 |
135
+ | **vehicle-mech** | 外部、驾驶舱、组件、示意图、轮廓图、损坏变体 | 机械逻辑、设计语言、访问点、损坏叙事 |
105
136
 
106
137
  ## 项目结构
107
138
 
@@ -129,17 +160,19 @@ projects/my-project/
129
160
 
130
161
  ## 信任属性
131
162
 
132
- 这些不是理想化的目标,而是强制执行的。
163
+ 这些不是理想化的,而是强制执行的。
133
164
 
134
- - **快照是不可变的。** 配置文件指纹(SHA-256)可以证明没有发生任何更改。
135
- - **分片可以防止数据泄露。** 按照身份、血统或 ID 后缀划分的主体类别永远不会跨越分区边界。
136
- - **清单是冻结的合同。** 导出哈希值 + 配置文件指纹。如果任何内容发生更改,请创建一个新的清单。
137
- - **适配器不能修改原始数据。** 不同的布局,相同的记录。不允许添加、删除或重新分类。
138
- - **生成的输出需要经过审核才能重新使用。** 不允许绕过。像其他内容一样,进行筛选和绑定。
165
+ - **快照是不可变的。** 配置指纹(SHA-256)证明没有任何更改。
166
+ - **分割可以防止数据泄露。** 主题组(按身份、血统或 ID 后缀划分)永远不会跨越分区边界。
167
+ - **清单是冻结的合同。** 导出哈希 + 配置指纹。如果发生任何更改,请创建一个新的。
168
+ - **运行会固定其确切的图。** 每次生成都会记录 `comfy_workflow_sha` + 模型/LoRA 内容哈希 + 种子策略,因此一个批次可以完全重现——在 JS 和 Python 运行器中都是相同的。模型哈希是可选的(`--hash-models`),并且绝不会被伪造。
169
+ - **没有模型会验证自己的输出。** 评估会记录 `judged_by_model` 和 `generator_model`;如果它们曾经是同一个模型,则会发出警告。
170
+ - **适配器不能改变真相。** 不同的布局,相同的数据。没有添加、删除或重新分类。
171
+ - **生成的输出通过审核后重新进入。** 没有绕过。像其他所有内容一样进行策划和绑定。
139
172
 
140
- ## Star Freight
173
+ ## 星际货运
141
174
 
142
- 该仓库包含一个完整的示例:1182 条记录,5 个派系,7 条路线,24 条宪法规则,892 个已批准的资源,2 个训练配置文件。这是一个充满科幻感的角色扮演游戏视觉素材库,经过完整的筛选。
175
+ 该仓库包含一个完整的可运行示例:1,182 条记录、5 个阵营、7 个通道、24 条宪法规则、892 个已批准的资源、2 个训练配置文件。这是一个粗犷的科幻 RPG 视觉规范,经过完全策划。
143
176
 
144
177
  ```bash
145
178
  git clone https://github.com/mcp-tool-shop-org/style-dataset-lab
@@ -151,7 +184,7 @@ sdlab split build --project star-freight # zero subject leakage
151
184
 
152
185
  ## 下游格式
153
186
 
154
- `sdlab` 拥有数据集。格式转换由 [`repo-dataset`](https://github.com/mcp-tool-shop-org/repo-dataset) 处理:支持 TRL、LLaVA、Qwen2-VL、JSONL、Parquet 等格式。`repo-dataset` 用于渲染,但不决定数据的包含与否。
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
- 需要 Node.js 20+ 以及安装在本地主机 8188 端口上的 [ComfyUI](https://github.com/comfyanonymous/ComfyUI) 才能进行生成。
195
+ 需要 Node.js 20+ 和本地主机上的 [ComfyUI](https://github.com/comfyanonymous/ComfyUI),地址为 8188,用于生成。
163
196
 
164
- ### 尝试不使用 ComfyUI
197
+ ### 在不使用 ComfyUI 的情况下试用
165
198
 
166
- 您可以使用捆绑的 Star Freight 项目,探索完整的非生成功能,例如检查、整理、快照、分割和导出,而无需安装 ComfyUI 或下载任何 SDXL 模型文件。
199
+ 您可以探索完整的非生成界面——检查、策划、快照、分割、导出——使用捆绑的星际货运项目,而无需安装 ComfyUI 或下载任何 SDXL 权重。
167
200
 
168
201
  ```bash
169
202
  # Scaffold a fresh project (no ComfyUI needed)
@@ -176,9 +209,9 @@ sdlab project doctor --project test
176
209
  sdlab snapshot create --dry-run --project star-freight
177
210
  ```
178
211
 
179
- `sdlab project doctor` 命令可以验证每个项目的配置(宪法、流程、评分标准、术语),并在不访问 GPU 的情况下报告资格。任何会修改生成状态的命令都支持 `--dry-run` 参数,以便在执行前预览效果。
212
+ `sdlab project doctor` 会验证每个项目配置(宪法、通道、评分标准、术语),并在不触及 GPU 的情况下报告资格。任何会更改生成状态的命令都接受 `--dry-run`,以便首先预览效果。
180
213
 
181
- 如果您忘记了 `--project` 参数,CLI 会自动选择 `projects/` 目录下找到的第一个项目,并打印一条警告。要强制指定项目,请明确使用 `--project` 参数。
214
+ 如果您忘记了 `--project`,CLI 将回退到在 `projects/` 下找到的第一个项目并打印警告——明确传递 `--project` 以使其停止发出警告。
182
215
 
183
216
  ### 恢复中断的运行
184
217
 
@@ -194,40 +227,40 @@ 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
- **`ECONNREFUSED 127.0.0.1:8188` 错误,出现在任何 `sdlab generate` / `sdlab run generate` / `sdlab batch generate` 命令中**
204
- 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`。
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
- 您的工作流程配置文件中指定了 ComfyUI 的 `models/checkpoints/` 或 `models/loras/` 文件夹中不存在的模型文件。打开 `projects/<project>/workflows/profiles/<profile>.json`,找到 `checkpoint` 或 `lora` 字段,然后要么下载指定的模型文件,要么将其替换为您已有的模型文件。重新运行 `sdlab project doctor --project <project>` 以确认修复。
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
242
  **`sdlab project doctor` 错误**
210
- Doctor 返回结构化的错误代码。常见的错误代码包括:
211
- - `E_PROJECT_NOT_FOUND`:项目目录不存在于 `projects/` 目录下。检查拼写。
212
- - `E_CONFIG_INVALID`:五个 JSON 配置文件之一未能通过模式验证。`hint` 字段会指出哪个文件和字段存在问题。
213
- - `E_RECORD_DRIFT`:记录的配置指纹与其来源不再匹配。根据提示进行重新整理或重新绑定。
243
+ Doctor 返回结构化的错误代码。常见的错误:
244
+ - `E_PROJECT_NOT_FOUND`——项目目录在 `projects/` 下不存在。检查拼写。
245
+ - `E_CONFIG_INVALID`——五个 JSON 配置文件中的一个未能通过模式验证。`hint` 字段指定了错误的 文件和字段。
246
+ - `E_RECORD_DRIFT`——记录的配置指纹不再与其来源匹配。如提示所述,重新策划或重新绑定。
214
247
 
215
- **`未指定 --project,将使用 <name> 作为默认项目`**
216
- 这是一个提示信息。为了选择正确的项目并消除此提示,请明确使用 `--project <name>` 参数。
248
+ **`No --project specified, falling back to <name>`**
249
+ 一个软警告。明确传递 `--project <name>` 以选择正确的项目并停止发出警告。
217
250
 
218
- **绘画风格 / 显存不足问题**
219
- 请参考 `docs/internal/HANDOFF.md` 中的关于绘画风格降噪的调整说明。 简而言之:降低降噪强度,减少批次大小,或者在工作流程配置文件中切换到较小的模型文件。
251
+ **绘画风格 / VRAM 内存不足问题**
252
+ 请参阅 `docs/internal/HANDOFF.md`,了解有关绘画风格降噪调整说明。简而言之:降低降噪强度、减少批处理大小或在工作流程配置文件中切换到较小的检查点。
220
253
 
221
254
  **报告错误**
222
- 请在 https://github.com/mcp-tool-shop-org/style-dataset-lab/issues 上提交问题,并提供您的 sdlab 版本(`sdlab --version`)、Node 版本(`node -v`)、完整的命令以及结构化的错误输出。 错误报告模板会预先填充字段。
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
- 仅在本地运行。没有遥测数据,没有分析,没有外部请求。图像保留在您的 GPU 和文件系统中。
259
+ 仅限本地使用。没有遥测、分析或外部请求。图像保留在您的 GPU 和文件系统中。
227
260
 
228
- ## 许可证
261
+ ## 许可协议
229
262
 
230
- MIT 许可证
263
+ MIT
231
264
 
232
265
  ---
233
266