اپلیکیشن دسکتاپ

اپلیکیشن دسکتاپ Hermes یک اپلیکیشن بومی ساخته شده حول همان عاملی است که از CLI و gateway دریافت می‌کنید — همان پیکربندی، همان کلیدهای API، همان نشست‌ها، همان مهارت‌ها، همان حافظه. یک محصول جداگانه یا کلون سبک نیست؛ از هسته Hermes Agent و تنظیمات یکسان استفاده می‌کند و آن را از طریق یک رابط کاربری مدرن و با دقت طراحی شده هدایت می‌کند. اگر از hermes در ترمینال استفاده کرده‌اید، هر چیزی که در آنجا تنظیم کرده‌اید اینجا از قبل موجود است و هر کاری که اینجا انجام می‌دهید در آنجا نمایش داده می‌شود.

hermes

روی macOS، Windows و Linux اجرا می‌شود.

Hermes چندین رابط کاربری دارد که همگی با همان عامل ارتباط برقرار می‌کنند:

hermes TUI hermes --tui رابط وب داشبورد hermes dashboard

هر کدام که مناسب لحظه است انتخاب کنید. وضعیت را به اشتراک می‌گذارند، بنابراین می‌توانید یک نشست را در یکی شروع کنید و در دیگری ادامه دهید.

نصب

دستورالعمل‌های نصب Hermes Desktop را دنبال کنید.

دستورالعمل‌های نصب Hermes Desktop

اگر قبلاً Hermes نصب دارید، کافی است اجرا کنید

hermes desktop

از پیکربندی، کلیدها، نشست‌ها و مهارت‌های فعلی شما استفاده می‌کند.

محتوای اپلیکیشن

اپلیکیشن دسکتاپ به صورت یک پنجره چت‌محور با یک نوار کناری چپ برای ناوبری سازماندهی شده است. برای اجازه دادن به مدیریت مکالمات متعدد همزمان عامل، پیکربندی ارائه‌دهندگان پیام‌رسانی، ایجاد artifacts، مرور ساختار پوشه پروژه‌ها و کار روی چندین پروژه به طور همزمان ساخته شده است.

چت

مرکز اپلیکیشن. دریافت می‌کنید:

خط وضعیت

نوار در انتهای چت وضعیت نشست زنده را نشان می‌دهد و کنترل‌های سریع را بدون باز کردن تنظیمات در معرض نمایش قرار می‌دهد:

امنیت → حالت YOLO

با یک نمونه Hermes روی ماشین دیگری به جای backend محلی bundled چت می‌کنید؟ اتصال به backend از راه دور را در زیر ببینید — و برای تصویر کامل نحوه کار اتصال داشبورد از راه دور (دروازه احراز هویت، سوکت /api/ws چت، و تشخیص کد بسته شدن WebSocket)، رابط وب داشبورد → اتصال Hermes Desktop به backend از راه دور را ببینید.

رابط وب داشبورد → اتصال Hermes Desktop به backend از راه دور

انتخاب مدل

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

Cmd/Ctrl+N

مرورگر فایل

بدون ترک اپلیکیشن دایرکتوری کاری را کاوش و پیش‌نمایش کنید — مفید برای دنبال کردن در حین خواندن، نوشتن و ویرایش فایل‌ها توسط عامل. دایرکتوری اولیه پروژه را با hermes desktop --cwd <path> (یا متغیر محیطی HERMES_DESKTOP_CWD) تنظیم کنید.

hermes desktop --cwd <path> HERMES_DESKTOP_CWD

صدا

با Hermes صحبت کنید و پاسخ آن را بشنوید، همان حالت صدای موجود در جاهای دیگر. در macOS سیستم‌عامل یک بار برای دسترسی به میکروفون درخواست می‌دهد.

حالت صدا

تنظیمات و onboarding

ارائه‌دهندگان، مدل‌ها، ابزارها و اعتبارنامه‌ها را از یک رابط کاربری واقعی به جای ویرایش YAML مدیریت کنید. onboarding اجرای اول شما را در چند ثانیه به اولین پیام می‌رساند. پنل‌های تنظیمات شامل ارائه‌دهندگان/کلیدها، انتخاب مدل، پیکربندی مجموعه ابزارها، سرورهای MCP، gateway و مدیریت نشست هستند.

hermes model

onboarding اجرای اول بر روی یک سیستم طراحی overlay یکپارچه بازطراحی شده است و می‌توانید “Choose provider later” را انتخاب کنید تا راه‌اندازی ارائه‌دهنده را رد کنید و ابتدا وارد اپلیکیشن شوید.

