SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor · به‌روزرسانی شده 2026-08-28

هارنس عامل (agent harness) چیست و چه کاربردی دارد؟

هارنس عامل برنامه‌ای است که مدل زبانی را به یک عامل هوشمند تبدیل می‌کند. در این مطلب بررسی می‌کنیم که چگونه مدیریت ابزارها، وضعیت نشست و حلقه اجرا، هارنس را از مدل متمایز می‌کند.

هارنس عامل (agent harness) چیست

هارنس عامل برنامه‌ای است که پیرامون یک مدل زبانی اجرا شده و آن را به یک عامل تبدیل می‌کند. این برنامه شامل حلقه‌ای است که به‌طور مداوم مدل را فراخوانی می‌کند، تعاریف ابزارهایی که مدل مجاز به استفاده از آن‌هاست، قوانین دسترسی که تعیین می‌کنند کدام‌یک از آن فراخوانی‌ها واقعاً اجرا شوند، وضعیت نشست (session state) که بین نوبت‌ها حفظ می‌شود، و دایرکتوری کاری که عملیات در آن انجام می‌گیرد. مدل در داخل این ساختار قابل جایگزینی است.

جمله آخر نکته کلیدی است. یک مدل به‌تنهایی به یک پرسش پاسخ می‌دهد و شما را فراموش می‌کند. اما یک هارنس از مدل می‌پرسد که گام بعدی چیست، دستوری که مدل درخواست کرده را اجرا می‌کند، نتیجه را به مدل بازمی‌گرداند و دوباره پرسش را تکرار می‌کند. این تکرار همان چیزی است که افراد هنگام استفاده از واژه «عامل» (agent) مد نظر دارند. اگر واژگان پیرامونی هنوز برایتان مبهم است، تفاوت بین یک عامل هوش مصنوعی، یک LLM و یک دستیار پیش از انتخاب ابزار، این مفاهیم را برای شما شفاف می‌کند.

هارنس (Harness) مدل نیست

این دو مورد اغلب با هم اشتباه گرفته می‌شوند، زیرا فروشندگان آن‌ها را تحت یک نام تجاری واحد عرضه می‌کنند.

dsh و DeepSeek دو محصول متفاوت هستند. DeepSeek Harness که در تاریخ 13 اوت 2026 در github.com/deepseek-ai/deepseek-harness تحت مجوز MIT منتشر شد، یک برنامه Node است که روی سیستم خود نصب می‌کنید. مدل‌های DeepSeek وزن‌هایی هستند که از طریق یک API (رابط برنامه‌نویسی اپلیکیشن) ارائه می‌شوند. اگر dsh را به سمت مدل یک فروشنده دیگر هدایت کنید، همچنان کار می‌کند؛ زیرا هارنس فقط به چیزی نیاز دارد که پیام‌ها را بپذیرد و فراخوانی ابزارها (tool calls) را بازگرداند.

Claude Code و Claude نیز همین جفت را تشکیل می‌دهند. Claude Code یک هارنس است: یک برنامه ترمینالی با یک حلقه پردازشی، یک سیستم مجوزدهی و ابزارهای فایل و شل. Claude خانواده مدلی است که به‌صورت پیش‌فرض توسط آن فراخوانی می‌شود. Codex و Gemini CLI نیز به همین شکل تفکیک می‌شوند.

این آزمونی است که همیشه تکلیف را مشخص می‌کند. شما یک هارنس نصب می‌کنید. سپس یک مدل را فراخوانی می‌کنید. اگر آن ابزار دارای نسخه‌ای روی دیسک شما و یک فایل پیکربندی در دایرکتوری home شما باشد، آن یک هارنس است. اگر آن یک رشته متنی در داخل آن فایل پیکربندی باشد، چیزی شبیه به deepseek-chat، آن مدل است.

عملکرد واقعی حلقه

