Hacker News

just-bash: Bash for Agents

نظرات

1 min read Via github.com

Mewayz Team

Editorial Team

Hacker News

چرا اسکریپت شل به ستون فقرات عوامل هوش مصنوعی مدرن تبدیل شده است

انقلابی آرام در زیر رابط های صیقلی سیستم های هوش مصنوعی امروزی در حال وقوع است. در حالی که بیشتر مکالمات در مورد هوش مصنوعی بر پارامترهای مدل، پنجره‌های زمینه و مهندسی سریع متمرکز می‌شوند، سؤال عملی چگونه عوامل واقعاً کارها را انجام می‌دهند همچنان به همان پاسخ غیر جذاب باز می‌گردد: Bash. پوسته ساده یونیکس که در سال 1989 اختراع شد، تبدیل به لایه اجرایی برای نسل جدیدی از عوامل نرم‌افزار مستقل شده است - و درک اینکه چرا چیز مهمی را در مورد ماهیت خود اتوماسیون آشکار می‌کند.

در سراسر صنایع، کسب‌وکارها در حال استقرار عوامل هوش مصنوعی برای رسیدگی به جریان‌هایی هستند که زمانی به تیم‌های مهندسی اختصاصی نیاز داشتند. تطبیق صورت‌حساب، توالی‌های نصب HR، تجزیه تله متری ناوگان، بهداشت داده‌های CRM - وظایفی که ده‌ها سیستم را لمس می‌کنند و اجرای دقیق و قابل تکرار را می‌طلبند. در قلب اکثر این استقرارها، یک مفسر پوسته است که به آرامی کاری را که همیشه انجام می‌داد انجام می‌دهد: اجرای دستورات، لوله‌گذاری خروجی، مدیریت فایل‌ها و چسباندن فرآیندهای متفاوت به یکدیگر. عامل اطلاعات را فراهم می کند. Bash دست ها را فراهم می کند.

مورد Bash به عنوان زیرساخت عامل

زمانی که مهندسان برای اولین بار شروع به ساخت خطوط لوله فراخوانی ابزار برای مدل های زبان بزرگ کردند، یک سوال طبیعی مطرح شد: رابط ابزار چگونه باید باشد؟ فریم‌ورک‌های اولیه با رجیستری‌های تابع پایتون، پوشش‌های API REST و DSLهای سفارشی آزمایش شدند. بسیاری از این رویکردها ارزشمند باقی می مانند. اما Bash یک کشش گرانشی مداوم را به یک دلیل قاطع حفظ کرده است - در حال حاضر در همه جا وجود دارد. هر سرور لینوکس، هر ظرف، هر خط لوله CI/CD، هر زمان اجرای عملکرد ابری دارای یک پوسته است. هیچ مرحله نصب، مدیریت وابستگی، SDK به پین نسخه وجود ندارد.

این فراگیر بودن در عمل بسیار اهمیت دارد. یک عامل هوش مصنوعی که می‌تواند دستورات پوسته را فراخوانی کند، می‌تواند فوراً با سیستم فایل تعامل کند، فرآیندها را ایجاد کند، نقاط انتهایی HTTP را از طریق curl فراخوانی کند، کارهای cron را مدیریت کند، داده‌های ساختاریافته را با awk و jq تجزیه کند و برنامه‌های دلخواه را به هم زنجیره‌ای بزند. مساحت سطح آنچه ممکن می شود در مقایسه با عوامل محدود به بسته های API انتخاب شده به طور چشمگیری افزایش می یابد. یک فراخوان bash -c کل زنجیره ابزار یونیکس را باز می‌کند — دهه‌ها نرم‌افزار آزمایش‌شده در نبرد که تقریباً هر مشکل تبدیل داده‌ای را که یک کسب‌وکار با آن مواجه می‌شود، حل می‌کند.