پنل‌های مدیریت

اپلیکیشن همچنین سطح گسترده‌تر مدیریت Hermes را نمایش می‌دهد تا مجبور نباشید به ترمینال بروید:

مهارت‌ها کارهای زمان‌بندی شده پروفایل‌های Hermes

صفحه‌کلید و ناوبری

نشست‌ها و پروفایل‌ها

پروفایل‌ها @session

به‌روزرسانی

اپلیکیشن به طور خودکار به‌روزرسانی‌ها را بررسی می‌کند و هنگام آماده بودن یک به‌روزرسانی یک‌کلیکی ارائه می‌دهد.

فرآیند به‌روزرسانی دستی نیز با GUI کار می‌کند.

فرآیند به‌روزرسانی دستی

حذف

Settings → About → Danger zone را باز کنید و میزان حذف را انتخاب کنید:

اپلیکیشن برای تکمیل کار بسته می‌شود (پاکسازی پس از خروج اجرا می‌شود تا بسته اپلیکیشن در حال اجرا و venv خودش را حذف کند). گزینه‌های حذف عامل وقتی عامل محلی نصب نشده باشد (مثلاً یک کلاینت “lite” GUI-only متصل به backend از راه دور) به طور خودکار پنهان می‌شوند.

می‌توانید همین کار را از ترمینال انجام دهید — hermes uninstall --gui برای فقط GUI، یا hermes uninstall / hermes uninstall --full برای عامل نیز.

hermes uninstall --gui
hermes uninstall
hermes uninstall --full

اجرای hermes uninstall --gui از یک source checkout (یک ساخت hermes desktop dev) همچنین node_modules workspace و خروجی‌های ساخت apps/desktop/{dist,release} را حذف می‌کند، زیرا آن‌ها artifacts ساخت GUI هستند. آن‌ها با hermes desktop (یا npm install + بازساخت) قابل بازیابی هستند — اما اگر فعالانه روی اپلیکیشن دسکتاپ کار می‌کنید، انتظار نصب مجدد وابستگی‌ها را داشته باشید.

مرجع CLI: hermes desktop

برای راه‌اندازی از CLI، کافی است hermes desktop را اجرا کنید. به طور پیش‌فرض وابستگی‌های Node workspace را نصب می‌کند، اپلیکیشن unpacked Electron سیستم‌عامل فعلی را می‌سازد و سپس آن artifact بسته‌بندی شده را راه‌اندازی می‌کند.

پرچم توضیح
–skip-build npm install/package را رد کنید و اپلیکیشن unpacked موجود از apps/desktop/release را راه‌اندازی کنید
–force-build حتی اگر مهر زمانی محتوا مطابقت داشته باشد بازساخت کامل را اجبار کنید
–build-only اپلیکیشن دسکتاپ را بسازید اما راه‌اندازی نکنید (توسط hermes update استفاده می‌شود)
–source از طریق electron . روی apps/desktop/dist به جای اپلیکیشن بسته‌بندی شده راه‌اندازی کنید
–cwd PATH دایرکتوری اولیه پروژه برای نشست‌های چت دسکتاپ (HERMES_DESKTOP_CWD را تنظیم می‌کند)
–hermes-root PATH ریشه سورس Hermes که اپلیکیشن استفاده می‌کند را override کنید (HERMES_DESKTOP_HERMES_ROOT را تنظیم می‌کند)
–ignore-existing اپلیکیشن را مجبور کنید هر hermes CLI موجود در PATH را هنگام حل backend نادیده بگیرد
–fake-boot تأخیرهای راه‌اندازی قطعی را برای اعتبارسنجی رابط کاربری راه‌اندازی فعال کنید

نحوه عملکرد

