El mundo del Open Source se mueve gracias a la pasión y la persistencia de sus maintainers, esos voluntarios que dedican su tiempo a revisar contribuciones, gestionar incidencias y mantener los proyectos en marcha. Sin embargo, a medida que un proyecto crece, el tiempo para construir y mejorar el software disminuye, consumido por tareas repetitivas y administrativas.
GitHub Models: IA para optimizar el trabajo de los maintainers
Para solucionar este problema, GitHub ha lanzado GitHub Models, una herramienta que utiliza la Inteligencia Artificial para automatizar las partes más tediosas de la gestión de proyectos. Integrada directamente en los flujos de trabajo de GitHub, esta solución permite a los maintainers concentrarse en lo que realmente aman: el desarrollo y la innovación.
¿Qué problemas soluciona GitHub Models?
Según una encuesta realizada a más de 500 maintainers de proyectos Open Source, las principales necesidades son:
- Gestión de Issues (60%): Etiquetado, categorización y gestión del flujo de issues.
- Detección de Duplicados (30%): Encontrar y vincular issues similares de forma automática.
- Protección contra Spam (10%): Filtrar contribuciones de baja calidad.
- Detección de “Slop” (5%): Identificar pull requests de baja calidad que añaden ruido.
Los maintainers desean que la IA actúe como un segundo par de ojos, interviniendo solo cuando sea necesario, y que les ayude a priorizar issues, encontrar duplicados y facilitar la reproducción de errores.
Continuous AI: El patrón de GitHub para el soporte continuo
GitHub propone un nuevo patrón llamado Continuous AI, que utiliza flujos de trabajo automatizados de IA para mejorar la colaboración. Al igual que la integración continua y la entrega continua (CI/CD) transformaron las pruebas y el despliegue, Continuous AI busca revolucionar la gestión de proyectos.
Ejemplos prácticos de Continuous AI con GitHub Models y GitHub Actions
A continuación, se presentan algunos ejemplos de cómo puedes utilizar GitHub Models y GitHub Actions para automatizar tareas comunes de mantenimiento:
Deduplicación automática de Issues
Evita perder tiempo en issues duplicados implementando un flujo de trabajo que detecta automáticamente si un nuevo issue es similar a uno existente y publica un comentario con enlaces.
name: Detect duplicate issues
on:
issues:
types: [opened, reopened]
permissions:
models: read
issues: write
concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number }}
cancel-in-progress: true
jobs:
continuous-triage-dedup:
if: ${{ github.event.issue.user.type != 'Bot' }}
runs-on: ubuntu-latest
steps:
- uses: pelikhan/action-genai-issue-dedup@v0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Optional tuning:
# labels: "auto" # compare within matching labels, or "bug,api"
# count: "20" # how many recent issues to check
# since: "90d" # look back window, supports d/w/m
Verificación de la integridad de los Issues
Asegúrate de que los informes de errores contengan toda la información necesaria (versión, pasos para reproducir el error, comportamiento esperado vs. real) detectando automáticamente issues incompletos y solicitando los detalles faltantes.
name: Issue Completeness Check
on:
issues:
types: [opened]
permissions:
issues: write
models: read
jobs:
check-completeness:
runs-on: ubuntu-latest
steps:
- name: Check issue completeness
uses: actions/ai-inference@v1
id: ai
with:
prompt: |
Analyze this GitHub issue for completeness. If missing reproduction steps, version info, or expected/actual behavior, respond with a friendly request for the missing info. If complete, say so.
Title: ${{ github.event.issue.title }}
Body: ${{ github.event.issue.body }}
system-prompt: You are a helpful assistant that helps analyze GitHub issues for completeness.
model: openai/gpt-4o-mini
temperature: 0.2
- name: Comment on issue
if: steps.ai.outputs.response != ''
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ github.event.issue.number }},
body: `${{ steps.ai.outputs.response }}`
})
Detección de Spam y Contenido de Baja Calidad
Filtra automáticamente pull requests de spam o issues de baja calidad utilizando la IA para marcar contribuciones sospechosas.
name: Contribution Quality Check
on:
pull_request:
types: [opened]
issues:
types: [opened]
permissions:
pull-requests: write
issues: write
models: read
jobs:
quality-check:
runs-on: ubuntu-latest
steps:
- name: Detect spam or low-quality content
uses: actions/ai-inference@v1
id: ai
with:
prompt: |
Is this GitHub ${{ github.event_name == 'issues' && 'issue' || 'pull request' }} spam, AI-generated slop, or low quality?
Title: ${{ github.event.issue.title || github.event.pull_request.title }}
Body: ${{ github.event.issue.body || github.event.pull_request.body }}
Respond with one of: spam, ai-generated, needs-review, or ok
system-prompt: You detect spam and low-quality contributions. Be conservative - only flag obvious spam or AI slop.
model: openai/gpt-4o-mini
temperature: 0.1
- name: Apply label if needed
if: steps.ai.outputs.response != 'ok'
uses: actions/github-script@v7
with:
script: |
const label = `${{ steps.ai.outputs.response }}`;
const number = ${{ github.event.issue.number || github.event.pull_request.number }};
if (label && label !== 'ok') {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: number,
labels: [label]
});
}
Resolución Continua de Issues
Automatiza el cierre de issues y pull requests resueltos o obsoletos mediante un flujo de trabajo programado que identifica y gestiona este tipo de elementos.
name: Continuous AI Resolver
on:
schedule:
- cron: '0 0 * * 0' # Runs every Sunday at midnight UTC
workflow_dispatch:
permissions:
issues: write
pull-requests: write
jobs:
resolver:
runs-on: ubuntu-latest
steps:
- name: Run resolver
uses: ashleywolf/continuous-ai-resolver@main
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
Onboarding de Nuevos Contribuidores
Da la bienvenida a los nuevos contribuyentes con mensajes personalizados generados por IA, ofreciéndoles ayuda y guiándolos a través de las directrices del proyecto.
name: Welcome New Contributors
on:
pull_request:
types: [opened]
permissions:
pull-requests: write
models: read
jobs:
welcome:
runs-on: ubuntu-latest
if: github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'
steps:
- name: Generate welcome message
uses: actions/ai-inference@v1
id: ai
with:
prompt: |
Write a friendly welcome message for a first-time contributor. Include:
1. Thank them for their first PR
2. Mention checking CONTRIBUTING.md
3. Offer to help if they have questions
Keep it brief and encouraging.
model: openai/gpt-4o-mini
temperature: 0.7
- name: Post welcome comment
uses: actions/github-script@v7
with:
script: |
const message = `${{ steps.ai.outputs.response }}`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: ${{ github.event.pull_request.number }},
body: message
});
Consideraciones adicionales
- Límites de uso: El uso de GitHub Models y la API está sujeto a límites de velocidad y concurrencia.
- Buenas prácticas: Comienza con un flujo de trabajo y expande gradualmente, mantén a los maintainers informados, personaliza los prompts de la IA y monitoriza los resultados.
Conclusión
GitHub Models representa un gran avance para la gestión de proyectos Open Source. Al automatizar tareas repetitivas y optimizar los flujos de trabajo, esta herramienta permite a los maintainers concentrarse en lo que mejor saben hacer: construir software increíble. Si eres un maintainer de Open Source, te invitamos a experimentar con GitHub Models y a compartir tus experiencias con la comunidad.
Fuente: Github Blog
Leave a Comment