عامل نرم‌افزاری
در علوم رایانه، یک گماشته نرم‌افزاری یا یک عامل نرم‌افزاری یک برنامه ی رایانه‌ای است که برای کاربر یا برنامه‌های دیگر، به صورت یک نماینده (agency) عمل می‌کند. در اینجا نماینده یا وکیل (agency) (که از لغت لاتین agere به معنی انجام‌دادن (to do) گرفته شده است)، به معنی «قبول برای کارکردن از جانب یک شخص می‌باشد». این «کارکردن از جانب» به معنی ضمنی اختیاراتی برای تصمیم گیری در مورد آن است که «کدام عمل» مناسب می‌باشد.
در دانش رایانه، software agentها یا همان عامل‌های نرم‌افزاری بخشی از یک نرم‌افزارند که جهت کمک به کاربر یا نرم‌افزاری دیگر در چارچوب روابط واسطه‌ای کار می‌کنند. در واقع کاربران به عامل‌ها همانند یک واسط (گماشته)، قدرت تصمیم‌گیری برای این که در هر زمان چه اقدامی باید صورت بگیرد را وامی گذارند. یعنی همان‌طور که برای خرید یک خانه با رجوع به یک واسطه (آژانس یا Agency)، همهٔ اختیارات مربوط به تحقیق، بررسی، مقایسه مشتریان و … تا خرید را به آن واسطه (آژانس) تفویض می‌کنیم، در این‌جا نیز در یک زمینهٔ خاص کلیهٔ اختیارات را به یک عامل (Agent) می‌دهیم. به عامل ها در زبان محاوره ای بات (bot) گفته می شود، که از کلمه ی روبات گرفته شده است. این عامل ها (بات ها) می توانند در سیستم های دیگر قرار داده شوند، مثل موقعی که عامل نرم افزاری (بات) برای اجرا، در بدنه ی یک روبات قرار می گیرد، یا موقعی که یک نرم افزار chatbox (مثل ) روی گوشی موبایل یا روی دیگر وسایل ارتباطی قرار می گیرد. فقط باید بدانیم که وظیفهٔ عامل (Agent)ها در بیشتر اوقات تا مرحلهٔ تصمیم‌گیری ادامه می‌یابد و تصمیم این که در بین پیشنهادها در نهایت کدام یک برگزیده شود به عهدهٔ خود کاربر است. هدف این برنامه‌ها، آسانی کشف داده‌ها در اینترنت و جایگزینی انسان در فرایند طولانی تولید دانش است.
در فرهنگ لغت عامل (Agent)به معنای «فاعل، نماینده، مأمور، واسطه، عامل، امین و کارگزار» می‌باشد. به این ترتیب عامل را می‌توان کسی دانست که به جای شخص یا چیز دیگری عمل می‌کند. در تعریفی دقیق‌تر: عامل چیزی است که می‌تواند محیط را از طریق حسگرهایش درک کند و با عملگرهایش بر روی محیط اثر بگذارد
قسمتی از یک نرم‌افزار است که به منظور کمک به یک کاربر یا نرم‌افزاری دیگر در چارچوب روابط واسطهٔ کار می‌کنند. یک عامل انسانی دارای چشم، گوش و.. به عنوان حسگر و دست و پا و.. به عنوان عملگر است. یک عامل نرم‌افزاریkeystroke, File Contents و Network Packets را به عنوان ورودی حسگر و از طریقdisplaying on the screen, writing files و Network Packetsبر محیط عمل می‌کند.
در این قسمت چند مثال از agentها را ذکر می‌کنیم تا در حین آن نحوه کمک رسانی آن‌ها به کاربران را توضیح دهیم:
Software agentها برای اولین بار با هدف ایجاد شیوه‌ای راحت و مطمئن برای انجام خودکار کارهایی به نیابت از کاربر به وجود آمد. تعاریف بسیاری از agentها شده‌است که تمامی آن‌ها شامل خصوصیات زیر هستند:
ابعاد متعددی برای طبقه‌بندی کردن عامل‌های نرم‌افزاری وجود دارد، این عامل‌ها می‌توانند متناسب با موارد زیر دسته‌بندی شوند.
این عامل‌ها کار را با تأکید بر یادگیری و خودمختاری انجام می‌دهند. عامل در اینجا عملی را که توسط کاربر انجام می‌شود را مشاهده می‌کند و سعی می‌کند راه‌های جدید را یاد بگیرد و سپس سعی می‌کند راه‌های بهتر برای انجام همان کار را پیشنهاد کند. این عاملها، کار خود را از طریق ۴ راه انجام می‌دهند: رشد سریع اطلاعات در وب موجب رشد عامل‌های اطلاعاتی شده‌است با این امید که این عامل‌ها به ما کمک کنند، اطلاعات منابع مختلف را مدیریت، دستکاری و جمع‌آوری کنیم. یک گروه ویژه از عامل‌ها هستند که دارای مدل‌های سمبلیک و درونی از محیط نیستند، بلکه به صورت محرک- پاسخ عمل می‌کنند. عاملهایی که سرشت آن‌ها ترکیبی از ۲ یا چند عامل است. یک عامل نرم‌افزاری زمانی یک Mobile Agent است که توانایی مهاجرت از یک host به host در یک محیط شبکه ناهمگون را داشته باشد.