कोडिंग एजेंट के लिए रात भर का वर्कफ़्लो
वादा सीधा है। आप टास्क की लिस्ट के साथ सोने जाते हैं और सुबह pull requests मिलती हैं। ज़्यादातर पहली कोशिशें कुछ और तरह खत्म होती हैं। या तो एक बहुत बड़ा diff मिलता है जिसे कोई रिव्यू नहीं कर सकता। या एजेंट रात 1 बजे से किसी सवाल पर अटका मिलता है। फ़र्क मॉडल का नहीं है। फ़र्क इसका है कि काम कैसे पैक किया गया। यह वह वर्कफ़्लो है जिससे सुबह रिव्यू करने लायक काम मिलता है।
टास्क ऐसे लिखें जैसे किसी नए कॉन्ट्रैक्टर के लिए
रात के टास्क में पूछने के लिए कोई नहीं होता। उसे अपना संदर्भ खुद साथ लाना होता है। हर टास्क एक पैराग्राफ़ में आ जाए और तीन सवालों का जवाब दे। क्या गलत है या क्या कमी है। पूरा होने पर कैसा दिखेगा। इसे साबित कैसे करें।
## Task: paginate the /orders endpoint Problem: GET /orders returns every order. Large accounts time out. Done: accepts ?cursor and ?limit (max 100), returns next_cursor. Proof: new tests in tests/orders_pagination.test.ts pass; existing tests pass. Do not: change the response shape of existing fields.
टास्क छोटे रखें। इंसान के दो से चार घंटे का काम सबसे सही है। उससे बड़ा हो, तो बाँट दें। जो टास्क एजेंट बीस मिनट में खत्म कर दे, वह भी ठीक है। उन्हें रिपॉज़िटरी की किसी फ़ाइल में रखें, या ऐसे issues में जिन्हें एजेंट पढ़ सके। फ़ाइल सबसे आसान है।
एक टास्क, एक ब्रांच, एक worktree
टास्क एक वर्किंग ट्री शेयर न करें। एक ही checkout को एडिट करने वाले दो टास्क ऐसा diff बनाते हैं जिसे कोई सुलझा नहीं सकता। Git worktrees हर टास्क को उसी रिपॉज़िटरी पर अपना फ़ोल्डर देते हैं।
git worktree add ../work/orders-pagination -b agent/orders-pagination git worktree add ../work/retry-webhooks -b agent/retry-webhooks
हर ब्रांच का अपना एजेंट रन और अपनी pull request होती है। सुबह आप उन्हें एक-एक करके रिव्यू करते हैं। अगर कोई खराब है, तो उसे बंद करें। बाकी पर कोई असर नहीं पड़ता।
तय करें कि एजेंट अकेले क्या करेगा
Permission मोड और deny लिस्ट पहले रन से पहले सेट करें, बाद में नहीं। Claude Code को बिना निगरानी चलाने की गाइड में सटीक सेटिंग्स हैं। रात के काम के लिए छोटा रूप यह है। फ़ाइलें खुलकर एडिट करे। टेस्ट suite खुलकर चलाए। टास्क ब्रांच को खुलकर commit और push करे। एक pull request खोले। इसके अलावा कुछ भी बिना पूछे नहीं। और ऐसा कुछ भी नहीं जो रिपॉज़िटरी के बाहर पहुँचे।
रन लूप
एक छोटी स्क्रिप्ट हर टास्क के लिए एक headless रन शुरू करती है। हर रन अपने worktree में चलता है, टर्न की सीमा और लॉग फ़ाइल के साथ। पूरी स्क्रिप्ट बस इतनी है।
#!/bin/sh
# run-overnight.sh: one agent run per task file in tasks/
for task in tasks/*.md; do
name=$(basename "$task" .md)
dir="../work/$name"
git worktree add "$dir" -b "agent/$name" 2>/dev/null
(
cd "$dir" || exit 1
claude -p "Complete the task in $task. Commit on this branch, push it, and open a pull request with gh pr create. Stop when the tests pass or when you are blocked, and say which." \
--permission-mode acceptEdits \
--max-turns 80 \
> "../logs/$name.log" 2>&1
)
doneइसे tmux के अंदर चलाएँ, ताकि SSH कनेक्शन से फ़र्क न पड़े। टास्क एक के बाद एक चलते हैं। साथ-साथ रन भी हो सकते हैं। पर वे CPU और आपकी rate limit के लिए आपस में होड़ करते हैं, और लॉग पढ़ना मुश्किल कर देते हैं। एक के बाद एक से शुरू करें।
टेस्ट को फ़ैसला करने दें
प्रॉम्प्ट एजेंट से कहता है कि टेस्ट पास होने पर रुक जाए। फिर आपका CI pull request पर वही टेस्ट चलाता है। अगर एजेंट ने हरा बताया और CI लाल कहे, तो diff की एक भी लाइन पढ़ने से पहले आपको पता चल जाता है। main को protect करें, ताकि इस जाँच के बिना कुछ merge न हो। इस वर्कफ़्लो में यही सबसे कीमती guardrail है, और इसकी कोई कीमत नहीं।
सुबह का रिव्यू, दस मिनट
- pull request की लिस्ट खोलें। उन्हें टास्क लिस्ट से मिलाकर गिनें। जो गायब हैं, उनकी वजह लॉग में है।
- जो भी blocked बताकर रुका, उसका लॉग पढ़ें। आम तौर पर कोई credential गायब होता है या टास्क अस्पष्ट होता है। टास्क का टेक्स्ट ठीक करें, एजेंट को नहीं।
- हरी pull requests को सबसे छोटी से शुरू करके रिव्यू करें। जो सही हैं, उन्हें merge करें। जो गलत हैं, उन्हें एक लाइन में वजह लिखकर बंद करें। वह लाइन कल की टास्क फ़ाइल में कॉपी करें।
- merge हो चुके worktrees और ब्रांच डिलीट करें, ताकि आज रात साफ़ शुरुआत हो।
git worktree remove ../work/orders-pagination git branch -d agent/orders-pagination
पहले क्या सौंपें
कुछ काम रात के लिए बाकी कामों से ज़्यादा सही हैं। इनसे शुरू करें, और भरोसा बढ़ने पर दायरा बढ़ाएँ।
- फ़ेल या flaky टेस्ट, जिनका अपेक्षित व्यवहार साफ़ हो।
- Dependency अपग्रेड, जहाँ टेस्ट suite फ़ैसला करे।
- कई फ़ाइलों में फैले मशीनी refactor।
- पहले से चल रहे कोड के लिए छूटे हुए टेस्ट।
- Type errors, lint errors और deprecation warnings।
डिज़ाइन के फ़ैसले, billing या auth से जुड़ा कुछ भी, और जो भी टेस्ट से जाँचा न जा सके, उसे दिन के लिए रखें। तब आप सवालों के जवाब दे सकते हैं।
नीचे की मशीन
यह सब मानकर चलता है कि मशीन सुबह 4 बजे भी चल रही है। रात के रन से कुछ न मिलने की सबसे आम वजह स्लीप होने वाला लैपटॉप है। स्लीप गाइड आपके अपने Mac पर इसे ठीक करती है। होस्टेड एजेंट Mac पर यह पहले से ठीक है।
अक्सर पूछे जाने वाले सवाल
एक रात में एजेंट कितने टास्क पूरे कर सकता है?
+
एक के बाद एक चलाने पर आम तौर पर दो से चार घंटे वाले आकार के चार से आठ टास्क। यह इस पर निर्भर है कि टेस्ट चलने में कितना समय लगता है और आपके प्लान की rate limits क्या हैं। टास्क अस्पष्ट हों, तो गिनती से ज़्यादा तेज़ी से क्वालिटी गिरती है। इसलिए अपना समय टास्क के टेक्स्ट पर लगाएँ।
क्या मुझे एक ही बैकलॉग पर Claude Code और Codex दोनों चलाने चाहिए?
+
एक ही टास्क पर नहीं। हर एक को अपने टास्क और अपने worktrees दें। एक टास्क पर दोनों चलाने से दो होड़ करती pull requests बनती हैं, और रिव्यू दोगुना हो जाता है।
अगर एजेंट ऐसी pull request खोले जो टास्क से कहीं ज़्यादा बदल दे, तो?
+
उसे बंद करें और टास्क में एक Do not लाइन जोड़ें। दायरे का बढ़ते जाना रात के काम की सबसे आम गड़बड़ी है, और इसका इलाज टास्क का टेक्स्ट है। टर्न की सख्त सीमा भी मदद करती है।
क्या एजेंट अपनी pull requests खुद merge कर सकता है?
+
कर सकता है, पर उसे नहीं करना चाहिए। main को protect करें और इंसान का रिव्यू ज़रूरी करें। इस वर्कफ़्लो का पूरा मकसद यही है कि आप सुबह साफ़ दिमाग से रिव्यू करें।