Files
msd-core/docs/pt-BR/how-to/configure-model-profiles.md
Tom Boucher 1adf6d2245 fix(#3620): point the docs at files that actually exist (#3658)
* fix(3620): point the docs at files that actually exist

docproof found 34 stale references; the reporter hand-read all 34 and reported the 8 that
are real, explaining why the other 26 are deliberate (files the documents themselves label
legacy or "superseded by", and one pre-Diataxis link label whose target still resolves).
Those 26 are left alone — re-touching them would contradict the issue's own analysis.

Every claim was re-verified against git ls-files at HEAD before editing.

docs/INVENTORY.md said its roster is anchored by six drift-control tests. Five are gone
(commands-doc-parity, agents-doc-parity, cli-modules-doc-parity, hooks-doc-parity in
5d8a8c4d; command-count-sync in fbf30792), so the sentence now names the one that exists.
Whether one test is sufficient coverage is a maintainer question the issue explicitly
declined to answer, so no new drift tests are proposed here.

The four translations were a revision further behind, each naming a seventh test deleted in
ae8bb707 that the English file had already dropped. All four now match.

Renamed targets corrected in CONTEXT.md, VERSIONING.md, docs/CONFIGURATION.md and the
update workflow. The new test names carry no issue-NNN- prefix, which is what
lint-regression-test-names requires, so they are the correct targets.

docs/TESTING-SUITES.md is the one that could cost somebody time: it INSTRUCTED contributors
to add an acknowledgment to the legacy drift-ack file, which CONTRIBUTING.md says to never
use. Rewritten from the real workflow — per-PR fragments under the drift-acks directory,
and a spent base-side ack is re-armed by rewording that fragment's reason in place, never
by adding a duplicate, since two sources naming one path is a hard error.

docs/skills/discovery-contract.md's heading named a query module deleted in 11918dcc. The
section was REMOVED rather than retargeted: its documented behavior (skip the deprecated
root) is not what the surviving code does — skill-manifest includes that root marked
deprecated:true — so retargeting would have documented something false.

Found and fixed inline, same class: VERSIONING.md described an SDK bundling step the
release workflow does not have (zero such mentions in that file); CONFIGURATION.md and four
translations named a dead model-catalog triple collapsed by ADR-457.

Dead config removed: the changeset lint's user-facing prefix list still carried two retired
sdk entries. git ls-files -- 'sdk/*' returns nothing. No test pins that array.

Left deliberately: the comment explaining the retired catalog path, the install regression
test that reconstructs the old broken layout to prove it fails, and the generated
test-timings cache. Each is a legitimate mention of a dead path, not drift.

Note lint-removed-but-needed cannot catch this class: it diffs baseRef...HEAD, so it only
sees files deleted in the change under review. These were orphaned by PRs that predate the
lint. A repo-wide existence audit would need a suppression mechanism for the 26 deliberate
mentions above; that is a feature, not part of this fix.

Fixes #3620

* chore(3620): backfill changeset PR number (#3658)

---------

Co-authored-by: sim <sim@local>
2026-08-19 01:54:01 -04:00

8.4 KiB

Como configurar perfis de modelo

Escolha a estratégia de nível de modelo adequada para o seu projeto e ajuste agentes individuais ou tipos de fase inteiros sem precisar escrever um bloco de substituição extenso. Este guia começa pelo controle mais simples e avança até o roteamento dinâmico.


Os quatro perfis (mais adaptive e inherit)

Defina model_profile em .planning/config.json ou via /gsd-config --profile <name>:

Perfil Planejador Executor Pesquisadores Verificador Usar quando
quality Opus Opus Opus Sonnet Trabalho de qualidade para produção onde o custo é secundário
balanced Opus Sonnet Sonnet Sonnet Desenvolvimento normal — o padrão
budget Sonnet Sonnet Haiku Haiku Prototipagem rápida, contextos com restrições de custo
adaptive Opus Sonnet Sonnet Sonnet Resolve da mesma forma que os outros níveis em perfis cientes de runtime; use ao alternar entre runtimes com frequência
inherit (modelo da sessão) (modelo da sessão) (modelo da sessão) (modelo da sessão) Provedores não-Anthropic (OpenRouter, modelos locais) — todos os agentes seguem o modelo atual da sessão

A tabela acima mostra um subconjunto representativo. Todos os 33 agentes incluídos possuem atribuições de nível explícitas por perfil em gsd-core/bin/shared/model-catalog.json. Para a tabela completa, consulte Perfis de Modelo na referência de configuração.

Troca rápida via comando:

/gsd-config --profile balanced   # Desenvolvimento normal
/gsd-config --profile budget     # Prototipagem ou fases de alto custo
/gsd-config --profile quality    # Lançamento em produção
/gsd-config --profile inherit    # OpenRouter, modelos locais

Ou edite .planning/config.json diretamente:

{
  "model_profile": "balanced"
}

Substituições por agente (model_overrides)

Se um único agente precisa de um nível diferente sem alterar o perfil inteiro, use model_overrides:

{
  "model_profile": "balanced",
  "model_overrides": {
    "gsd-executor": "opus",
    "gsd-codebase-mapper": "haiku"
  }
}

Valores válidos: opus, sonnet, haiku, inherit ou qualquer ID de modelo totalmente qualificado (ex.: "openai/o3", "google/gemini-2.5-pro").

model_overrides pode ser definido por projeto em .planning/config.json ou globalmente em ~/.gsd/defaults.json. Entradas por projeto têm precedência em conflitos; entradas globais sem conflito são preservadas.

Importante para Codex e OpenCode: Esses runtimes incorporam o modelo resolvido na configuração estática de cada agente no momento da instalação. Após editar model_overrides, execute novamente o instalador para que a alteração entre em vigor:

npx @opengsd/gsd-core@latest --codex --global   # ou --opencode, --kilo, etc.

Modelos por tipo de fase (models)

Se você quer dizer "Opus para planejamento, Sonnet para todo o resto" sem precisar aprender todos os 33 nomes de agentes, use o bloco models. Ele mapeia seis tipos de fase para aliases de nível:

{
  "model_profile": "balanced",
  "models": {
    "planning":      "opus",
    "discuss":       "opus",
    "research":      "sonnet",
    "execution":     "opus",
    "verification":  "sonnet",
    "completion":    "sonnet"
  }
}

Tipos de fase e seus agentes:

Tipo de fase Agentes cobertos
planning gsd-planner, gsd-roadmapper, gsd-pattern-mapper
research gsd-phase-researcher, gsd-project-researcher, gsd-research-synthesizer, gsd-codebase-mapper, gsd-ui-researcher
execution gsd-executor, gsd-debugger, gsd-doc-writer
verification gsd-verifier, gsd-plan-checker, gsd-integration-checker, gsd-nyquist-auditor, gsd-ui-checker, gsd-ui-auditor, gsd-doc-verifier, gsd-code-reviewer
discuss gsd-assumptions-analyzer
completion Reservado — nenhum subagente hoje; aceito pelo esquema para compatibilidade futura

O bloco models aceita apenas aliases de nível (opus, sonnet, haiku, inherit). Para um ID de modelo totalmente qualificado, use model_overrides por agente.

Combinando models com uma exceção por agente:

{
  "model_profile": "balanced",
  "models": {
    "research": "sonnet"
  },
  "model_overrides": {
    "gsd-codebase-mapper": "haiku"
  }
}

Todos os cinco agentes de pesquisa resolvem para sonnet exceto gsd-codebase-mapper, que está fixado em haiku.


Roteamento dinâmico — comece barato, escale em caso de falha

Se você quiser pagar pelos níveis mais baratos por padrão e só escalar quando um agente falhar em um controle de qualidade, habilite dynamic_routing:

{
  "dynamic_routing": {
    "enabled": true,
    "tier_models": {
      "light":    "haiku",
      "standard": "sonnet",
      "heavy":    "opus"
    },
    "escalate_on_failure": true,
    "max_escalations": 1
  }
}

Cada agente possui um nível padrão (light, standard ou heavy). Na primeira tentativa, o GSD escolhe tier_models[default_tier]. Se o orquestrador detectar uma falha suave (verificação inconclusiva, verificação de plano sinalizada, etc.), ele reinicia o agente um nível acima. max_escalations limita o total de novas tentativas.

Agentes que já estão em heavy não podem escalar mais.

Desativar a escalada mantendo a resolução dinâmica:

{
  "dynamic_routing": {
    "enabled": true,
    "escalate_on_failure": false
  }
}

Cada tentativa usa tier_models[default_tier] independentemente do resultado — útil quando você quer mapeamento explícito de nível para modelo sem o comportamento de escalada.

dynamic_routing está desabilitado por padrão. Omitir o bloco ou definir enabled: false preserva a resolução estática.


Usando o GSD em runtimes não-Anthropic

Se você instalou o GSD para Codex, OpenCode, Gemini CLI ou Kilo, o instalador já definiu resolve_model_ids: "omit" na sua configuração. Isso instrui o GSD a pular a resolução de IDs de modelo Anthropic e deixar o runtime escolher seu próprio modelo padrão. Nenhuma configuração manual é necessária para o caso básico.

Se você quiser modelos por nível no Codex:

{
  "runtime": "codex",
  "model_profile": "balanced"
}

O GSD resolve cada alias de nível para o modelo nativo do Codex e o esforço de raciocínio definido no mapa de nível do runtime.

Se você quiser IDs de modelo por agente em qualquer runtime não-Claude:

{
  "resolve_model_ids": "omit",
  "model_overrides": {
    "gsd-planner":   "o3",
    "gsd-executor":  "o4-mini",
    "gsd-debugger":  "o3"
  }
}

Para a referência completa de perfis cientes de runtime e a superfície model_policy (predefinições neutras em relação ao provedor adicionadas na v1.42), consulte Referência de configuração — Perfis de Modelo.


Precedência de resolução (maior para menor)

Quando múltiplas camadas se aplicam, o resolvedor escolhe a entrada de maior prioridade:

1. model_overrides[<agent>]           — por agente; IDs completos; exceção direcionada
2. dynamic_routing.tier_models[<tier>] — quando habilitado; escala em falha suave
3. models[<phase_type>]               — nível de fase grosseiro
4. model_profile (coluna por agente)  — estratégia global de nível
5. Padrão do runtime                  — quando nada mais se aplica

Escolhendo o controle certo

O que você quer Use
Uma estratégia de nível para todos os agentes model_profile
Ajuste grosseiro por fase ("Opus para planejamento") models.<phase_type>
Precisão por agente ("forçar Haiku no mapeador de base de código") model_overrides[<agent>]
Um ID de modelo totalmente qualificado para um agente específico model_overrides[<agent>]: "openai/gpt-5"
Começar barato, escalar apenas em falha dynamic_routing
Todos os agentes seguem o modelo da sessão (provedor não-Anthropic) model_profile: "inherit"

Relacionados