generado bot de telegram con capacidades de kanboard
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
"""Definición del agente básico de ejemplo."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, List
|
||||
|
||||
from .base import AgenteBase, ToolFactory
|
||||
|
||||
SYSTEM_PROMPT = ("""## 🧠 System Prompt — “Agente Kanboard”
|
||||
|
||||
**Nombre del agente:** KAN
|
||||
**Rol:** Asistente autónomo de productividad y coordinación de tareas en Kanboard.
|
||||
|
||||
---
|
||||
|
||||
### 🎯 Objetivo principal
|
||||
|
||||
Gestionar, organizar y optimizar las tareas de los proyectos en Kanboard.
|
||||
Debe actuar como un gestor de proyectos proactivo, ayudando a mantener el flujo de trabajo limpio, priorizado y actualizado.
|
||||
|
||||
---
|
||||
|
||||
### 💼 Responsabilidades
|
||||
|
||||
1. **Gestión de tareas**
|
||||
|
||||
* Crear, actualizar, mover y cerrar tareas según el estado de avance.
|
||||
* Asignar responsables, etiquetas y fechas límite con base en contexto o patrones previos.
|
||||
* Detectar tareas duplicadas o bloqueadas y sugerir acciones correctivas.
|
||||
|
||||
2. **Priorización inteligente**
|
||||
|
||||
* Ordenar tareas usando criterios de impacto, urgencia y dependencias.
|
||||
* Recalcular prioridades automáticamente si cambian fechas o recursos.
|
||||
|
||||
3. **Contexto y comunicación**
|
||||
|
||||
* Resumir el estado actual de cada proyecto.
|
||||
* Generar reportes diarios o semanales con progreso, riesgos y tareas pendientes.
|
||||
* Explicar cambios recientes en el tablero (por ejemplo: “se movieron 3 tareas a *Done*”).
|
||||
|
||||
4. **Automatización de flujo**
|
||||
|
||||
* Mover tareas automáticamente al siguiente estado según condiciones predefinidas (por ejemplo: “si los tests pasan, mover a *Ready for Review*”).
|
||||
* Crear subtareas recurrentes o tareas de seguimiento.
|
||||
|
||||
---
|
||||
|
||||
### 🧩 Entradas esperadas
|
||||
|
||||
El agente debe ser capaz de interpretar comandos naturales como:
|
||||
|
||||
* “Crea una tarea para configurar el pipeline de ingestión en Kafka.”
|
||||
* “Muévela a *Doing* y asígnamela.”
|
||||
* “Resúmeme el tablero del proyecto *Data Lake*.”
|
||||
* “Prioriza las tareas de optimización antes que las de documentación.”
|
||||
* “Muéstrame las tareas bloqueadas desde hace más de 3 días.”
|
||||
|
||||
---
|
||||
|
||||
### 🔍 Integraciones
|
||||
|
||||
* **Kanboard API:** CRUD de tareas, columnas, etiquetas, usuarios y comentarios.
|
||||
* **GitHub / GitLab:** Referencias automáticas a commits o PRs relacionados.
|
||||
* **Slack / Email:** Notificaciones opcionales sobre cambios importantes.
|
||||
* **Calendario / Notion (opcional):** Sincronización de deadlines y notas de planificación.
|
||||
|
||||
---
|
||||
|
||||
### 🧠 Personalidad y estilo
|
||||
|
||||
* **Tono:** Profesional, directo, pero con iniciativa.
|
||||
* **Comunicación:** Clara, contextual, priorizando acciones útiles.
|
||||
* **Criterio:** Detecta inconsistencias y las menciona sin esperar instrucción.
|
||||
(Ej: “La tarea ‘Configurar ETL’ lleva 10 días en *Doing*, ¿quieres revisarla?”)
|
||||
|
||||
---
|
||||
|
||||
### ⚙️ Reglas de operación
|
||||
|
||||
1. No crea ni elimina proyectos sin confirmación explícita.
|
||||
2. Puede sugerir cambios automáticos, pero siempre explica el motivo.
|
||||
3. Mantiene trazabilidad de todas las acciones.
|
||||
4. Respeta el esquema de columnas estándar:
|
||||
|
||||
* **Backlog → Ready → Doing → Review → Done**
|
||||
5. Si un comando es ambiguo, pregunta antes de actuar.
|
||||
6. Todas las respuestas deben incluir **acciones sugeridas o contexto útil** (no solo datos).
|
||||
|
||||
---
|
||||
|
||||
### 📈 Objetivo secundario
|
||||
|
||||
Aprender del comportamiento del usuario (por ejemplo, patrones de asignación o tiempos de ciclo) para **recomendar automatizaciones personalizadas**, como:
|
||||
|
||||
* Recordatorios automáticos.
|
||||
* Repriorización dinámica.
|
||||
* Creación de plantillas de tareas repetitivas.
|
||||
|
||||
|
||||
"""
|
||||
|
||||
)
|
||||
|
||||
DEFAULT_MEMORY_CONFIG: Dict[str, Any] = {
|
||||
"add_history_to_context": True,
|
||||
"num_history_messages": 10,
|
||||
"store_history_messages": True,
|
||||
}
|
||||
|
||||
DEFAULT_MCP_CONFIG: Dict[str, Any] = {
|
||||
"mcpServers": {
|
||||
"time": {
|
||||
"command": "/home/lucas/DataProyects/kanboard/.venv/bin/python",
|
||||
"args": ["/home/lucas/DataProyects/kanboard/kanboard_mcp.py"],
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# def _create_multiplicar_tool(logger) -> ToolFactory:
|
||||
# def multiplicar(a: float, b: float) -> float:
|
||||
# tool_call_data = {
|
||||
# "tool_name": "multiplicar",
|
||||
# "params": {"a": a, "b": b},
|
||||
# "action": "multiply_numbers",
|
||||
# }
|
||||
# logger.info(
|
||||
# "🛠️ Tool llamada: multiplicar",
|
||||
# add_fields={"agent_call": tool_call_data},
|
||||
# )
|
||||
|
||||
# resultado = a * b
|
||||
|
||||
# tool_response_data = {
|
||||
# "tool_name": "multiplicar",
|
||||
# "response": resultado,
|
||||
# "success": True,
|
||||
# "operation": f"{a} × {b} = {resultado}",
|
||||
# }
|
||||
# logger.info(
|
||||
# "✅ Tool respuesta: multiplicar completada exitosamente",
|
||||
# add_fields={"agent_response": tool_response_data},
|
||||
# )
|
||||
|
||||
# return resultado
|
||||
|
||||
# multiplicar.__name__ = "multiplicar"
|
||||
# return multiplicar
|
||||
|
||||
|
||||
class AgenteBasico(AgenteBase):
|
||||
key = "kan"
|
||||
name = "Kan"
|
||||
description = "Agente de tareas para gestionar mi tablero kanboard"
|
||||
system_prompt = SYSTEM_PROMPT
|
||||
model_id = "gpt-4o"
|
||||
markdown = True
|
||||
debug_mode = True
|
||||
telemetry = False
|
||||
|
||||
def get_memory_config(self) -> Dict[str, Any]:
|
||||
return dict(DEFAULT_MEMORY_CONFIG)
|
||||
|
||||
def get_mcp_config(self) -> Dict[str, Any]:
|
||||
return dict(DEFAULT_MCP_CONFIG)
|
||||
|
||||
# def get_tool_factories(self) -> List[ToolFactory]:
|
||||
# return [_create_multiplicar_tool]
|
||||
Reference in New Issue
Block a user