هم‌چنین یک همسویی عمیق بین نحوه استدلال عوامل در مورد وظایف و نحوه ساختار اسکریپت‌های پوسته وجود دارد. هر دو اهداف پیچیده را به مراحل متوالی تجزیه می کنند. هر دو بر خروجی یک عملیات تکیه دارند و به ورودی عملیات بعدی تبدیل می شوند. هر دو باید حالت های انشعاب شرطی و خطا را کنترل کنند. عوامل آموزش دیده بر روی مجموعه کدهای نوشته شده توسط انسان، میلیاردها اسکریپت پوسته را دیده اند - آنها اصطلاحات Bash را عمیقاً درک می کنند، اغلب قابل اطمینان تر از درک طرحواره های API اختصاصی.

"پوسته یک فناوری قدیمی نیست. آداپتور جهانی بین سیستم‌های هوشمند و واقعیت فیزیکی زیرساخت‌های محاسباتی است."

امنیت: نقطه شروع غیر قابل مذاکره

دادن توانایی اجرای دستورات پوسته دلخواه به مدل زبان، به بیان آرام، یک مرز اعتماد قابل توجه است. همان قدرت بیانی که Bash را برای اتوماسیون مشروع بسیار مفید می‌کند، در صورت سوء استفاده از آن خطرناک می‌شود - چه از طریق حملات تزریق سریع، دستورات توهم‌آمیز یا خطاهای استدلال ساده در ساعت دو بامداد. ساختن عوامل ایمن با نیروی bash مستلزم این است که امنیت را نه به عنوان یک فکر بعدی، بلکه به عنوان محدودیت اولیه معماری در نظر بگیرید.

موثرترین الگوها تولید دستور را از اجرای دستور با مراحل بازبینی واضح انسانی یا برنامه‌ای جدا می‌کنند. یک عامل ممکن است یک فرمان پوسته کاندید تولید کند که پس از آن در برابر لیست مجاز از عملیات مجاز قبل از اجرا تأیید می شود. دسترسی به فایل سیستم باید به دایرکتوری های خاصی محدود شود. تماس های شبکه باید با نرخ محدود و ثبت شوند. عملیات مخرب - هر چیزی که شامل rm، افت پایگاه داده یا جهش اعتبار باشد - باید به سیگنال‌های تایید صریح نیاز داشته باشد که توسط مدل به تنهایی تولید نشود. بسیاری از استقرارهای تولید این مرزها را در سطح سیستم عامل با استفاده از فضاهای نام لینوکس و پروفایل های seccomp اعمال می کنند، بنابراین حتی یک زمینه عامل در معرض خطر نیز نمی تواند از پوشش عملیاتی تعریف شده خود فرار کند.

مشکل ظریف تر تزریق خروجی نیز وجود دارد. هنگامی که یک عامل نتیجه یک فرمان پوسته را می‌خواند و از آن برای ساخت دستور بعدی استفاده می‌کند، داده‌های مخرب موجود در فایل‌ها یا پاسخ‌های API می‌توانند فرمان در حال ساخت را هک کنند. روال‌های پاک‌سازی که متاکاراکترهای پوسته را از ورودی‌های نامعتبر جدا می‌کنند اختیاری نیستند - آنها به همان اندازه که پرس‌و‌جوهای پارامتری SQL در دوره برنامه‌های کاربردی وب اساسی بودند، اساسی هستند. تیم‌هایی که از روز اول به طور جدی با این موضوع برخورد می‌کنند، از بازسازی گران‌قیمتی که توسعه اولیه وب را آزار می‌دهد، اجتناب می‌کنند.

الگوهای کارآمد: ساختار تعاملات عامل-Bash

متخصصینی که عواملی با قابلیت bash را در مقیاس به کار گرفته‌اند، روی چندین الگوی معماری همگرا شده‌اند که انعطاف‌پذیری و قابلیت اطمینان را متعادل می‌کنند. اولین مورد الگوی پالت فرمان است: عامل به جای اجازه دادن به تولید پوسته به شکل آزاد، از مجموعه ای از الگوهای فرمان پارامتری شده انتخاب می کند. عامل تصمیم می گیرد کدام عملیات را انجام دهد و با چه آرگومان هایی، اما ساختار خود فرمان هرگز توسط مدل تولید نمی شود. این به طور چشمگیری سطح را برای خطاها و حوادث امنیتی کاهش می دهد و در عین حال از صدها عملیات متمایز پشتیبانی می کند.

