Skip to main content

Inicio rápido para ganchos

Empiece a trabajar con enlaces en SDK de Copilot para controlar la ejecución de herramientas, transformar resultados, agregar contexto, controlar errores e interacciones de auditoría.

¿Quién puede utilizar esta característica?

SDK de GitHub Copilot está disponible con todos los Copilot planes.

Nota:

SDK de Copilot actualmente está en Versión preliminar técnica. La funcionalidad y la disponibilidad están sujetas a cambios.

Los hooks permiten interceptar y personalizar el funcionamiento de las sesiones en puntos clave del ciclo de vida de la conversación de SDK de Copilot. Usa ganchos para:

  •         **Ejecución de herramientas de control**: llamadas a herramientas de aprobación, denegación o modificación
    
  •         **Transformación de resultados**: modifique las salidas de la herramienta antes de que se procesen.
    
  •         **Adición de contexto**: inserción de información adicional al inicio de la sesión
    
  •         **Control de errores**: implementación del control de errores personalizado
    
  •         **Auditoría y registro**: realizar un seguimiento de todas las interacciones para el cumplimiento
    

Enlaces disponibles

EnlaceTriggerCaso de uso
onPreToolUseAntes de que se ejecute una herramientaControl de permisos, validación de argumentos
onPostToolUseDespués de ejecutar una herramientaTransformación de resultados, registro
onUserPromptSubmittedCuando el usuario envía un mensajeModificación rápida, filtrado
onSessionStartInicio de la sesiónAgregar contexto, configurar sesión
onSessionEndFinaliza la sesiónLimpieza, análisis
onErrorOccurredSe produce un errorControl de errores personalizado

Inicio rápido

En el ejemplo siguiente se muestra cómo registrar enlaces al crear una sesión en Node.js/TypeScript.

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();

const session = await client.createSession({
  hooks: {
    onPreToolUse: async (input) => {
      console.log(`Tool called: ${input.toolName}`);
      // Allow all tools
      return { permissionDecision: "allow" };
    },
    onPostToolUse: async (input) => {
      console.log(
        `Tool result: ${JSON.stringify(input.toolResult)}`
      );
      return null; // No modifications
    },
    onSessionStart: async (input) => {
      return {
        additionalContext:
          "User prefers concise answers.",
      };
    },
  },
});

Para obtener ejemplos en Python, Go y .NET, consulte el github/copilot-sdk repositorio.

Contexto de invocación de gancho

Cada hook recibe un parámetro invocation con información sobre el contexto de la sesión actual.

CampoTipoDescripción
sessionIdcuerda / cadenaIdentificador de la sesión actual

Esto permite que los hooks conserven el estado o realicen lógica específica de la sesión.

Patrones comunes

Registro de todas las llamadas a herramientas

const session = await client.createSession({
  hooks: {
    onPreToolUse: async (input) => {
      console.log(
        `[${new Date().toISOString()}] Tool: `
        + `${input.toolName}, `
        + `Args: ${JSON.stringify(input.toolArgs)}`
      );
      return { permissionDecision: "allow" };
    },
    onPostToolUse: async (input) => {
      console.log(
        `[${new Date().toISOString()}] `
        + `Result: ${JSON.stringify(input.toolResult)}`
      );
      return null;
    },
  },
});

Bloqueo de herramientas peligrosas

const BLOCKED_TOOLS = ["shell", "bash", "exec"];

const session = await client.createSession({
  hooks: {
    onPreToolUse: async (input) => {
      if (BLOCKED_TOOLS.includes(input.toolName)) {
        return {
          permissionDecision: "deny",
          permissionDecisionReason:
            "Shell access is not permitted",
        };
      }
      return { permissionDecision: "allow" };
    },
  },
});

Agregar contexto de usuario

const session = await client.createSession({
  hooks: {
    onSessionStart: async () => {
      const userPrefs = await loadUserPreferences();
      return {
        additionalContext:
          `User preferences: `
          + `${JSON.stringify(userPrefs)}`,
      };
    },
  },
});

Pasos siguientes

  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/use-hooks/pre-tool-use)
    
  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/use-hooks/post-tool-use)
    
  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/use-hooks/user-prompt-submitted)
    
  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/use-hooks/session-lifecycle)
    
  •         [AUTOTITLE](/copilot/how-tos/copilot-sdk/use-hooks/error-handling)