Skip to content
Producto

Extienda JieGou a su manera: herramientas personalizadas, tipos de paso y hooks de ciclo de vida

Defina herramientas respaldadas por webhook, tipos de paso de flujo de trabajo en sandbox V8 y hooks de ciclo de vida para integrar JieGou con su infraestructura existente — sin necesidad de fork.

JT
JieGou Team
· · 5 min de lectura

JieGou incluye más de 260 integraciones MCP, 9 proveedores de LLM y un constructor visual de flujos de trabajo. Pero cada organización tiene herramientas únicas, APIs internas y procesos que una plataforma de propósito general no puede anticipar.

Hoy lanzamos tres funcionalidades de extensibilidad que le permiten traer sus propias capacidades a JieGou — sin hacer fork del código ni esperar a que nosotros construyamos una integración.

Herramientas personalizadas de webhook

Defina una herramienta respaldada por cualquier endpoint HTTP. Su herramienta estará disponible en recetas, flujos de trabajo y el agente conversacional — igual que las herramientas integradas.

Cómo funciona

  1. Defina la herramienta: Nombre, descripción, esquema JSON de entrada y URL del endpoint
  2. Configure la solicitud: Método (GET/POST), encabezados personalizados (cifrados), plantilla de solicitud Handlebars opcional
  3. Mapee la respuesta: Expresión JSONPath para extraer la salida relevante
  4. Defina el alcance: Asigne a departamentos específicos o hágala a nivel de cuenta

Ejemplo: herramienta de verificación de inventario

{
  "name": "check_inventory",
  "description": "Check current inventory levels for a product SKU",
  "inputSchema": {
    "type": "object",
    "properties": {
      "sku": { "type": "string", "description": "Product SKU" }
    },
    "required": ["sku"]
  },
  "endpoint": {
    "url": "https://api.internal.example.com/inventory/{{sku}}",
    "method": "GET",
    "headers": { "Authorization": "Bearer {{env.INVENTORY_API_KEY}}" },
    "timeoutMs": 10000
  },
  "responseMapping": "$.data.quantity"
}

Ahora cualquier receta o paso de flujo de trabajo puede usar check_inventory como herramienta. El LLM la ve junto con las herramientas integradas y la llama cuando es relevante.

Seguridad

  • HTTPS requerido en producción
  • Los encabezados personalizados están cifrados en reposo (mismo AES-256-GCM que las claves BYOK)
  • Todas las solicitudes salientes pasan por la infraestructura de tiempo límite, reintentos y limitación de tasa de la plataforma
  • Tamaño de respuesta limitado a 100KB
  • Las ejecuciones de herramientas cuentan contra los límites de tasa de su cuenta

Las herramientas personalizadas de webhook están disponibles en planes Team y superiores.

Tipos de paso de flujo de trabajo personalizados

Para lógica que va más allá de una llamada webhook, defina tipos de paso personalizados como módulos TypeScript que se ejecutan en aislantes V8 — completamente en sandbox sin acceso al sistema de archivos, red o proceso host.

El sandbox

Los pasos personalizados se ejecutan en aislantes V8 de isolated-vm con restricciones estrictas:

  • Límite de memoria: 128MB por ejecución
  • Límite de tiempo de CPU: Configurable por paso
  • Sin require() ni import: Las dependencias se inyectan explícitamente
  • Sin sistema de archivos ni red: Solo las APIs proporcionadas por la plataforma están disponibles

APIs inyectadas

Los pasos personalizados pueden usar un subconjunto de capacidades de la plataforma, declaradas en el momento de la definición:

APIQué proporciona
httpFetch HTTP con proxy (respeta límites de tasa)
llmInvocación de LLM (usa configuración BYOK de la cuenta, rastreado para facturación)
firestore_readAcceso a Firestore de solo lectura (con alcance a la cuenta)

Ejemplo: paso de agregación de sentimiento

// Custom step: aggregate-sentiment
// Allowed APIs: llm

export async function execute(input: { reviews: string[] }, context: any) {
  const results = await Promise.all(
    input.reviews.map(review =>
      context.llm.invoke(`Rate this review's sentiment from 1-5: "${review}". Reply with just the number.`, { model: 'haiku' })
    )
  );

  const scores = results.map(r => parseInt(r.trim())).filter(n => !isNaN(n));
  const average = scores.reduce((a, b) => a + b, 0) / scores.length;

  return {
    averageSentiment: Math.round(average * 10) / 10,
    totalReviews: scores.length,
    distribution: {
      positive: scores.filter(s => s >= 4).length,
      neutral: scores.filter(s => s === 3).length,
      negative: scores.filter(s => s <= 2).length,
    },
  };
}

Edite código en el editor Monaco integrado, defina esquemas de entrada/salida y pruebe con datos de muestra antes de implementar.

Los tipos de paso personalizados están disponibles en planes Enterprise.

Hooks de ciclo de vida

Registre endpoints de webhook que se activan en eventos de ejecución de flujos de trabajo y recetas. Úselos para integrar con Slack, PagerDuty, paneles de control personalizados o cualquier servicio HTTP.

Eventos soportados

EventoCuándo se activa
workflow:startLa ejecución del flujo de trabajo comienza
workflow:completeEl flujo de trabajo finaliza exitosamente
workflow:errorEl flujo de trabajo falla
step:startUn paso individual comienza
step:completeUn paso individual finaliza
step:errorUn paso individual falla
recipe:startLa ejecución de la receta comienza
recipe:completeLa receta finaliza
approval:requestedSe activa una puerta de aprobación
approval:grantedSe otorga la aprobación
approval:rejectedSe deniega la aprobación

No bloqueante vs. bloqueante

Los hooks no bloqueantes (predeterminado) son dispara-y-olvida. La plataforma envía el webhook y continúa la ejecución sin esperar respuesta. Úselos para notificaciones y registro.

Los hooks bloqueantes pausan la ejecución hasta que el webhook responde (tiempo límite de 10 segundos). La respuesta puede modificar el contexto de ejecución. Úselos para verificaciones pre-vuelo o inyección de configuración dinámica. Los hooks bloqueantes tienen un disyuntor — si fallan repetidamente, se deshabilitan automáticamente.

Ejemplo: notificación de Slack al completar flujo de trabajo

{
  "name": "Slack notify on completion",
  "events": ["workflow:complete", "workflow:error"],
  "webhookUrl": "https://hooks.slack.com/services/T.../B.../xxx",
  "blocking": false
}

Los hooks de ciclo de vida están disponibles en planes Team y superiores.

Cómo trabajan juntos

Las tres funcionalidades de extensibilidad se componen naturalmente:

  1. Una herramienta personalizada verifica su API interna de inventario
  2. Un paso personalizado ejecuta lógica de negocio especializada en un sandbox V8
  3. Un hook de ciclo de vida notifica a su canal de Slack cuando el flujo de trabajo se completa

Las tres respetan el modelo de seguridad existente de la plataforma — RBAC, registro de auditoría, limitación de tasa y alcance departamental se aplican uniformemente.

Explore las funcionalidades de extensibilidad en la configuración de su cuenta.

custom-tools lifecycle-hooks extensibility webhooks v8-sandbox enterprise
Compartir este artículo

¿Le gustó este artículo?

Reciba consejos sobre flujos de trabajo, actualizaciones de producto y guías de automatización en su bandeja de entrada.

No spam. Unsubscribe anytime.