الگوی دوم افشای پیشرونده قابلیت است. استقرار عامل جدید با عملیات فقط خواندنی شروع می شود - فهرست کردن فایل ها، جستجو در پایگاه داده ها، واکشی پاسخ های API. عملیات نوشتن به صورت تدریجی باز می شود زیرا عامل رفتار قابل اعتمادی را در هر زمینه توسعه یافته نشان می دهد. این نشان می‌دهد که چگونه سازمان‌های مسئول امتیازات دسترسی انسانی را مدیریت می‌کنند و در کشف موارد برتر قبل از رسیدن به تولید مؤثر بوده است.

  • Idempotency به طور پیش‌فرض: هر دستوری که توسط عامل اجرا می‌شود، باید دوبار اجرا شود. از نوشتن فایل اتمی، اضافه کردن پایگاه داده به جای درج، و بررسی قبل از اصلاح الگوها در سرتاسر استفاده کنید.
  • گزارش ساختاری: stdin، stdout، stderr، کدهای خروج و مُهرهای زمانی را برای هر اجرای دستور ضبط کنید. این دنباله حسابرسی برای اشکال‌زدایی و انطباق بسیار ارزشمند است.
  • اجرای مهلت زمانی: فرمان هایی که به طور نامحدود معلق می شوند می توانند کل خطوط لوله عامل را متوقف کنند. تایم اوت های سخت با انتشار خطای پاک برای سیستم های تولید غیرقابل مذاکره است.
  • حالت‌های اجرا خشک: یک لایه شبیه‌سازی را پیاده‌سازی کنید که توضیح می‌دهد یک فرمان بدون اجرای آن چه کاری می‌تواند انجام دهد. نمایندگان می توانند قبل از انجام عملیات مخرب یا گران قیمت، از این برای بازرسی خود استفاده کنند.
  • جداسازی محیط: هر فراخوانی عامل باید از وضعیت محیطی تمیز و شناخته شده شروع شود. نشت متغیرهای محیط بین اجراها منبع رایج اشکالات ظریف است.

تأثیر دنیای واقعی: جایی که عوامل Bash در حال تغییر عملیات تجاری هستند

مزایای انتزاعی عوامل مبتنی بر bash زمانی مشخص می‌شوند که در برابر جریان‌های کاری واقعی تجاری بررسی شوند. یک شرکت لجستیک متوسط ​​را در نظر بگیرید که ناوگانی متشکل از 340 وسیله نقلیه را مدیریت می کند. پیش از این، تیم عملیات آنها تقریباً 22 ساعت در هفته را صرف ارتباط دستی فایل‌های تله‌متری GPS، گزارش‌های نگهداری ذخیره‌شده به‌عنوان CSV و سوابق تغییر راننده صادر شده از سه سیستم جداگانه می‌کردند. امروزه، یک خط لوله عامل هر شش ساعت اجرا می‌شود، این فایل‌ها را از طریق دستورات پوسته جذب می‌کند، آنها را از طریق یک سری فیلترهای awk و jq تبدیل می‌کند، ناهنجاری‌ها را شناسایی می‌کند و هشدارهای ساختاری را به داشبورد تیم ارسال می‌کند. 22 ساعت هفتگی به 4 تبدیل شد و نرخ خطا در مرحله همبستگی به نزدیک صفر کاهش یافت زیرا عامل منطق ثابتی را بدون اشتباهات ناشی از خستگی که باعث بررسی دستی می‌شود، اعمال می‌کند.

در زمینه‌های منابع انسانی و حقوق و دستمزد، نمایندگان دارای پوسته در حال تغییر جریان‌های کاری درون‌بوردی هستند. تهیه یک کارمند جدید در سیستم‌های ایمیل، کنترل دسترسی، نرم‌افزار حقوق و دستمزد و ابزارهای داخلی نیاز به یک هماهنگ‌کننده داشت که شش پنل مدیریت مختلف را طی چند روز لمس کند. با عوامل bash که هماهنگ‌سازی را مدیریت می‌کنند - برقراری تماس‌های API احراز هویت شده، به‌روزرسانی ورودی‌های LDAP، راه‌اندازی اسکریپت‌های تهیه‌کننده - همین فرآیند اکنون در کمتر از 20 دقیقه با یک مرحله تأیید انسانی کامل می‌شود. برای شرکت هایی که سالانه 30 یا 40 درصد رشد می کنند، این نوع اتوماسیون راحت نیست. این یک پیش نیاز برای مقیاس‌بندی بدون مقیاس‌بندی متناسب تعداد کار است.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