یک دور از حلقه harness به این شکل است. آن را به‌دقت بخوانید، زیرا تقریباً تمام تفاوت‌های بین harnessها در جزئیات همین پنج مرحله نهفته است.

  1. این harness، تاریخچه گفتگو تا این لحظه را به همراه فهرستی از تعاریف ابزارها برای مدل ارسال می‌کند.
  2. مدل با متن یا درخواستی برای فراخوانی یکی از آن ابزارها پاسخ می‌دهد.
  3. این harness درخواست را با قوانین دسترسی خود مطابقت می‌دهد و یا آن را اجرا می‌کند و یا برای پرسش از شما متوقف می‌شود.
  4. این harness ابزار را اجرا کرده، خروجی و کد خروج (exit code) را ثبت می‌کند و اگر خروجی بسیار طولانی باشد، آن را کوتاه می‌کند.
  5. این harness نتیجه را به گفتگو اضافه کرده و به مرحله 1 بازمی‌گردد.

مرحله 3 جایی است که harnessها در استفاده روزمره بیشترین تفاوت را با هم دارند. harnessی که پیش از هر دستور می‌پرسد، امن اما خسته‌کننده است. harnessی که هرگز نمی‌پرسد، سرانجام یک دستور مخرب را روی مسیری که مدل اشتباه تشخیص داده، اجرا خواهد کرد. اکنون تمام harnessهای جدی یک تنظیم میانی دارند: یک لیست مجاز (allowlist) از دستوراتی که بدون پرسش اجرا می‌شوند و درخواست تأیید برای هر چیز دیگر.

مرحله 1 جایی است که سایر تفاوت‌ها در آن قرار دارد. این harness همچنین system promptی را می‌نویسد که در هر یک از آن درخواست‌ها همراه است، و Claude Code این کنترل را مستقیماً به شما می‌دهد، زیرا یک سبک خروجی، system prompt ارسالی را ویرایش می‌کند و در نتیجه هر پاسخی که بازمی‌گردد را تغییر می‌دهد. گفتگو در هر دور رشد می‌کند و مدل یک پنجره متنی (context window) ثابت دارد، بنابراین harness باید تصمیم بگیرد چه چیزی را حذف کند، چه چیزی را خلاصه کند و چه چیزی را در یک فایل بنویسد تا بعداً دوباره بخواند. این تصمیم، دلیل اصلی تفاوت کیفیت خروجی دو harness است که یک مدل مشابه را هدایت می‌کنند. اگر این پنج مرحله هنوز انتزاعی به نظر می‌رسند، راه حل این است که یک بار یک حلقه ساده برای خود بنویسید، که دقیقاً همان چیزی است که یک مسیر مرحله‌بندی‌شده برای یادگیری عامل‌های هوش مصنوعی از شما می‌خواهد در ابتدا بسازید.

بیشتر harnessها اکنون ابزارهای خارجی را از طریق MCP (پروتکل زمینه مدل) متصل می‌کنند؛ روشی استاندارد برای ارائه یک ابزار به هر harnessی که از آن پشتیبانی می‌کند، به‌طوری که یکپارچه‌سازی واحد به چندین harness می‌رسد. اجرای سرورهای MCP روی یک VPS این بخش را پوشش می‌دهد. جستجوی وب معمولاً اولین ابزاری است که افراد اضافه می‌کنند، و اشاره دادن عامل به نمونه SearXNG خودتان باعث می‌شود پرس‌وجوها از دسترس شخص ثالث خارج شوند، در حالی که مشخص می‌کند هر صفحه‌ای که عامل پس از آن می‌خواند، ورودی غیرقابل‌اعتمادی است که وارد حلقه می‌شود.

تفاوت Agent harness و Agent framework

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

یک framework کتابخانه‌ای است که آن را import می‌کنید. شما حلقه (loop) را می‌نویسید، تصمیم می‌گیرید چه زمانی مدل را فراخوانی کنید و نتایج ابزارها را شخصاً مدیریت می‌کنید. LangChain نمونه شناخته‌شده‌ای است: شما بلوک‌های سازنده را دریافت کرده و عامل (agent) را در کد خود اسمبل می‌کنید.

یک harness برنامه‌ای است که آن را اجرا می‌کنید. حلقه از پیش نوشته شده، ابزارها از قبل موجودند و مدل دسترسی دارای تنظیمات پیش‌فرض است. شما با اولین دستور، یک عامل فعال دریافت می‌کنید و از آنجا به بعد آن را پیکربندی می‌کنید.

تست نصب معمولاً تعیین‌کننده است. اگر آن را نصب کردید و سپس شروع به کدنویسی کردید، این یک framework است. اگر آن را نصب کردید و سپس با آن تعامل داشتید، این یک harness است.

این مرز واقعاً مورد بحث است و واضح‌ترین گواه آن، مستندات خود LangChain است. تا اوت 2026، این مستندات Deep Agents را یک framework «دارای دیدگاه خاص و همه‌چیز‌تمام» (opinionated, batteries-included) توصیف می‌کند که بر پایه LangGraph ساخته شده است، در حالی که مخزن langchain-ai/deepagents خود را «یک agent harness همه‌چیز‌تمام» می‌نامد. هر دو توصیف منصفانه هستند. Deep Agents یک Python SDK است که آن را import می‌کنید، بنابراین تست نصب آن را یک کتابخانه می‌داند، اما رفتارهای پیش‌فرض کافی ارائه می‌دهد تا افراد از آن مانند یک harness استفاده کنند. مایکروسافت در اوت 2026 یک harness و عامل‌های میزبانی‌شده را به مرحله عرضه عمومی (GA) رساند که نشان می‌دهد این واژه اکنون بیش از آنکه یک اصطلاح فنی باشد، یک دسته‌بندی محصول است.

بنابراین، پرسشی را مطرح کنید که حجم کاری شما را پیش‌بینی کند. اگر حلقه را می‌نویسید، مالکیت آن با شماست: مدیریت تلاش‌های مجدد (retries)، کوتاه‌سازی کانتکست، درخواست‌های مجوز و ثبت وقایع. اگر حلقه از پیش آماده باشد، شما پاسخ‌های شخص دیگری را برای تمام این موارد به ارث می‌برید که شروع کار را بسیار سریع‌تر می‌کند اما تغییر دادن آن در آینده دشوارتر است.

تفاوت میان یک harness و پنجرهٔ چت

پنجرهٔ چت و یک harness هر دو خروجی مدل را به شما نمایش می‌دهند. تفاوت در این است که پردازش روی رایانهٔ چه کسی انجام می‌شود. در پنجرهٔ چت، هر کدی که مدل اجرا می‌کند درون sandbox فروشنده و روی فایل‌هایی که آپلود کرده‌اید اجرا می‌شود و با پایان نشست، از بین می‌رود. یک harness ابزارها را روی ماشینی که آن را راه‌اندازی کرده‌اید، با دسترسی کاربری که آن را اجرا کرده، روی فایل‌های واقعی شما و با استفاده از اعتبارنامه‌های واقعی موجود در محیط شما اجرا می‌کند.

این تمام مزیت و تمام ریسک موجود در دو جمله است. عامل (agent) بالاخره می‌تواند کار را انجام دهد. عامل همچنین می‌تواند کار را حذف کند.

هارنس‌هایی که کاربران واقعاً از آن‌ها استفاده می‌کنند

این فهرست عمداً در تاریخ 19 اوت 2026 به‌روزرسانی شده است. این حوزه به‌صورت هفتگی در حال تغییر است و هر جمع‌بندی به‌سرعت قدیمی می‌شود.

  • Claude Code و Codex هارنس‌های اختصاصی (vendor) هستند. این ابزارها ترمینال‌محور بوده، به‌صورت پیش‌فرض به مدل‌های همان شرکت متصل‌اند و صیقل‌یافته‌ترین سیستم مدیریت دسترسی را دارند. مقایسه Claude Code، Cursor، Codex و Copilot به‌طور کامل به بررسی آن‌ها می‌پردازد.
  • DeepSeek Harness (dsh) دارای مجوز MIT است و بر یک ایده بنا شده: همه‌چیز یک پلاگین است؛ بنابراین مدل‌ها، ابزارها، نشست‌ها (sessions)، سندباکس‌ها و رابط کاربری، همگی قطعاتی قابل‌جایگزینی هستند. هر پلاگینی که نصب می‌کنید با دسترسی‌های خودِ عامل (agent) اجرا می‌شود، بنابراین بررسی دسترسی‌های یک پلاگین dsh پیش از افزودن آن در اینجا اهمیت بیشتری نسبت به هارنس‌هایی با مجموعه ابزار ثابت دارد. این پروژه در تاریخ 19 اوت 2026، یعنی شش روز پس از انتشار، حدود 166,800 ستاره در GitHub داشت.
  • Hermes، محصول Nous Research، یک عامل خودمختار عمومی است و نه صرفاً یک ابزار کدنویسی. این پروژه در فوریه 2026 تحت مجوز MIT منتشر شد و خاطرات و مهارت‌های خود را در یک دیتابیس محلی SQLite روی دستگاه شما نگه می‌دارد. میزبانی شخصی Hermes روی یک VPS مراحل آن را توضیح می‌دهد.
  • Omnigent یک متا-هارنس است: این ابزار سایر هارنس‌ها از جمله Claude Code و Codex را از طریق یک API واحد با نشست‌های مشترک، سقف هزینه و یک سندباکس در سطح سیستم‌عامل مدیریت می‌کند. Omnigent به عنوان یک هارنس چندعاملی مزایای این رویکرد را بررسی می‌کند.
  • OneCLI یک هارنس سندباکس‌شده برای تیم‌هاست که حول یک درگاه (gateway) ساخته شده؛ این درگاه اعتبارنامه‌های واقعی را به درخواست‌های خروجی تزریق می‌کند تا خودِ عامل همیشه فقط کلیدهای جایگزین (placeholder) را ببیند.

سه مورد از این ابزارها به‌قدری در لیست‌های کوتاه مشابه قرار می‌گیرند که ارزش دارد مقایسه DeepSeek Harness، Claude Code و Omnigent را در زمینه اتصال به مدل، مجوز، بلوغ و منابع مورد نیاز برای اجرا روی سرور مطالعه کنید.

شروع سریع dsh تنها با یک دستور انجام می‌شود و اجرای آن سریع‌ترین راه برای درک ماهیت یک هارنس است. این ابزار به Node.js روی دستگاه نیاز دارد.

npx @deepseek-ai/dsh web

این دستور رابط کاربری وب (web UI) را روی http://127.0.0.1:3080 اجرا می‌کند. پیش از تکیه بر آن، فایل README را بخوانید، زیرا dsh خود را به عنوان پیش‌نمایش توسعه‌دهنده معرفی کرده و صراحتاً اعلام می‌کند که تغییرات ناسازگار در نسخه‌های آینده وجود خواهد داشت. اگر آن دستور اولیه با شکست مواجه شد یا بیلد غیرمنتظره‌ای را دریافت کرد، ثابت کردن نسخه دقیق dsh و پاکسازی کش npx معمولاً مشکل را حل می‌کند. اجرای DeepSeek Harness روی یک VPS نصب سروری را پوشش می‌دهد و چرا آن آدرس با 127.0.0.1 شروع می‌شود دلیل پیش‌فرض بودن loopback را توضیح می‌دهد.

روترها در سطحی بالاتر از harness قرار دارند

یک روتر مدل، نقش یک پروکسی محلی بین harness و API ارائه‌دهنده را ایفا می‌کند. Claude Code Router نمونه‌ای رایج است: این ابزار به‌طور پیش‌فرض روی 127.0.0.1:3456 گوش می‌دهد، درخواست‌هایی را که Claude Code قرار بود به ارائه‌دهنده اصلی خود بفرستد دریافت می‌کند و آن‌ها را به ارائه‌دهنده‌ای که شما پیکربندی کرده‌اید، هدایت می‌کند. harness از این تغییر هیچ اطلاعی ندارد.

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

تغییرات هنگام اجرای harness روی یک VPS

وقتی harness از لپ‌تاپ شما به سروری که اجاره کرده‌اید منتقل می‌شود، چهار مورد تغییر می‌کند.

هنگام بستن درب لپ‌تاپ به کار خود ادامه می‌دهد. یک وظیفه طولانی‌مدت از رفت‌وآمد شما و وضعیت باتری جان سالم به در می‌برد. آن را داخل tmux شروع کرده و از آن جدا شوید:

tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agent

برای هر چیزی که باید پس از reboot دوباره بالا بیاید، یک سرویس کاربری (user service) بهتر از یک نشست ترمینال است:

loginctl enable-linger $USER
systemctl --user status my-agent.service

loginctl enable-linger بخشی است که معمولاً نادیده گرفته می‌شود. بدون آن، systemd به محض بستن آخرین نشست SSH (پوسته امن) شما، سرویس‌های کاربری‌تان را متوقف می‌کند؛ بنابراین agent هنگام خروج شما از سیستم می‌میرد و هیچ خطایی هم چاپ نمی‌شود. اجرای dsh بدون رابط کاربری تحت systemd شامل فایل unit مربوطه است. وقتی یک نشست روی آن سرور فعال باشد، نشست دوم هزینه اضافه‌ای برای شما ندارد و دو نشست Claude Code روی یک سیستم می‌توانند با هم پیام رد و بدل کنند، بنابراین نشستی که صبح شروع کرده‌اید می‌تواند بدون نیاز به دخالت دستی شما، وظیفه‌ای را به نشست دیگر محول کند.

کلیدهای شما را نگه می‌دارد. کلید ارائه‌دهنده اکنون در یک فایل پیکربندی روی آن سرور قرار دارد. بررسی کنید چه کسی اجازه خواندن آن را دارد:

ls -l ~/.config

هر فرآیندی که با کاربر شما اجرا شود می‌تواند آن فایل را بخواند، که شامل agent و هر چیزی است که agent تصمیم به اجرای آن می‌گیرد.

می‌تواند به سایر ماشین‌های شما دسترسی داشته باشد. یک VPS در همان شبکه خصوصی که سایر سیستم‌های شما در آن قرار دارند، به agent مسیری برای دسترسی به آن‌ها می‌دهد. این دقیقاً هدف اصلی است و در عین حال شعاع انفجار (blast radius) را نیز تعیین می‌کند.

از هر کجا که باشید در دسترس است. اکثر harnessها یک رابط کاربری وب ارائه می‌دهند و اکثر آن‌ها به دلیلی آن را روی loopback محدود می‌کنند. تنظیمات خود را بررسی کنید:

ss -tlnp | grep 3080

127.0.0.1:3080 به این معنی است که فقط خود سرور می‌تواند متصل شود. 0.0.0.0:3080 به این معنی است که هر کسی که آدرس را پیدا کند می‌تواند متصل شود. به جای تغییر آدرس bind، از طریق یک تونل SSH به رابط کاربری loopback دسترسی پیدا کنید:

ssh -N -L 3080:127.0.0.1:3080 you@your-server

سپس http://127.0.0.1:3080 را در مرورگر لپ‌تاپ خود باز کنید. ترافیک درون نشست SSH منتقل می‌شود، بنابراین هیچ چیز جدیدی در معرض اینترنت قرار نمی‌گیرد.

هر یک از این موارد، استدلالی برای امنیت نیز محسوب می‌شوند

چهار ویژگی ذکر شده را دوباره از دیدگاه یک مهاجم بررسی کنید.

این ابزار بدون نظارت اجرا می‌شود، بنابراین کسی متوجه لحظه‌ای که مدل یک مسیر را اشتباه می‌خواند، نخواهد بود. این ابزار کلیدهای شما را نگه می‌دارد، بنابراین یک فایل پیکربندی قابل خواندن، به معنای دسترسی به کل حساب ارائه‌دهنده شماست. این ابزار می‌تواند به سایر ماشین‌های شما دسترسی پیدا کند، بنابراین یک prompt injection—یعنی دستوراتی که در یک صفحه وب یا فایلی که عامل (agent) می‌خواند پنهان شده‌اند—اکنون مسیری به سمت میزبان پایگاه داده شما دارد. این ابزار از هر جایی قابل دسترسی است، بنابراین یک رابط کاربری وب که روی 0.0.0.0 متصل شده و رمز عبور ندارد، در واقع یک shell روی اینترنت عمومی است.

راهکار در هر مورد خسته‌کننده است و هر بار یکسان است. به جای حساب کاربری خودتان، یک حساب کاربری بدون امتیاز (unprivileged) به عامل اختصاص دهید:

sudo adduser --disabled-password --gecos "" agent

رابط کاربری وب را روی loopback نگه دارید و از طریق SSH به آن دسترسی پیدا کنید. محدودترین اعتبارنامه‌هایی را که همچنان به عامل اجازه می‌دهد کار را به پایان برساند به آن بدهید؛ موضوعی که در دور نگه داشتن اسرار از عامل‌های هوش مصنوعی به‌درستی به آن پرداخته شده است. برای هر چیزی که در زمان عدم نظارت شما اجرا می‌شود، یک ماشین یک‌بارمصرف (throwaway) بهتر از یک ماشینِ به‌دقت پیکربندی‌شده است: اجرای عامل‌های کدنویسی در یک ماشین مجازی یک‌بارمصرف و اجرای ایمن Claude Code روی یک VPS هر دو این مسیر را دنبال می‌کنند.

آیا به یک محیط اجرای عامل (agent harness) نیاز دارید؟

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

بیشتر ابزارهای این دسته نوپا هستند. dsh تا اوت 2026 در فایل README خود وضعیت پیش‌نمایش توسعه‌دهنده (developer preview) را ذکر کرده است و سایر ابزارها نیز با سرعتی در حال تغییر هستند که ممکن است فایل پیکربندی که امروز می‌نویسید، ماه آینده نیاز به ویرایش داشته باشد. این دلیلی است برای اینکه تنظیمات خود را کوچک و قابل‌تکرار نگه دارید و تغییراتی که اعمال می‌کنید را یادداشت کنید. همین خویشتن‌داری در داخل حلقه نیز کمک می‌کند، جایی که مهارتی که عامل را به سمت کوچک‌ترین تغییرِ کارآمد سوق می‌دهد، در پایان یک اجرای بدون نظارت، یک diff به شما می‌دهد که واقعاً قابل خواندن است. با یک محیط اجرا روی یک سرور شروع کنید، یک وظیفه و یک کلید دسترسی محدود به آن بدهید و تنها پس از اینکه آن وظیفه اول به مدت یک هفته برایتان خسته‌کننده شد، دسترسی‌های آن را گسترش دهید. عامل‌های self-hosted که ارزش اجرا در حال حاضر را دارند، مکان مناسبی برای انتخاب اولین گزینه است.

FAQ

منظور از agent harness به زبان ساده چیست؟

این برنامه، لایهٔ پیرامون مدل است. مدل متن تولید می‌کند و درخواست استفاده از ابزارها را می‌دهد. harness حلقه‌ای را اجرا می‌کند که پرسش‌ها را ادامه می‌دهد، ابزارهای درخواستی مدل را اجرا می‌کند، قوانین مربوط به ابزارهای مجاز بدون نیاز به تأییدیه را اعمال می‌کند و وضعیت نشست (session) و فایل‌ها را بین نوبت‌های مختلف حفظ می‌کند. اگر مدل را عوض کنید و harness همچنان کار کند، این واضح‌ترین نشانه است که این دو موجودیت‌های مجزایی هستند.

آیا Claude Code یک مدل است یا یک harness؟

Claude Code یک harness است. این یک برنامهٔ ترمینالی است که شامل یک حلقه، سیستم مجوزدهی و ابزارهای داخلی برای کار با فایل و shell است. Claude خانوادهٔ مدلی است که این برنامه به‌صورت پیش‌فرض فراخوانی می‌کند. همین تفکیک در مورد DeepSeek Harness (dsh) نیز صدق می‌کند که یک برنامه Node است که آن را نصب می‌کنید، در حالی که مدل‌های DeepSeek از طریق API ارائه می‌شوند. شما یک harness را روی دستگاه نصب می‌کنید، اما مدل را از طریق شبکه فراخوانی می‌کنید.

تفاوت بین agent harness و agent framework چیست؟

یک framework کتابخانه‌ای است که آن را import می‌کنید و بر اساس آن کد می‌نویسید؛ بنابراین مدیریت حلقه، تلاش‌های مجدد (retries) و مدیریت context بر عهدهٔ شماست. یک harness برنامه‌ای است که آن را اجرا می‌کنید؛ بنابراین تمام این موارد با تنظیمات پیش‌فرض همراه است که به‌جای نوشتن، فقط آن‌ها را پیکربندی می‌کنید. در عمل، مرز این دو مبهم است: برای مثال، Deep Agents در LangChain یک SDK قابل import است که مخزن آن تا اوت 2026، آن را یک agent harness کامل (batteries-included) می‌نامد. از خود بپرسید که آیا قرار است حلقه را خودتان بنویسید یا خیر. پاسخ به این پرسش تعیین می‌کند کدام واژه برای موقعیت شما مناسب‌تر است.

آیا برای اجرای یک agent harness به VPS نیاز دارم؟

خیر. تمام harnessهای نام‌برده در اینجا روی لپ‌تاپ اجرا می‌شوند. استفاده از سرور چهار مورد را تغییر می‌دهد: عامل (agent) هنگام بستن درب لپ‌تاپ به کار خود ادامه می‌دهد، کلیدهای شما روی دستگاهی که همیشه روشن است نگهداری می‌شود، می‌تواند به سایر سرورهای شما دسترسی داشته باشد و می‌توانید از هر دستگاهی به همان نشست بازگردید. هر یک از این موارد ملاحظات امنیتی خاص خود را دارند؛ بنابراین برای عامل یک حساب کاربری مجزا ایجاد کنید و هرگونه رابط کاربری وب (web UI) را به 127.0.0.1 محدود کنید.

آیا می‌توانم از مدل دیگری در همان harness استفاده کنم؟

معمولاً بله، و این ویژگی تعیین‌کنندهٔ یک harness است. اکثر آن‌ها نام مدل و base URL را در پیکربندی خود می‌پذیرند، بنابراین تغییر ارائه‌دهنده (provider) بیشتر یک ویرایش ساده است تا بازنویسی. در مواردی که یک harness مقاومت می‌کند، یک router محلی مانند Claude Code Router بین harness و ارائه‌دهنده قرار می‌گیرد و درخواست‌ها را ترجمه می‌کند که به‌صورت پیش‌فرض به 127.0.0.1:3456 متصل می‌شود. در مورد این پروکسی مراقب باشید، زیرا تمام promptها را می‌بیند و تمام کلیدها را در اختیار دارد.