اپلیکیشن بسته‌بندی شده شامل پوسته Electron و یک سطح چت React بومی است. در اولین راه‌اندازی می‌تواند Runtime Hermes Agent را در HERMES_HOME (~/.hermes، یا %LOCALAPPDATA%\hermes در Windows) نصب کند — همان لایه‌بندی که نصب CLI استفاده می‌کند، به همین دلیل هر دو قابل تعویض هستند. حل backend ابتدا HERMES_DESKTOP_HERMES_ROOT را رعایت می‌کند، سپس یک نصب مدیریت شده تکمیل شده، سپس یک hermes کاوش شده در PATH (مگر اینکه --ignore-existing / HERMES_DESKTOP_IGNORE_EXISTING=1 تنظیم شده باشد)، و در نهایت یک override صریح HERMES_DESKTOP_HERMES برای بسته‌بندی‌کنندگانی مانند Nix. رندرر React با یک backend بدون رابط که اپلیکیشن برای شما راه‌اندازی می‌کند ارتباط برقرار می‌کند — یک فرآیند hermes serve که API JSON-RPC/WebSocket tui_gateway را سرویس می‌دهد — و Runtime عامل را دوباره استفاده می‌کند به جای تعبیه hermes --tui. اپلیکیشن دسکتاپ خودکفا است: backend hermes serve خودش را اجرا می‌کند و هرگز رابط وب داشبورد را باز یا نیاز نمی‌کند. (Runtime‌های قدیمی‌تر از دستور serve به طور خودکار به dashboard --no-open بدون رابط بازمی‌گردند، بنابراین به‌روزرسانی اپلیکیشن هرگز از backend خود جلوتر نمی‌افتد.) منطق نصب، حل backend و به‌روزرسانی خودکار در فرآیند اصلی Electron زندگی می‌کند.

اتصال به backend از راه دور

به طور پیش‌فرض اپلیکیشن backend محلی خودش را شروع و مدیریت می‌کند. می‌توانید به جای آن آن را به یک backend Hermes که روی ماشین دیگری اجرا می‌شود اشاره دهید — یک VPS، یک سرور خانگی، یا یک Mini پشت Tailscale.

“Backend از راه دور” به معنی یک سرور hermes serve در حال اجرا روی ماشین از راه دور است — آن فرآیندی است که اپلیکیشن دسکتاپ به آن متصل می‌شود. هیچ چیزی در این بخش کار نمی‌کند مگر اینکه آن backend واقعاً بالا و قابل دسترس باشد. اپلیکیشن دسکتاپ آن را برای شما راه‌اندازی نمی‌کند؛ شما (یا یک سرویس systemd) hermes serve را روی میزبان از راه دور نگه می‌دارید و اپلیکیشن به آن متصل می‌شود. اگر از کانال‌های پیام‌رسانی (Telegram، Discord و غیره) نیز استفاده می‌کنید، gateway یک فرآیند جداگانه بلندمدت است که به طور مستقل شروع می‌کنید — یادداشت پس از مراحل راه‌اندازی را ببینید.

اتصال دو نیمه دارد: در backend آن را با یک ارائه‌دهنده احراز هویت محافظت می‌کنید و در اپلیکیشن URL backend را وارد کرده و وارد می‌شوید. اتصال backend به یک آدرس غیر-loopback دروازه احراز هویت آن را به طور خودکار فعال می‌کند و ارائه‌دهنده‌ای که پیکربندی می‌کنید همان چیزی است که به اپلیکیشن دسکتاپ اجازه عبور می‌دهد.

ارائه‌دهنده را بر اساس محل زندگی backend انتخاب کنید:

در backend (ماشین از راه دور)

یک نام کاربری و رمز عبور تنظیم کنید، سپس backend را به یک آدرس قابل دسترس متصل کنید. اعتبارنامه‌ها در ~/.hermes/.env (فایل رمزها، حالت 0600) زندگی می‌کنند:

# 1. تنظیم اعتبارنامه‌های ورود به داشبورد.
cat >> ~/.hermes/.env <<'EOF'
HERMES_DASHBOARD_BASIC_AUTH_USERNAME=admin
HERMES_DASHBOARD_BASIC_AUTH_PASSWORD=choose-a-strong-password
# توصیه شده: یک secret امضای پایدار تا نشست‌ها راه‌اندازی مجدد را تحمل کنند.
# بدون آن یک کلید تصادفی در هر راه‌اندازی تولید می‌شود و در هر
# راه‌اندازی مجدد از سیستم خارج می‌شوید.
HERMES_DASHBOARD_BASIC_AUTH_SECRET=$(openssl rand -base64 32)
EOF
chmod 600 ~/.hermes/.env
# 2. اجرای backend متصل به یک آدرس قابل دسترس. اتصال غیر-loopback
#    دروازه احراز هویت را فعال می‌کند؛ ارائه‌دهنده نام کاربری/رمز عبور
#    ورود را مدیریت می‌کند.
hermes serve --host 0.0.0.0 --port 9119

آن فرآیند hermes serve را تا زمانی که می‌خواهید اپلیکیشن دسکتاپ بتواند متصل شود نگه دارید — اگر متوقف شود، اپلیکیشن دیگر نمی‌تواند به backend دسترسی داشته باشد. آن را تحت systemd، tmux یا مدیر فرآیند انتخابی خود اجرا کنید تا خروج از سیستم و راه‌اندازی مجدد را تحمل کند.

