Depuración de puntos de interrupción
9 tipos de puntos de interrupción, expresiones condicionales, inspección de variables y modificación en caliente: para que el proceso automatizado deje de ser una caja negra.
El depurador de Braidrun es un depurador interactivo con puntos de interrupción: ponga un punto de interrupción en cualquier paso, tras la pausa inspeccione las variables, corrija y continúe, o avance paso a paso una posición cada vez. La experiencia se alinea con depurar código normal.
Activar la depuración
Marque la casilla en la ventana emergente "Ejecutar":
- Habilitar depuración — Active el modo de depuración y muestre el panel de depuración en la página de detalles de ejecución.
- Entrada pausada — Pausa automáticamente antes del primer paso
- Pausa en caso de excepción — Pausar automáticamente si falla algún paso
- vista previa — El botón «Ensayo» en la parte inferior del cuadro emergente solo valida el plan de ejecución, sin ejecutarlo realmente
Con debug habilitado, la concurrencia de nivel superior se serializa, lo que facilita el diagnóstico paso a paso. Al pasar a producción, basta con desactivar debug. El depurador está disponible a partir del plan Pro.
9 Tipos de puntos de interrupción
| Tipo de punto de interrupción | punto gatillo |
|---|---|
before_step | Antes de iniciar los pasos |
after_step | Después de que el paso se complete exitosamente |
step_error | Cuando el paso arroja un error |
state_machine_state | state_machine Al entrar en un state concreto |
group_chat_round | group_chat Antes de cada ronda de intervención |
iteration_item | iterate_over antes de cada iteración |
agent_based_delegation | agent_based Antes de delegar subtareas |
sub_workflow_entry | sub_workflow Antes de entrar en el sub-workflow (se dispara en el paso padre) |
sub_workflow_exit | sub_workflow Después de que el sub-workflow retorne y sus salidas se escriban de vuelta en el contexto padre |
Cada punto de interrupción tiene además algunos campos opcionales:
stepName— Solo se activa en el paso indicado (no distingue mayúsculas y minúsculas); si se deja vacío, se activa en todas las posiciones de ese tipocondition— Expresión de condición; solo interrumpe de verdad cuando se cumple, con la misma sintaxis que la condition del workflowonce— Se desactiva automáticamente tras activarse una vez
Depurar sub-workflows
Los puntos de interrupción, por defecto, surten efecto en todos los niveles: un punto de interrupción fijado en el workflow padre también se activa cuando el sub-workflow llega a un paso con el mismo nombre.sub_workflow_entry / sub_workflow_exit Estos dos tipos de puntos de interrupción se acoplan al paso padre y se detienen, respectivamente, antes de entrar en el sub-workflow y después de que retorne, para facilitar la inspección de los inputs que entran y los outputs que se escriben de vuelta.
Cuando un mismo sub-workflow (por ejemplo, un módulo del marketplace) es reutilizado por varios pasos padre, el motor de depuración permite añadir al punto de interrupción un filtro de parentPath filtro: el punto de interrupción solo se activa cuando el sub-workflow se invoca por la ruta del paso padre indicado, y los pasos con el mismo nombre en otras rutas de invocación no interrumpen.
Panel de depuración
Los controles de depuración están todos en el panel de depuración de la página de detalle de la ejecución, no hay una ventana de depurador aparte:
- control ejecutivo:Botones de pausar / continuar / paso a paso; arriba se muestra en tiempo real la posición de pausa actual
- Visualización contextual:Variables, salidas de paso, resumen de resultados del paso
- Historial de instantáneas:En cada punto de control se guarda automáticamente una instantánea del contexto (se conservan como máximo las últimas 50); al arrastrar la línea de tiempo se puede revisar las variables de cualquier pausa anterior y activar la comparación Diff de los cambios antes y después
- Edición de variables:Haga doble clic en el valor de la variable para modificarlo mientras está en pausa
- visualización DAG:Muestra marcadores de puntos de interrupción y pausa el resaltado directamente en el diagrama DAG
- flujo de registro:Panel de registro estilo terminal en la parte inferior de la página de detalles de ejecución
Controlar la depuración con REST
Detrás del panel de depuración hay un conjunto de endpoints REST que se pueden llamar directamente al escribir scripts de diagnóstico (la misma interfaz que el panel):
| Endpoint | Función |
|---|---|
GET /debug/state | Estado de depuración: si está en pausa, la lista de puntos de interrupción, el punto de pausa actual |
GET /debug/context | Las variables actuales, las salidas de paso y el resumen de resultados |
POST /debug/pause | Solicitar la pausa, surte efecto en el próximo punto de control |
POST /debug/continue | Continuar, corre hasta el siguiente punto de interrupción |
POST /debug/step | Paso a paso: solo avanza hasta el siguiente punto de control |
PUT /debug/breakpoints | Reemplaza el grupo completo de puntos de interrupción (se puede cambiar en cualquier momento durante la ejecución) |
PUT /debug/break-on-error | Interruptor en ejecución de «pausar en excepción» |
GET /debug/snapshots | Historial de instantáneas; también se puede obtener una por número de orden |
POST /debug/variables | Modificar variables en estado de pausa |
El prefijo es siempre /api/executions/{executionId}. Por ejemplo:
# 给 fetch_data 步骤加断点,再加一个"出错即停"的一次性断点
curl -X PUT https://braidrun.com/api/executions/<execution-id>/debug/breakpoints \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"breakpoints": [
{"point": "before_step", "stepName": "fetch_data"},
{"point": "step_error", "once": true}
]
}'
# 暂停 / 单步 / 继续
curl -X POST https://braidrun.com/api/executions/<execution-id>/debug/pause \
-H "Authorization: Bearer <token>"
curl -X POST https://braidrun.com/api/executions/<execution-id>/debug/step \
-H "Authorization: Bearer <token>"
curl -X POST https://braidrun.com/api/executions/<execution-id>/debug/continue \
-H "Authorization: Bearer <token>"Cambiar la variable en pausa y seguir corriendo
Escenario típico: un paso upstream calcula un parámetro claramente incorrecto; tras detenerse en el punto de interrupción, corrija directamente la variable, pulse «Continuar» y los pasos siguientes se ejecutan con el nuevo valor, ahorrándose repetir toda la ronda. En el panel, basta con hacer doble clic en el valor de la variable para editarlo; por REST se usa POST /debug/variables, y solo se acepta la modificación cuando la ejecución está en estado de pausa.
# 暂停态下把变量改对,然后 continue
curl -X POST https://braidrun.com/api/executions/<execution-id>/debug/variables \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"variables": {"target_country": "US"}}'Reintento desde un paso concreto
Una vez que la ejecución ha llegado a un estado final (completada, fallida o cancelada), se puede reejecutar desde un paso concreto: en la línea de tiempo de la ejecución o en el panel de detalle del paso, pulse «Reejecutar desde este paso». Los resultados de los pasos anteriores al punto de reejecución se conservan tal cual, los pasos de LLM ya completados no vuelven a llamar al modelo, y por tanto no generan un coste de tokens duplicado.
- El punto de reejecución debe ser un paso que se haya ejecutado realmente en esta ejecución; reejecutar desde el primer paso equivale a reejecutar todo, sin esta restricción
- No se puede reejecutar mientras la ejecución sigue en marcha; cancélela primero o espere a que termine
- REST:
POST /api/executions/{executionId}/restart-from-step, dejar vacío el stepName del body significa reejecutar desde el principio
Diagnóstico con puntos de interrupción + cambio de variables + reejecución desde el paso que falló, combinados, son la forma económica de depurar workflows largos: se conservan los resultados de las decenas de pasos anteriores y solo se paga por el tramo que falló.
Restricciones actuales
- Principalmente pausa en los límites de los pasos y en los puntos clave de los nodos compuestos.
- no se cuelga dentro de la herramienta/flujo de token
- La simultaneidad de nivel superior se serializará cuando la depuración esté habilitada
Siguiente paso
- Programación — Conecte el flujo de trabajo aprobado por depuración a cron/webhook
- Reanudación automática — Después de la depuración, decida qué pasos son idempotentes.