跳至主要內容
cd /languages
  • 統計計算
  • 程式語言
  • AST 與符號支援

Maguyva 的 R 支援:面向分析與套件程式碼的程式碼圖譜

Maguyva 以 AST、符號和圖譜支援 R,讓 AI 代理跨越 R 腳本和套件追蹤函式、S3 與 S4 分派以及模型擬合呼叫。

R 讓淺層 AI 工具栽跟頭的地方

R 把基礎函式、套件函式和你自己的函式放在同一個扁平命名空間裡。點號是名字的一部分,而不是成員存取:is.na、data.frame 和 print.summary_table 都是單個識別字。把 print.summary_table 讀成 print 上方法的工具會弄錯結構,而記錄每個基礎呼叫的工具會把你的函式埋在 c() 和 paste() 底下。

Maguyva 保持 R 名稱完整,並過濾基礎函式雜訊,讓代理看到分析真正依賴的函式。

Maguyva 在 R 中擷取什麼

Maguyva 把 .R、.Rmd 和 .Rnw 檔案對應為 R。賦值給名字的函式(如 clean_survey <- function(df))會以該名字擷取,匿名函式不視為定義。帶點號的名字永遠不會被拆成接收者和成員。

一些基礎 R 呼叫會被刻意保留在圖譜中,因為它們展示了分析程式碼的連接方式:S3 與 S4 分派(UseMethod、standardGeneric)、apply 家族(lapply、sapply、vapply、mapply)、模型擬合(lm、predict、anova)、套件載入(library、require),以及用 tryCatch 進行的錯誤處理。

圖譜還會記錄實例化和讀寫。

代理提示範例

  • 「誰呼叫了 clean_survey,哪些模型使用了它的輸出?」(先用 find_symbol,再用 dependency_search 的 incoming 方向)
  • 「哪些函式呼叫了 fit_model?」(dependency_search)
  • 「追蹤從 load_raw_data 到最終迴歸的路徑。」(get_task_context)

已知限制

  • 約 800 個基礎 R、stats 和 graphics 名稱會從關係中過濾掉,例如 print、paste、c、data.frame、繪圖呼叫和隨機數生成函式。查詢它們請使用 text_pattern_search。
  • R 用普通函式呼叫來建立類別和載入套件,因此 structural_search 中的 classes、imports 和 variables 預設集什麼也選不到。請使用 find_symbol 和 text_pattern_search。
  • .Rmd 和 .Rnw 檔案會整體按 R 語法讀取,而不是逐個程式碼區塊讀取,因此 R Markdown 和 Sweave 文件的結果可能不完整。
  • R 沒有裝飾器語法,因此裝飾器關係被標記為不適用。

下一步

透過快速入門連接儲存庫,然後在相容性頁面檢視支援矩陣。混合資料科學儲存庫也請閱讀 Python 指南。

最適合的情境

  • > 擁有大量匯出函式、S3 方法和內部輔助函式的 R 套件。
  • > 拆分在多個腳本中、共享資料清洗和建模函式的分析管線。
  • > 把 R 程式碼交給 AI 代理、需要看清哪些函式為哪些模型提供輸入的資料團隊。

代理工作流程

  • > 在修改資料清洗函式回傳的欄位之前,找到它的所有呼叫端。
  • > 追蹤哪些函式透過 `UseMethod` 分派,以及它們的方法在哪裡。
  • > 梳理從原始資料載入到擬合模型的路徑。

引擎細節

  • > R 支援把 `.R`、`.Rmd` 和 `.Rnw` 對應為 R。賦值給名字的函式會以該名字擷取,`data.frame` 這樣帶點號的名字保持完整。
  • > S3 與 S4 分派(`UseMethod`、`standardGeneric`)、apply 家族、`lm`、`predict` 和 `tryCatch` 會被刻意保留在圖譜中。
  • > 約 800 個基礎 R、`stats` 和 `graphics` 名稱(如 `print`、`paste` 和 `c`)會從關係中過濾掉。

實用的 MCP 進入點

  • find_symbol

    需要清洗、建模或 S3 方法名的定義和呼叫端時使用它。

  • dependency_search

    修改輔助函式的輸出之前,對它使用 incoming 方向走訪,檢視哪些分析依賴它。

  • get_task_context

    用於「追蹤從原始資料載入到最終迴歸的路徑」這類提示。