C στο Maguyva: γράφοι κλήσεων για κώδικα συστημάτων και ενσωματωμένων
Στη C, ο γράφος κλήσεων είναι η αρχιτεκτονική. Ένας πράκτορας πρέπει να τον διαβάσει πριν επεξεργαστεί.
Επεκτάσεις
.c, .h
Το Maguyva υποστηρίζει τη Lua με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν αρθρώματα, μεθόδους με άνω-κάτω τελεία, κλάσεις με μεταπίνακες και αλυσίδες require σε κώδικα Lua.
Η Lua δεν έχει λέξη-κλειδί για κλάσεις. Τα αντικείμενα είναι πίνακες, οι μέθοδοι είναι συναρτήσεις αποθηκευμένες σε αυτούς, και η κληρονομικότητα είναι μια κλήση setmetatable. Ένα άρθρωμα είναι ό,τι επιστρέφει το require. Η δομή είναι πραγματική, αλλά ζει σε συμβάσεις που η αναζήτηση κειμένου δεν καταλαβαίνει.
Το Maguyva διαβάζει αυτές τις συμβάσεις ως δομή, ώστε ο πράκτορας να ρωτά ποιος καλεί μια μέθοδο ή ποιοι πίνακες επεκτείνουν μια βάση και να παίρνει άμεση απάντηση.
Το Maguyva καλύπτει αρχεία .lua. Εξάγονται δηλώσεις συναρτήσεων, ορισμοί local function και εκφράσεις συναρτήσεων, και οι μέθοδοι με άνω-κάτω τελεία όπως function Account:deposit() αποδίδονται στον πίνακα-κάτοχό τους, Account. Οι αλυσίδες μεθόδων ακολουθούνται κλήση προς κλήση, και οι κλήσεις στο self μένουν δεμένες στο περιβάλλον αντικείμενο.
Οι συμβάσεις της Lua γίνονται σχέσεις ως εξής:
require, dofile και loadfile καταγράφουν εισαγωγές.setmetatable σε επίπεδο αρθρώματος καταγράφει κληρονομικότητα.ClassName:new(), ClassName.new() και setmetatable({...}, ClassName) μετρούν ως δημιουργία στιγμιοτύπου.error() καταγράφει ρίψη, και τα pcall και xpcall καταγράφουν σύλληψη.Ο γράφος καταγράφει επίσης αναγνώσεις και εγγραφές και ροή ελέγχου.
Inventory:addItem και από ποια σενάρια;» (find_symbol, μετά dependency_search με εισερχόμενη κατεύθυνση)util.http με require;» (dependency_search)get_task_context)string, table, math, io, os, coroutine, debug και utf8) μαζί με το API vim.* του Neovim και το ngx.* του OpenResty. Οι κλήσεις σε αυτά τα API δεν είναι ακμές του γράφου· για να τις βρείτε, χρησιμοποιήστε το text_pattern_search.classes και imports στο structural_search δεν επιλέγουν τίποτα για τη Lua. Χρησιμοποιήστε αντί αυτών το find_symbol ή το text_pattern_search.Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πίνακα υποστήριξης στη σελίδα συμβατότητας. Για μηχανές που ενσωματώνουν τη Lua σε εγγενή κώδικα, διαβάστε και τον οδηγό για τη C.
Ιδανική χρήση
Ροές εργασίας πρακτόρων
Λεπτομέρειες μηχανής
Χρήσιμα σημεία εισόδου MCP
Χρησιμοποιήστε το για μια συνάρτηση module ή μέθοδο με άνω-κάτω τελεία όταν χρειάζεστε τον ορισμό και τους καλούντες.
Χρησιμοποιήστε εισερχόμενη διάσχιση για να δείτε ποια αρχεία φορτώνουν ένα κοινόχρηστο module με require πριν το μετακινήσετε.
Χρησιμοποιήστε το για κλήσεις `vim.*`, `ngx.*` ή της τυπικής βιβλιοθήκης που φιλτράρονται από τον γράφο.
Σχετικοί οδηγοί
Στη C, ο γράφος κλήσεων είναι η αρχιτεκτονική. Ένας πράκτορας πρέπει να τον διαβάσει πριν επεξεργαστεί.
Επεκτάσεις
.c, .h
Χρήσιμο όταν οι βάσεις κώδικα Python απλώνονται σε υπηρεσίες, σενάρια, αρχεία δηλώσεων τύπων και λειτουργικό συνδετικό κώδικα.
Επεκτάσεις
.py, .pyi, .pyw