کسب و کارهای تجارت الکترونیکی که کاتالوگ محصولات را با ده ها هزار SKU اجرا می کنند، به طور مشابه سود برده اند. به‌روزرسانی‌های قیمت‌گذاری که زمانی به صادرات دستی CSV انبوه، دستکاری صفحه‌گسترده و واردات مجدد نیاز داشتند، می‌توانند توسط عواملی که شرایط راه‌اندازی را بررسی می‌کنند و دستورات به‌روزرسانی با محدوده دقیق را اجرا می‌کنند - فقط ردیف‌هایی را لمس می‌کنند که معیارهای خاصی را دارند، ثبت هر تغییری را انجام می‌دهند، و اگر معیارهای پایین‌دستی از محدوده‌های مورد انتظار پس از یک ساعت فاصله دارند، به‌طور خودکار به عقب برمی‌گردند.

Mewayz and the Agent-Enabled Business OS

پلتفرم‌هایی مانند Mewayz - که CRM، صورت‌حساب، منابع انسانی، حقوق و دستمزد، مدیریت ناوگان، تجزیه و تحلیل، و رزرو را در یک سیستم عامل کسب‌وکار ادغام می‌کند - دقیقاً نوع محیطی را نشان می‌دهد که در آن عوامل دارای bash بازده ترکیبی ارائه می‌کنند. با 207 ماژول که جریان‌های داده‌ای به هم پیوسته را تولید می‌کنند، چالش ذخیره‌سازی اطلاعات نیست، بلکه عمل کردن به طور منسجم بر روی آن در سراسر زمینه‌ها است. یک ناهنجاری در صورت‌حساب ممکن است به به‌روزرسانی رکورد CRM، مشکل زمان‌بندی حقوق و دستمزد و تأخیر در تعمیر و نگهداری ناوگان - سه ماژول، سه لایه داده، یک علت اصلی بازگردد.

هنگامی که عوامل می توانند این اتصالات را با اجرای پرس و جوهای داده در سطح پوسته، سوابق ارجاع متقابل، و راه اندازی اقدامات خاص ماژول از طریق واسط های فرمان به خوبی تعریف شده طی کنند، سیستم عامل کسب و کار واقعاً هوشمند می شود و نه جامع. معماری Mewayz که به 138000 کاربر در انواع مختلف کسب‌وکار خدمات ارائه می‌کند، از لایه‌های هماهنگ‌سازی عامل که به زبان جهانی دستورات پوسته صحبت می‌کنند سود می‌برد - زیرا این عوامل می‌توانند با هر سیستم زیربنایی بدون نیاز به ادغام سفارشی برای هر یک از 207 ماژول تعامل داشته باشند.

نتیجه عملی برای کاربران Mewayz اتوماسیونی است که شبیه به داشتن یک تحلیلگر عملیات است که هرگز نمی‌خوابد و هرگز زمینه را فراموش نمی‌کند. یک سیستم رزرو که نرخ‌های لغو غیرمعمول را شناسایی می‌کند، از CRM برای بخش‌های مشتری آسیب‌دیده درخواست می‌کند، گزارش‌های ارتباطی اخیر را ارجاع می‌دهد، گزارش آشتی را ایجاد می‌کند و به تیم مربوطه اطلاع می‌دهد - همه توسط یک عامل زمان‌بندی که یک سری هماهنگ از دستورات پوسته را علیه لایه داده Mewayz اجرا می‌کند، راه‌اندازی می‌شود. این داستان علمی تخیلی نیست. این واقعیت عملیاتی است که برای کسب‌وکارهایی که در زیرساخت‌های عاملی که بر اساس اصول اجرایی قابل اعتماد ساخته شده‌اند، سرمایه‌گذاری می‌کنند.

تجربه توسعه‌دهنده: ساختن عوامل Bash قابل نگهداری

