-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task el
Στόχος: πρόσθεσε μια ολοκαίνουργια εντολή στο CLI — από άκρη σε άκρη —
καθοδηγώντας τον πράκτορά σου. Θα προσθέσουμε το lockedin endorse: υποστηρίζει
εντελώς αγνώστους για δεξιότητες που σχεδόν σίγουρα δεν έχουν. Πάνω στο brand.
Αυτή είναι η καρδιά του μαθήματος. Θα εξασκηθείς στον πραγματικό βρόχο: προδιαγραφή → tests → υλοποίηση → πράσινη πύλη → έλεγχος.
← Προηγούμενο: Μάθημα 2 Πώς λειτουργεί ο κώδικας · Επόμενο: Μάθημα 4 Prompting και έλεγχος
Πριν κάνεις οποιοδήποτε prompt, γράψε την προδιαγραφή μόνος/η σου σε απλή γλώσσα. Τα ασαφή αιτήματα παίρνουν ασαφή κώδικα — από άνθρωπο ή από πράκτορα.
Το
endorseτυπώνει 5–7 γραμμές, καθεμία υποστηρίζοντας ένα τυχαία επιλεγμένο άτομο (επαναχρησιμοποίησε το υπάρχον poolNAMES) για μια τυχαία επιλεγμένη buzzword δεξιότητα (ένα νέο pool). Τελειώνει με μια σατιρική μονόγραμμη ατάκα. Πρέπει να είναι προσβάσιμο ωςlockedin endorse, ως το εντός-συνεδρίας/endorse, και να εμφανίζεται στοhelp. Όλη η τυχαιότητα πρέπει να χρησιμοποιεί τους βοηθούςpick/shuffleμε seed ώστε η έξοδος να μένει ντετερμινιστική. Τοnpm testπρέπει να μένει πράσινο, και θα πρέπει να υπάρχει ένα νέο test που καθηλώνει τουλάχιστον ένα αναλλοίωτο.
Αυτή η παράγραφος είναι αυτό που θα δώσεις στον πράκτορα. Πρόσεξε ότι κατονομάζει τους περιορισμούς από το Κεφάλαιο 2 (γεννήτρια με seed, η πύλη ελέγχου, η συνήθεια των αναλλοίωτων).
Ξεκίνα ζητώντας ένα πλάνο. Αυτή είναι η ευκαιρία σου να πιάσεις μια κακή προσέγγιση πριν αλλάξει οποιοδήποτε αρχείο.
«Θέλω να προσθέσω μια εντολή
endorseστο LockedIn CLI. Εδώ είναι η προδιαγραφή: [paste your spec]. Πριν γράψεις κώδικα, πες μου ποια αρχεία θα αλλάξεις και την προσέγγισή σου, για να την εγκρίνω. Ακολούθησε τα υπάρχοντα μοτίβα για μια εντολή σαν τοconnect.»
Ένα καλό πλάνο αναφέρει: ένα νέο pool SKILLS + μια renderEndorse() στο
src/lockedin.js, τη σύνδεσή της στο dispatch() και στο handleSlash(), την
προσθήκη μιας γραμμής στο renderHelp(), την εξαγωγή της νέας συνάρτησης/pool,
και την προσθήκη tests και στα δύο αρχεία test. Αν το πλάνο χάνει τον κανόνα της
γεννήτριας με seed ή τα tests, πες το τώρα.
Ζήτα από τον πράκτορα να γράψει τα tests πριν την υλοποίηση. Τα tests-πρώτα μετατρέπουν την προδιαγραφή σου σε κάτι εκτελέσιμο, και κρατούν τον πράκτορα έντιμο.
«Ωραία. Πρώτα, πρόσθεσε μόνο tests που αποτυγχάνουν: ένα unit test ότι η
renderEndorse()επιστρέφει κείμενο που αναφέρει μια γνωστή δεξιότητα και τουλάχιστον 5 endorsements, και ένα testcli.test.jsότι τοlockedin endorseβγαίνει με 0 και τυπώνει ένα endorsement. Χρησιμοποίησε ένα σταθερό seed. Μην υλοποιήσεις ακόμα τηνrenderEndorse— ας δούμε πρώτα τα tests να αποτυγχάνουν.»
Τρέξε τα και δες τα να αποτυγχάνουν για τον σωστό λόγο (η συνάρτηση δεν υπάρχει ακόμα):
npm testΤώρα δώσε το πράσινο φως στην υλοποίηση:
«Τώρα υλοποίησέ το ώστε να περνούν αυτά τα tests, ακολουθώντας το μοτίβο του
connect. Πρόσθεσε ένα poolSKILLSμε ~25 buzzword δεξιότητες, μιαrenderEndorse()που επιστρέφει ένα string, σύνδεσε τοdispatchκαι τοhandleSlash, πρόσθεσε μια γραμμήhelp, και εξήγαγε ό,τι πρόσθεσες. Χρησιμοποίησε μόνοpick/shuffleγια την τυχαιότητα.»
Αυτό που παράγει ο πράκτορας θα πρέπει να μοιάζει πολύ με το υπόλοιπο αρχείο. Για
παράδειγμα, ένα pool SKILLS και μια γεννήτρια:
const SKILLS = [
'Thought Leadership', 'Συνέργεια', 'Storytelling', 'Vibes',
'Στρατηγικός υπνάκος', 'Ευθυγράμμιση stakeholders', 'Ριζική ειλικρίνεια', /* ...~25 συνολικά... */
];
function renderEndorse() {
const people = shuffle(NAMES).slice(0, 5 + Math.floor(rand() * 3)); // 5–7
const skills = shuffle(SKILLS);
const out = [''];
people.forEach((n, i) =>
out.push(' ✔ Υποστήριξες τον/την ' + n + ' για ' + skills[i % skills.length]));
out.push('', ' Υποστήριξες 6 αγνώστους για δεξιότητες που δεν μπορείς να επαληθεύσεις. Θα σε υποστηρίξουν κι εκείνοι μέσα στην ώρα.');
return out.join('\n');
}…συν μία γραμμή σε καθένα από τα dispatch() και handleSlash(), μια γραμμή στο
renderHelp(), και SKILLS, renderEndorse προστεθειμένα στο module.exports.
npm testΠράσινο; Μόλις δημοσίευσες ένα χαρακτηριστικό με πράκτορα, tests-πρώτα. Όχι πράσινο; Αυτό είναι φυσιολογικό — πήγαινε στον βρόχο επανάληψης του Κεφαλαίου 4 και πες στον πράκτορα ακριβώς τι απέτυχε.
Μετά κοίτα με το μάτι το πραγματικό πράγμα (τα tests ελέγχουν το κείμενο, αλλά πρέπει και να κοιτάξεις):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # αναπαραγώγιμοΠοτέ μην αποδέχεσαι ένα diff που δεν έχεις διαβάσει. Ξεφύλλισε ειδικά γι' αυτά:
-
Ακολούθησε το μοτίβο; Η νέα εντολή θα πρέπει να καθρεφτίζει το
connect— καμία νέα εξάρτηση, κανέναconsole.logμέσα στοsrc/. -
Μόνο γεννήτρια με seed; Ψάξε στο diff για
Math.random. Δεν θα πρέπει να υπάρχει κανένα. - Άγγιξε κάτι που δεν έπρεπε; Η αλλαγή θα πρέπει να είναι προσθετική· άσχετες γραμμές δεν θα πρέπει να μετακινούνται.
-
Είναι το νέο test ουσιαστικό; Θα πρέπει να αποτυγχάνει αν κάποιος αργότερα
σπάσει το χαρακτηριστικό — όχι απλώς να διαβεβαιώνει
true.
Αν κάτι δεν πάει καλά, ζήτα μια διόρθωση (Κεφάλαιο 4). Αν είναι καλό, τελείωσες.
Κάνε ολόκληρο τον παραπάνω βρόχο για τα αληθινά. Μετά, για επιπλέον πόντους, ζήτα από τον πράκτορα να το επεκτείνει:
- «Κάνε το
endorseνα δέχεται ένα προαιρετικό όνομα: τοlockedin endorse Adaθα πρέπει να υποστηρίζει συγκεκριμένα την Ada. Πρόσθεσε ένα test, κράτα την πύλη πράσινη.»
Έχτισες τώρα ένα χαρακτηριστικό από άκρη σε άκρη. Το τελευταίο κεφάλαιο αφορά το να το κάνεις αυτό ομαλά — prompting και έλεγχος σαν επικεφαλής μηχανικός.
Επόμενο: Μάθημα 4 Prompting και έλεγχος
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.