Crear un agente de codificación
Este tutorial te enseña cómo crear un agente de codificación que pueda ayudarte con las tareas de desarrollo de software. Comenzarás con un agente básico y añadirás capacidades progresivamente hasta tener un asistente listo para producción que pueda leer código, realizar cambios, ejecutar pruebas e incluso buscar documentación.
Al final, comprenderás cómo estructurar las instrucciones del agente, configurar herramientas y componer múltiples agentes para flujos de trabajo complejos.
Qué vas a construir
Un agente de codificación que puede:
- Leer y modificar archivos en tu proyecto
- Ejecutar comandos como pruebas y linters
- Seguir un flujo de trabajo de desarrollo estructurado
- Buscar documentación cuando sea necesario
- Realizar un seguimiento del progreso a través de tareas de varios pasos
Qué vas a aprender
- Cómo configurar agentes en YAML con Docker Agents
- Cómo dar acceso a herramientas a los agentes (sistema de archivos, shell, etc.)
- Cómo escribir instrucciones de agente eficaces
- Cómo componer múltiples agentes para tareas especializadas
- Cómo adaptar los agentes para tus propios proyectos
Requisitos previos
Antes de comenzar, necesitas:
- Docker Agent instalado - Consulta la guía de instalación
- Clave de API configurada - Configura
ANTHROPIC_API_KEYoOPENAI_API_KEYen tu entorno. Obtén claves de Anthropic o OpenAI - Un proyecto con el que trabajar - Cualquier base de código donde desees asistencia del agente
Crear tu primer agente
Un agente se define en un archivo de configuración YAML. El agente mínimo solo necesita un modelo e instrucciones que definan su propósito.
Crea un archivo llamado agents.yml:
agents:
root:
model: openai/gpt-5
description: A basic coding assistant
instruction: |
You are a helpful coding assistant.
Help me write and understand code.Ejecuta tu agente:
$ docker agent run agents.yml
Intenta preguntarle: "¿Cómo leo un archivo en Python?"
El agente puede responder preguntas de codificación, pero aún no puede ver tus archivos ni ejecutar comandos. Para que sea útil para el trabajo de desarrollo real, necesita acceso a herramientas.
Añadir herramientas
Un agente de codificación necesita interactuar con los archivos de tu proyecto y ejecutar comandos. Habilitas estas capacidades añadiendo conjuntos de herramientas (toolsets).
Actualiza agents.yml para añadir acceso al sistema de archivos y al shell:
agents:
root:
model: openai/gpt-5
description: A coding assistant with filesystem access
instruction: |
You are a helpful coding assistant.
You can read and write files to help me develop software.
Always check if code works before finishing a task.
toolsets:
- type: filesystem
- type: shellEjecuta el agente actualizado e intenta: "Lee el archivo README.md y resúmelo".
Tu agente ahora puede:
- Leer y escribir archivos en el directorio actual
- Ejecutar comandos de shell
- Explorar la estructura de tu proyecto
NotePor defecto, el acceso al sistema de archivos está restringido al directorio de trabajo actual. El agente solicitará permiso si necesita acceder a otros directorios.
El agente ahora puede interactuar con tu código, pero su comportamiento sigue siendo genérico. A continuación, le enseñarás a trabajar de manera eficaz.
Estructurar las instrucciones del agente
Las instrucciones genéricas producen resultados genéricos. Para el uso en producción, deseas que tu agente siga un flujo de trabajo específico y comprenda las convenciones de tu proyecto.
Actualiza tu agente con instrucciones estructuradas. Este ejemplo muestra un agente de desarrollo de Go, pero puedes adaptar el patrón para cualquier lenguaje:
agents:
root:
model: anthropic/claude-sonnet-4-5
description: Expert Go developer
instruction: |
Your goal is to help with code-related tasks by examining, modifying,
and validating code changes.
<TASK>
# Workflow:
# 1. Analyze: Understand requirements and identify relevant code.
# 2. Examine: Search for files, analyze structure and dependencies.
# 3. Modify: Make changes following best practices.
# 4. Validate: Run linters/tests. If issues found, return to Modify.
</TASK>
Constraints:
- Be thorough in examination before making changes
- Always validate changes before considering the task complete
- Write code to files, don't show it in chat
## Development Workflow
- `go build ./...` - Build the application
- `go test ./...` - Run tests
- `golangci-lint run` - Check code quality
add_date: true
add_environment_info: true
toolsets:
- type: filesystem
- type: shell
- type: todoIntenta preguntar: "Añade manejo de errores a la función parseConfig en main.go"
Las instrucciones estructuradas le dan a tu agente:
- Un flujo de trabajo claro a seguir (analizar, examinar, modificar, validar)
- Comandos específicos del proyecto para ejecutar
- Restricciones que previenen errores comunes
- Contexto sobre el entorno (
add_dateyadd_environment_info)
El conjunto de herramientas todo ayuda al agente a realizar un seguimiento del progreso a través
de tareas de varios pasos. Cuando solicites cambios complejos, el agente dividirá el trabajo y
actualizará su progreso a medida que avance.
Componer múltiples agentes
Las tareas complejas a menudo se benefician de agentes especializados. Puedes añadir subagentes que se encarguen de responsabilidades específicas, como investigar documentación mientras tu agente principal se mantiene enfocado en programar.
Añade un agente bibliotecario (librarian) que pueda buscar documentación:
agents:
root:
model: anthropic/claude-sonnet-4-5
description: Expert Go developer
instruction: |
Your goal is to help with code-related tasks by examining, modifying,
and validating code changes.
When you need to look up documentation or research how something works,
ask the librarian agent.
(rest of instructions from previous section...)
toolsets:
- type: filesystem
- type: shell
- type: todo
sub_agents:
- librarian
librarian:
model: anthropic/claude-haiku-4-5
description: Documentation researcher
instruction: |
You are the librarian. Your job is to find relevant documentation,
articles, or resources to help the developer agent.
Search the internet and fetch web pages as needed.
toolsets:
- type: mcp
ref: docker:duckduckgo
- type: fetchIntenta preguntar: "¿Cómo uso context.Context en Go? Luego añádelo al código de mi servidor."
Tu agente principal delegará la investigación en el bibliotecario, luego utilizará esa información para modificar tu código. Esto mantiene el contexto del agente principal enfocado en la tarea de codificación mientras sigue teniendo acceso a documentación actualizada.
El uso de un modelo más pequeño y rápido (Haiku) para el bibliotecario ahorra costos, ya que la búsqueda de documentación no necesita la misma profundidad de razonamiento que los cambios de código.
Adaptar para tu proyecto
Ahora que comprendes los conceptos principales, adapta el agente para tu proyecto específico:
Actualiza los comandos de desarrollo
Reemplaza los comandos de Go con el flujo de trabajo de tu proyecto:
## Development Workflow
- `npm test` - Run tests
- `npm run lint` - Check code quality
- `npm run build` - Build the applicationAñade restricciones específicas del proyecto
Si tu agente sigue cometiendo los mismos errores, añade restricciones explícitas:
Constraints:
- Always run tests before considering a task complete
- Follow the existing code style in src/ directories
- Never modify files in the generated/ directory
- Use TypeScript strict mode for new filesElige los modelos adecuados
Para tareas de codificación, utiliza modelos enfocados en el razonamiento:
anthropic/claude-sonnet-4-5- Razonamiento fuerte, bueno para código complejoopenai/gpt-5- Rápido, buena capacidad general de codificación
Para tareas auxiliares como la búsqueda de documentación, los modelos más pequeños funcionan bien:
anthropic/claude-haiku-4-5- Rápido y rentableopenai/gpt-5-mini- Bueno para tareas simples
Itera en función del uso
La mejor manera de mejorar a tu agente es usarlo. Cuando notes problemas:
- Añade instrucciones específicas para prevenir el problema.
- Actualiza las restricciones para guiar el comportamiento.
- Añade comandos relevantes al flujo de trabajo de desarrollo.
- Considera añadir subagentes especializados para áreas complejas.
Qué has aprendido
Ahora sabes cómo:
- Crear una configuración básica de Docker Agent
- Añadir herramientas para habilitar capacidades del agente
- Escribir instrucciones estructuradas para un comportamiento consistente
- Componer múltiples agentes para tareas especializadas
- Adaptar agentes para diferentes lenguajes de programación y flujos de trabajo
Pasos siguientes
- Aprende las mejores prácticas para manejar salidas grandes, estructurar equipos de agentes y optimizar el rendimiento
- Integra Docker Agent con tu editor o utiliza agentes como herramientas en clientes MCP
- Revisa la Referencia de configuración para ver todas las opciones disponibles
- Explora la Referencia de herramientas para ver qué capacidades puedes habilitar
- Echa un vistazo a las configuraciones de ejemplo para diferentes casos de uso
- Consulta el golang_developer.yaml completo que utiliza el equipo de Docker para desarrollar Docker Agent