یک انتقاد وارد شده به اتوماسیون بسیار سنگین این است که اسکریپت‌های پوسته با گذشت زمان غیرقابل نگهداری می‌شوند - ضرب المثلی "توپ گل" که فقط نویسنده اصلی می‌تواند آن را تفسیر کند. این نگرانی مشروع اما قابل حل است. همان شیوه‌هایی که اسکریپت‌های پوسته معمولی را قابل نگهداری می‌سازد، با قدرت بیشتری در زمینه‌های عامل اعمال می‌شود. توابع بیش از اسکریپت های یکپارچه. نام متغیرهای معنی دار الگوهای مدیریت خطا ثابت کتابخانه‌های فرمان کنترل‌شده نسخه با نسخه‌سازی معنایی.

موفق ترین تیم ها با کتابخانه های فرمان عامل خود به عنوان محصولات نرم افزاری درجه یک رفتار می کنند. آنها مجموعه های آزمایشی را حفظ می کنند که رفتار فرمان را در برابر ورودی های شناخته شده و خروجی های مورد انتظار تأیید می کند. آنها پیش شرط ها و شرایط پس از هر الگوی فرمان را مستند می کنند. آن‌ها ممیزی‌های منظمی را انجام می‌دهند که در واقع دستوراتی را که عوامل در تولید فراخوانی می‌کنند، بازنشسته می‌کنند و قالب‌های استفاده‌نشده را بازنشسته می‌کنند و قالب‌های پرکاربرد را سخت می‌کنند. این رشته مشکل "باش اسپاگتی" را به یک سیستم مدیریت شده و قابل تکامل تبدیل می کند.

ابزار مشاهده پذیری به طور قابل توجهی برای پشتیبانی از این کار به بلوغ رسیده است. پلتفرم‌های عامل مدرن ردیابی‌های ساختاری را منتشر می‌کنند که هر تصمیم منطقی عامل را به دستورات پوسته خاصی که راه‌اندازی می‌کند، خروجی‌های دریافت‌شده و مراحل استدلال بعدی ترسیم می‌کند. وقتی مشکلی پیش می‌آید - و در اتوماسیون‌های پیچیده، همه چیز اشتباه می‌شود - این ردیابی‌ها باعث می‌شوند که تجزیه و تحلیل علت ریشه در چند دقیقه به جای چند ساعت قابل انجام باشد. سرمایه‌گذاری در زیرساخت‌های گزارش‌دهی و ردیابی ساختاریافته، با کاهش سربار رفع اشکال در طول عمر استقرار یک عامل تولید، چندین برابر باز می‌گردد.

نگاه به جلو: پوسته به عنوان استاندارد رابط عامل

از آنجایی که عوامل هوش مصنوعی به اجزای استاندارد در پشته‌های نرم‌افزارهای تجاری تبدیل می‌شوند، مسئله استانداردسازی رابط ضروری می‌شود. ده‌ها فریم‌ورک در حال رقابت برای تعریف چگونگی کشف و فراخوانی قابلیت‌ها توسط عوامل هستند. REST، GraphQL، طرحواره‌های فراخوانی تابع، پروتکل‌های MCP - چشم‌انداز تکه‌تکه است. با این حال، در زیر همه این موارد، اجرای در سطح پوسته زیرلایه مشترکی است که هر رویکرد در نهایت آن را لمس می‌کند.

این نشان می‌دهد که سرمایه‌گذاری عمیق در واسط‌های پوسته تمیز، مستند و دارای امنیت سخت برای سیستم‌های تجاری یک تصمیم تاکتیکی کوتاه‌مدت نیست، بلکه یک تصمیم استراتژیک بلندمدت است. سازمان‌هایی که امروزه لایه‌های فرمان قوی می‌سازند، آن‌ها را با هر استاندارد هماهنگ‌سازی عاملی که غالب باشد، سازگار می‌یابند - زیرا هر چارچوب عامل جدی باید دستورات را روی زیرساخت واقعی اجرا کند، و آن زیرساخت Bash صحبت می‌کند.

