Skip to content

Límites de Capacidad de la Integración z.ai (Implementado vs. No Implementado Explícitamente)

Este documento solo cubre los "límites" de z.ai en Antigravity Tools, no "cómo conectar". Si descubres que alguna capacidad no funciona, primero verifica aquí: ¿es que no está activada, no configurada, o simplemente no está implementada?

Lo Que Podrás Hacer Después de Esta Lección

  • Determinar si algo se puede esperar de z.ai: qué es "implementado" y qué es "documentado explícitamente como no hecho"
  • Entender qué endpoints afecta z.ai (y cuáles endpoints no se ven afectados en absoluto)
  • Ver la evidencia del código fuente/documentación para cada conclusión (con enlaces a números de línea de GitHub), para que puedas verificarlo por ti mismo

Tu Situación Actual

Posiblemente ya hayas activado z.ai en Antigravity Tools, pero al usarlo te encuentras con estas dudas:

  • ¿Por qué algunas solicitudes pasan por z.ai y otras no pasan en absoluto?
  • ¿Pueden los endpoints MCP considerarse como "Servidor MCP completo"?
  • ¿Los interruptores visibles en la interfaz realmente corresponden a una implementación real?

Qué Es la Integración z.ai (en Este Proyecto)

Integración z.ai en Antigravity Tools es una "extensión provider upstream + MCP" opcional. Solo toma el control de solicitudes del protocolo Claude bajo condiciones específicas, proporciona proxy inverso MCP Search/Reader y un servidor MCP Vision integrado mínimo; no es una solución de reemplazo de protocolo completo y capacidades completas.

Recuerda en una frase

Puedes considerar z.ai como "un upstream opcional para solicitudes Claude + un conjunto de endpoints MCP activables", no como "traer todas las capacidades de z.ai completamente".

Implementado: Estable y Disponible (Basado en Código Fuente)

1) Solo el Protocolo Claude Pasa por z.ai (/v1/messages + /v1/messages/count_tokens)

El reenvío upstream Anthropic de z.ai solo ocurre en la rama z.ai del handler Claude:

  • POST /v1/messages: cuando use_zai=true, llama a forward_anthropic_json(...) para reenviar la solicitud JSON al endpoint compatible con Anthropic de z.ai
  • POST /v1/messages/count_tokens: también se reenvía cuando z.ai está activado; de lo contrario, devuelve un marcador de posición {input_tokens:0, output_tokens:0}

Evidencia:

¿Cómo entender "flujo de respuesta"?

forward_anthropic_json transmite el cuerpo de respuesta upstream al cliente como un flujo bytes_stream(), sin analizar SSE (ver la construcción del Response body en providers/zai_anthropic.rs).

2) El "Significado Real" del Modo de Distribución (dispatch_mode)

dispatch_mode determina si /v1/messages pasa por z.ai:

dispatch_modeQué OcurreEvidencia
offNunca usa z.aisrc-tauri/src/proxy/config.rs#L20-L37 + src-tauri/src/proxy/handlers/claude.rs#L282-L314
exclusiveTodas las solicitudes Claude pasan por z.aisrc-tauri/src/proxy/handlers/claude.rs#L285-L314
fallbackSolo pasa por z.ai cuando el grupo Google no está disponible (0 cuentas o "no hay cuentas disponibles")src-tauri/src/proxy/handlers/claude.rs#L288-L305
pooledTrata z.ai como "1 ranura adicional" para participar en el round-robin (no garantiza que siempre se elija)src-tauri/src/proxy/handlers/claude.rs#L306-L312

Malentendido común de pooled

pooled no es "usar tanto z.ai como el grupo de cuentas Google, y distribuir de manera estable según peso". El código escribe explícitamente "no strict guarantees", esencialmente es una ranura de round-robin (solo pasa por z.ai cuando slot == 0).

3) Mapeo de Modelos: ¿Cómo los Nombres de Modelos Claude se Convierten en glm-* de z.ai?

Antes de reenviar a z.ai, si el cuerpo de solicitud contiene un campo model, se reescribe:

  1. Coincidencia exacta en proxy.zai.model_mapping (soporta tanto la cadena original como clave en minúsculas)
  2. Prefijo zai:<model>: elimina zai: y usa directamente
  3. glm-*: se mantiene sin cambios
  4. No claude-*: se mantiene sin cambios
  5. claude-* y contiene opus/haiku: se mapea a proxy.zai.models.opus/haiku; de lo contrario, por defecto sonnet

Evidencia: src-tauri/src/proxy/providers/zai_anthropic.rs, src-tauri/src/proxy/providers/zai_anthropic.rs

4) Política de Seguridad de Header al Reenviar (Evitar Filtrar la Clave Local del Proxy)

El reenvío upstream de z.ai no "trae todos los Headers tal cual", sino que implementa dos capas de defensa:

  • Solo permite pasar una pequeña parte de los Headers (por ejemplo, content-type, accept, anthropic-version, user-agent)
  • Inyecta la API Key de z.ai al upstream (prioriza mantener el método de autenticación utilizado por el cliente: x-api-key o Authorization: Bearer ...)

Evidencia:

Implementado: MCP (Proxy Inverso Search/Reader + Vision Integrado)

1) MCP Search/Reader: Proxy Inverso a los Endpoints MCP de z.ai

Los endpoints locales y las direcciones upstream están codificados:

Endpoint LocalDirección UpstreamInterruptorEvidencia
/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 no es "un problema de red"

