{"meta":{"title":"servidor ACP de Copilot CLI","intro":"Obtenga información sobre el servidor de protocolo de cliente del agente CLI de GitHub Copilot.","product":"GitHub Copilot","breadcrumbs":[{"href":"/es/copilot","title":"GitHub Copilot"},{"href":"/es/copilot/reference","title":"Referencia"},{"href":"/es/copilot/reference/copilot-cli-reference","title":"Referencia CLI de Copilot"},{"href":"/es/copilot/reference/copilot-cli-reference/acp-server","title":"Servidor ACP"}],"documentType":"article"},"body":"# servidor ACP de Copilot CLI\n\nObtenga información sobre el servidor de protocolo de cliente del agente CLI de GitHub Copilot.\n\n> [!NOTE]\n> La compatibilidad con ACP en CLI de GitHub Copilot está en versión preliminar pública y está sujeta a cambios.\n\n## Visión general\n\nEl Protocolo de cliente del agente (ACP) es un protocolo que normaliza la comunicación entre clientes (como editores de código e IDE) y agentes (como CLI de Copilot). Para obtener más información sobre este protocolo, consulte la [introducción oficial](https://agentclientprotocol.com/get-started/introduction).\n\n## Casos de uso\n\n* **Integraciones de IDE:** Incorpore Copilot soporte en cualquier editor o en cualquier entorno de desarrollo.\n* **Canalizaciones de CI/CD:** orqueste tareas de codificación de agente en flujos de trabajo automatizados.\n* **Portales personalizados:** Cree interfaces especializadas para los flujos de trabajo específicos de los desarrolladores.\n* **Sistemas multiagente:** Coordinarse Copilot con otros agentes de IA mediante un protocolo estándar.\n\n## Iniciar el servidor ACP\n\n              CLI de GitHub Copilot se puede iniciar como un servidor ACP mediante la `--acp` marca . El servidor admite dos modos, `stdio` y `TCP`.\n\n### modo stdio (recomendado para la integración del IDE)\n\nDe forma predeterminada, al proporcionar la bandera `--acp`, se inferirá el modo `stdio`. También se puede proporcionar la `--stdio` marca para la desambiguación.\n\n```bash\ncopilot --acp --stdio\n```\n\n### Modo TCP\n\nSi la `--port` marca se proporciona en combinación con la `--acp` marca , el servidor se inicia en modo TCP.\n\n```bash\ncopilot --acp --port 3000\n```\n\n## Integración con el servidor ACP\n\nHay un ecosistema creciente de bibliotecas para interactuar mediante programación con los servidores ACP. Dado CLI de GitHub Copilot que está instalado y autenticado correctamente, en el ejemplo siguiente se muestra el uso del cliente [typescript](https://agentclientprotocol.com/libraries/typescript) para enviar un único mensaje e imprimir la respuesta de IA.\n\n```typescript\nimport * as acp from \"@agentclientprotocol/sdk\";\nimport { spawn } from \"node:child_process\";\nimport { Readable, Writable } from \"node:stream\";\n\nasync function main() {\n  const executable = process.env.COPILOT_CLI_PATH ?? \"copilot\";\n\n  // ACP uses standard input/output (stdin/stdout) for transport; we pipe these for the NDJSON stream.\n  const copilotProcess = spawn(executable, [\"--acp\", \"--stdio\"], {\n    stdio: [\"pipe\", \"pipe\", \"inherit\"],\n  });\n\n  if (!copilotProcess.stdin || !copilotProcess.stdout) {\n    throw new Error(\"Failed to start Copilot ACP process with piped stdio.\");\n  }\n\n  // Create ACP streams (NDJSON over stdio)\n  const output = Writable.toWeb(copilotProcess.stdin) as WritableStream<Uint8Array>;\n  const input = Readable.toWeb(copilotProcess.stdout) as ReadableStream<Uint8Array>;\n  const stream = acp.ndJsonStream(output, input);\n\n  const client: acp.Client = {\n    async requestPermission(params) {\n      // This example should not trigger tool calls; if it does, refuse.\n      return { outcome: { outcome: \"cancelled\" } };\n    },\n\n    async sessionUpdate(params) {\n      const update = params.update;\n\n      if (update.sessionUpdate === \"agent_message_chunk\" && update.content.type === \"text\") {\n        process.stdout.write(update.content.text);\n      }\n    },\n  };\n\n  const connection = new acp.ClientSideConnection((_agent) => client, stream);\n\n  await connection.initialize({\n    protocolVersion: acp.PROTOCOL_VERSION,\n    clientCapabilities: {},\n  });\n\n  const sessionResult = await connection.newSession({\n    cwd: process.cwd(),\n    mcpServers: [],\n  });\n\n  process.stdout.write(\"Session started!\\n\");\n  const promptText = \"Hello ACP Server!\";\n  process.stdout.write(`Sending prompt: '${promptText}'\\n`);\n\n  const promptResult = await connection.prompt({\n    sessionId: sessionResult.sessionId,\n    prompt: [{ type: \"text\", text: promptText }],\n  });\n\n  process.stdout.write(\"\\n\");\n\n  if (promptResult.stopReason !== \"end_turn\") {\n    process.stderr.write(`Prompt finished with stopReason=${promptResult.stopReason}\\n`);\n  }\n\n  // Best-effort cleanup\n  copilotProcess.stdin.end();\n  copilotProcess.kill(\"SIGTERM\");\n  await new Promise<void>((resolve) => {\n    copilotProcess.once(\"exit\", () => resolve());\n    setTimeout(() => resolve(), 2000);\n  });\n}\n\nmain().catch((error) => {\n  console.error(error);\n  process.exitCode = 1;\n});\n```\n\n## Lectura adicional\n\n* [Documentación oficial de ACP](https://agentclientprotocol.com/protocol/overview)"}