Codex ஆர்க்கெஸ்ட்ரேஷனுக்கான ஓப்பன்-சோர்ஸ் விவரக்குறிப்பு: Symphony
Alex Kotliarskyi, Victor Zhu, மற்றும் Zach Brock எழுதியது
ஆறு மாதங்களுக்கு முன், ஒரு உள்ளக உற்பத்தித்திறன் கருவியில் வேலை செய்தபோது, எங்கள் அணி (அப்போது) சர்ச்சைக்குரியதாக இருந்த ஒரு முடிவை எடுத்தது: மனிதர்கள் எழுதிய கோடு இல்லாமல் எங்கள் ரெப்போவை உருவாக்குவோம். எங்கள் புராஜெக்ட் ரிபாசிட்டரியில் உள்ள ஒவ்வொரு வரியும் Codex மூலம் உருவாக்கப்பட்டிருக்க வேண்டும்.
அதை சாத்தியமாக்க, எங்கள் பொறியியல் பணிப்பாய்வை அடித்தளத்திலிருந்தே மறுவடிவமைத்தோம். ஏஜென்ட்களுக்கு உகந்த ரிபாசிட்டரியை உருவாக்கினோம், தானியங்காக்கப்பட்ட சோதனைகள் மற்றும் கார்டுரயில்களில் பெரிதும் முதலீடு செய்தோம், மேலும் Codex-ஐ முழுமையான ஒரு அணித்தோழராக நடத்தினோம். அந்த பயணத்தை எங்கள் முந்தைய ஹார்னஸ் பொறியியல் பற்றிய வலைப்பதிவு பதிவில் ஆவணப்படுத்தினோம்.
அது வேலை செய்தது, ஆனால் அதன் பிறகு அடுத்த பாட்டில்நெக்கை எதிர்கொண்டோம்: சூழலை மாற்றுதல்.
இந்த புதிய பிரச்சினையைத் தீர்க்க, Symphony என்ற அமைப்பை உருவாக்கினோம். Symphony(புதிய சாளரத்தில் திறக்கும்) என்பது, Linear போன்ற புராஜெக்ட் மேனேஜ்மென்ட் போர்டைக் கோடிங் ஏஜென்ட்களுக்கான கட்டுப்பாட்டுத் தளமாக மாற்றும் ஒரு ஏஜென்ட் ஆர்க்கெஸ்ட்ரேட்டர் ஆகும். செயலில் உள்ள ஒவ்வொரு பணிக்கும் ஒரு ஏஜென்ட் கிடைக்கும், ஏஜென்ட்கள் தொடர்ச்சியாக இயங்கும், மனிதர்கள் முடிவுகளை ரிவியூ செய்கிறார்கள்.
இந்த பதிவு, Symphony-யை எப்படி உருவாக்கினோம்—அதன் விளைவாக சில அணிகளில் pull requestகள் ஏற்படுவது 500% அதிகரித்தது—மற்றும் உங்கள் சொந்த சிக்கல் டிராக்கரை எப்போதும் இயங்கும் ஏஜென்ட் ஆர்க்கெஸ்ட்ரேட்டராக மாற்ற அதை எப்படி பயன்படுத்துவது என்பதை விளக்குகிறது.
ஊடாடும் கோடிங் ஏஜென்ட்களின் உச்சவரம்பு
அவற்றைப் பயன்படுத்துவது எளிதாகிக் கொண்டிருந்தாலும், இணையச் செயலிகள் அல்லது CLI வழியாக அணுகப்பட்டாலும் கோடிங் ஏஜென்ட்கள் இன்னும் ஊடாடும் கருவிகளாகவே உள்ளன.
OpenAI-யில் ஏஜென்டிக் பணியின் அளவு அதிகரித்தபோது, புதிய வகையான ஒரு சிக்கலைக் கண்டோம். ஒவ்வொரு பொறியாளரும் சில Codex அமர்வுகளைத் திறந்து, பணிகளை ஒதுக்கி, வெளியீட்டை ரிவியூ செய்து, ஏஜென்டை வழிநடத்தி, இதையே மீண்டும் மீண்டும் செய்வார். நடைமுறையில், சூழலை மாற்றுதல் கடினமாக மாறுவதற்கு முன் பெரும்பாலானோர் ஒரே நேரத்தில் மூன்று முதல் ஐந்து அமர்வுகளை வசதியாக நிர்வகிக்க முடிந்தது. அதற்கு மேல், உற்பத்தித்திறன் குறைந்தது. எந்த அமர்வு என்ன செய்கிறது என்பதை மறந்துவிடுவோம், ஏஜென்ட்களை மீண்டும் பாதைக்கு கொண்டுவர டெர்மினல்களுக்கு இடையில் தாவுவோம், பாதியில் முடங்கிய நீண்டநேர பணிகளை பிழைகாணல் செய்வோம்.
ஏஜென்ட்கள் வேகமாக இருந்தன, ஆனால் எங்களிடம் ஒரு சிஸ்டம் பாட்டில்நெக் இருந்தது: மனித கவனம். நடைமுறையில், மிகுந்த திறமை கொண்ட ஜூனியர் பொறியாளர்கள் கொண்ட ஒரு அணியை உருவாக்கி, பின்னர் எங்கள் மனித பொறியாளர்கள் அவர்களை மைக்ரோமேனேஜ் செய்ய நியமித்திருந்தோம். அது பெரிய அளவில் அதிகரிக்கப்படவில்லை.
கண்ணோட்டத்தில் ஒரு மாற்றம்
நாங்கள் தவறான விஷயத்தை மேம்படுத்திக் கொண்டிருந்தோம் என்பதை உணர்ந்தோம். எங்கள் அமைப்பை கோடிங் அமர்வுகள் மற்றும் ஒன்றிணைக்கப்பட்ட PRகளைச் சுற்றி அமைத்திருந்தோம்; ஆனால் PRகள் மற்றும் அமர்வுகள் என்பது உண்மையில் ஒரு இறுதி இலக்குக்கான வழிமுறைகள் மட்டுமே. மென்பொருள் பணிப்பாய்வுகள் பெரும்பாலும் டெலிவரி செய்யப்படுபவற்றைச் சுற்றி ஒழுங்குபடுத்தப்படுகின்றன: சிக்கல்கள், பணிகள், டிக்கெட்கள், மைல்ஸ்டோன்கள்.
ஆகவே ஏஜென்ட்களை நேரடியாக மேற்பார்வை செய்வதை நிறுத்தி, அதற்குப் பதிலாக அவை எங்கள் பணி டிராக்கரிலிருந்து வேலை எடுத்துக்கொள்ள அனுமதித்தால் என்ன ஆகும் என்று நாங்கள் கேட்டுக்கொண்டோம்.
அந்த யோசனையே Symphony-ஆக மாறியது; ஏஜென்டிக் பணியை ஆர்க்கெஸ்ட்ரேட்டட் செய்ய சூப்பர்வைசர் போல செயல்படும் ஒரு எழுதப்பட்ட விவரக்குறிப்பு.
எங்கள் சிக்கல் டிராக்கரை ஏஜென்ட் ஆர்க்கெஸ்ட்ரேட்டராக மாற்றுதல்
Symphony ஒரு எளிய கருத்துடன் தொடங்கியது: செயலில் உள்ள எந்தப் பணியும் ஒரு ஏஜென்டால் எடுத்துக்கொள்ளப்பட்டு முடிக்கப்பட வேண்டும். பல தாவல்களில் Codex அமர்வுகளை நிர்வகிப்பதற்குப் பதிலாக, எங்கள் சிக்கல் டிராக்கரை கட்டுப்பாட்டுத் தளமாக மாற்றினோம்.
இந்த அமைப்பில், செயலில் உள்ள ஒவ்வொரு Linear சிக்கலும் ஒரு தனிப்பட்ட ஏஜென்ட் வர்க்ஸ்பேஸுடன் மேப் செய்யப்படுகிறது. Symphony பணிப் பலகையைத் தொடர்ந்து கவனித்து, செயலில் உள்ள ஒவ்வொரு பணிக்கும் அது முடியும் வரை லூப்பில் ஒரு ஏஜென்ட் இயங்குவதை உறுதி செய்கிறது. ஏதேனும் ஏஜென்ட் கிராஷ் ஆனால் அல்லது முடங்கினால், Symphony அதை மறுதொடக்கம் செய்கிறது. புதிய வேலை தோன்றினால், Symphony அதை எடுத்துக்கொண்டு பணியை ஒழுங்குபடுத்தத் தொடங்குகிறது.
டிக்கெட் நிலைகளை அடிப்படையாகக் கொண்டு, பணி நிர்வாகி, Linear-ஐ ஒரு நிலை மெஷினாகப் பயன்படுத்தி எங்கள் பணிப்பாய்வை உருவாக்கினோம்.
நடைமுறையில், Symphony வேலைகளை அமர்வுகளிலிருந்தும் pull requestகளிலிருந்தும் பிரிக்கிறது. சில சிக்கல்கள் பல ரெப்போகளில் பல PRகளை உருவாக்கும்; மற்றவை codebase-ஐ ஒருபோதும் தொடாத தூய ஆய்வு அல்லது பகுப்பாய்வாக இருக்கும்.
வேலை இவ்வாறு சுருக்கமாக்கப்பட்ட பின், டிக்கெட்கள் மிகப் பெரிய வேலை அலகுகளை குறிக்க முடியும்.
சிக்கலான அம்சங்கள் மற்றும் உள்கட்டமைப்பு இடப்பெயர்ச்சிகளை ஆர்க்கெஸ்ட்ரேட் செய்ய Symphony-யை நாங்கள் தொடர்ந்து பயன்படுத்துகிறோம். உதாரணமாக, codebase, Slack அல்லது Notion-ஐ பகுப்பாய்வு செய்து ஒரு செயல்படுத்தல் திட்டத்தை உருவாக்குமாறு ஏஜென்டைக் கேட்டு ஒரு பணியைப் பதிவு செய்யலாம். திட்டத்தில் நாங்கள் திருப்தியடைந்த பின், ஏஜென்ட் பணிகளின் ஒரு ட்ரீயை உருவாக்கி, வேலைகளை கட்டங்களாகப் பிரித்து, பணிகளுக்கிடையிலான சார்புகளை வரையறுக்கிறது.
தடுக்கப்படாத பணிகளில் மட்டுமே ஏஜென்ட்கள் வேலை செய்யத் தொடங்குவதால், இந்த DAG-க்கு செயல்படுத்தல் (செயல்படுத்தல் படிகளின் வரிசை) இயல்பாகவும் சிறந்த முறையிலும் இணையாக விரிகிறது. கீழே உள்ள உதாரணத்தில், React மேம்பாட்டை Vite இடப்பெயர்ச்சி முடியும் வரை தடுக்கப்பட்டதாக குறித்தோம். எதிர்பார்த்தபடி, Vite இடப்பெயர்ச்சி முடிந்த பின்னரே ஏஜென்ட்கள் React-ஐ மேம்படுத்தத் தொடங்கின.
ஏஜென்ட்கள் தாங்களாகவே வேலைகளையும் உருவாக்க முடியும். செயல்படுத்தல் அல்லது ரிவியூ காலத்தில், தற்போதைய பணியின் வரம்புக்கு வெளியே உள்ள மேம்பாடுகளை அவை அடிக்கடி கவனிக்கின்றன: செயல்திறன் பிரச்சினை, ரீஃபாக்டரிங் வாய்ப்பு, அல்லது இன்னும் நல்ல கட்டமைப்பு. அப்படி நடந்தால், பின்னர் நாங்கள் மதிப்பாய்வு செய்து அட்டவணைப்படுத்தக்கூடிய புதிய சிக்கலை அவை பதிவு செய்கின்றன—இந்த தொடர் செயல் பணிகளில் பலவும் ஏஜென்ட்களால் எடுத்துக்கொள்ளப்படுகின்றன. இந்த செயல்முறையை நாங்கள் மேற்பார்வை செய்தாலும், ஏஜென்ட்கள் ஒழுங்காக இருந்து வேலை தொடர்ந்து நகரச் செய்கின்றன.
இந்த வகையான வேலைமுறை, தெளிவற்ற பணிகளைத் தொடங்குவதற்கான நிர்வாகக் கலோரிகளை பெரிய அளவில் குறைக்கிறது. ஏஜென்ட் ஏதாவது தவறாகச் செய்தாலும், அதுவும் பயனுள்ள தகவலே, மேலும் எங்களுக்கான செலவு கிட்டத்தட்ட பூஜ்யம். ஏஜென்ட் புரோட்டோடைப் செய்து ஆராய்வதற்காக மிகவும் குறைந்த செலவில் டிக்கெட்கள் பதிவு செய்யலாம்; பிடிக்காத ஆராய்ச்சிகளை எளிதாகத் தூக்கி எறியலாம்.
ஆர்க்கெஸ்ட்ரேட்டர் devboxes-ல் இயங்கி ஒருபோதும் உறங்காததால், எங்கிருந்தும் பணிகளைச் சேர்த்தாலும் ஒரு ஏஜென்ட் அதை எடுத்துக்கொள்ளும் என்பதை நாங்கள் அறிவோம். உதாரணமாக, எங்கள் அணியில் ஒருவரான பொறியாளர், நல்லதல்லாத wifi கொண்ட ஒரு வசதியான கேபினில் இருந்து தனது மொபைலில் உள்ள Linear செயலி வழியாக மூன்று முக்கியமான மாற்றங்களைச் செய்தார்.
இவ்வாறு வேலை செய்வதால் ஆராய்ச்சியில் அதிகரிப்பு
Symphony-யுடன் வேலை செய்வதன் விளைவுகளைப் பார்த்தபோது, மிகத் தெளிவாகத் தெரிந்த மாற்றம் அவுட்புட் ஆகும். OpenAI-யின் சில அணிகளில், முதல் மூன்று வாரங்களில் PRகள் ஏற்படும் எண்ணிக்கை 6 மடங்கு அதிகரித்ததை கண்டோம். OpenAI-க்கு வெளியே, Symphony-யை வெளியிட்டபோது Linear நிறுவனர் Karri Saarinen, உருவாக்கப்பட்ட வர்க்ஸ்பேஸ்களில் ஏற்பட்ட திடீர் உயர்வை(புதிய சாளரத்தில் திறக்கும்) குறிப்பிட்டார். ஆனால் இன்னும் ஆழமான மாற்றம், அணிகள் வேலை பற்றி சிந்திக்கும் விதத்தில் உள்ளது.
எங்கள் பொறியாளர்கள் இனி Codex அமர்வுகளை மேற்பார்வை செய்வதில் நேரம் செலவிடாதபோது, கோடிங் மாற்றங்களின் பொருளாதாரம் முழுமையாக மாறுகிறது. ஒவ்வொரு மாற்றத்திற்குமான உணரப்படும் செலவு குறைகிறது, ஏனெனில் செயல்படுத்தலை இயக்குவதில் மனித முயற்சியை நாம் இனி முதலீடு செய்வதில்லை.
அது எங்கள் நடத்தையை மாற்றியது. Symphony-ல் ஊகப் பணிகளை உருவாக்குவது இப்போது மிகவும் எளிதாகிவிட்டது. ஒரு யோசனையை முயற்சி செய்யுங்கள், ரீஃபாக்டரை ஆராயுங்கள், ஒரு அனுமானத்தைச் சோதியுங்கள், நம்பிக்கை தரும் முடிவுகளை மட்டுமே வைத்துக்கொள்ளுங்கள்.
வேலையைத் தொடங்கக் கூடியவர்களின் வட்டத்தையும் இது விரிவுபடுத்துகிறது. எங்கள் தயாரிப்பு மேலாளர் மற்றும் டிசைனர் இப்போது அம்சக் கோரிக்கைகளை நேரடியாக Symphony-யில் பதிவு செய்யலாம். அவர்கள் ரெப்போவை செக்அவுட் செய்யவோ Codex அமர்வை நிர்வகிக்கவோ தேவையில்லை. அவர்கள் அம்சத்தை விவரிக்கிறார்கள்; அதற்கு பதிலாக, உண்மையான தயாரிப்பில் அந்த அம்சம் செயல்படுவதற்கான வீடியோ வழிகாட்டி உடன் ரிவியூ பாக்கெட் ஒன்றைப் பெறுகிறார்கள்.
(OpenAI-இல் எங்களிடம் உள்ளதைப் போன்ற) பெரிய மோனோரெப்போக்களிலும் Symphony சிறப்பாகச் செயல்படுகிறது. ஏனெனில், அத்தகைய இடங்களில் ஒரு PR-ஐ வெற்றிகரமாகச் சேர்ப்பதற்கான இறுதிக்கட்டச் செயல்முறை மெதுவாகவும் எளிதில் பாதிப்புக்குள்ளாகக்கூடியதாகவும் இருக்கும். இந்த சிஸ்டம், CI-ஐக் கண்காணித்து, தேவைப்படும்போது மீண்டும் இயக்கி, முரண்பாடுகளைத் தீர்த்து, நிலையற்ற சரிபார்ப்புகளை மீண்டும் முயற்சி செய்து, பொதுவாக மாற்றங்களைச் செயல்முறை முழுவதும் வழிநடத்துகிறது. ஒரு டிக்கெட் ஒன்றிணைத்தல் நிலையை அடையும்போது, மனிதக் கண்காணிப்பு இல்லாமல் அந்த மாற்றம் மெயின் பிராஞ்சில் சேர்க்கப்பட்டுவிடும் என்பதில் எங்களுக்கு அதிக நம்பிக்கை உள்ளது.
முன்னேற்றத்துடன் புதிய, வேறுபட்ட பிரச்சினைகளும் வருகின்றன
இந்த அளவில் செயல்படுவதற்கு சில டிரேட்ஆஃப்கள் உள்ளன. ஏஜென்ட்களை ஊடாடுவதாக வழிநடத்துவதிலிருந்து, டிக்கெட் மட்டத்தில் அவர்களுக்கு வேலை ஒதுக்குவதற்கு மாறியபோது, நடுப்பாதையில் அவற்றை தொடர்ந்து நெகிழ்த்தி தேவையானபோது தவறு ஏற்படும்போது சரி செய்யும் திறனை இழந்தோம். சில நேரங்களில் ஏஜென்ட் முற்றிலும் குறி தவறிய ஒன்றை உருவாக்கியது. அதுவும் பயனுள்ளதாக இருந்தது—அந்த தோல்விகள் அமைப்பிலிருந்த இடைவெளிகளை வெளிப்படுத்தி, அதை மேலும் உறுதியானதாக்க உதவின.
முடிவை கைமுறையாக பேட்ச் செய்வதற்குப் பதிலாக, அடுத்த முறை ஏஜென்ட்கள் வெற்றி பெற கார்டுரயில்கள் மற்றும் திறன்களைச் சேர்த்தோம். காலப்போக்கில், தொடக்கம் முதல் முடிவு வரையிலான சோதனைகளை இயக்குதல், Chrome DevTools வழியாகச் செயலியை இயக்குதல், மற்றும் QA ஸ்மோக் சோதனைகளை நிர்வகித்தல் போன்ற புதிய திறன்களை எங்கள் ஹார்னஸ்க்கு சேர்க்க இது வழிவகுத்தது. எங்கள் ஆவணப்படுத்தலைக் குறிப்பிடத்தக்க அளவில் மேம்படுத்தி, நல்லது எப்படி இருக்கும் என்பதை தெளிவுபடுத்தினோம்.
சில பணிகள், Symphony பாணி வேலைக்கு பொருந்தாது. சில பிரச்சினைகள் இன்னும் ஊடாடும் Codex அமர்வுகள் உடன் நேரடியாக வேலை செய்யும் பொறியாளர்கள் தேவையை ஏற்படுத்துகின்றன, குறிப்பாக தெளிவற்ற பிரச்சினைகள் அல்லது வலுவான தீர்மானமும் நிபுணத்துவமும் தேவைப்படும் வேலைகள். நடைமுறையில், எங்கள் பொறியாளர்கள் நேரம் செலவிடுவதற்கு இவைகளே பெரும்பாலும் மிக சுவாரஸ்யமானதும் மகிழ்ச்சிகரமானதுமான பணிகளாக இருக்கும்.
வேறுபாடு என்னவென்றால், வழக்கமான செயல்படுத்தல் வேலைகளின் பெரும்பகுதியை Symphony கையாள முடியும். அதனால் பொறியாளர்கள், சிறிய பணிகளுக்கிடையில் தொடர்ந்து சூழலை மாற்றாமல், ஒரே நேரத்தில் ஒரு கடினமான பிரச்சினையில் கவனம் செலுத்த முடிகிறது.
ஏஜென்ட்களை நிலை மெஷினில் உள்ள கடினமான நோடுகளாக நடத்துவது சிறப்பாக வேலை செய்யாது என்பதையும் நாங்கள் கற்றுக்கொண்டோம். மாடல்கள் புத்திசாலித்தனமாகி, அவற்றை வைத்திருக்க முயலும் பெட்டியை விட பெரிய பிரச்சினைகளைக் கூட தீர்க்க முடிகிறது. உதாரணமாக, ஆரம்ப பதிப்புகளில் GitHub ஒருங்கிணைப்புகள் அனைத்தும் வெளிப்புற ஹார்னஸின் பகுதியாக இருந்தன—அதாவது ஆரம்ப பதிப்புகள் Codex கோடிங் மாற்றங்களை மட்டும் செய்யும் என எதிர்பார்த்தன; மீதமுள்ள (செயல்முறையை மாற்றங்களை சமர்ப்பித்தல், சோதனைகளை இயக்குதல்) போன்றவற்றை கோடிங்கில் குறிப்பிடுதல். ஏஜென்டிக் பணியின் எங்கள் ஆரம்ப பதிப்புகள் Codex-ஐ பணியைச் செயல்படுத்த மட்டும் கேட்டன. அந்த அணுகுமுறை மிகவும் கட்டுப்படுத்தப்பட்டதாக நிரூபித்தது. Codex பல PRகளை உருவாக்குவதிலும் ரிவியூ பின்னூட்டத்தை வாசித்து அதைக் கையாளுவதிலும் முழுமையாக திறன் கொண்டது. ஆகவே அதற்கு டூல்கள் கொடுத்தோம்—gh CLI, CI பதிவுகளை வாசிக்கும் திறன்கள் போன்றவை—இப்போது பழைய PRகளை மூடுதல் அல்லது முடிக்கப்பட்ட வேலை மற்றும் கைவிடப்பட்ட வேலை பற்றிய அறிக்கைகளை எடுப்பது போன்ற இன்னும் பலவற்றை Codex-இடம் கேட்க முடிகிறது. இவ்வகை பணிகள் ஆரம்ப அம்சச் செயல்படுத்தல் பெட்டிக்குப் பெரிதும் வெளியே இருந்தன.
அதனால், கடுமையான மாற்றங்களுக்கு பதிலாக ஏஜென்ட்களுக்கு குறிக்கோள்கள் கொடுக்கும் நோக்கில் நாங்கள் இறுதியில் நகர்ந்தோம்; நல்ல மேலாளர் ஒருவர் தன் அணியில் நேரடியாகப் பணிபுரிபவருக்கு ஒரு இலக்கு ஒதுக்குவது போல. மாடல்களின் சக்தி அவற்றின் ரீஸனிங் திறனிலிருந்து வருகிறது; எனவே அவற்றுக்கு டூல்கள் மற்றும் சூழல் கொடுத்து அவற்றைச் செயல்பட விடுங்கள்.
Symphony-யைப் பயன்படுத்தி Symphony-யை உருவாக்குதல்
Symphony ரிபாசிட்டரியை நீங்கள் திறந்தவுடன் முதலில் கவனிப்பது, தொழில்நுட்ப ரீதியாக Symphony என்பது வெறும் ஒரு SPEC.md கோப்பு மட்டுமே என்பதே—பிரச்சினையையும் நோக்கமிட்ட தீர்வையும் வரையறுக்கும் ஒன்று. சிக்கலான கண்காணிப்பு சிஸ்டத்தை உருவாக்குவதற்குப் பதிலாக, பிரச்சினையையும் நோக்கமிட்ட தீர்வுகளையும் நாங்கள் வரையறுத்து, ஏஜென்ட்களுக்கு உயர்நிலை வழிநடத்தலை வழங்கினோம்.
ரெஃபரன்ஸ் இம்ப்ளிமென்டேஷன் Elixir-ல் எழுதப்பட்டுள்ளது—ஏனெனில் கோடிங் நடைமுறையில் இலவசமாகிவிட்டால், Elixir-ன் ஒருங்கமைவுத் திறன் போன்ற பலங்களுக்கு ஏற்ற மொழிகளை நீங்கள் இறுதியாகத் தேர்வு செய்யலாம்—ஆனால் அதன் மையக் கருத்தை ஒரு எளிய Markdown ஆவணத்தில் வெளிப்படுத்தலாம். உங்கள் விருப்பமான கோடிங் ஏஜென்டை விவரக்குறிப்பில் தெரிவித்து, அது தனது சொந்த பதிப்பை இம்ப்ளிமென்ட் செய்யுமாறு நாங்கள் ஊக்குவிக்கிறோம்.
Symphony-யின் முதல் பதிப்பு tmux இல் இயங்கிய ஒரு Codex அமர்வு மட்டுமே; அது Linear-ஐ சரிபார்த்து, புதிய பணிகளுக்கு துணை ஏஜென்ட்களை உருவாக்கியது. அது வேலை செய்தது, ஆனால் மிகவும் நம்பகமானதாக இருக்கவில்லை. இரண்டாவது பதிப்பு எங்கள் முக்கிய புராஜெக்ட் ரிபாசிட்டரிக்குள் இருந்தது; அது ஏஜென்ட்களை மனதில் கொண்டு கட்டப்பட்டது. இந்த ரெப்போவில் ஏஜென்ட்கள் உயர்தரமான வேலை செய்ய தேவையான திறன்களையும் சூழலையும் வழங்க ஏஜென்ட் ஹார்னஸை நாங்கள் ஏற்கனவே உருவாக்கியிருந்தோம், ஆகவே Symphony இவை அனைத்தையும் எளிதாக இணைக்கிறது.
அடிப்படை செயல்பாடு உருவானபின், Symphony-யைப் பயன்படுத்தி Symphony-யையே உருவாக்கினோம்.
பணிகளை நிர்வகித்து அதன் வேலைக்கான சான்று வீடியோவை இணைக்கும் அமைப்பை நாங்கள் உள்ளகமாக டெமோ செய்தபோது, பின்னூட்டம் மிகுந்த நேர்மறையாக இருந்தது: எங்கள் Symphony புராஜெக்ட் சேனல் வளர்ந்தது, மேலும் நிறுவனம் முழுவதும் உள்ள அணிகள் அதை இயல்பாகப் பயன்படுத்தத் தொடங்கின. OpenAI-யில் வெளிப்புறமாக வெளியிடுவதற்கு முன், உள்ளக தயாரிப்புச் சந்தைப் பொருத்தம் ஒரு முன் நிபந்தனை ஆகும். OpenAI-யில் பார்த்த பயன்பாட்டின் அடிப்படையில், Symphony-யை நிறுவனச் சுவர்களைத் தாண்டி பகிர வேண்டும் என்பது தெளிவானது.
ஆகவே அந்த யோசனையை ஒரு தனித்த SPEC.md ஆக பிரித்து, அதை இம்ப்ளிமென்ட் செய்ய Codex-ஐ கேட்டோம். ரெஃபரன்ஸ் இம்ப்ளிமென்டேஷனுக்காக, ஒரே நேரத்திலான செயல்பாடுகளைச் செயல்படுத்தி, மேற்பார்வை செய்ய சிறந்த பழமையானவற்றைக் கொண்ட, ஒப்பீட்டளவில் புதிய மொழியான Elixir-ஐத் தேர்ந்தெடுத்தோம். Codex Elixir இம்ப்ளிமென்டேஷனை ஒரே முயற்சியில் உருவாக்கியது, அதன் பின் விவரக்குறிப்பு மற்றும் செயல்படுத்தல் இரண்டிலும் நாங்கள் தொடர்ந்து மேம்படுத்தினோம். விவரக்குறிப்பை மேலும் மெருகூட்ட, அதை பல வேறு மொழிகளில்—TypeScript, Go, Rust, Java, Python—இம்ப்ளிமென்ட் செய்யவும், முடிவுகளைப் பயன்படுத்தி தெளிவின்மைகளை கண்டறிந்து அமைப்பை எளிமைப்படுத்தவும் Codex-ஐ கேட்டோம். அது எல்லா மொழிகளிலும் வெற்றி பெற்றது.
Codex-ஐ உருவாக்கும் செயல்முறையில், குறிப்பிட்ட ரிபாசிட்டரிகள் அல்லது Linear MCP மீது இருந்த சார்புகள் போன்ற பல சம்பவம் சார்ந்த சிக்கல்தன்மைகளை நாங்கள் அகற்றினோம். Symphony இனி எங்கள் உள்ளக ரிபாசிட்டரிகளையோ பணிப்பாய்வுகளையோ சார்ந்திருக்கவில்லை. மைய அணுகுமுறை எளிமையானதாக்கியது:
ஒவ்வொரு செயலில் உள்ள பணிக்கும், தனித்த வர்க்ஸ்பேஸில் ஒரு ஏஜென்ட் இயங்குவதை உறுதி செய்யுங்கள்.
செயலில் உள்ள வேலைக்கு உதவுவதற்கு அப்பாலும், வளர்ச்சிப் பணிப்பாய்வு என்பது இப்போது ஏஜென்ட்களுக்கு தெரிந்தும் அவை பின்பற்றுவதுமான ஒன்றாக உள்ளது. வளர்ச்சிப் பணிப்பாய்வு—ஒரு சிக்கலில் வேலை செய்தல், ரெப்போவை செக்அவுட் செய்தல், PM-க்கு அது செய்யப்படுகிறது என்பதைத் தெரிவிக்க அதை செயலில் உள்ளதாக மாற்றுதல், PR-ஐ சேர்த்தல், அதை ரிவியூ நிலைக்கு நகர்த்துதல், வீடியோக்களை இணைத்தல் போன்றவை—இப்போது ஒரு எளிய WORKFLOW.md கோப்பில் பதிவு செய்யப்பட்டுள்ளது. இவை அனைத்தும் மனிதர்கள் பின்பற்றிய செயல்முறைதான், ஆனால் அது ஒருபோதும் ஆவணப்படுத்தப்படவில்லை. இந்த மறைமுகமான படிநிலைகள் தொகுப்பை நம்புவதற்குப் பதிலாக, இப்போது நாங்கள் அதை ஆவணப்படுத்துகிறோம்; ஏஜென்ட்கள் அதை பின்பற்றுவதை Symphony உறுதி செய்கிறது. இதனால் எங்களுடன் இணைந்து வேலை செய்யும் ஏஜென்ட்களை உருவாக்க முடிகிறது. ஏஜென்ட்கள் முடிக்கப்பட்ட வேலைக்கு சுய பிரதிபலிப்பையும் இணைக்க வேண்டும் என்று நாங்கள் முடிவு செய்தால், அதை WORKFLOW.md-இல் சேர்ப்போம்; Symphony ஏஜென்ட்களை அந்தப் படிக்கு வழிநடத்தும்.
மேலும், Codex-ஐ செயலி சேவையகப் பயன்முறையில்(புதிய சாளரத்தில் திறக்கும்) பயன்படுத்தும் வாய்ப்பும் எங்களுக்கு கிடைத்தது; இது Codex-க்கான உள்ளமைக்கப்பட்ட ஹெட்லெஸ் பயன்முறை ஆகும். இந்த பயன்முறை, உரையாடலைத் தொடங்குதல் அல்லது ஒற்றைப் படிகளுக்கு பதிலளித்தல் போன்றவற்றிற்காக நன்கு ஆவணப்படுத்தப்பட்ட JSON-RPC API வழியாக Codex-ஐ இயக்கியும் அதனுடன் நிரல் ரீதியாகப் பேசவும் எங்களை அனுமதித்தது. CLI அல்லது நேரலை tmux அமர்வுகள் வழியாக Codex-உடன் தொடர்பு கொள்ள முயல்வதை விட இது மிகவும் வசதியானதும் விரிவாக்கக் கூடியதும் ஆகும்.
Codex செயலி சேவையகம் எங்கள் பயன்பாட்டு வழக்குக்கு சரியான பொருத்தமாக இருந்தது: Codex வழங்கும் ஹார்னஸின் நன்மைகளைப் பயன்படுத்திக்கொண்டே, பிளக்இன் செய்ய knobs மற்றும் hooks-ஐப் பெறுகிறோம். உதாரணமாக, த மாறும் கருவி அழைப்புகளைப்(புதிய சாளரத்தில் திறக்கும்) பயன்படுத்தி, Linear அணுகல் டோக்கனை துணை ஏஜென்ட்களுக்கு வெளிப்படுத்தாமல் இருக்க, MCP-ஐ நம்பாமலும் அணுகல் டோக்கனை கன்டெய்னர்களுக்கு வெளிப்படுத்தாமலும், Linear மீது ஆர்பிட்ரரி கோரிக்கைகளை இயக்கும் மூல linear_graphql செயல்பாட்டை வெளிப்படுத்துகிறோம்.
அடுத்து என்ன
Symphony நோக்கமுடைய குறைந்தபட்ச ஆர்க்கெஸ்ட்ரேஷன் அடுக்கு ஆகும். Linear போன்ற பல்வேறு பணிப்பாய்வுக் கருவிகள் உடன் இணைக்கப்படும் போது Codex செயலி சேவையகத்தின் சக்தியை காட்டுவதற்காக இதை நாங்கள் ஓப்பன்-சோர்ஸ் செய்கிறோம். அதனால், Symphony-யை ஒரு தனித்த தயாரிப்பாக பராமரிக்க எங்களுக்கு திட்டமில்லை. இதை ஒரு ரெஃபரன்ஸ் இம்ப்ளிமென்டேஷன் என நினைத்துக்கொள்ளுங்கள். பல டெவலப்பர்கள் ஹார்னஸ் பொறியியல் பதிவை நோக்கி தங்கள் கோடிங் ஏஜென்ட்களை இயக்கி தங்கள் ரிபாசிட்டரிகளை தானாக உருவாக்குவது போலவே, உங்கள் சூழலுக்கு ஏற்ற உங்கள் சொந்த பதிப்புகளை உருவாக்க Symphony விவரக்குறிப்பு(புதிய சாளரத்தில் திறக்கும்) மற்றும் ரிபாசிட்டரியை(புதிய சாளரத்தில் திறக்கும்) நோக்கி உங்கள் விருப்பமான கோடிங் ஏஜென்டை நீங்கள் இயக்குவீர்கள் என்று நாங்கள் நம்புகிறோம்.
சக்தி, Codex மற்றும் அதன் செயலிச் சேவையகத்திலிருந்து வருகிறது. ஏற்கனவே நாங்கள் பயன்படுத்தியிருந்த Codex மற்றும் Linear என்ற இரண்டு விஷயங்களை இணைத்து, வேலை மேலாண்மை பிரச்சினையைத் தீர்க்கும் ஒரு வழியாக Symphony இருந்தது. கோடிங் ஏஜென்ட்கள் ரீஸனிங் செய்து வழிமுறைகளைப் பின்பற்றுவதில் இன்னும் சிறந்தவையாக மாறும்போது, பிற நிறுவனங்களிலும் பாட்டில்நெக், கோடிங் எழுதுவதிலிருந்து ஏஜென்டிக் பணியை நிர்வகிப்பதற்குத் திரும்பும் என்று நாங்கள் சந்தேகிக்கிறோம். பரபரப்பான பகுதி என்னவென்றால், இந்த கோடிங் ஏஜென்ட் அமைப்புகளைப் பரிசோதிக்க வேண்டிய தடைகள் இப்போது ஆச்சரியமாகக் குறைந்துள்ளன. நீங்கள் Codex-ஐப் பயன்படுத்தி நேராகவே விஷயங்களை உருவாக்கலாம்.
சமூக பாராட்டுகள்
வெளியீட்டிற்குப் பிந்தைய வாரங்களில் பொறியியல் சமூகத்தினர் Symphony-யைப் பயன்படுத்துவதைப் பார்ப்பதில் நாங்கள் மிகுந்த மகிழ்ச்சி அடைகிறோம்; ஏப்ரல் 23 நிலவரப்படி அது GitHub-ல் 15K ஸ்டார்களுக்கு மேல்(புதிய சாளரத்தில் திறக்கும்) பெற்றுள்ளது.