جداگانه، مطمئن شوید که اگر به کانال‌های پیام‌رسانی تکیه می‌کنید gateway در میزبان از راه دور در حال اجرا است — backend hermes serve چیزی است که اپلیکیشن دسکتاپ با آن ارتباط برقرار می‌کند، اما نشست‌های gateway Telegram/Discord/Slack شما فرآیندی جداگانه هستند که به طور مستقل شروع و نگه می‌دارید. راه‌اندازی gateway را در Messaging ببینید.

پیام‌رسانی

ترجیح می‌دهید رمز عبور متن ساده را در حالت ذخیره نگه ندارید؟ به جای آن HERMES_DASHBOARD_BASIC_AUTH_PASSWORD_HASH را روی یک هش scrypt تنظیم کنید — آن را با python -c "from plugins.dashboard_auth.basic import hash_password; print(hash_password('PW'))" محاسبه کنید. سطح کامل پیکربندی (کلیدهای config.yaml، هر متغیر محیطی، محدودکننده نرخ): رابط وب داشبورد → ارائه‌دهنده نام کاربری/رمز عبور.

backend را به عنوان سرویس systemd اجرا می‌کنید؟ به unit EnvironmentFile=%h/.hermes/.env بدهید تا اعتبارنامه‌ها در محیط در راه‌اندازی باشند.

backend فایل .env (کلیدهای API، رمزها) شما را می‌خواند و می‌نویسد و می‌تواند دستورات عامل را اجرا کند. راه‌اندازی نام کاربری/رمز عبور نشان داده شده در بالا برای یک شبکه مورد اعتماد است — هرگز یک backend محافظت شده با رمز عبور را مستقیماً در اینترنت باز در معرض دید قرار ندهید؛ آن را پشت VPN قرار دهید. Tailscale گزینه تمیز است: به آدرس tailscale ماشین متصل شوید (--host <tailscale-ip>) و http://<tailscale-ip>:9119 را به عنوان URL از راه دور استفاده کنید تا فقط tailnet شما بتواند به آن دسترسی داشته باشد. برای دسترسی به backend از اینترنت عمومی، به جای آن ارائه‌دهنده OAuth (Nous Portal) را استفاده کنید.

در اپلیکیشن

Settings → Gateway → Remote gateway:

  1. URL از راه دور — http://<backend-host>:9119 (پیشوندهای مسیر مانند /hermes کار می‌کنند اگر آن را با یک reverse proxy جلوی آن قرار دهید)
  2. ورود — اپلیکیشن تشخیص می‌دهد کدام ارائه‌دهنده backend تبلیغ می‌کند و دکمه را تطبیق می‌دهد. برای backend نام کاربری/رمز عبور یک دکمه “Sign in” نشان می‌دهد که فرم credential را باز می‌کند (اعتبارنامه‌های مرحله 1 را وارد کنید). برای backend OAuth “Sign in with " نشان می‌دهد (مثلاً "Sign in with Nous Research") که ورود مرورگر ارائه‌دهنده را اجرا می‌کند. در هر صورت اپلیکیشن یک نشست احراز هویت شده با backend دریافت می‌کند.
  3. ذخیره و اتصال مجدد — پوسته دسکتاپ را به backend از راه دور تعویض می‌کند. نشست به طور خودکار تازه‌سازی می‌شود؛ وقتی HERMES_DASHBOARD_BASIC_AUTH_SECRET تنظیم شده باشد در راه‌اندازی مجدد وارد می‌مانید.

همچنین می‌توانید URL backend را بدون GUI از طریق متغیر محیطی HERMES_DESKTOP_REMOTE_URL قبل از راه‌اندازی اپلیکیشن تنظیم کنید (آن تنظیمات درون اپلیکیشن را override می‌کند)؛ همچنان از پنل تنظیمات Gateway وارد می‌شوید.

gateway از راه دور به ازای هر پروفایل پیکربندی می‌شود، بنابراین هر پروفایل می‌تواند به backend از راه دور خود اشاره کند (یا در محلی خود باقی بماند). تعویض پروفایل‌ها تعویض می‌دهد کدام میزبان از راه دور اپلیکیشن به آن متصل می‌شود.

پروفایل

عیب‌یابی

برای همان راه‌اندازی از زاویه رابط وب داشبورد، رابط وب داشبورد → اتصال Hermes Desktop به backend از راه دور را ببینید؛ متغیرهای محیطی در Environment Variables → Web Dashboard & Hermes Desktop فهرست شده‌اند.

رابط وب داشبورد → اتصال Hermes Desktop به backend از راه دور متغیرهای محیطی → رابط وب داشبورد و Hermes Desktop

عیب‌یابی

لاگ‌های راه‌اندازی در HERMES_HOME/logs/desktop.log (شامل خروجی backend و traceback‌های اخیر پایتون) قرار دارند — اگر اپلیکیشن خطای راه‌اندازی گزارش کند ابتدا آن را بررسی کنید. همچنین می‌توانید آن را از CLI دنبال کنید:

hermes logs gui -f

بازنشانی‌های رایج:

# اجبار راه‌اندازی اول تمیز (macOS/Linux)
rm "$HOME/.hermes/hermes-agent/.hermes-bootstrap-complete"
# بازساخت venv پایتون خراب (macOS/Linux)
rm -rf "$HOME/.hermes/hermes-agent/venv"
# بازنشانی درخواست میکروفون گیر کرده macOS
tccutil reset Microphone com.nousresearch.hermes

“Build desktop app” روی دانلود Electron گیر کرده

ساخت، Runtime Electron (~114 MB) را از github.com/electron/electron/releases دانلود می‌کند. اگر نصب‌کننده در مرحله “Build desktop app” با خروجی زنده retrying attempt=… آویزان شود، GitHub در شبکه شما مسدود یا محدود شده (فایروال، پروکسی یا منطقه).

نصب‌کننده این را به طور خودکار ترمیم می‌کند: در یک ساخت ناموفق (1) یک فایل zip Electron خراب کش شده را پاک می‌کند و دوباره تلاش می‌کند، سپس (2) اگر همچنان ناموفق باشد و ELECTRON_MIRROR را تنظیم نکرده باشید، یک بار دیگر از طریق npmmirror.com، آینه رسمی جامعه Electron، تلاش می‌کند. @electron/get دانلود را SHASUM بررسی می‌کند، اما checksums از همان آینه می‌آیند — این دانلود خراب یا ناقص را تشخیص می‌دهد، نه یک آینه به خطر افتاده. اگر ترجیح می‌دهید به یک میزبان第三方 اعتماد نکنید، ELECTRON_MIRROR خودتان را ثابت کنید (در زیر)؛ ساخت هرگز آنچه را تنظیم کرده‌اید override نمی‌کند.

برای انتخاب آینه خودتان (مثلاً یک آینه سازمانی/مورد اعتماد)، ELECTRON_MIRROR را قبل از نصب تنظیم کنید یا دستی بازسازی کنید — ساخت آن را رعایت می‌کند و override نمی‌کند:

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ \
  bash -c 'cd "$HOME/.hermes/hermes-agent/apps/desktop" && CSC_IDENTITY_AUTO_DISCOVERY=false npm run pack'

برای پاک کردن دستی یک فایل zip خراب کش شده:

rm -f "$HOME/Library/Caches/electron"/electron-*.zip   # macOS
rm -f "$HOME/.cache/electron"/electron-*.zip            # Linux

ساخت از سورس

اگر می‌خواهید روی خود اپلیکیشن کار کنید، وابستگی‌های workspace را یک بار از ریشه مخزن نصب کنید، سپد سرور توسعه را از apps/desktop اجرا کنید:

npm install          # از ریشه مخزن — apps/desktop، web، apps/shared را لینک می‌کند
cd apps/desktop
npm run dev          # رندرر Vite + Electron که backend پایتونی را راه‌اندازی می‌کند

اپلیکیشن را به یک checkout خاص اشاره دهید، یا آن را از پیکربندی واقعی خود جدا کنید:

HERMES_DESKTOP_HERMES_ROOT=/path/to/clone npm run dev
HERMES_HOME=/tmp/throwaway npm run dev
npm run dev:fake-boot   # رابط کاربری راه‌اندازی را با تأخیرهای قطعی تمرین کنید

ساخت نصب‌کننده‌ها:

npm run dist:mac     # DMG + zip
npm run dist:win     # NSIS + MSI
npm run dist:linux   # AppImage + deb + rpm
npm run pack         # اپلیکیشن unpacked در release/ (بدون نصب‌کننده)

امضا و notarization macOS/Windows وقتی credentialهای مربوطه در محیط موجود باشند به طور خودکار اجرا می‌شوند (CSC_LINK/CSC_KEY_PASSWORD/APPLE_* برای macOS، WIN_CSC_* برای Windows).

همچنین ببینید

راهنمای CLI TUI رابط وب داشبورد پیکربندی Windows (بومی) ویرایش این صفحه