مقدمه: ایجنتی که همه می خواهند، بدون هیاهو
مسئله در مورد ایجنتهای کدنویسی این است که اکثر آنها سعی میکنند رئیس، کمک خلبان و درمانگر شما باشند—سپس فراموش میکنند که فقط کد را بنویسند. نمایشنامه به این صورت است: یک دوجین انبار برداری اضافه کنید، کمی گرد و غبار پری ارکستراسیون بپاشید، یک مرورگر را ببندید، سپس آن را تمام کنید. خوب نمایش داده می شود. همچنین به محض اینکه از آن بخواهید یک تست یکپارچگی نامطمئن را در ساعت 4:52 بعد از ظهر جمعه تعمیر کند، از هم می پاشد.
ساخت یک ایجنت کدنویسی سبک وزن با Claude 4.5—تعجب آور است—در واقع ساده است اگر دست از دنبال کردن رویای یک باتلر نرم افزاری جهانی بردارید و فقط ابزاری بسازید که کد را می خواند، برنامه ریزی می کند، ویرایش می کند، اجرا می کند و تکرار می کند. هیچ موعظه ای در مورد "جایگزینی توسعه دهندگان توسط هوش مصنوعی" وجود ندارد. هیچ خط لوله Rube Goldberg. فقط یک حلقه تنگ که کارهای واضح را به خوبی انجام می دهد.
این یک راهنمای عملی برای رسیدن به آنجا بدون کشاندن کل بخش عملیات هوش مصنوعی است. ما از Claude 4.5 برای مغز، یک سیستم فایل و پوسته برای دست ها و یک حافظه کوچک برای تمرکز کوتاه مدت استفاده خواهیم کرد. تمام شد. سبک وزن به این معنی است که می توانید آن را در یک نشست درک کنید، آن را به صورت محلی اجرا کنید و به آن اعتماد کنید زیرا هر مرحله قابل بررسی است. که اگر اخیراً از چیزی در این فضا استفاده کرده باشید، تقریباً خرابکارانه است.
چرا Claude 4.5 برای یک ایجنت مینیمال کار می کند
Claude 4.5 темперамент را دارد که شما واقعاً برای کد می خواهید: در پیروی از دستورالعمل ها مراقب است، در خواندن تفاوت ها به طرز شگفت انگیزی مناسب است و مشتاقانه مشتاق نیست که چارچوب هایی را که درخواست نکرده اید، توهم کند. مدل در استدلال گام به گام بدون نیاز به یک رمان سریع کامل، شایسته است. این ترکیب—استدلال به اضافه محدودیت—آن را برای یک حلقه ایجنت کدنویسی ایده آل می کند:
- مشاهده: فایل های فعلی، گزارش های خطا و تست ها را بخوانید.
- برنامه ریزی: ویرایش های مشخص را با منطق پیشنهاد دهید.
- عمل: فایل ها را پچ کنید، دستورات را اجرا کنید.
- بازتاب: خروجی را ارزیابی کنید، تکرار کنید یا متوقف شوید.
شما می توانید این را به هر repo وصل کنید و در یک بعد از ظهر ارزش کسب کنید. نکته مهم این است که در برابر وسوسه تبدیل آن به یک "پلتفرم هوش مصنوعی" مقاومت کنید. اگر ایجنت را سبک نگه دارید، Claude 4.5 کارهای سنگین را بدون اینکه مزاحم شما شود انجام می دهد.
معماری سبک وزن: پنج قطعه، بدون درام
در اینجا کل پشته ای که نیاز دارید آمده است:
- حلقه اصلی: یک فرآیند که Claude 4.5 را فراخوانی می کند و پیام های استفاده از ابزار آن را تفسیر می کند.
- ابزارها: مجموعه ای کوچک—read_file، write_file، list_dir، run_tests (یا run_cmd)، search_code.
- سازنده زمینه: یک پیام کوتاه و هدفمند را با فراداده repo و تفاوت های اخیر جمع آوری کنید.
- حافظه کوتاه مدت: یک پنجره مکالمه غلتکی به اضافه یک دفترچه یادداشت صریح برای برنامه و محدودیت ها.
- محافظ ها: محدودیت های توکن، زمان و نوشتن فایل. یک حالت اجرای آزمایشی; و عکس های فوری بازگشت.
تمام شد. شما می توانید آن را بدون سر در یک ترمینال اجرا کنید یا در صورت لزوم آن را در یک رابط کاربری минимальное بپیچید. دلیل کارکرد این کار خسته کننده است: هر عمل مشاهده و قابل تأیید است. ایجنت یک تغییر را پیشنهاد می کند، تفاوت را نشان می دهد، تست ها را اجرا می کند، خروجی را می خواند و یا ادامه می دهد یا متوقف می شود. هیچ گوشت مرموزی در وسط وجود ندارد.
نحوه ساخت ایجنت (بدون از دست دادن طرح)
مرحله 1: قرارداد را تعریف کنید - اعلان و ابزارها
ایجنت شما به اندازه قرارداد خود با مدل خوب است. اعلان سیستم را کوتاه، سخت و بی امان عملی نگه دارید.
اعلان سیستم، تقطیر شده:
- شما یک ایجنت کدنویسی هستید. وظیفه شما این است که تغییرات کوچک و صحیحی در repo ایجاد کنید تا وظیفه کاربر را برآورده کنید.
- با صدای بلند در یک دفترچه یادداشت مخفی فکر کنید. فقط برنامه ها و تفاوت ها را در معرض دید کاربر قرار دهید.
- تفاوت های минимальное، تست های در حال کار و پیشرفت تدریجی را ترجیح دهید.
- در صورت عدم اطمینان، یک آزمایش را پیشنهاد دهید و آن را اجرا کنید.
- هرگز فایل ها یا دستورات را جعل نکنید—قبل از ویرایش، لیست و بخوانید.
طرحواره ابزار (زیاد فکر نکنید):
- read_file(path, offset?, length?)
- write_file(path, content, create_if_missing=false)
- run_cmd(command, timeout=60, cwd=repo_root)
- search_code(query, path=repo_root, max_results=50)
خوشایندی های اختیاری: git_diff و git_revert(sha) اگر می خواهید بازگشت های بدون هندزفری داشته باشید. می توانید از یک انبار برداری رد شوید. اکثر وظایف مفید به تعدادی فایل در حافظه کاری به اضافه یک جستجوی سریع بستگی دارد.
مرحله 2: контекст را ناب نگه دارید
پر کردن контекст فرقه باری از طراحی ایجنت است. کل monorepo خود را در اعلان نریزید. در عوض:
- خلاصه Repo: یک پاراگراف خلاصه README; نقاط ورود; دستور اجرای تست.
- فایل های فعال: فقط فایل هایی که ایجنت قصد لمس کردن آنها را دارد—در صورت نیاز آنها را به صورت تکه تکه بخوانید.
- وظیفه: هدف کاربر، به طور واضح بیان شده: "رفع تست ناموفق FooTest.test_bar در tests/foo_test.py."
- محدودیت ها: محدودیت های زمان اجرا، لیست سفید نوشتن فایل، قوانین سبک و انتظارات نسخه سازی معنایی در صورت وجود.
- تاریخچه اخیر: دو تفاوت آخر و نتایج تست آنها. هیچ چیز دیگر.
Claude 4.5 کاملاً قادر است در صورت نیاز از طریق search_code و read_file контекст بیشتری را واکشی کند. نقشه را به او بدهید، نه قلمرو را.
مرحله 3: حلقه (مشاهده → برنامه ریزی → عمل → بازتاب)
- مشاهده: با فهرست کردن دایرکتوری ها، خواندن تست ناموفق، کد در حال تست و گزارش خطا شروع کنید. از Claude بخواهید علائم شکست را در دو یا سه نکته خلاصه کند.
- برنامه ریزی: از Claude بخواهید یک برنامه را با:
- فایل هایی برای بررسی یا ویرایش
- تفاوت های минимальное برای تلاش
- دستور تستی برای اعتبارسنجی
- عمل: تفاوت پیشنهادی را از طریق write_file اعمال کنید. تفاوت را عینا نشان دهید. تست ها را اجرا کنید.
- بازتاب: stdout/stderr را دوباره وارد کنید. از Claude بپرسید: ادامه دهید، برگردید یا متوقف شوید؟ اگر برنامه تغییر کرد، یک توجیه یک جمله ای با اشاره به خروجی واقعی بخواهید.
- خروج: وقتی تست ها قبول شدند، یا بعد از N تکرار، هر کدام که اول اتفاق بیفتد، متوقف شوید.
این برنامه نویسی زوجی مجلل است که در آن واقعاً جفت شدن را صادقانه نگه می دارید.
مرحله 4: محافظ هایی که آخر هفته شما را نجات می دهند
- لیست سفید نوشتن: فقط اجازه نوشتن در src/، lib/ یا مسیرهای صریحاً تأیید شده را بدهید.
- محدودیت اندازه تفاوت: ویرایش ها را به 200-500 خط در هر مرحله محدود کنید. اگر بزرگتر است، به زیرمجموعه ها تقسیم کنید.
- لیست مجاز دستور: اجراکننده های تست، لینترها و چند اسکریپت توسعه. شبکه را ممنوع کنید. شما قابلیت تکثیر می خواهید، نه curl غرب وحشی.
- مهلت زمانی و تلاش مجدد: مهلت های زمانی کوتاه، حداکثر یک بار تلاش مجدد—حلقه های اجرای مجدد بی پایان جایی است که ایجنت ها می میرند.
- حالت اجرای آزمایشی: تفاوت های پیشنهادی را چاپ کنید اما ننویسید. عالی برای بررسی کد.
Claude 4.5 اگر آنها را صریحاً بیان کنید به قوانین پایبند خواهد بود. اگر این کار را نکنید، تعجب نکنید وقتی سعی می کند با سازماندهی مجدد کل repo شما مطابق با یک پست وبلاگ از سال 2017 "کمک" کند.
مرحله 5: حافظه ای که واقعاً مفید است
حافظه کوتاه مدت 80% از مشکل را حل می کند. نگه دارید:
- یک دفترچه یادداشت برای فرضیه و برنامه فعلی.
- لیستی از فایل هایی که در این جلسه لمس شده اند.
این برای استدلال منسجم Claude 4.5 کافی است. حافظه طولانی مدت—گزارش های وظیفه، جاسازی ها—می تواند برای پایگاه های کد تکراری مفید باشد، اما آن را به عنوان شکر اختیاری در نظر بگیرید. اگر ایجنت شما نمی تواند یک تست را بدون یک فهرست برداری 500 مگابایتی تعمیر کند، این یک ایجنت نیست—این یک وابستگی است.
طرح پیاده سازی минимальное
از نظر شبه کد، می توانید این ایجنت را در چند صد خط پیاده سازی کنید:
- initialize: بارگیری فراداده repo، محدودیت ها و مشتری مدل
- observe: خواندن تست های ناموفق، فایل ها، گزارش ها
- plan = model.propose_plan(context)
- while not done and steps < MAX:
- diff = model.propose_patch(plan)
- show(diff); maybe approve
- out = run_cmd(plan.test_cmd)
- reflect = model.evaluate(out)
- if reflect == pass: done = true
- else if reflect == rollback: git_revert(last_commit)
- else: plan = model.revise_plan(out)
متوجه قسمت های گمشده خواهید شد: هیچ ایجنتی که ایجنت ها را مدیریت کند، هیچ "نماینده ای"، هیچ "مدل برنامه ریز" و "مدل اجرا کننده" جداگانه. Claude 4.5 اگر آن را با یک دستگاه Rube Goldberg خراب نکنید، می تواند هر دو کار را به خوبی انجام دهد.
اعلامی که خیلی سخت تلاش نمی کند
اعلان های بد سعی می کنند باهوش باشند. اعلان های خوب خسته کننده و خاص هستند. در اینجا یک اسکلت عاقلانه برای بلوک دستورالعمل اصلی شما وجود دارد:
- هدف: وظیفه دقیق کدنویسی و معیارهای موفقیت را بیان کنید.
- Context: ساختار پروژه، نقاط ورودی و دستور تست.
- محدودیت ها: لیست سفید نوشتن، محدودیت اندازه تفاوت، بدون شبکه.
- ترجیحات سبک: نسخه زبان، قالب بندی، قوانین لینتر.
- فرآیند: مشاهده → برنامه ریزی → عمل → بازتاب; نشان دادن تفاوت ها. اجرای تست ها; حداکثر N مرحله تکرار کنید; وقتی تست ها قبول شدند، متوقف شوید.
Claude 4.5، با این ساختار، نیازی به سناریوی نقش آفرینی 100 خطی نخواهد داشت. فقط کار می کند.
مثال عملی: رفع یک تست ناموفق
فرض کنید یک تست در tests/time_test.py به این دلیل با شکست مواجه می شود که parse_time("09:00") به جای 32400 مقدار 5400 را برمی گرداند. حلقه ایجنت باید به این صورت باشد:
- مشاهده: خواندن time.py و time_test.py; اجرای pytest -k parse_time.
- برنامه ریزی: فرضیه—اشکال ریاضی ثانیه در مقابل دقیقه; پیشنهاد ویرایش parse_time; اضافه کردن مورد حاشیه ای واحد.
- عمل: پچ کردن parse_time، اضافه کردن تست برای ساعت های صفر ابتدایی; اجرای تست ها.
- بازتاب: اگر تست ها همچنان با شکست مواجه می شوند، خطا را بخوانید، ریاضیات یا regex را تنظیم کنید، دوباره اجرا کنید.
پچ минимальное موفق ممکن است یک تغییر دو خطی باشد. نکته همین است. ویرایش های کوچک، چرخه های سریع، پیشرفت واقعی.
جایی که سبک وزن از آشپزخانه بهتر است
- تأخیر: یک مدل، یک حلقه، بدون سربار оркестровка.
- شفافیت: هر مرحله قابل ممیزی است. شما می توانید آن را مقایسه کنید، می توانید آن را برگردانید، می توانید آن را دوباره اجرا کنید.
- کنترل: محافظ ها آسیب را محلی نگه می دارند. ایجنت نمی تواند به زیرساخت شما سرگردان شود.
- هزینه: تماس های کمتر، контекст کمتر، توکن های قابل پیش بینی.
- UX: شما آن را درک می کنید. هم تیمی های شما آن را درک می کنند. خود آینده شما از شما متنفر نخواهد شد.
و بده بستان ها:
- وسعت: یک ایجنت کدنویسی سبک وزن monorepo پنج زبانه شما را در یک پاس بازسازی نمی کند. و نباید هم بکند.
- ابتکار: نقشه راه های چند هفته ای را ابداع نمی کند. شما به آن وظایف می دهید.
- حالت: بدون یک لایه حافظه بزرگ، تاریخ دور را از روی طراحی فراموش می کند. این یک ویژگی است تا زمانی که یک اشکال باشد.
نقطه شیرین Claude 4.5 برای ایجنت های کدنویسی
Claude 4.5 در موارد زیر می درخشد:
- خواندن و استدلال در مورد تفاوت ها و گزارش ها.
- تولید تغییرات کد منسجم و минимальное.
- پیروی از محدودیت ها و صریح بودن در مورد عدم قطعیت.
در موارد زیر کمتر عالی است:
- حدس زدن رفتار API که نمی تواند بخواند.
- رقص ابزار سنگین (در اینجا مورد نیاز نیست).
- بازسازی های طولانی چند فایلی بدون هدایت انسان در مراحل.
نکته آخر مهم است. بهترین راه برای به دست آوردن نتایج قوی این نیست که ایجنت را بزرگتر کنید—این است که وظیفه را کوچکتر کنید. از مغز خود برای دامنه استفاده کنید و از Claude 4.5 برای اجرا در آن دامنه استفاده کنید.
یک کلمه در مورد یکپارچه سازی IDE
در برابر وسوسه قرار دادن این مستقیماً در یک صفحه IDE با پنجاه ضامن مقاومت کنید. یک حلقه مبتنی بر ترمینال با تفاوت های متنی ساده، اعتماد و اشکال زدایی آسان تر است. اگر شکر ویرایشگر می خواهید، آن را احمق نگه دارید:
- دستورات برای شروع/متوقف کردن حلقه.
- نمایش تفاوت ها در یک نمای تقسیم شده.
- اعلان تأیید برای نوشتن (اختیاری اما عاقلانه).
بعداً می توانید ادغام کنید. ابتدا آن را به کار بیندازید.
Sider.AI، با استفاده کم، در واقع کمک می کند اگر یک محیط عملگرا برای اجرای این نوع حلقه بدون اختراع مجدد داربست می خواهید، Sider.AI در واقع کار می کند—حداقل زمانی که از آن برای کاری که در آن خوب است استفاده می کنید. مکالمه و تفاوت ها را مرتب نگه می دارد، به شما امکان می دهد دستورات را اجرا کنید و شما را مجبور به استفاده از یک "چارچوب ایجنت خودمختار" باشکوه نمی کند. نکته مهم این است که قوانین خود را حفظ کنید: اعلان های کوتاه، حلقه های تنگ، تفاوت های قابل مشاهده. Sider از سر راه کنار می رود، که نادرتر از آن چیزی است که باید باشد. اشتباهات رایج (و نحوه جلوگیری از احمق به نظر رسیدن)
- Context متراکم: اگر اعلان شما شبیه یادداشت باج است، شما اشتباه می کنید. در صورت تقاضا فایل ها را واکشی کنید.
- بازسازی زودرس: ایجنت پیشنهاد می کند ماژول ها را سازماندهی مجدد کند؟ ابتدا آن را مجبور کنید تست ها را قبول کند. بعداً بازسازی کنید.
- فایل های توهم زا: قبل از هر write_file به یک مسیر جدید، به list_dir و read_file نیاز دارید.
- حلقه های اجرای مجدد بی نهایت: مراحل را محدود کنید. برای هر فرضیه جدید توجیه بخواهید.
- یک تفاوت غول پیکر: تغییرات را تقسیم کنید. تفاوت های کوچکتر سریعتر با شکست مواجه می شوند و استدلال در مورد آنها آسان تر است.
امنیت و ایمنی بدون پارانویا
- اجرای محلی: در یک دایرکتوری سندباکس شده اجرا کنید. به طور پیش فرض بدون شبکه.
- انزوای وابستگی: از یک venv یا контейнер محلی استفاده کنید. نسخه ها را پین کنید.
- اسرار: ایجنت به آنها نیازی ندارد. اگر دستوری توکن می خواهد، متوقف شوید و بپرسید.
- ممیزی: هر برنامه، تفاوت و دستور را در یک گزارش حفظ کنید.
از کجا بدانیم که کار می کند
- زمان تحویل کاهش می یابد: رفع اشکالاتی که یک ساعت طول می کشید اکنون ده دقیقه طول می کشد.
- اشتباهات کمتری ناشی از انگشت چاق: تفاوت ها کوچکتر می شوند، تست ها سبزتر می شوند.
- شما به آن اعتماد می کنید: شما از شناور شدن بر روی هر عمل دست می کشید زیرا شما را نسوزانده است.
- هم تیمی ها از آن استفاده می کنند: تعریف موفقیت این است که دیگران بدون جلسه آن را بپذیرند.
مقیاس بندی، با دقت
اگر واقعاً باید مقیاس بندی کنید، با انضباط این کار را انجام دهید:
- وظایف فرعی موازی، نه مغزهای موازی: کار را تقسیم کنید، چندین حلقه سبک وزن را در دایرکتوری های جداگانه اجرا کنید و وقتی سبز بود ادغام کنید.
- حافظه اپیزودیک، نه تخلیه مغز: پچ های موفق و نقشه های علائم به رفع را ذخیره کنید. جراحی بازیابی کنید.
- "بزرگتر" های دوره ای: یک جلسه هدایت شده توسط انسان را برای بازسازی ها رزرو کنید. ایجنت کمک می کند، رهبری نمی کند.
پیاده سازی مرجع минимальное (طرح)
شبه کد پایتون برای حرکت:
- def init(self, repo_root, model):
- self.history = [] # دو تفاوت آخر و خروجی های تست
- "repo": summarize_repo(self.root),
- "constraints": {"write_whitelist": ["src/", "tests/"], "max_diff_lines": 300, "no_network": True},
- "history": self.history[-2:],
- plan = self.model("propose_plan", self.context(task))
- diff = self.model("propose_patch", {"plan": plan})
- out = run_cmd(plan.test_cmd)
- eval = self.model("evaluate", {"output": out, "plan": plan})
- self.history.append({"diff": diff, "out": tail(out)})
پایانی در اندازه انسانی
صنعت مدام وعده ایجنت های توسعه دهنده خودمختار را می دهد. چیزی که ما واقعاً به آن نیاز داریم یک دستیار صادق است که می خواند، برنامه ریزی می کند، ویرایش می کند، اجرا می کند و متوقف می شود. Claude 4.5 در این کار خوب است، به شرطی که آن را در زیر چارچوب هایی دفن نکنید که بیشتر برای توجیه خود وجود دارند. سبک وزن یک مصالحه نیست—نکته اصلی است. حلقه را بسازید، محافظ ها را اضافه کنید و اجازه دهید ابزار کاری را انجام دهد که ابزارها همیشه انجام داده اند وقتی آنها را ساده نگه می دارید: کار را کوچکتر کنید.
نتیجه گیری: میانبر خسته کننده ای که برنده می شود
در اینجا لیست چک شما برای یک ایجنت کدنویسی سبک وزن با Claude 4.5 آمده است:
- یک حلقه، یک مدل، ابزارهای کوچک.
- Context تنگ: وظیفه، چند فایل، آخرین خروجی ها.
- تفاوت های минимальное، تست های مکرر، کلاه های سخت.
- اجرای محلی، سندباکس شده; بدون شبکه.
- شکر ویرایشگر اختیاری; هرگز مورد نیاز نیست.
اگر چشم های خود را جمع کنید، به طرز مشکوکی شبیه مهندسی نرم افزار خوب به نظر می رسد، فقط سریعتر. و این نکته اصلی است. هوشمندانه ترین کاری که می توانید در اینجا انجام دهید این نیست که "استقلال" را دنبال کنید—این است که انضباط را تدوین کنید. هرچه کمتر از ایجنت بخواهید، بیشتر به دست می آورید.
سوالات متداول
Q1: چگونه شروع به ساخت یک ایجنت کدنویسی سبک وزن با Claude 4.5 کنم؟
یک مجموعه ابزار کوچک (خواندن، نوشتن، جستجو، اجرا) را تعریف کنید، یک اعلان سیستم سختگیرانه بنویسید و یک حلقه مشاهده ← برنامه ← عمل ← بازتاب را پیاده سازی کنید. Context را کوچک نگه دارید و گزارش ها و تفاوت های واقعی را تغذیه کنید—Claude 4.5 زمانی بهترین عملکرد را دارد که وظیفه باریک باشد و بازخورد مشخص باشد.
Q2: آیا برای یک ایجنت کدنویسی Claude 4.5 به یک پایگاه داده برداری یا لایه حافظه نیاز دارم؟
خیر. برای اکثر وظایف، حافظه کوتاه مدت به اضافه search_code کافی است. حافظه طولانی مدت را فقط در صورتی اضافه کنید که بارها و بارها به همان repo مراجعه کنید و ثابت کنید که بدون احمق تر کردن ایجنت، توکن ها را ذخیره می کند.
Q3: چه محافظ هایی برای یک ایجنت کدنویسی Claude 4.5 ضروری هستند؟
مسیرهای قابل نوشتن لیست سفید، اندازه های تفاوت کلاه، محدود کردن دستورات و ثبت هر عمل. این محدودیت های ساده ایجنت را قابل پیش بینی نگه می دارد و بازگشت ها را خسته کننده می کند—به روشی خوب.
Q4: آیا یک ایجنت سبک وزن می تواند بازسازی های چند فایلی را انجام دهد؟
بله، اگر کار را به مراحل کوچک تقسیم کنید و حلقه را تنگ نگه دارید. Claude 4.5 می تواند بازسازی ها را مدیریت کند، اما شما دامنه را هدایت می کنید. در غیر این صورت یک تفاوت غول پیکر و شکننده به دست خواهید آورد که نمی خواهید آن را بررسی کنید.
Q5: Sider.AI در یک ایجنت کدنویسی Claude 4.5 کجا قرار می گیرد؟
Sider.AI به عنوان یک فضای کاری مرتب مفید است: مکالمات، تفاوت ها و دستورات در یک مکان، بدون تحمیل یک چارچوب ایجنت سنگین. از آن برای اجرای حلقه خود استفاده کنید، نه برای اختراع مجدد آن.