تصور کنید یک عامل هوش مصنوعی بهجای پیشنهاد دادن دستورات، خودش پانل ترمینال را باز کند، کد را اجرا کند و خروجی را در لحظه رصد کند. این دقیقاً همان چیزی است که gPTY با تبدیل ترمینال دسکتاپ به یک سطح برنامهپذیر، محقق کرده است.
طبق اعلام توسعهدهنده، این ابزار در ۱۱ سپتامبر ۲۰۲۶ عرضه شد تا محدودیتهای رابطهای چت ساده را بشکند و از طریق پروتکل زمینهٔ مدل (Model Context Protocol یا MCP) — که شبیه به یک مترجم استاندارد برای درک ابزارها توسط مدل است — کنترل مستقیم و ساختاریافتهای بر نشستهای شل (Shell) ایجاد کند.
بسیاری از عاملهای کدنویس فعلی با مشکل «نابینایی» در ترمینال دستوپنجه نرم میکنند؛ آنها معمولاً سعی میکنند متن را از رابط کاربر تِرمینالی (TUI) استخراج کنند که بسیار مستعد خطا است. تصور کنید محیط کاری وجود داشته باشد که در آن عامل فقط دستور را پیشنهاد نمیدهد، بلکه یک پانل خاص را باز میکند، کد را اجرا میکند و خروجی را از طریق یک پروتکل نسخهبندی شده در لحظه نظارت میکند. این تغییر بنیادین در تجربه توسعهدهنده است که gPTY معرفی میکند. این رویکرد در راستای تلاشهای گستردهتر برای بهینهسازی تعامل عاملهاست، مشابه آنچه در پروژه Proliferate برای حذف تداخل عاملها از طریق محیطهای ایزوله مشاهده شده است.
gPTY با هستهای از زبان Rust و رابط کاربری ساخته شده با Godot، یک شبکه کاشیوار (Tiling Grid) برای ترمینالها، نمایشگرهای کد و درختهای فایل ایجاد میکند. بر اساس مستندات گیتهاب این پروژه، برنامه از کتابخانه portable-pty استفاده میکند تا سازگاری میانسیستمی در لینوکس، مک و ویندوز را تضمین کند. این کار از طریق ایجاد یک پل میان /dev/ptmx در لینوکس و ConPTY در ویندوز توسط یک API واحد انجام میشود.
محیط و استقرار
این ابزار بهصورت مستقل طراحی شده و کاربر برای اجرای آن نیازی به نصب زنجیره ابزارهای Rust یا Godot ندارد. نسخههای باینری مستقل در بخش Releases گیتهاب منتشر شدهاند که شامل فایل gpty-v0.5.3-linux-x86_64.tar.gz برای لینوکس، یک باندل .app برای مک و فایل gpty.exe برای ویندوز است.
این سیستم تحت مجوز GNU GPL v3 منتشر شده است، اما استثناهایی برای افزونهها و انواع پانلهای بومی در نظر گرفته شده تا بتوانند تحت مجوزهای منعطفتری مانند Apache-2.0 یا MIT باشند. همچنین پروفایلها، محیطهای کاری (Workspaces) و چیدمانهای ساخته شده توسط کاربر، هیچ محدودیت کپیلفت (Copyleft) ندارند.
معماری فنی
- موتور اصلی: از کریت vte برای تجزیه سریع ماشین حالت ANSI و از tokio برای مدیریت غیرهمزمان وظایف هر ترمینال از طریق کپچرهای مبتنی بر کانال (Channel-driven capture) استفاده میکند.
- رشتههای ورودی/خروجی: برای هر PTY یک رشته اختصاصی
std::threadدر نظر گرفته شده تا خواندنهای مسدودکننده (Blocking Reads) پیشبینیپذیر باشند و سپس از طریق mpsc به tokio متصل شوند. - رندرینگ: از ماشین حالت alacritty_terminal برای مدیریت شبکههای DEC STD 070 (پشتیبانی از رنگهای ۱۶، ۲۵۶ و True Color) استفاده کرده و آرایهها را مستقیماً به توابع
_draw()در Godot میفرستد. - یکپارچگی: یک پل GDExtension بومی (gdext 0.5)، بکاند Rust را به Godot 4.7+ متصل میکند. این ساختار نیازمند Rust edition 2024 و نسخه Rust 1.85 یا بالاتر است.
- پایداری: تمام تاریخچه اسکرول، محیطهای کاری (مجموعه تبهای نامگذاری شده) و تنظیمات بهطور خودکار در SQLite یا JSON ذخیره میشوند. این قابلیت امکان جستوجوی متنی کامل (Full-text search) در تاریخچه ذخیره شده هر پانل را فراهم میکند.
یکی از متمایزترین ویژگیها، «موتور مفهوم» (Concept Engine) است. این سیستم با استفاده از عبارتهای منظم (Regex) در Rust، خروجیهای خاص PTY را شناسایی کرده و آنها را به پانلهای مجاور، مانند بازبین (Inspector) یا نمایشگر کد، هدایت میکند. این موتور از تطبیق زمانی خطی (Linear-time matching) استفاده میکند تا در برابر حملات ReDoS ایمن باشد و بایتهای خام بافر را برای بازپخش دقیق شبکه (Grid-faithful replay) ثبت میکند. نکته حیاتی این است که این موتور فقط برای مشاهدهپذیری طراحی شده است؛ یعنی دادهها را ثبت و نمایش میدهد اما هرگز ورودی را به شل تزریق نمیکند تا مرز امنیتی حفظ شود.
کنترل و مشاهدهپذیری عاملها
برای پشتیبانی از ارکستراسیون هوش مصنوعی، gPTY یک سطح کنترلی چندلایه ارائه میدهد:
- JSON-RPC IPC: یک API مبتنی بر سوکت (که در لینوکس از مسیر
$XDG_RUNTIME_DIR/gpty.sockاستفاده میکند) که اجازه میدهد یک رابط خط فرمان (CLI)، رابط گرافیکی (GUI) را کنترل کند. - سرور MCP: این ابزار بهعنوان یک سرور Model Context Protocol عمل میکند. عاملها میتوانند با اجرای
gpty mcpروی stdio به ابزارهایی مانندnew-pane(ایجاد پانل)،inject(تزریق متن)،pane-read(خواندن پانل)،pane-wait(انتظار برای پانل) وbroadcast(پخش پیام) دسترسی یابند. - پانلهای مشاهدهپذیری: یک پانل استدلالی (Reasoning) رویدادهای چرخه حیات عامل را بهصورت غیرفعال (از طریق OMP) نمایش میدهد، در حالی که پانل بازبین امکان پرسوجوهای خصوصی و بدون نیاز به ابزار (Tool-free Q&A) را فراهم میکند.
به دلیل اینکه طرحهای (Schemas) این ابزارها مستقیماً از همان تعاریف clap در کد منبع (موجود در crates/gpty-cli/src/commands/schema.rs) تولید میشوند، قابلیتهای عامل هرگز با نسخه واقعی نرمافزار فاصله نمیگیرد. کاربران حتی بدون اجرای رابط گرافیکی میتوانند این مانیفستها را با دستور gpty schema --format mcp تولید کنند.
این معماری این فرض را تغییر میدهد که عاملها باید حتماً درون یک IDE خاص محصور باشند. با ارائه یک ترمینال مستقل و سازگار با MCP، هر عاملی — فارغ از اینکه با چه مدل زبانی بزرگ (LLM) تغذیه شده باشد — میتواند با سیستمعامل محلی مانند یک API ساختاریافته تعامل کند. این رویکرد باعث کاهش شدید «حلقه توهم» (Hallucination Loop) میشود؛ وضعیتی که در آن عاملها بر اساس استخراجهای متنی ناقص، حدس میزنند که آیا یک دستور با موفقیت اجرا شده است یا خیر. این بهبود در دقت و کاهش خطا، مشابه تأثیری است که جریانهای عاملمحور در GitHub Copilot برای تسهیل نگهداری تستها ایجاد کردهاند.
جالب است که سازنده پروژه اشاره کرده بخش بزرگی از کدها، از جمله چیدمان UI و پل Rust، توسط مدلهای زبانی تولید شدهاند. این موضوع gPTY را به یک مطالعه موردی در مهندسی نرمافزار مبتنی بر LLM تبدیل میکند، هرچند نویسنده هشدار داده است که کدها ممکن است حاوی الگوهای غیرمعمول (Unidiomatic) یا باگ باشند. برای کسانی که به دنبال بهینهسازی سرعت در این فرآیندها هستند، ابزارهایی مانند Graft با استفاده از گرافهای محلی توانستهاند تأخیر عاملهای کدنویسی را تا ۶۰٪ کاهش دهند.
شما اکنون میتوانید باینریهای مستقل را برای تمام پلتفرمهای اصلی از صفحه Releases گیتهاب دانلود کنید تا این گردش کار عاملمحور را آزمایش نمایید.
گام بعدی شما
- باینریهای مستقل را از صفحه Releases گیتهاب دانلود کرده و محیط کاری خود را به یک سطح برنامهپذیر تبدیل کنید.
- اگر از عاملهای MCP استفاده میکنید، ابزار
gpty mcpرا برای حذف وابستگی به اسکرپینگ TUI امتحان کنید. - ساختار
gpty schemaرا بررسی کنید تا ببینید چگونه میتوان قابلیتهای نرمافزار را بهطور خودکار به مدلهای هوش مصنوعی معرفی کرد.
اما این تنها بخشی از تغییرات در لایه تعامل است؛ اثر این پروتکلها بر کاهش هزینههای استنتاج را در گزارش بعدی بررسی خواهیم کرد.




گفتگو