کسب‌وکارهایی که در دهه آینده بخش‌های خود را در بهره‌وری عملیاتی رهبری خواهند کرد، لزوماً آن‌هایی نیستند که بیشترین بودجه هوش مصنوعی یا پیچیده‌ترین مدل‌ها را دارند. آنها هستند که زیرساخت اجرای منظمی را ایجاد می کنند که اتوماسیون هوشمند را قابل اعتماد، قابل ممیزی و به طور مداوم بهبود می بخشد. در آن زیرساخت، پوسته - باستانی، آزمایش شده در نبرد، جهانی - دقیقاً همان جایی که همیشه بوده است باقی خواهد ماند: در پایه و اساس همه چیزهایی که واقعاً اجرا می شود.

سوالات متداول

چرا عوامل هوش مصنوعی به جای زبان‌های برنامه‌نویسی مدرن‌تر به Bash تکیه می‌کنند؟

Bash دارای چندین دهه ابزار آزمایش شده در نبرد، در دسترس بودن جهانی در سیستم‌های یونیکس، و یک فلسفه ترکیبی است که به طور طبیعی بر روی نحوه زنجیره وظایف عوامل با یکدیگر ترسیم می‌کند. معماری مبتنی بر لوله آن به عوامل اجازه می دهد تا بدون اختراع مجدد زیرساخت، جریان های کاری پیچیده را هماهنگ کنند. زبان‌های مدرن راحتی‌هایی را ارائه می‌دهند، اما همه‌جا بودن و مستقیم بودن Bash، آن را به پیش‌فرض عملی برای لایه‌های اجرای مستقل در استقرارهای دنیای واقعی تبدیل می‌کند.

یک عامل هوش مصنوعی واقعاً می تواند با استفاده از برنامه نویسی پوسته چه نوع وظایفی را خودکار کند؟

تقریباً هر کاری که یک اپراتور انسانی در ترمینال انجام می‌دهد: دستکاری فایل، تماس‌های API از طریق curl، مدیریت فرآیند، تبدیل داده‌ها، خطوط لوله استقرار، و نظارت بر سیستم. عواملی که بر روی پلتفرم هایی مانند Mewayz - یک سیستم عامل تجاری 207 ماژول با قیمت 19 دلار در ماه (app.mewayz.com) اجرا می شوند - از اتوماسیون در سطح پوسته برای هماهنگ کردن گردش کار در بازاریابی، CRM، تجارت الکترونیک و عملیات بدون نیاز به کد سفارشی برای هر یکپارچه سازی استفاده می کنند.

آیا استفاده از اسکریپت Bash به عنوان لایه اجرای عامل هوش مصنوعی ایمن است؟

ایمنی کاملاً به sandboxing، محدوده مجوز و اعتبارسنجی ورودی بستگی دارد. اجرای بدون محافظ پوسته یک سطح حمله قابل توجه است - تزریق فرمان همچنان یک نگرانی اصلی است. چارچوب‌های عاملی که به خوبی طراحی شده‌اند، دستورات موجود را محدود می‌کنند، فرآیندها را در محیط‌های ایزوله اجرا می‌کنند و برای عملیات‌های مخرب به تأیید صریح نیاز دارند. همیشه دستورات پوسته تولید شده توسط عامل را به عنوان ورودی نامطمئن در نظر بگیرید تا زمانی که در یک زمینه اجرای کنترل شده بررسی شوند.

آیا امروز برای ساخت یا استفاده از عوامل هوش مصنوعی به تخصص عمیق Bash نیاز دارم؟

نه لزوما. بسیاری از پلتفرم‌های عامل، لایه پوسته را به طور کامل انتزاع می‌کنند و سطوح اولیه اولیه را در معرض نمایش می‌گذارند. ابزارهایی مانند Mewayz (app.mewayz.com) به کاربران غیر فنی این امکان را می دهد که عملیات تجاری را در 207 ماژول بدون نوشتن یک فرمان پوسته خودکار کنند. با این اوصاف، درک اصول Bash هنگام اشکال‌زدایی رفتار عامل، سفارشی‌سازی خطوط لوله اتوماسیون، یا گسترش قابلیت‌های پلتفرم فراتر از آنچه که ماژول‌های از پیش ساخته شده ارائه می‌دهند، کمک می‌کند.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime