Skip to content

Limites de Capacidade de Integração z.ai (Implementado vs Não Implementado Explicitamente) ​

Este documento só fala dos "limites" do z.ai nas Antigravity Tools, não "como conectar". Se você descobrir que certo recurso não entrou em vigor, primeiro compare aqui: é porque não foi ativado, não configurado, ou simplesmente não foi implementado.

O que você poderá fazer após concluir ​

  • Julgar se deve esperar z.ai: quais são "implementados", quais são "documentados explicitamente como não feitos"
  • Entender claramente quais endpoints z.ai afeta (e quais endpoints não são afetados absolutamente)
  • Ver evidência de código-fonte/documento para cada conclusão (com links de número de linha do GitHub), conveniente para você próprio revisar

Seu dilema atual ​

Você pode ter aberto o z.ai nas Antigravity Tools, mas ao usar encontrou esses confusões:

  • Por que algumas solicitações vão para z.ai, outras não vão absolutamente?
  • O endpoint MCP pode ser tratado como "Servidor MCP completo"?
  • Interruptores que você vê na UI, realmente correspondem a implementação real?

O que é integração z.ai (neste projeto)? ​

Integração z.ai nas Antigravity Tools é um "provedor upstream + extensão MCP" opcional. Só em condições específicas intercepta solicitações de protocolo Claude, e fornece proxy de MCP Search/Reader e um servidor Vision MCP integrado mínimo; não é uma solução de substituição completa de todos os protocolos/capacidades.

Lembre-se de uma frase

Você pode tratar z.ai como "provedor upstream opcional para solicitações Claude + um conjunto de endpoints MCP com interruptores", não trate como "trazer todas as capacidades do z.ai completamente".

Implementado: estável e disponível (baseado em código-fonte) ​

1) Apenas protocolo Claude vai para z.ai (/v1/messages + /v1/messages/count_tokens) ​

Encaminhamento upstream Anthropic do z.ai só acontece no ramo z.ai do handler Claude:

  • POST /v1/messages: quando use_zai=true chama forward_anthropic_json(...) para encaminhar solicitação JSON para endpoint compatível Anthropic do z.ai
  • POST /v1/messages/count_tokens: quando z.ai ativado também encaminha; caso contrário retorna placeholder {input_tokens:0, output_tokens:0}

Evidência:

Como entender "resposta em streaming"?

forward_anthropic_json transmitirá corpo de resposta do upstream de volta ao cliente via bytes_stream(), não analisa SSE (ver construção de corpo de Response em providers/zai_anthropic.rs).

2) "Significado real" do modo de escalonamento (dispatch_mode) ​

dispatch_mode decide se /v1/messages vai para z.ai:

dispatch_modeO que aconteceEvidência
offNunca usar z.aisrc-tauri/src/proxy/config.rs#L20-L37 + src-tauri/src/proxy/handlers/claude.rs#L282-L314
exclusiveTodas as solicitações Claude vão para z.aisrc-tauri/src/proxy/handlers/claude.rs#L285-L314
fallbackSó vai para z.ai quando pool Google indisponível (0 contas ou "nenhuma conta disponível")src-tauri/src/proxy/handlers/claude.rs#L288-L305
pooledTrata z.ai como "1 slot extra" participando de polling (não garante necessariamente acerto)src-tauri/src/proxy/handlers/claude.rs#L306-L312

Mal-entendido comum de pooled

pooled não é "z.ai + pool de contas Google ambos usados, e distribuição estável por peso". No código escreveu explicitamente "no strict guarantees", essencialmente é um slot de polling (só vai para z.ai quando slot == 0).

3) Mapeamento de modelo: como nomes de modelo Claude se tornam glm-* do z.ai? ​

Antes de encaminhar para z.ai, se o corpo da solicitação tiver campo model, será reescrito:

  1. Correspondência exata de proxy.zai.model_mapping (simultaneamente suporta string original e chave lower-case)
  2. Prefixo zai:<model>: remove zai: diretamente e usa
  3. glm-*: mantém inalterado
  4. Não claude-*: mantém inalterado
  5. claude-* e contém opus/haiku: mapeia para proxy.zai.models.opus/haiku; caso contrário padrão sonnet

Evidência: src-tauri/src/proxy/providers/zai_anthropic.rs, src-tauri/src/proxy/providers/zai_anthropic.rs

4) Estratégia de segurança de Header ao encaminhar (evitando vazar chave de proxy local) ​

Encaminhamento upstream z.ai não "traz todos os Headers como estão", mas fez duas camadas de defesa:

  • Só libera pequena parte de Headers (por exemplo content-type, accept, anthropic-version, user-agent)
  • Injeta chave de API do z.ai no upstream (prioriza manter método de autenticação usado pelo cliente: x-api-key ou Authorization: Bearer ...)

Evidência:

Implementado: MCP (proxy Search/Reader + Vision integrado) ​

1) MCP Search/Reader: proxy reverso para endpoint MCP do z.ai ​

Endpoint local e endereço upstream são codificados:

Endpoint localEndereço upstreamInterruptorEvidência
/mcp/web_search_prime/mcphttps://api.z.ai/api/mcp/web_search_prime/mcpproxy.zai.mcp.web_search_enabledsrc-tauri/src/proxy/handlers/mcp.rs#L115-L135
/mcp/web_reader/mcphttps://api.z.ai/api/mcp/web_reader/mcpproxy.zai.mcp.web_reader_enabledsrc-tauri/src/proxy/handlers/mcp.rs#L137-L157

404 não é "problema de rede"

