Prospero: یک مهار برنامه نویسی جدید برای عصر متمدن تر
آدرس مقاله: https://nullprogram.com/blog/2026/10/31/ آدرس نظرات: https://news.ycombinator.com/item?id=50315226 امتیاز: 201 # نظرات: 129
من چند سالی است که شیفته LLM های محلی هستم. مدلهای با وزن باز بهتر، از جمله برخی استنباطهایی که بر روی سختافزار مصرفکننده معمولی و سطح بالاتر با سرعتهای قابل تحمل انجام میدهند، اکنون به اندازه کافی قابل اعتماد هستند تا وظایف برنامهنویسی سادهتری را انجام دهند. این به یک مهار برنامه نویسی نیاز دارد، اما تا کنون امسال از همه پیشنهادات مهار ناامید شده ام. به دلایل غیرقابل توضیح، اکثر آنها با پشته های وب ساخته شده اند و مقدار زیادی حافظه مصرف می کنند. در هسته خود یک مهار کد نویسی اساسا به شکل ()popen چسبانده شده است. این کار نباید به گیگابایت رم نیاز داشته باشد. بنابراین من خودم را ساختم: Prospero.
این به سبک C++ من با یک رابط اتصال سریع Dear ImGui نوشته شده است. از دو مرتبه بزرگی منابع کمتری نسبت به سایر مهارها استفاده می کند بدون اینکه ویژگی ها را قربانی کند.
توجه داشته باشید که Prospero بدون ارائهدهنده مدل داخلی ارائه میشود. از شما انتظار می رود که خودتان آن را تهیه کنید، مانند llama.cpp، یک مدل در محل کار، OpenRouter، Anthropic API، OpenAI API، و غیره (شما نمی توانید از اشتراک Claude خود استفاده کنید.)
برای کسانی که با مهارهای کدنویسی آشنا نیستند: در رابط چت، شما و هوش مصنوعی به نوبت برای یکدیگر پیام می نویسید. مهار کد نویسی این مفهوم را گسترش می دهد و به هوش مصنوعی اجازه می دهد تا با ابزارهای ارائه شده توسط مهار صحبت کند. ابزارها با خروجی های خود "پاسخ" می دهند. یک ابزار ممکن است یک فایل را بخواند یا بنویسد، یا یک فرمان پوسته را اجرا کند. یک هوش مصنوعی به تنهایی از فراخوانی ابزاری به فراخوانی ابزار دیگر می رود و نتایج را حلقه می زند. چنین AI یک عامل نامیده می شود. گاهی اوقات هوش مصنوعی برای شما پیامی ارسال می کند تا پیشرفت را به شما اطلاع دهد یا سوالی بپرسد، و رابط چت هنوز وجود دارد.
برخی از مهارها، از جمله Prospero، به عوامل اجازه میدهند تا عوامل فرعی را برای انجام پیشنهادات خود، به موازات کار کردن یا تمیز نگه داشتن زمینهشان ایجاد کنند. یعنی حافظه کاری خود را با وظایف فرعی پر نکنند. نمایندگان می توانند به یکدیگر پیام بدهند و بر روی وظایف هماهنگ کنند. با توجه به دسترسی SSH به ماشین دیگری، یا از طریق WSL ساده، Prospero میتواند یک نسخه بدون هد از خود را در میزبانهای دیگر مستقر کند تا نمایندگان بتوانند روی آن سیستمها کار کنند. نسخه حرفه ای موتورهایی را برای ترکیبی از x86/x86-64 و ARM64 در macOS، Windows و Linux تعبیه می کند.
موتور ویندوز x86 حتی روی ویندوز XP هم کار می کند و اگر بخواهید می تواند بازی یک نفره و مین یاب را بازی کند.
آخرین مورد به این دلیل است که Prospero یکی از معدود مهارها با قابلیت کنترل دسکتاپ است. اگر مدل شما از ویژن پشتیبانی می کند - هر مدلی که ارزش استفاده از آن را داشته باشد - می تواند دسکتاپ شما را ببیند و با آن تعامل داشته باشد. میتواند برای آزمایش و اشکالزدایی برنامههای رابط کاربری گرافیکی بهصورت زنده بدون کمک تخصصی MCP برای هر برنامه، کلیک، تایپ و بکشد.
این موتور بدون سر به همین دلیل است که هیچ TUI لازم نیست. موتور مهار روی سیستم هدلس و رابط کاربری روی دسکتاپ یا لپتاپ شما اجرا میشود. با کمی راه اندازی اضافی، مهار به طور کامل مستقل از رابط کاربری گرافیکی اجرا می شود، به طوری که بدون اتصال سیستم رابط کاربری گرافیکی ادامه می یابد - بعدا دوباره قابل اتصال است.
از آنجایی که Prospero بسیار لاغر است، ممکن است تنها مهاری باشد که میتواند یک کمپین فازی را بهویژه در سیستمهای بدون هد هدایت کند، بدون اینکه کشنده Linux OOM به جای هدف خارج از کنترل فازی که آن را به راه انداخته است، مهار حافظه را هدف قرار دهد. بارها چند ساعت بعد دوباره به یک کمپین fuzz مراجعه کردم و متوجه شدم که هیچ کاری انجام نشده است زیرا فرآیند مهار از بین رفته است.
(چرا یک نماینده یک کمپین fuzz را اجرا می کند؟ زیرا می تواند اشکالات کشف شده را در حال انجام رفع کند و کمپین را ادامه دهد! این کار بیهوده است.)
پیکربندی در ~/.config/prospero/prospero.ini زندگی میکند. آسان برای ویرایش. نه JSON، خدا را شکر. آن را در کنترل منبع بررسی کنید، آن را کپی-پیست کنید. تمام مزایای معمول. از طرف دیگر، صفحه تنظیمات میتواند به هر تنظیماتی از رابط کاربری گرافیکی دسترسی پیدا کند، بنابراین لازم نیست INI را با دست ویرایش کنید. فایلهای INI همچنین میتوانند شامل یکدیگر باشند، نه تنها مسیرهای سیستم فایل را نامگذاری کنند، بلکه URLها را نیز شامل میشوند:
ایده این است که اجازه پیکربندی به اشتراک گذاشته یا مدیریت شده زنده را بدهید. مواردی که میتوانند تنظیم کنند، با یک قانون سخت در برابر هر چیزی که ممکن است در فرمان پوسته ظاهر شود، محدود شده است. هنوز مقداری اعتماد مورد نیاز است، زیرا یک پیکربندی می تواند یک متغیر محیطی را با استفاده از آن به عنوان یک کلید API و ارائه نقطه پایانی که کنترل می کند استخراج کند.
Prospero یک لیست مدل و پارامترهای دیگر مانند اندازه زمینه را از نقطه پایانی واکشی می کند، اما ممکن است بخواهید آن را تغییر دهید. یک پیکربندی معمولی ممکن است به صورت زیر باشد:
پارادایم ImGui معمولا از رندر فعال استفاده می کند و مانند یک بازی ویدیویی روی vsync ترسیم می کند. این در برخی زمینه ها مناسب است، مانند رابط های درون بازی های ویدیویی. کمتر برای رابطهای کاربری متنمحور عمدتا ثابت، مانند مهار کدنویسی. در عوض، Prospero از رندر غیرفعال با فریم های ثابت برای پایان دادن به انیمیشن ها قبل از بیکار شدن استفاده می کند. وقتی کاری برای انجام دادن وجود ندارد، پروسپرو هیچ کاری انجام نمی دهد. در حالی که عامل در انتظار ساخت است، GPU را نمی جود.
یکی از آزاردهنده ها در مورد اکثر مهارها این است که چگونه به راحتی گیر می کنند. من یک وظیفه طولانی مدت تعیین کردم، به خواب رفتم و صبح دو ساعت بعد از شب، بند را در یک موضوع بی اهمیت آویزان کردم و بقیه را هدر دادم. بنابراین اصل طراحی Prospero: هرگز برای همیشه منتظر نمانید. هر عملیاتی یک مهلت دارد. این تصمیم بر همه چیز تأثیر می گذارد. اگر برای اعطای مجوز درخواستی حضور ندارید، نماینده با مهلت زمانی رد میشود و باید بدون آن این کار را انجام دهد.
برای کمک، هنگامی که یک نماینده به توجه شما نیاز دارد، Prospero یک نان تست سیستمی را مطرح میکند تا در صورت حضور در آن، احتمال از دست دادن آن کمتر باشد.
مهار خود از طریق خطاهای متناوب شخم می زند، و تمام تلاش خود را می کند تا عامل را برای تکمیل کار خود سوق دهد. همه درخواستهای شبکه دارای مهلت زمانی هستند، و ناظران از انتظار بیپایان جلوگیری میکنند. صندوق پستی نماینده محدود شده است.
دستورات شلی که به زمان پایان خود می رسند به دستورات پس زمینه ناهمزمان تبدیل می شوند. نماینده میتواند با یک تایم اوت منتظر آنها بماند و بنابراین در فواصل زمانی معینی بیدار میشود تا تصمیم بگیرد که آیا باید ادامه یابد یا خیر.
تنها استثنا حالت Plan است، که در آن پس از ارائه یک طرح یا درخواست شفاف سازی (ابزار ask_user) به طور نامحدود منتظر می ماند. انتظار می رود که کاربر در حالت پلان به عامل توجه کند.
مهارهایی که من استفاده کردهام بهبود یافتهاند، اما یکی دیگر از مزاحمتهای معمول در اوایل سال جاری، عواملی بود که فرآیندهایی را شروع کردند که هرگز پاک نمیشوند. یک عامل یک ساخت موازی را شروع می کند، به دلیل خوش بینانه بودن آن، یک تایم اوت می زند، ساخت با از بین بردن یک قطعه از سیستم ساخت "توقف" می کند. اما در واقع ساخت به هر حال ادامه دارد، حداقل تا حدی. نماینده دوباره تلاش میکند و حالا دو بیلد میروند، با هم تداخل میکنند، به هم میریزند و سیستم من را به زانو در میآورند.
برای مدتی از اجازه دادن به عواملی که ساخت ها را در مهارهای خاص اجرا کنند، محتاط بودم، که نتیجه وحشتناکی است. شما می خواهید که عامل ها حلقه را ببندند و به طور مستقل تکرار کنند. یک انسان در حلقه مانند قرار دادن یک توپ و زنجیر بر روی عامل است و از بسیاری از مزایای آن چشم پوشی می کند.
Prospero ارتقای یک تایم اوت همزمان به یک کار ناهمزمان به خودی خود یک پیشرفت بزرگ است، اما یک اصل اضافی در بازی وجود دارد: کل درخت فرآیند با هم زندگی میکند و میمیرد. هنگامی که یک فرمان متوقف می شود، متوقف می شود. این در ویندوز بی اهمیت است، اگرچه به نظر می رسد تعداد کمی از مهارها از آن استفاده کنند. در macOS و Linux دشوارتر است، اما Prospero این کار را دنبال می کند.
مانند هر مهار، Prospero از مهارتها پشتیبانی میکند، مجموعهای از دستورالعملهای از پیش بستهبندی شده در مورد چگونگی انجام برخی کارها («من کونگ فو بلدم»). Prospero شامل یک مهارت در خود است و می تواند اسناد داخلی خود را بخواند. از نماینده بپرسید که چگونه کاری را در Prospero انجام دهد یا پیکربندی کند، و نماینده فقط می تواند به سؤال شما پاسخ دهد، می تواند یک لینک ارائه دهد که شما را به مکان مربوطه در UI می برد. همچنین میتواند prospero.ini شما را ویرایش کرده و آن را مجددا بارگذاری کند تا موارد را از طرف شما پیکربندی کند. این منحصر به فرد Prospero نیست، اما من تقریبا از هیچ مهاری که این کار را انجام می دهد آگاه نیستم.
در ویندوز، Prospero طوری طراحی شده است که به خوبی با w64devkit کار می کند و در صورت موجود بودن پوسته آن را ترجیح می دهد. مدلهایی که برای کدنویسی طراحی شدهاند، w64devkit را خارج از جعبه میشناسند، بنابراین این ابزارها مکمل یکدیگر هستند. البته شما در آن پوسته قفل نشده اید و می توانید آزادانه پوسته پیش فرض دیگری را انتخاب کنید. اما Prospero یک مهار نادر است که می توانید پوسته را در اواسط جلسه تغییر دهید. گاهی اوقات PowerShell برای این کار مناسب تر است، بنابراین می توانید آن را از فهرست کشویی انتخاب کنید. نماینده از تغییر مطلع می شود و در مورد چیزهای عجیب و غریب شناخته شده (یعنی "این یک Bash قدیمی است!"). در macOS میتوانید بین bash و zsh سوئیچ کنید.
Prospero دارای انواع معمولی از ویژگی هایی است که می توانید از یک پوسته پیشرفته انتظار داشته باشید. میتواند از درختهای کاری Git، از جمله درختهای کاری فرعی، استفاده کند تا نمایندگان بتوانند یک مخزن را به اشتراک بگذارند. این پروتکل بافت مدل (MCP) صحبت می کند. می تواند در وب جستجو کند (اگر اجازه دهید). میتوانید چتهای جانبی را شروع کنید که زمینه را به اشتراک میگذارند، که به عنوان عامل فرعی شناخته میشوند. می توانید جلسات را پشت سر بگذارید.
در حال حاضر ترمینال یا ویرایشگر داخلی وجود ندارد. در عوض Prospero ترمینال خارجی یا ویرایشگر انتخابی شما را باز می کند. من ترجیح می دهم از Vim به جای یک معادل notepad.exe داخلی استفاده کنم. با Ctrl+G می توانید درخواست خود را در یک ویرایشگر خارجی ویرایش کنید.
مانند همه مهارها، سیستم مجوزها یک عامل مخرب را متوقف نمی کند. Agent ها در حال نوشتن و اجرای برنامه ها بر روی رایانه شما هستند و بنابراین در نهایت می توانند به هر چیزی که هارنس می تواند دسترسی داشته باشد دسترسی داشته باشند. مجوزها در مورد یادآوری آرام خواسته های خود به نماینده و گرفتن اشتباهات ساده هستند. بیشتر شبیه، "اوه اوه، در پروژه بمان" یا "در حال حاضر دسکتاپ من را کنترل نکن." اگر می خواهید یک عامل را قفل کنید، باید خود مهار را محدود کنید، آن را در ظرف یا روی Raspberry Pi قرار دهید، به قیمت معمول ناراحتی یا قطع منابع مفید.
من واقعا در مورد Prospero هیجان زده هستم، و صادقانه بگویم که احساس می کنم یکی از بهترین مهارهای کدنویسی موجود است. چنین ابزارهایی باید ساخته شوند، اما تاکنون هیچ کس دیگری برای انجام آن اقدام نکرده است. برای انجام این کار به یک ویدیو نیاز است، و شاید زمانی این کار را انجام دهم، اما این در حال حاضر خارج از تجربه من است.
بیشتر مخاطبان پروژه های من سرگرمی هستند، حتی w64devkit. اما اگر Prospero فراتر از من و حلقه کوچک من باشد، من انتظار دارم که اکثر کاربران حرفه ای باشند که محصولات تجاری می سازند. من همچنین بیش از وقت خود را در این پروژه سرمایه گذاری کرده ام - در حال حاضر برای w64devkit صادق است، حتی بیشتر در مورد Prospero صادق است. بنابراین در حالی که این یک پروژه منبع باز است، من آن را به دو سطح تقسیم کرده ام:
نسخه Community: ساختی که در GitHub بدون هیچ هزینه ای پیدا می کنید. هیچ موتور بدون سر داخلی ندارد، بنابراین استقرار از راه دور محدود است. بهعلاوه یک متن ناراحت کننده برای یادآوری اینکه در نسخه انجمن هستید. مناسب برای علاقمندان
نسخه حرفه ای: با پرداخت هزینه اسمی، دانلود بدون DRM با به روز رسانی رایگان دریافت کنید. تمام موتورهای هدلس در آن تعبیه شده اند تا بتوانید با فشار دادن یک دکمه، استقرار از راه دور و جلسات از راه دور را در سیستم های دیگر فشار دهید. یک ویژگی جدی برای حرفه ای ها.
نسخههای ویندوز و macOS در هر دو مورد دارای کد امضا هستند (بعضی از هزینهها). اگر Prospero به صورت حرفهای برای شما مفید است، حتی بدون ویژگی استقرار از راه دور، همچنان تشویق میشوید برای پشتیبانی از هزینههای جاری من، یک نسخه از آن بخرید!
نظری در مورد این مقاله دارید؟ با ارسال یک ایمیل به ~skeeto/public-inbox@lists.sr.ht [آداب لیست پستی]، بحثی را در صندوق ورودی عمومی من شروع کنید، یا بحث های موجود را مشاهده کنید.
متن اصلی (انگلیسی)
Prospero: A new coding harness for a more civilized age
Article URL: https://nullprogram.com/blog/2026/10/31/ Comments URL: https://news.ycombinator.com/item?id=50315226 Points: 201 # Comments: 129