Temario · lección 12 de 74
1Por qué fallan los agentes
2Qué es un harness
3Patrones de agentes
4Herramientas
5Ingeniería de contexto
6El repositorio como memoria
7Tareas largas
8Alcance y “hecho” de verdad
9Observabilidad y estado limpio
10Loops y grafos
11Harness reales
12Proyecto final
- Proyecto 1, solo prompt contra harness mínimo
- Proyecto 2, un workspace legible
- Proyecto 3, continuidad entre sesiones
- Proyecto 4, feedback de runtime e indexado
- Proyecto 5, que el agente verifique su trabajo
- Proyecto 6, el harness completo (capstone)
- Proyecto 7, tu primer loop automático
- Proyecto 8, dibuja tu flujo como un grafo
- Checklist final y plantillas
Arquitectura por capas (Microsoft)
El arnés de Microsoft Agent Framework no inventa un agente nuevo: apila piezas existentes (cliente, canalización, proveedores, middleware, interfaz) y deja activar o quitar funcionalidades.
Un kit de montaje, no un coche cerrado
Hasta ahora viste el harness como concepto. Aquí lo ves en una implementación real. Microsoft Agent Framework lo ofrece como una estructura con opiniones y «baterías incluidas» para investigación, programación, análisis de datos y otros trabajos largos. Lo importante: no define un entorno de ejecución independiente. Se compone con piezas que el framework ya tiene.
Las cinco capas
| Capa | Qué aporta |
|---|---|
| 1. Cliente de chat | Conecta el agente con un modelo |
| 2. Canalización de chat | Invocación de funciones, inyección de mensajes, historial por llamada y compactación opcional |
| 3. Proveedores de agentes y de contexto | Instrucciones por sesión, herramientas, memoria, tareas pendientes, modos y funcionalidades opcionales |
| 4. Middleware y decoradores | Aprobaciones, observabilidad y repetición acotada opcional |
| 5. Experiencia de usuario de la aplicación | Muestra respuestas en tiempo real, el progreso y recoge entradas como aprobaciones |
El resultado sigue siendo un agente normal del framework. En .NET es un HarnessAgent; en Python, el Agent que devuelve create_harness_agent; en Go, una configuración de proveedor. Sus sesiones usan las mismas abstracciones que otros agentes.
La matriz de funcionalidades
La documentación lista qué trae por defecto. Algunas, traducidas a conceptos del curso:
| Funcionalidad | Estado por defecto |
|---|---|
| Invocación de funciones (herramientas) | Activa, con límite de iteraciones |
| Compactación (resumir el historial) | Se activa si das límites de tokens |
| Tareas pendientes (todos) | Activas |
| Modos de planificación y ejecución | Activos |
| Memoria de archivos de sesión | Activa |
| Aprobación de herramientas | Activa, con reglas de aprobación automática |
| Observabilidad (OpenTelemetry) | Activa |
| Búsqueda web | Activa si el cliente la admite |
| Agentes en segundo plano, shell, bucle | Opcionales |
Algunas piezas, como los agentes en segundo plano o la ejecución en bucle, se describen como experimentales.
Composición personalizable
Cada funcionalidad por defecto se puede apagar con una opción. Por ejemplo, en Python existen disable_todo, disable_file_memory, disable_web_search o disable_compaction. También puedes añadir proveedores de contexto propios o activar el acceso a archivos.
Un ejemplo mínimo
Este es el ejemplo de Python de la documentación, con instrucciones separadas por nivel:
agent = create_harness_agent(
client=client,
name="research-agent",
harness_instructions="Use tools deliberately and report verified results.",
agent_instructions="You are a research assistant focused on academic sources.",
max_context_window_tokens=128_000,
max_output_tokens=16_384,
)
Las harness_instructions (reglas de entorno) aparecen antes que las agent_instructions (el papel concreto). Y los límites de tokens son el espacio de trabajo que vimos en la lección del LLM.
Lo que te llevas
No hace falta programar en .NET, Python o Go para entender la lección: un harness serio se compone de capas intercambiables, trae valores por defecto sensatos (aprobaciones, observabilidad, tareas pendientes) y te deja ajustar solo lo que tu aplicación necesita. Además, es solo un motor: el propio ejemplo de la fuente aclara que las aplicaciones de terminal del repositorio son ejemplos, no componentes finales.
¿Qué es lo que define el arnés de Microsoft Agent Framework respecto a un agente normal del framework?
Fuentes: Microsoft Agent Framework, Arnés de agente