Siempre que proxy.zai.mcp.enabled=false, o el correspondiente web_search_enabled/web_reader_enabled=false, estos endpoints devolverán directamente 404.

Evidencia:

2) Vision MCP: Un Servidor Integrado "Mínimo Streamable HTTP MCP"

Vision MCP no es un proxy inverso, es una implementación integrada local:

  • Endpoint: /mcp/zai-mcp-server/mcp
  • POST admite: initialize, tools/list, tools/call
  • GET devuelve SSE keepalive (requiere sesión ya inicializada)
  • DELETE termina la sesión

Evidencia:

3) Conjunto de Herramientas Vision MCP (8) y Límite de Tamaño de Archivo

La lista de herramientas proviene 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

Evidencia: src-tauri/src/proxy/zai_vision_tools.rs, docs/zai/vision-mcp.md

Los archivos locales se leen y codifican como data:<mime>;base64,..., y tienen un límite estricto:

  • Límite de imágenes 5 MB (image_source_to_content(..., 5))
  • Límite de videos 8 MB (video_source_to_content(..., 8))

Evidencia: src-tauri/src/proxy/zai_vision_tools.rs

No Implementado Explícitamente / No Espere (Basado en Declaraciones de Documentación y Detalles de Implementación)

1) Monitoreo de Uso/Presupuesto de z.ai (usage/budget) No Implementado

docs/zai/implementation.md escribe explícitamente "not implemented yet". Esto significa:

  • No puedes esperar que Antigravity Tools proporcione consultas o alertas de uso/presupuesto de z.ai
  • La gobernanza de cuotas (Quota Protection) tampoco leerá automáticamente los datos de presupuesto/uso de z.ai

Evidencia: docs/zai/implementation.md

2) Vision MCP No Es un Servidor MCP Completo

Vision MCP actualmente está posicionado como una implementación mínima "solo suficiente para llamadas a herramientas": prompts/resources, reanudabilidad, salida de herramientas en streaming, etc., aún no están implementados.

Evidencia: docs/zai/vision-mcp.md, docs/zai/implementation.md

3) /v1/models/claude No Refleja la Lista de Modelos Real de z.ai

La lista de modelos devuelta por este endpoint proviene del mapeo integrado local y mapeo personalizado (get_all_dynamic_models), no solicitará /v1/models al upstream de z.ai.

Evidencia:

Referencia Rápida de Campos de Configuración (Relacionados con z.ai)

La configuración z.ai está bajo ProxyConfig.zai e incluye estos campos:

  • enabled / base_url / api_key
  • dispatch_mode (off/exclusive/pooled/fallback)
  • model_mapping (anulación de coincidencia exacta)
  • models.{opus,sonnet,haiku} (mapeo predeterminado de la familia Claude)
  • mcp.{enabled,web_search_enabled,web_reader_enabled,vision_enabled}

Los valores predeterminados (base_url / modelo predeterminado) también están en el mismo archivo:

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

Evidencia: src-tauri/src/proxy/config.rs, src-tauri/src/proxy/config.rs


Resumen de Esta Lección

  • z.ai actualmente solo toma el control del protocolo Claude (/v1/messages + count_tokens), otros endpoints de protocolo no "pasan automáticamente por z.ai"
  • MCP Search/Reader es proxy inverso; Vision MCP es implementación mínima local, no un Servidor MCP completo
  • La lista de modelos de /v1/models/claude proviene del mapeo local, no representa los modelos reales del upstream de z.ai

Próxima Lección

En la próxima lección aprenderemos Evolución de Versiones.


Apéndice: Referencias de Código Fuente

Haz clic para expandir ubicaciones de código fuente

Última actualización: 2026-01-23

FunciónRuta del ArchivoLíneas
Alcance de integración z.ai (Protocolo Claude + MCP + Vision MCP)docs/zai/implementation.md12-17
Modos de distribución z.ai y valores predeterminados de modelossrc-tauri/src/proxy/config.rs20-116
Base_url predeterminada z.ai / modelo predeterminadosrc-tauri/src/proxy/config.rs265-279
Lógica de selección si /v1/messages pasa por z.aisrc-tauri/src/proxy/handlers/claude.rs256-374
Reenvío z.ai de /v1/messages/count_tokens y retorno de marcadorsrc-tauri/src/proxy/handlers/claude.rs1186-1209
Reenvío upstream Anthropic de z.ai (reenvío JSON + transmisión de respuesta)src-tauri/src/proxy/providers/zai_anthropic.rs133-219
Reglas de mapeo de modelos z.ai (map_model_for_zai)src-tauri/src/proxy/providers/zai_anthropic.rs13-37
Lista blanca de Headers + inyección de autenticación z.aisrc-tauri/src/proxy/providers/zai_anthropic.rs70-110
Proxy inverso MCP Search/Reader e interruptoressrc-tauri/src/proxy/handlers/mcp.rs45-157
---------
Posicionamiento de implementación mínima Vision MCP (no Servidor MCP completo)docs/zai/vision-mcp.md17-37
Lista de herramientas Vision y límites (tool_specs + tamaño de archivo + stream=false)src-tauri/src/proxy/zai_vision_tools.rs57-270
Fuente de lista de modelos /v1/models/claude (mapeo local, no consulta upstream)src-tauri/src/proxy/common/model_mapping.rs84-132
Monitoreo de uso/presupuesto no implementado (declaración de documentación)docs/zai/implementation.md194-198