Φθηνός κώδικας, πολύτιμη εμπιστοσύνη: η Microsoft κλιμακώνει τον εκσυγχρονισμό κώδικα με agents

Η Microsoft αναπτύσσει και λειτουργεί agents που μετασχηματίζουν με ασφάλεια μερικές από τις μεγαλύτερες βάσεις κώδικα παγκοσμίως, όπως τα Windows και το Azure, όπως περιγράφεται σε ανάρτηση με τίτλο “Cheap code, precious trust: Code modernization at scale”. Ο στόχος είναι η εκσυγχρόνιση κώδικα σε κλίμακα, από μεταγλωττιστικές αλυσίδες μέχρι γλωσσική μετάβαση.
Το ερώτημα δεν είναι πια πώς παράγεται ο κώδικας, αλλά πώς τον εμπιστεύεσαι. Όταν agents αλλάζουν εκατοντάδες εκατομμύρια γραμμές, χρειάζεται απόδειξη ότι δεν αλλοιώνεται η συμπεριφορά, η ασφάλεια και η αρχιτεκτονική πρόθεση. Από το 2024, η ομάδα συνδυάζει agents με στατική ανάλυση, δοκιμές και τυπική επαλήθευση για αξιόπιστους, μεγάλης κλίμακας μετασχηματισμούς.
Στην πορεία αντιστράφηκε η ροή ελέγχου: αρχικά σκληροκώδικες ροές καλούσαν LLMs ως υπορουτίνες, αλλά μέχρι τον Μάιο του 2025 οι agents αποδείχθηκαν καλύτεροι planners από τα pipelines. Η δουλειά μετατοπίστηκε στην κατασκευή εργαλείων που καλούν οι agents, με τα πιο πολύτιμα να είναι όσα κρίνουν αν μια αλλαγή είναι σωστή.
Η προσέγγιση εξελίσσεται συνεχώς, με ένα ευέλικτο πλαίσιο που αξιοποιεί τυπικές μεθόδους, διασπά μεγάλους στόχους σε πολύπλοκα συστήματα και στοχεύει στα προβλήματα ώριμων εταιρειών με μεγάλες, περίπλοκες βάσεις κώδικα. Παράλληλα επαναστοχάζεται ο ρόλος ανθρώπων και agents: η ανθρώπινη προσοχή είναι ο πιο σπάνιος πόρος, και τα εργαλεία σχεδιάζονται ώστε να δαπανάται εκεί που έχει τη μεγαλύτερη αξία.
Στις μεγάλες μεταναστεύσεις κώδικα, ο ορισμός είναι σαφής: μετασχηματισμοί σε όλη τη βάση για συγκεκριμένο τεχνικό στόχο, όπως αναβαθμίσεις εξαρτήσεων, υιοθέτηση νέου compiler, άρση ευρημάτων στατικής ανάλυσης ή μετάβαση πλατφόρμας. Ενδεικτικά, αναφέρεται η προσθήκη υποστήριξης Clang/LLVM σε ολόκληρη τη βάση των Windows (εκατοντάδες εκατομμύρια γραμμές), η άρση ευρημάτων από CodeQL, PREfast και Roslyn, και η μετοχοποίηση υπηρεσιών από x86 σε ARM.
Το λειτουργικό μοντέλο είναι εσκεμμένο: μια πολύ μικρή ομάδα ειδικών οδηγεί μια μεγάλη μετανάστευση, με τους agents να πολλαπλασιάζουν την επίδρασή της. Οι agents μαθαίνουν αρχικά μια υποψήφια «βάση γνώσης» από δειγματοληπτικά ευρήματα. Ένας agent-κριτής βαθμολογεί κάθε προτεινόμενη διόρθωση ως προς ορθότητα, ελαχιστοποίηση, συνέπεια με τα conventions του αρχείου και συντηρησιμότητα, και τα αποτελέσματα βελτιώνουν τη βάση γνώσης. Οι ειδικοί εγκρίνουν τη γνώση —όχι μεμονωμένα fixes— και οι agents την εφαρμόζουν σε όλο τον κώδικα. Η ανθρώπινη ανατροφοδότηση παραμένει κρίσιμη, αλλά διοχετεύεται εκεί όπου αποδίδει περισσότερο: στην έγκριση γνώσης και στη διευθέτηση νέων ή αμφίσημων περιπτώσεων. Η ομαδοποίηση παρόμοιων αλλαγών μειώνει περαιτέρω το γνωστικό φορτίο.
Στον γλωσσικό εκσυγχρονισμό, μεγάλο μέρος κρίσιμου λογισμικού σε C/C++ εκθέτει σε bugs ασφάλειας μνήμης. Η μετάβαση σε Rust υπόσχεται ασφάλεια εκ κατασκευής, υπό τον όρο ότι διατηρείται ακριβώς η αρχική συμπεριφορά. Σε πραγματική κλίμακα, το χειροκίνητο ξαναγράψιμο σπάνια είναι πρακτικό και το αυτόματο μόνο αν είναι αξιόπιστο. Η εργασία εστιάζει στη μεταφορά legacy κώδικα σε Rust, με την ταχεία πρόοδο μοντέλων και agents να μετακινεί τα bottlenecks: από τη μεταγλώττιση, στα tests και τελικά στην επικύρωση συμπεριφοράς σε κλίμακα. Όσο βελτιώνεται η παραγωγή, το δύσκολο είναι τι θα εκσυγχρονιστεί και πώς θα αποδειχθεί ότι είναι σωστό.
Έχουν δημιουργηθεί διαδραστικά εργαλεία για οπτικοποίηση αρθρωμάτων και στρώσεων, ώστε οι μηχανικοί να επιλέγουν τι θα εκσυγχρονιστεί και με ποια σειρά. Τα εργαλεία παράγουν τόσο τον εκσυγχρονισμένο κώδικα όσο και τη στρατηγική επικύρωσης. Αποδίδει καλύτερα η μετανάστευση ανά λειτουργία (feature) παρά γραμμή-γραμμή: κάθε λειτουργία είναι μονάδα ορατής συμπεριφοράς που επικυρώνεται άκρο-σε-άκρο με σενάρια δοκιμών και αποκτά δική της «πύλη» επικύρωσης. Η διαφορική δοκιμή συγκρίνει πηγή-στόχο, ενώ tests που δεν βλέπει ο agent μετρούν τη στιβαρότητα της μετάφρασης. Πιο πρόσφατα, εξάγονται τυπικές προδιαγραφές από την πηγή, μεταφέρονται στη γλώσσα-στόχο και με το Verus αποδεικνύεται ότι ο εκσυγχρονισμένος κώδικας τις ικανοποιεί.
Στο specification-driven development, οι agents παράγουν αλλαγές ταχύτερα απ’ όσο μπορούν οι άνθρωποι να τις αξιολογήσουν, και ο «τοπικά πειστικός» κώδικας μπορεί να παραβιάζει αρχιτεκτονικές παραδοχές, πρωτόκολλα, όρια ασφάλειας ή λειτουργικές σταθερές. Η λύση που προκρίνεται είναι η ρητή αποτύπωση πρόθεσης: καθώς οι agents γράφουν περισσότερο κώδικα, η προσοχή των developers μετατοπίζεται στη διαχείριση προδιαγραφών που τους κατευθύνουν και επικυρώνουν την έξοδό τους. Χτίζονται εργαλεία που φέρνουν τυπικές, ερμηνεύσιμες προδιαγραφές στο επίκεντρο του κύκλου ζωής λογισμικού.
Πρώτο βήμα είναι η εξαγωγή τυπικών προδιαγραφών (π.χ. TLA+) από υπάρχοντα codebases με agents. Αυτές περιγράφουν ταυτοχρονισμό, ανοχή σε σφάλματα και άλλα κρίσιμα στοιχεία. Με εργαλεία όπως το TLC ελέγχεται ότι ίχνη εκτέλεσης της υλοποίησης γίνονται δεκτά από τις προδιαγραφές —ένδειξη ότι αποδέχονται την παρατηρηθείσα συμπεριφορά. Όταν δεν γίνονται δεκτά, το κενό μπορεί να σημαίνει σφάλμα υλοποίησης, ανακριβή προδιαγραφή ή άκυρο test, και οι agents διορθώνουν ό,τι είναι λάθος.
Με τις προδιαγραφές σε ισχύ, παράγονται απαιτητικές δοκιμές για δύσκολες διεμπλοκές και σενάρια σφαλμάτων. Γίνεται model checking υποψήφιων ιδιοτήτων και επαγωγικών invariants σε μικρές, πεπερασμένες διαμορφώσεις για γρήγορα counterexamples, και αποδείξεις για όλες τις διαμορφώσεις σε F* και Lean, με compiler από TLA+ προς F* και προς Lean που κατασκευάζεται. Σε «καφέ» codebases, αυτό το στρώμα προδιαγραφών, tests και ιδιοτήτων λειτουργεί ως κιγκλίδωμα για μελλοντικές αλλαγές που παράγονται από AI.
Ο στόχος είναι η ισχύς των τυπικών μεθόδων να φτάσει σε κάθε μηχανικό χωρίς να απαιτείται εξειδίκευση σε TLA+ ή formal verification: ο μηχανικός εγκρίνει τις ιδιότητες που πρέπει να ισχύουν και οι agents βρίσκουν τα επαγωγικά invariants για να τις αποδείξουν. Καθώς οι προδιαγραφές γίνονται πλήρεις, μπορούν να αγκυρώσουν και τον εκσυγχρονισμό —όπως στην μετάφραση C/C++ σε Rust επαληθευμένο με Verus.
Η ανάρτηση αποτελεί το πρώτο μέρος σειράς για όσα κατασκευάζονται, όσα έχουν μαθευτεί και τα αναπάντητα ερωτήματα που διαμορφώνουν τα επόμενα βήματα. Η ομάδα καλεί ανατροφοδότηση από την κοινότητα για προτεραιότητες και διαφωνίες.
Στη σειρά περιλαμβάνονται: «Κατασκευή πλήρως αυτόνομης λειτουργίας πρόσκλησης συσκέψεων για το Autopilot — πώς το μοντέλο Microsoft-Decision-1 βοήθησε να φτάσει στον τερματισμό». Και: «Μπορούμε να το χτίσουμε. Μπορούμε να το αξιολογήσουμε; Καθώς το agentic AI συντομεύει τη διαδρομή από την ιδέα στον αποσταλμένο κώδικα, η αξιολόγηση της διαδρομής γίνεται κρίσιμη δεξιότητα σχεδιασμού».
Το κείμενο δημιουργήθηκε από GPT 5.0. Δείτε τα AI Editorial Guidelines.






