अन्य भाषाओं में: English, Español, Português, 日本語, Deutsch, Français, 한국어, 简体中文, Italiano · हिन्दी में सभी गाइड
खुलासा: Carbon Forge को हम 100monkeys.ai पर बनाते हैं, इसलिए इसे बनाने वाले का विवरण मानकर पढ़ें। इस गाइड का मसौदा हमारे एक AI एजेंट ने सार्वजनिक दस्तावेज़ों से तैयार किया, ख़ासकर MCP tools catalog: Semantics के symbols.drift और Governed seams हिस्सों और The Carbon paradigm के "Drift between prose and code" से, और कंपनी ने इसकी समीक्षा की; यह हिन्दी संस्करण मूल अंग्रेज़ी गाइड का अनुवाद है। तालिका और कॉल दस्तावेज़ों के अपने उदाहरण हैं, और उद्धरण अंग्रेज़ी में हैं, अनुवाद साथ में। जहाँ दस्तावेज़ कोई सवाल खुला छोड़ते हैं, आख़िरी हिस्सा यह बताता है।
रिपोर्ट क्या है
paradigm पन्ना एक पंक्ति में: "A workspace's reserved .governed-seams page declares which pages govern which definitions of a code tree" (वर्कस्पेस का आरक्षित .governed-seams पेज घोषित करता है कि कौन-से पेज किसी कोड ट्री की किन परिभाषाओं को नियंत्रित करते हैं)। symbols.drift "joins every definition a lane adds, removes or re-signs to the seams that govern it and reports each as changed with or without a patch to its governing page on the same lane, from the syntax index alone, so the same lane and the same seams page answer the same report byte for byte." (lane जो भी परिभाषा जोड़ती, हटाती या जिसका signature बदलती है, उसे नियंत्रित करने वाले seams से जोड़ता है, और हर एक को इस रूप में बताता है कि वह उसी lane पर उसके नियंत्रक पेज के patch के साथ या बिना बदली, सिर्फ़ syntax इंडेक्स से, इसलिए वही lane और वही seams पेज byte दर byte वही रिपोर्ट देते हैं।) कोई मॉडल कुछ नहीं पढ़ता। और एक सीमा याद रखें: "The report advises and never refuses a landing." (रिपोर्ट सलाह देती है और कभी लैंडिंग से इनकार नहीं करती।)
चरण 1. वे परिभाषाएँ चुनें जिनका वर्णन कोई पेज करता है
उन पेजों से शुरू करें जो कोड के बदलने पर पाठक को गुमराह करेंगे: बिलिंग का आर्किटेक्चर पेज, साइन-इन की गाइड। वे जिन परिभाषाओं का वर्णन करते हैं, उन्हें semantic इंडेक्स से खोजें:
symbols.search { "tree": "app", "query": "charge", "prefix": true } परिभाषाएँ TypeScript और TSX, JavaScript, Python, Go, Rust, C, C++, C#, Java, Ruby, PHP, Scala और Bash के लिए tree-sitter की tags queries से आती हैं। CSS, HTML, JSON, YAML, TOML और HCL को syntax ट्री मिलते हैं "but no definitions or references" (पर कोई परिभाषा या संदर्भ नहीं), इसलिए उन फ़ाइलों पर लगा seam कुछ नहीं बताता। नाम "matched by name, not by type checking" (नाम से मिलाए जाते हैं, type checking से नहीं)।
चरण 2. .governed-seams पेज लिखें
आरक्षित पाथ .governed-seams पर एक पेज बनाएँ जिसकी पहली Markdown तालिका का शीर्षक tree | glob | symbols | records हो। दस्तावेज़ों का उदाहरण:
| tree | glob | symbols | records |
| --- | --- | --- | --- |
| app | src/billing/** | chargeCard, refund | architecture/billing |
| app | src/auth/*.ts | * | guides/login, architecture/security | tree: किसी कोड ट्री का पाथ।glob: ट्री के फ़ाइल पाथ पर import ignore-rule सिंटैक्स का एक नियम, जो!से शुरू न हो।symbols: कॉमा से अलग परिभाषाओं के नाम, या glob के नीचे की हर परिभाषा के लिए अकेला*।records: कॉमा से अलग पेज पाथ, यानी वे पेज जो उन परिभाषाओं को नियंत्रित करते हैं।
"A seam is declared, never inferred: no link, tag, metadata key or embedding makes one." (seam घोषित किया जाता है, कभी अनुमान से नहीं बनता: कोई लिंक, टैग, मेटाडेटा कुंजी या embedding उसे नहीं बनाती।) पेज trunk से पढ़ा जाता है, "so a lane cannot ungovern its own change." (इसलिए कोई lane अपने ही बदलाव को नियंत्रण से बाहर नहीं कर सकती।) जिस काम पर उसे नज़र रखनी है, उससे पहले उसे trunk पर लैंड करें। ग़लत बना पेज ठीक होने तक हर रिपोर्ट रोक देता है, पंक्ति बताने वाले वाक्य के साथ: The governed seams page .governed-seams is malformed at line <n>, ...
चरण 3. नियंत्रित कोड को एक lane पर बदलें
रिपोर्ट एक lane पढ़ती है, इसलिए बदलाव किसी lane पर होना चाहिए: lanes.create, फिर lane के साथ trees.apply_patch या trees.put, जैसा Working in lanes दिखाता है। मान लीजिए chargeCard में एक पैरामीटर जोड़कर उसका signature बदलें।
चरण 4. ड्रिफ्ट रिपोर्ट पढ़ें
symbols.drift { "lane": "agent/7/fix-login" } सिर्फ़ एक ट्री पढ़ने के लिए tree जोड़ें। जवाब:
{ lane, composition_hash, report_sha256, findings, pending, governed_rows } हर finding tree, path, symbol और kind बताती है, trunk पर from_signature और lane पर to_signature (जहाँ कोई पक्ष उसे न रखे वहाँ null), records को { path, updated_on_lane } के रूप में, और callers, यानी lane पर उस नाम के संदर्भों की गिनती। class फ़ैसला है: seam_changed_without_record तब, जब lane में किसी नियंत्रक पेज पर कोई जीवित patch न हो। यही आपका पुराना दस्तावेज़ है, लैंडिंग से पहले पकड़ा गया।
ख़ाली रिपोर्ट पर भरोसा करने से पहले pending पढ़ें: यह किसी seam के glob के नीचे की उन बदली फ़ाइलों की सूची है जिनका इंडेक्स "cannot answer yet" (अभी जवाब नहीं दे सकता), और "the report is complete when pending is empty." (रिपोर्ट तब पूरी है जब pending ख़ाली हो।) टकराव वाली lane टकराव सुलझने तक अस्वीकार होती है।
चरण 5. उसी lane पर नियंत्रक पेज अपडेट करें
architecture/billing को pages.apply_patch और उसी lane से बदलें, ताकि पेज और कोड साथ में इंतज़ार करें। गाइड कोड बदलाव और उसका दस्तावेज़ एक ही changeset में लैंड करें यह हिस्सा समझाती है।
चरण 6. रिपोर्ट फिर पढ़ें, फिर लैंड करें
symbols.drift फिर चलाएँ। finding अब seam_changed_with_record कहती है, और उसका record updated_on_lane दिखाता है। रिपोर्ट को समीक्षा के साथ रखें: composition_hash उस lane composition का hash है जिसे उसने पढ़ा, और report_sha256 रिपोर्ट के मानक टेक्स्ट को कवर करता है, "so a report is bound to the exact change it read." (इसलिए रिपोर्ट उसी सटीक बदलाव से बँधी है जिसे उसने पढ़ा।) बाद का कोई patch दोनों बदल देता है। फिर lane को एक changeset के रूप में लैंड करें।
क्योंकि रिपोर्ट सिर्फ़ सलाह देती है, उसे लागू करवाना आपके हाथ में है। एक पैटर्न, जो हमारा है, दस्तावेज़ों का नहीं: सुरक्षित trunk पर नियंत्रित कोड का glob .landing-rules में लिखें और नियंत्रक पेज के मालिक को अनुमोदक बनाएँ, और उस अनुमोदक से पहले ड्रिफ्ट रिपोर्ट पढ़वाएँ।
दस्तावेज़ किन सवालों का जवाब नहीं देते
.governed-seamsकौन लिख सकता है। दस्तावेज़.landing-rulesको सिर्फ़ एडमिन के लिए रखते हैं; seams पेज के बारे में बस इतना कहते हैं कि वह trunk से पढ़ा जाता है "whoever wrote it" (चाहे जिसने लिखा हो)।- ऐप में कोई व्यू। दस्तावेज़ टूल और उसके जवाब का वर्णन करते हैं, ब्राउज़र में रिपोर्ट दिखाने वाले किसी पेज का नहीं।
- Markdown "not parsed yet" (अभी पार्स नहीं होता), इसलिए कोई पेज ख़ुद नियंत्रित पक्ष नहीं हो सकता।