Enquanto proxy.zai.mcp.enabled=false, ou correspondente web_search_enabled/web_reader_enabled=false, estes endpoints retornarão diretamente 404.

Evidência:

2) Vision MCP: servidor integrado mínimo "Streamable HTTP MCP" ​

Vision MCP não é proxy, é implementação integrada local:

  • Endpoint: /mcp/zai-mcp-server/mcp
  • POST suporta: initialize, tools/list, tools/call
  • GET retorna SSE keepalive (requer sessão já inicializada)
  • DELETE termina sessão

Evidência:

3) Conjunto de ferramentas do Vision MCP (8) e limites de tamanho de arquivo ​

Lista de ferramentas vem de tool_specs():

  • ui_to_artifact
  • extract_text_from_screenshot
  • diagnose_error_screenshot
  • understand_technical_diagram
  • analyze_data_visualization
  • ui_diff_check
  • analyze_image
  • analyze_video

Evidência: src-tauri/src/proxy/zai_vision_tools.rs, docs/zai/vision-mcp.md

Arquivos locais serão lidos e codificados em data:<mime>;base64,..., com limites rígidos simultaneamente:

  • Limite de imagem 5 MB (image_source_to_content(..., 5))
  • Limite de vídeo 8 MB (video_source_to_content(..., 8))

Evidência: src-tauri/src/proxy/zai_vision_tools.rs

Explicitamente não implementado / não espere (baseado em declaração de documento e detalhes de implementação) ​

1) Monitoramento de uso/orçamento z.ai (usage/budget) não implementado ​

docs/zai/implementation.md escreveu explicitamente "not implemented yet". Isso significa:

  • Você não pode esperar que as Antigravity Tools forneçam consulta/alerta de uso/orçamento do z.ai
  • Governança de cota (Quota Protection) também não lerá automaticamente dados de orçamento/uso do z.ai

Evidência: docs/zai/implementation.md

2) Vision MCP não é Servidor MCP completo ​

O Vision MCP atualmente é posicionado como "implementação mínima suficiente para chamada de ferramenta": prompts/resources, resumibilidade, saída de ferramenta em streaming etc. ainda não feitos.

Evidência: docs/zai/vision-mcp.md, docs/zai/implementation.md

3) /v1/models/claude não refletirá lista real de modelos do z.ai ​

Este endpoint retorna lista de modelos do mapeamento integrado e mapeamento personalizado (get_all_dynamic_models), não vai solicitar /v1/models do upstream z.ai.

Evidência:

Consulta rápida de campos de configuração (relacionados a z.ai) ​

Configuração z.ai está em ProxyConfig.zai, contendo estes campos:

  • enabled / base_url / api_key
  • dispatch_mode (off/exclusive/pooled/fallback)
  • model_mapping (correspondência exata de substituição)
  • models.{opus,sonnet,haiku} (mapeamento padrão de família Claude)
  • mcp.{enabled,web_search_enabled,web_reader_enabled,vision_enabled}

Valores padrão (base_url / modelos padrão) também estão no mesmo arquivo:

  • base_url = "https://api.z.ai/api/anthropic"
  • opus/sonnet = "glm-4.7"
  • haiku = "glm-4.5-air"

Evidência: src-tauri/src/proxy/config.rs, src-tauri/src/proxy/config.rs


Resumo desta seção ​

  • z.ai atualmente só intercepta protocolo Claude (/v1/messages + count_tokens), outros endpoints de protocolo não são "automaticamente ir para z.ai"
  • MCP Search/Reader é proxy; Vision MCP é implementação mínima integrada, não Servidor MCP completo
  • Lista de modelos de /v1/models/claude vem de mapeamento local, não representa modelos reais do upstream

Próxima seção ​

Na próxima seção, aprenderemos Versões.


Apêndice: Referências de código-fonte ​

Clique para expandir e ver localizações do código-fonte

Atualizado em: 2026-01-23

FuncionalidadeCaminho do arquivoNúmero da linha
Escopo de integração z.ai (protocolo Claude + MCP + Vision MCP)docs/zai/implementation.md12-17
Modo de escalonamento z.ai e valores padrão de modelosrc-tauri/src/proxy/config.rs20-116
base_url z.ai padrão / modelo padrãosrc-tauri/src/proxy/config.rs265-279
Lógica de seleção se /v1/messages vai para z.aisrc-tauri/src/proxy/handlers/claude.rs256-374
Encaminhamento z.ai de /v1/messages/count_tokens e retorno de placeholdersrc-tauri/src/proxy/handlers/claude.rs1186-1209
Encaminhamento upstream Anthropic do z.ai (encaminhamento JSON + retorno em streaming de resposta)src-tauri/src/proxy/providers/zai_anthropic.rs133-219
Regras de mapeamento de modelo z.ai (map_model_for_zai)src-tauri/src/proxy/providers/zai_anthropic.rs13-37
Lista branca de Header + injetar auth z.aisrc-tauri/src/proxy/providers/zai_anthropic.rs70-110
Proxy MCP Search/Reader e interruptoressrc-tauri/src/proxy/handlers/mcp.rs45-157
---------
Posicionamento de implementação mínima do Vision MCP (não Servidor MCP completo)docs/zai/vision-mcp.md17-37
Lista de ferramentas Vision e limites (tool_specs + tamanho de arquivo + stream=false)src-tauri/src/proxy/zai_vision_tools.rs57-270
Origem de lista de modelos /v1/models/claude (mapeamento local, não consulta upstream)src-tauri/src/proxy/common/model_mapping.rs84-132
Monitoramento de uso/orçamento não implementado (declaração de documento)docs/zai/implementation.md194-198