Passer au contenu
cd /languages
  • Calcul statistique
  • Programmation
  • Prise en charge de l’AST et des symboles

R dans Maguyva : des graphes de code pour l'analyse et les packages

Maguyva prend en charge R avec AST, symboles et graphe, pour que les agents IA suivent fonctions, dispatch S3 et S4 et appels d'ajustement de modèles dans les scripts et packages R.

Là où R fait trébucher les outils d’IA superficiels

R place les fonctions de base, celles des packages et les vôtres dans un seul espace de noms plat. Les points font partie des noms, ce ne sont pas des accès à un membre : is.na, data.frame et print.summary_table sont des identifiants uniques. Un outil qui lit print.summary_table comme une méthode sur print se trompe de structure, et un outil qui enregistre chaque appel de base enterre vos fonctions sous c() et paste().

Maguyva garde les noms R entiers et filtre le bruit des fonctions de base : l’agent voit les fonctions dont votre analyse dépend réellement.

Ce que Maguyva extrait en R

Maguyva associe les fichiers .R, .Rmd et .Rnw à R. Les fonctions affectées à un nom, comme clean_survey <- function(df), sont extraites sous ce nom, et les fonctions anonymes ne sont pas traitées comme des définitions. Les noms pointés ne sont jamais découpés en receveur et membre.

Certains appels de R de base restent volontairement dans le graphe, car ils montrent comment le code d’analyse est câblé : le dispatch S3 et S4 (UseMethod, standardGeneric), la famille apply (lapply, sapply, vapply, mapply), l’ajustement de modèles (lm, predict, anova), le chargement de packages (library, require) et la gestion d’erreurs avec tryCatch.

Le graphe enregistre aussi l’instanciation et les lectures et écritures.

Exemples de prompts pour agents

  • « Qui appelle clean_survey, et quels modèles utilisent sa sortie ? » (find_symbol, puis dependency_search en incoming)
  • « Quelles fonctions appellent fit_model ? » (dependency_search)
  • « Retrace le chemin de load_raw_data jusqu’à la régression finale. » (get_task_context)

Limites connues

  • Environ 800 noms de R de base, de stats et de graphics sont filtrés des relations, comme print, paste, c, data.frame, les appels de tracé et les générateurs de nombres aléatoires. Utilisez text_pattern_search pour les retrouver.
  • R crée les classes et charge les packages avec des appels de fonction ordinaires : les presets classes, imports et variables de structural_search ne sélectionnent donc rien. Utilisez find_symbol et text_pattern_search.
  • Les fichiers .Rmd et .Rnw sont lus en entier avec la grammaire R plutôt que chunk par chunk : attendez-vous à des résultats partiels pour les documents R Markdown et Sweave.
  • R n’a pas de syntaxe de décorateur : les relations de décorateur sont donc marquées comme non applicables.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Pour les dépôts data science mixtes, lisez aussi le guide Python.

Idéal pour

  • > Les packages R avec de nombreuses fonctions exportées, méthodes S3 et helpers internes.
  • > Les pipelines d'analyse répartis sur des scripts qui partagent des fonctions de nettoyage et de modélisation.
  • > Les équipes data qui confient du code R à des agents IA devant voir quelles fonctions alimentent quels modèles.

Workflows d'agent

  • > Trouver tous les appelants d'une fonction de nettoyage avant de modifier les colonnes qu'elle renvoie.
  • > Retracer quelles fonctions passent par `UseMethod` et où vivent leurs méthodes.
  • > Cartographier le chemin du chargement des données brutes jusqu'au modèle ajusté.

Détails du moteur

  • > La prise en charge de R associe `.R`, `.Rmd` et `.Rnw` à R. Les fonctions affectées à un nom sont extraites sous ce nom, et les noms pointés comme `data.frame` restent entiers.
  • > Le dispatch S3 et S4 (`UseMethod`, `standardGeneric`), la famille apply, `lm`, `predict` et `tryCatch` restent volontairement dans le graphe.
  • > Environ 800 noms de R de base, de `stats` et de `graphics`, comme `print`, `paste` et `c`, sont filtrés des relations.

Points d'entrée MCP utiles

  • find_symbol

    Utilisez-le pour le nom d'une fonction de nettoyage, de modélisation ou d'une méthode S3 quand vous avez besoin de la définition et des appelants.

  • dependency_search

    Utilisez la traversée incoming sur une fonction utilitaire pour voir quelles analyses en dépendent avant de modifier sa sortie.

  • get_task_context

    Utilisez-le pour des prompts comme « retrace le chemin du chargement des données brutes jusqu'à la régression finale ».