Propagacion de errores multi-agente: distinguir access failure de valid empty, local recovery primero y coverage gap annotation.
En una arquitectura hub-and-spoke, un coordinador delega búsquedas en subagentes. Cuando un subagente falla, debe propagar el error al coordinador con contexto estructurado, no un payload silencioso. El contrato mínimo de propagación es:
failure_type, attempted_query, partial_results, suggested_alternatives.
Cuatro reglas gobiernan la propagación:
{results:[]}.Devolver {results:[]} en un timeout hace que el coordinador asuma "no había información" y produzca un report confiado con un hueco silencioso: el usuario recibe una respuesta que parece completa pero omite una fuente que simplemente falló. Por el otro extremo, un genérico 'search unavailable' priva al coordinador del contexto (attempted_query, suggested_alternatives) necesario para decidir alternativas o anotar el gap. Ambos modos rompen la confiabilidad del synthesis multi-agente.
success:False con contexto, o success:True, empty_valid:True.retryable=False (permission) es una señal explícita: escalar / anotar coverage gap, no reintentar la misma query.# Subagente: propagación estructurada con local recovery
def search_subagent(query):
try:
results = http_search(query, timeout=10)
if not results:
return {"success": True, "results": [], "empty_valid": True}
return {"success": True, "results": results}
except TimeoutError:
try:
return {"success": True, "results": broaden(query)} # local recovery
except Exception:
return {
"success": False,
"failure_type": "timeout",
"attempted_query": query,
"partial_results": [],
"suggested_alternatives": ["broaden terms", "longer timeout"],
}
except PermissionError as e:
return {
"success": False,
"failure_type": "permission",
"retryable": False,
"explanation": str(e),
}# Enmascara el error como success vacío:
# el coordinador asume "no había info" y escribe un report con hueco silencioso.
def search_subagent(query):
try:
return {"results": http_search(query, timeout=10)}
except Exception:
return {"results": []}'search unavailable'.retryable=False (permission) como señal de escalar/anotar, no de reintentar la misma query.katas-mcp-structured-errorskatas-validation-retry-feedbackkatas-critical-self-correctionkatas-independent-reviewer-multipassCapas del packet, cargables bajo demanda (disciplina ICM: una capa por vez, nunca todas juntas): knowledge/ cuerpo de conocimiento · prompts/ prompts listos · examples/ salida de ejemplo · agents/ subagentes del packet · templates/ plantilla de output.
e8f986b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.