ACP matriz de pruebas y soporte

ACP es bidireccional. Una prueba útil de interoperabilidad debe mantener una conexión abierta mientras llegan notificaciones y solicitudes anidadas; una serie de líneas de JSON desconectadas no puede probar el comportamiento de la sesión.

Pruebas verificadas

La suite de adk-acp conecta el SDK oficial Client con el ADK-Rust SDK Agent a través de un transporte en memoria y ejercita:

initialize
  → session/new
  → session/prompt
  ← session/update
  ← PromptResponse(end_turn)
  → session/close
  → session/list
  → session/resume
  → session/close
  → session/delete

Pruebas separadas cubren la cancelación de sesión, la cancelación y recuperación de solicitudes JSON-RPC, el mapeo de eventos, los menús de permisos de rechazo primero, los ID opacos de opciones, selecciones fabricadas, decisiones humanas esperadas, el comportamiento de permitir una vez en la llamada exacta, la validación de configuración de MCP y la salida de depuración con secretos redactados. La fase 2 añade pruebas de reordenamiento de la reproducción de session/load (los session/update reproducidos coinciden con el orden cronológico de los eventos almacenados), pruebas de mapeo y rechazo de prompts multimodales (imagen y audio aceptados; contenido no anunciado rechazado), pruebas de aprobar/denegar/cancelar del puente de permisos del servidor (la cancelación se mapea a denegar, correlacionada por el id de la llamada de función), y pruebas de fidelidad del cliente que demuestran que las superficies de ToolCallUpdate y UsageUpdate aparecen sin degradar la superficie de texto del agente. La fase 3 añade pruebas de modo de sesión y de opciones de configuración (set_mode / set_config_option registran los valores anunciados y rechazan los desconocidos, y la selección persiste entre session/load), una prueba de aislamiento de session/fork (la historia de la bifurcación es igual a la de la fuente y la fuente se mantiene sin cambios), pruebas de activación de comandos disponibles e información de sesión (las actualizaciones se emiten solo cuando el agente declara comandos o registra un título), y una prueba de precisión de capacidades que afirma que las capacidades anunciadas corresponden exactamente a los controladores registrados y a los mapeos de contenido habilitados — incluido que los modos y las opciones de configuración se anuncian solo cuando hay un proveedor de SessionControls presente.

La compuerta de ciclo de vida de MCP en vivo inicia un proceso hijo real de stdio MCP, completa el handshake y descubre sus herramientas a través del mismo McpToolset usado por sesiones de ACP.

Ejecutar las compuertas

cargo test -p adk-acp --all-features
cargo test -p adk-agent --test tool_confirmation_tests
cargo test -p adk-tool --features mcp --test mcp_server_lifecycle_integration_tests test_tool_aggregation -- --ignored --exact

cargo test --manifest-path examples/acp_client_host/Cargo.toml
cargo check --manifest-path examples/acp_kiro/Cargo.toml
cargo check --manifest-path examples/acp_server/Cargo.toml
cargo test --manifest-path examples/acp_full_protocol/Cargo.toml

La compuerta de acp_full_protocol es la red de seguridad ejecutable de la fase 2: un Runner respaldado por memoria, sin clave de API, AcpServer impulsado a través del SDK oficial sobre un canal en proceso, validando toda la superficie de la fase 2 en dirección servidor (prompts de recursos incrustados e imagen/audio, el puente de permisos, el orden de reproducción de session/load, y la exposición de UsageUpdate / ToolCallUpdate) sin un subproceso ni credenciales del modelo.

Soporte actual

ÁreaEstadoNotas
Protocolo de cable estable v1ImplementadoRust oficial SDK 1.2; la versión del protocolo se negocia por separado
Transporte de cliente stdio localImplementadoSesiones de una sola ejecución, de streaming y persistentes
Permisos del clienteImplementadoDenegación por defecto, coincidencia semántica, IDs opacos, política síncrona o asíncrona
Callbacks del sistema de archivos del clienteImplementado APILectura y escritura anunciadas de forma independiente
Callbacks de terminal del clienteImplementado APITrait completo de crear/salida/espera/matar/liberar
MCP proporcionado por el clienteImplementadostdio requerido; capacidad HTTP/SSE protegida por capacidades
ADK-Rust ACP servidorImplementadoNuevo, prompt, carga, actualización, cancelación, cierre, listado, reanudación, bifurcación, set_mode, set_config_option, eliminación
Carga + repetición de la sesión del servidorImplementadoReactiva una sesión persistida y repite los eventos almacenados en orden cronológico; load_session anunciado
Bifurcación de la sesión del servidorImplementadoCopia el historial y el estado relevante en un nuevo id de sesión, dejando el origen sin cambios; fork anunciado
Modos de sesión del servidor + opciones de configuraciónImplementadoRestringido por proveedor mediante SessionControls; set_mode / set_config_option validados y persistidos a través de carga/reanudación/bifurcación; anunciado solo cuando se declara
Comandos disponibles del servidor + información de sesiónImplementadoSe emite en la activación cuando el agente declara comandos o registra un título; de lo contrario, ninguno
Actualizaciones del plan del servidorLatenteExiste el mapeo de Plan SessionUpdate, pero está inerte hasta que un primitivo de plan ADK exponga entradas del plan
Sesión del servidor MCPImplementadostdio, por sesión, inicio y limpieza acotados
Indicaciones de texto y de enlace a recursosImplementadoMapeadas a través del módulo de contenido compartido
Prompts multimodales (imagen, audio)ImplementadoAsignado a Part::InlineData; image/audio anunciados; el contenido no anunciado se rechaza
Prompts de recursos incrustadosImplementadoAsignado a Part::EmbeddedResource; embedded_context anunciados
Aprobación de herramienta del servidor ADK a ACPImplementadoToolConfirmationRequest puenteado a session/request_permission; permitir → aprobar, denegar/cancelar → denegar, correlacionado por id de llamada de función
Fidelidad de actualización y uso de herramientas del clienteImplementadoOutputChunk::ToolUpdate y OutputChunk::Usage exponen los ToolCallUpdate/UsageUpdate de un External_Agent; texto del agente sin cambios
Contenido enriquecido del prompt del clienteImplementadoprompt_agent_content_with_policy transmite contenido no textual ADK como el bloque ACP correspondiente
Remoto ACP HTTP/WebSocketNo anunciadoLa implementación estable es stdio local
Funciones experimentales del protocoloNo anunciadoAñadir solo después de la implementación y las pruebas de interoperabilidad

Prueba manual del editor

Compile examples/acp_server, luego configure un cliente ACP para iniciar ese binario con una ruta absoluta de manifiesto y credenciales del modelo. Verifique:

  1. la respuesta de inicialización informa la versión del protocolo 1;
  2. una nueva sesión acepta el directorio absoluto del proyecto previsto;
  3. el texto aparece como actualizaciones en vivo antes de la respuesta final;
  4. la herramienta de lectura se inicia y las finalizaciones aparecen en el cliente;
  5. la cancelación cierra el turno sin cerrar la conexión;
  6. un prompt posterior se completa correctamente en la misma sesión;
  7. cerrar y reanudar preservan el historial cuando el servicio de sesión es duradero.

No use echo | cargo run para esta prueba. Cada pipe inicia un proceso diferente y no puede preservar la conexión ni la sesión.

ACP matriz de pruebas y soporte - Documentación ADK-Rust | ADK-Rust