-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task kn
ಗುರಿ: ನಿಮ್ಮ ಏಜೆಂಟ್ಗೆ ನಿರ್ದೇಶನ ನೀಡುವ ಮೂಲಕ CLI ಗೆ ಒಂದು ಸಂಪೂರ್ಣ ಹೊಸ ಕಮಾಂಡ್ ಸೇರಿಸುವುದು
— ಆದ್ಯಂತವಾಗಿ. ನಾವು lockedin endorse ಸೇರಿಸುತ್ತೇವೆ: ಇದು ಸಂಪೂರ್ಣ ಅಪರಿಚಿತರಿಗೆ ಅವರಿಗೆ
ಬಹುಶಃ ಖಂಡಿತ ಇಲ್ಲದ skill ಗಳಿಗಾಗಿ endorse ಮಾಡುತ್ತದೆ. ಸರಿಯಾಗಿ brand ಗೆ ಹೊಂದುತ್ತದೆ.
ಇದು ಟ್ಯುಟೋರಿಯಲ್ನ ಹೃದಯ. ನೀವು ನಿಜವಾದ loop ಅನ್ನು ಅಭ್ಯಾಸ ಮಾಡುತ್ತೀರಿ: spec → test ಗಳು → implementation → ಹಸಿರು ಗೇಟ್ → review.
← ಹಿಂದಿನದು: ಟ್ಯುಟೋರಿಯಲ್ 2 ಕೋಡ್ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ · ಮುಂದೆ: ಟ್ಯುಟೋರಿಯಲ್ 4 ಪ್ರಾಂಪ್ಟಿಂಗ್ ಮತ್ತು ರಿವ್ಯೂ
ಏನನ್ನೂ prompt ಮಾಡುವ ಮೊದಲು, spec ಅನ್ನು ನೀವೇ ಸರಳ ಭಾಷೆಯಲ್ಲಿ ಬರೆಯಿರಿ. ಅಸ್ಪಷ್ಟ ವಿನಂತಿಗಳು ಅಸ್ಪಷ್ಟ ಕೋಡ್ ತರುತ್ತವೆ — ಒಬ್ಬ ಮನುಷ್ಯ ಅಥವಾ ಏಜೆಂಟ್ನಿಂದ.
endorse5–7 ಸಾಲುಗಳನ್ನು print ಮಾಡುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ randomly ಆಯ್ಕೆಯಾದ ವ್ಯಕ್ತಿಯನ್ನು (ಅಸ್ತಿತ್ವದಲ್ಲಿರುವNAMESpool ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿ) randomly ಆಯ್ಕೆಯಾದ buzzword skill ಗಾಗಿ (ಒಂದು ಹೊಸ pool) endorse ಮಾಡುತ್ತದೆ. ಇದು ಒಂದು satirical one-liner ನಲ್ಲಿ ಮುಗಿಯುತ್ತದೆ. ಇದುlockedin endorseಆಗಿ, in-session/endorseಆಗಿ reachable ಆಗಿರಬೇಕು, ಮತ್ತುhelpನಲ್ಲಿ ಕಾಣಿಸಬೇಕು. ಎಲ್ಲಾ randomness seededpick/shufflehelper ಬಳಸಲೇಬೇಕು ಇದರಿಂದ output deterministic ಆಗಿ ಉಳಿಯುತ್ತದೆ.npm testಹಸಿರಾಗಿ ಉಳಿಯಬೇಕು, ಮತ್ತು ಕನಿಷ್ಠ ಒಂದು invariant ಅನ್ನು pin ಮಾಡುವ ಒಂದು ಹೊಸ test ಇರಬೇಕು.
ಆ ಪ್ಯಾರಾಗ್ರಾಫ್ ಎಂಬುದೇ ನೀವು ಏಜೆಂಟ್ಗೆ ಕೊಡುವ ವಸ್ತು. ಇದು ಅಧ್ಯಾಯ 2 ರ constraint ಗಳ ಹೆಸರು ಹೇಳುತ್ತದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ (seeded RNG, test ಗೇಟ್, invariant ಅಭ್ಯಾಸ).
ಒಂದು plan ಕೇಳುವ ಮೂಲಕ ಆರಂಭಿಸಿ. ಯಾವುದೇ ಫೈಲ್ ಬದಲಾಗುವ ಮೊದಲು ಒಂದು ಕೆಟ್ಟ approach ಅನ್ನು ಹಿಡಿಯಲು ಇದು ನಿಮ್ಮ ಅವಕಾಶ.
"ನಾನು LockedIn CLI ಗೆ ಒಂದು
endorseಕಮಾಂಡ್ ಸೇರಿಸಲು ಬಯಸುತ್ತೇನೆ. spec ಇಲ್ಲಿದೆ: [paste your spec]. ಕೋಡ್ ಬರೆಯುವ ಮೊದಲು, ಯಾವ ಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತೀ ಮತ್ತು ನಿನ್ನ approach ಏನು ಎಂದು ಹೇಳು, ಇದರಿಂದ ನಾನು ಅನುಮೋದಿಸಬಹುದು.connectನಂತಹ ಕಮಾಂಡ್ನ ಅಸ್ತಿತ್ವದ pattern ಅನ್ನು follow ಮಾಡು."
ಒಂದು ಒಳ್ಳೆಯ plan ಈ ವಿಷಯಗಳನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ: ಒಂದು ಹೊಸ SKILLS pool + src/lockedin.js
ನಲ್ಲಿ ಒಂದು renderEndorse(), ಅದನ್ನು dispatch() ಮತ್ತು handleSlash() ಗೆ ಜೋಡಿಸುವುದು,
renderHelp() ಗೆ ಒಂದು row ಸೇರಿಸುವುದು, ಹೊಸ function/pool ಅನ್ನು export ಮಾಡುವುದು, ಮತ್ತು ಎರಡೂ
test ಫೈಲ್ಗಳಲ್ಲಿ test ಸೇರಿಸುವುದು. plan seeded-RNG ನಿಯಮ ಅಥವಾ test ಗಳನ್ನು ತಪ್ಪಿಸಿದರೆ, ಈಗಲೇ
ಹೇಳಿ.
ಏಜೆಂಟ್ಗೆ implementation ನ ಮೊದಲು test ಗಳನ್ನು ಬರೆಯಲು ಹೇಳಿ. Test-first ನಿಮ್ಮ spec ಅನ್ನು executable ಆದ ಏನಾದರೂ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ, ಮತ್ತು ಇದು ಏಜೆಂಟ್ ಅನ್ನು ಪ್ರಾಮಾಣಿಕವಾಗಿ ಇಡುತ್ತದೆ.
"ಒಳ್ಳೆಯದು. ಮೊದಲು, ಕೇವಲ failing test ಗಳನ್ನು ಸೇರಿಸು:
renderEndorse()ಒಂದು ತಿಳಿದ skill ಮತ್ತು ಕನಿಷ್ಠ 5 endorsement ಗಳನ್ನು ಉಲ್ಲೇಖಿಸುವ text ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಎಂಬ ಒಂದು unit test, ಮತ್ತುlockedin endorseexit 0 ಮಾಡುತ್ತದೆ ಮತ್ತು ಒಂದು endorsement print ಮಾಡುತ್ತದೆ ಎಂಬ ಒಂದುcli.test.jstest. ಒಂದು fixed seed ಬಳಸು.renderEndorseಅನ್ನು ಇನ್ನೂ implement ಮಾಡಬೇಡ — ಮೊದಲು test ಗಳು fail ಆಗುವುದನ್ನು ನೋಡೋಣ."
ಅವನ್ನು ಚಲಾಯಿಸಿ ಮತ್ತು ಅವು ಸರಿಯಾದ ಕಾರಣಕ್ಕಾಗಿ fail ಆಗುವುದನ್ನು ನೋಡಿ (function ಇನ್ನೂ ಇಲ್ಲ):
npm testಈಗ implementation ಗೆ ಹಸಿರು ನಿಶಾನೆ ನೀಡಿ:
"ಈಗ ಆ test ಗಳನ್ನು ಪಾಸ್ ಮಾಡಿಸಲು ಇದನ್ನು implement ಮಾಡು,
connectpattern ಅನ್ನು follow ಮಾಡುತ್ತಾ. ~25 buzzword skill ಗಳ ಒಂದುSKILLSpool, string ಹಿಂತಿರುಗಿಸುವ ಒಂದುrenderEndorse(),dispatchಮತ್ತುhandleSlashಜೋಡಿಸು, ಒಂದುhelprow ಸೇರಿಸು, ಮತ್ತು ನೀನು ಸೇರಿಸಿದ್ದನ್ನು export ಮಾಡು. randomness ಗಾಗಿ ಕೇವಲpick/shuffleಬಳಸು."
ಏಜೆಂಟ್ ಉತ್ಪಾದಿಸುವುದು ಫೈಲ್ನ ಉಳಿದ ಭಾಗದಂತೆಯೇ ಕಾಣಬೇಕು. ಉದಾಹರಣೆಗೆ, ಒಂದು SKILLS pool ಮತ್ತು
ಒಂದು renderer:
const SKILLS = [
'Thought Leadership', 'Synergy', 'Storytelling', 'Vibes',
'Strategic Napping', 'Stakeholder Alignment', 'Radical Candour', /* ...~25 total... */
];
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] + ' ಗಾಗಿ endorse ಮಾಡಿದೆ'));
out.push('', ' ನೀವು ಪರಿಶೀಲಿಸಲಾಗದ skills ಗಾಗಿ 6 ಅಪರಿಚಿತರನ್ನು endorse ಮಾಡಿದ್ದೀರಿ. ಅವರು ಒಂದು ಗಂಟೆಯೊಳಗೆ ನಿಮಗೆ ಮರಳಿ endorse ಮಾಡುತ್ತಾರೆ.');
return out.join('\n');
}…ಜೊತೆಗೆ dispatch() ಮತ್ತು handleSlash() ನಲ್ಲಿ ತಲಾ ಒಂದು line, renderHelp() ನಲ್ಲಿ ಒಂದು
row, ಮತ್ತು module.exports ಗೆ ಸೇರಿಸಿದ SKILLS, renderEndorse.
npm testಹಸಿರೇ? ನೀವು ಈಗಷ್ಟೇ ಒಂದು ಏಜೆಂಟ್ ಜೊತೆ, test-first, ಒಂದು feature ship ಮಾಡಿದಿರಿ. ಹಸಿರಲ್ಲವೇ? ಅದು ಸಾಮಾನ್ಯ — ಅಧ್ಯಾಯ 4 ರ iteration loop ಗೆ ಹೋಗಿ ಮತ್ತು ಏಜೆಂಟ್ಗೆ ಸರಿಯಾಗಿ ಏನು fail ಆಯಿತು ಎಂದು ಹೇಳಿ.
ನಂತರ ನಿಜವಾದದ್ದನ್ನು ಕಣ್ಣಾಡಿಸಿ (test ಗಳು text ಪರಿಶೀಲಿಸುತ್ತವೆ, ಆದರೆ ನೀವು ಇನ್ನೂ ನೋಡಬೇಕು):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reproducibleನೀವು ಓದದ diff ಅನ್ನು ಎಂದಿಗೂ ಸ್ವೀಕರಿಸಬೇಡಿ. ವಿಶೇಷವಾಗಿ ಇವನ್ನು skim ಮಾಡಿ:
-
ಅದು pattern ಅನ್ನು follow ಮಾಡಿತೇ? ಹೊಸ ಕಮಾಂಡ್
connectಅನ್ನು ಪ್ರತಿಬಿಂಬಿಸಬೇಕು — ಯಾವುದೇ ಹೊಸ dependency ಇಲ್ಲ,src/ಒಳಗೆ ಯಾವುದೇconsole.logಇಲ್ಲ. -
ಕೇವಲ seeded RNG? diff ನಲ್ಲಿ
Math.randomಹುಡುಕಿ. ಯಾವುದೂ ಇರಬಾರದು. - ಅದು ಮುಟ್ಟಬಾರದ್ದನ್ನು ಮುಟ್ಟಿತೇ? ಬದಲಾವಣೆ additive ಆಗಿರಬೇಕು; ಸಂಬಂಧವಿಲ್ಲದ ಸಾಲುಗಳು ಚಲಿಸಬಾರದು.
-
ಹೊಸ test ಅರ್ಥಪೂರ್ಣವೇ? ನಂತರ ಯಾರಾದರೂ feature ಮುರಿದರೆ ಅದು fail ಆಗಬೇಕು — ಕೇವಲ
trueassert ಮಾಡಬಾರದು.
ಏನಾದರೂ ತಪ್ಪಿದ್ದರೆ, ಒಂದು fix ಕೇಳಿ (ಅಧ್ಯಾಯ 4). ಚೆನ್ನಾಗಿದ್ದರೆ, ನಿಮ್ಮ ಕೆಲಸ ಮುಗಿಯಿತು.
ಮೇಲಿನ ಇಡೀ loop ಅನ್ನು ನಿಜವಾಗಿ ಮಾಡಿ. ನಂತರ, extra credit ಗಾಗಿ, ಏಜೆಂಟ್ಗೆ ಇದನ್ನು ವಿಸ್ತರಿಸಲು ಹೇಳಿ:
- "
endorseಅನ್ನು ಒಂದು optional ಹೆಸರು ಸ್ವೀಕರಿಸುವಂತೆ ಮಾಡು:lockedin endorse Adaನಿರ್ದಿಷ್ಟವಾಗಿ Ada ಅನ್ನು endorse ಮಾಡಬೇಕು. ಒಂದು test ಸೇರಿಸು, ಗೇಟ್ ಹಸಿರಾಗಿ ಇಡು."
ಈಗ ನೀವು ಒಂದು feature ಅನ್ನು ಆದ್ಯಂತವಾಗಿ ಕಟ್ಟಿದ್ದೀರಿ. ಕೊನೆಯ ಅಧ್ಯಾಯ ಇದನ್ನು ಸುಗಮವಾಗಿ ಮಾಡುವ ಬಗ್ಗೆ — ಒಬ್ಬ lead engineer ನಂತೆ prompt ಮಾಡುವುದು ಮತ್ತು review ಮಾಡುವುದು.
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.