- Guides & Tutorials
- Tips & Best Practices
نکات و بهترین شیوهها
مجموعهای از نکات عملی سریع که به شما کمک میکند بلافاصله با Hermes Agent مؤثرتر شوید. هر بخش به یک جنبه مختلف میپردازد — عنوانها را اسکن کنید و به مورد مرتبط بپردازید.
hermes setup --portal را اجرا کنید — بیش از ۳۰۰ مدل از جمله Claude، GPT-5 و Gemini زیر یک اشتراک دریافت میکنید. به Nous Portal مراجعه کنید.
hermes setup --portal
Nous Portal
بهترین نتایج را بگیرید
درباره آنچه میخواهید دقیق باشید
پرامپتهای مبهم نتایج مبهم تولید میکنند. به جای «کد را تعمیر کن»، بگویید «خطای TypeError در api/handlers.py خط ۴۷ را تعمیر کن — تابع process_request() مقدار None از parse_body() دریافت میکند.» هرچه context بیشتری بدهید، به تکرار کمتری نیاز دارید.
api/handlers.py
process_request()
None
parse_body()
جزئیات مرتبط را از ابتدا ارائه دهید
درخواست خود را با جزئیات مرتبط پیشبارگذاری کنید: مسیرهای فایل، پیامهای خطا، رفتار مورد انتظار. یک پیام خوب بهتر از سه دور شفافسازی است. traceback خطاهای را مستقیماً جایگذاری کنید — agent میتواند آنها را تجزیه کند.
برای دستورالعملهای تکراری از فایلهای Context استفاده کنید
اگر متوجه میشوید که همان دستورالعملها را تکرار میکنید («از tab به جای space استفاده کن»، «ما از pytest استفاده میکنیم»، «API در /api/v2 است»)، آنها را در یک فایل AGENTS.md قرار دهید. agent در هر نشست به صورت خودکار آن را میخواند — پس از راهاندازی بدون هیچ زحمتی.
/api/v2
AGENTS.md
بگذارید agent از ابزارهایش استفاده کند
سعی نکنید هر مرحله را دستی هدایت کنید. بگویید «تست ناموفق را پیدا و تعمیر کن» به جای «فایل tests/test_foo.py را باز کن، خط ۴۲ را ببین، سپس…» agent جستجوی فایل، دسترسی ترمینال و اجرای کد دارد — بگذارید کاوش و تکرار کند.
tests/test_foo.py
برای workflowهای پیچیده از مهارتها استفاده کنید
قبل از نوشتن یک پرامپت طولانی که توضیح میدهد چگونه کاری انجام شود، بررسی کنید آیا از قبل مهارتی برای آن وجود دارد. /skills را تایپ کنید تا مهارتهای موجود را مرور کنید، یا مستقیماً یکی را فراخوانی کنید مانند /axolotl یا /github-pr-workflow.
/skills
/axolotl
/github-pr-workflow
نکات کاربر قدرتمند CLI
ورودی چندخطی
Alt+Enter، Ctrl+J یا Shift+Enter را فشار دهید تا بدون ارسال، یک خط جدید درج شود. Shift+Enter فقط زمانی کار میکند که ترمینال آن را به عنوان یک ضربه کلید مجزا ارسال کند (Kitty / foot / WezTerm / Ghostty به طور پیشفرض؛ iTerm2 / Alacritty / ترمینال VS Code وقتی پروتکل کلید Kitty فعال شده باشد). دو مورد دیگر در هر ترمینالی کار میکنند.
Shift+Enter
تشخیص جایگذاری
CLI به طور خودکار جایگذاریهای چندخطی را تشخیص میدهد. کافی است یک بلوک کد یا traceback خطا را مستقیماً جایگذاری کنید — هر خط را به عنوان یک پیام جداگانه ارسال نمیکند. جایگذاری بافر شده و به عنوان یک پیام ارسال میشود.
وقف و هدایت مجدد
Ctrl+C را فشار دهید تا agent را در حین پاسخ قطع کنید. سپس میتوانید یک پیام جدید تایپ کنید تا آن را هدایت مجدد کنید. Ctrl+C را دو بار در عرض ۲ ثانیه فشار دهید تا خروج اجباری شود. این زمانی که agent شروع به رفتن در مسیر اشتباه میکند بیارزش است.
از سرگیری نشستها با -c
-c
چیزی از نشست قبلی خود فراموش کردهاید؟ hermes -c را اجرا کنید تا دقیقاً از جایی که متوقف شدهاید ادامه دهید، با تاریخچه مکالمه کامل بازیابیشده. همچنین میتوانید با عنوان از سر بگیرید: hermes -r "my research project".
hermes -c
hermes -r "my research project"
جایگذاری تصویر از کلیپبورد
Ctrl+V را فشار دهید تا یک تصویر از کلیپبورد را مستقیماً در چت جایگذاری کنید. agent از بینایی برای تحلیل اسکرینشاتها، نمودارها، پنجرههای خطا یا نمونههای اولیه رابط کاربری استفاده میکند — نیازی به ذخیره در فایل اول نیست.
تکمیل خودکار دستور اسلش
/ را تایپ کنید و Tab را فشار دهید تا تمام دستورات موجود را ببینید. این شامل دستورات داخلی (/compress، /model، /title) و هر مهارت نصبشده است. نیازی به حفظ کردن چیزی ندارید — تکمیل Tab همه چیز را پوشش میدهد.
/
/compress
/model
/title
از /verbose برای چرخیدن بین حالتهای نمایش خروجی ابزار استفاده کنید: off → new → all → verbose. حالت «all» عالی برای تماشای کارهای agent است؛ «off» برای سؤال و پاسخ ساده تمیزتر است.
/verbose
فایلهای Context
AGENTS.md: مغز پروژه شما
یک AGENTS.md در ریشه پروژه خود با تصمیمات معماری، قراردادهای کدنویسی و دستورالعملهای مختص پروژه ایجاد کنید. این به طور خودکار در هر نشست تزریق میشود، بنابراین agent همیشه قوانین پروژه شما را میداند.
AGENTS.md
# Project Context- This is a FastAPI backend with SQLAlchemy ORM- Always use async/await for database operations- Tests go in tests/ and use pytest-asyncio- Never commit .env files
SOUL.md: سفارشیسازی شخصیت
میخواهید Hermes یک صدای پیشفرض پایدار داشته باشد؟ ~/.hermes/SOUL.md (یا $HERMES_HOME/SOUL.md اگر Hermes home سفارشی استفاده میکنید) را ویرایش کنید. Hermes در حال حاضر یک SOUL شروع به صورت خودکار ایجاد میکند و از آن فایل جهانی به عنوان منبع شخصیت در سطح نمونه استفاده میکند.
~/.hermes/SOUL.md
$HERMES_HOME/SOUL.md
برای راهنمای کامل، به استفاده از SOUL.md با Hermes مراجعه کنید.
# SoulYou are a senior backend engineer. Be terse and direct.Skip explanations unless asked. Prefer one-liners over verbose solutions.Always consider error handling and edge cases.
از SOUL.md برای شخصیت پایدار استفاده کنید. از AGENTS.md برای دستورالعملهای مختص پروژه استفاده کنید.
SOUL.md
AGENTS.md
سازگاری .cursorrules
از قبل یک .cursorrules یا .cursor/rules/*.mdc دارید؟ Hermes آنها را هم میخواند. نیازی به تکرار قراردادهای کدنویسی خود ندارید — آنها به طور خودکار از دایرکتوری کاری بارگذاری میشوند.
.cursorrules
.cursor/rules/*.mdc
کشف
Hermes در شروع نشست AGENTS.md سطح بالای دایرکتوری کاری جاری را بارگذاری میکند. فایلهای AGENTS.md زیردایرکتوری به طور تنبل در حین فراخوانیهای ابزار (از طریق subdirectory_hints.py) کشف شده و در نتایج ابزار تزریق میشوند — آنها از قبل در system prompt بارگذاری نمیشوند.
AGENTS.md
AGENTS.md
subdirectory_hints.py
فایلهای context را متمرکز و مختصر نگه دارید. هر کاراکتر به بودجه توکن شما اضافه میشود زیرا آنها در هر پیام تزریق میشوند.
حافظه و مهارتها
حافظه در مقابل مهارتها: چه چیزی کجا برود
حافظه برای حقایق است: محیط شما، ترجیحات، مکانهای پروژه و چیزهایی که agent درباره شما یاد گرفته است. مهارتها برای رویهها هستند: workflowهای چندمرحلهای، دستورالعملهای مختص ابزار و دستور العملهای قابل استفاده مجدد. از حافظه برای «چه چیزی» و از مهارتها برای «چگونه» استفاده کنید.
چه زمانی مهارت ایجاد کنید
اگر تسکی پیدا کردید که ۵+ مرحله طول میکشد و دوباره آن را انجام خواهید داد، از agent بخواهید برای آن یک مهارت ایجاد کند. بگویید «آنچه را که فقط انجام دادی به عنوان مهارتی به نام deploy-staging ذخیره کن.» دفعه بعد، فقط /deploy-staging را تایپ کنید و agent کل رویه را بارگذاری میکند.
deploy-staging
/deploy-staging
مدیریت ظرفیت حافظه
حافظه عمداً محدود است (حدود ۲۲۰۰ کاراکتر برای MEMORY.md، حدود ۱۳۷۵ کاراکتر برای USER.md). وقتی پر شود، agent ورودیها را تلفیق میکند. میتوانید با گفتن «حافظهات را مرتب کن» یا «یادداشت قدیمی Python 3.9 را جایگزین کن — ما الان روی 3.12 هستیم» کمک کنید.
بگذارید agent به یاد بیاورد
پس از یک نشست مفید، بگویید «این را برای دفعه بعد به خاطر بسپار» و agent نکات کلیدی را ذخیره میکند. همچنین میتوانید دقیق باشید: «به حافظه ذخیره کن که CI ما از GitHub Actions با workflow deploy.yml استفاده میکند.»
deploy.yml
حافظه یک اسناپشات منجمد است — تغییرات انجامشده در یک نشست تا شروع نشست بعدی در system prompt ظاهر نمیشوند. agent بلافاصله روی دیسک مینویسد، اما کش prompt در وسط نشست منقضی نمیشود.
عملکرد و هزینه
کش prompt را خراب نکنید
اکثر ارائهدهندگان LLM پیشوند مکالمه (system prompt + تاریخچه) را کش میکنند. اگر system prompt خود را پایدار نگه دارید (همان فایلهای context، همان حافظه)، پیامهای بعدی در یک نشست cache hitهایی دریافت میکنند که به طور قابل توجهی ارزانتر هستند. کش بر اساس مدل و حساب کلید میخورد — بنابراین سوئیچ صریح /model، بازگشت خودکار ارائهدهنده یا چرخش استخر اعتبارنامه همه فراخوانی بعدی را مجبور میکنند کل مکالمه را با قیمت ورودی کامل دوباره بخواند. سوئیچهای موردی خوب هستند؛ سوئیچ مکرر در یک نشست طولانی هزینه شما را ضرب میکند.
/model
بازگشت خودکار ارائهدهنده
چرخش استخر اعتبارنامه
قبل از رسیدن به محدودیتها از /compress استفاده کنید
نشستهای طولانی توکنها را جمع میکنند. وقتی متوجه میشوید پاسخها کند میشوند یا برش میخورند، /compress را اجرا کنید. این تاریخچه مکالمه را خلاصه میکند و ضمن حفظ context کلیدی، تعداد توکن را به طور چشمگیری کاهش میدهد. از /usage برای بررسی وضعیت خود استفاده کنید.
/compress
/usage
برای کار موازی واگذاری کنید
نیاز دارید همزمان سه موضوع را تحقیق کنید؟ از agent بخواهید از delegate_task با زیرتسکهای موازی استفاده کند. هر subagent به طور مستقل با context خود اجرا میشود و فقط خلاصههای نهایی برمیگردند — استفاده از توکن مکالمه اصلی شما به طور چشمگیری کاهش مییابد.
delegate_task
برای عملیات دستهای از execute_code استفاده کنید
به جای اجرای دستورات ترمینال یکی یکی، از agent بخواهید یک اسکریپت بنویسد که همه چیز را همزمان انجام دهد. «یک اسکریپت Python بنویس که تمام فایلهای .jpeg را به .jpg تغییر نام دهد و آن را اجرا کن» ارزانتر و سریعتر از تغییر نام فایلها به صورت تکی است.
.jpeg
.jpg
مدل مناسب را انتخاب کنید
از /model برای سوئیچ مدلها در وسط نشست استفاده کنید. از یک مدل پیشرو (Claude Sonnet/Opus، GPT-4o) برای استدلال پیچیده و تصمیمات معماری استفاده کنید. به یک مدل سریعتر برای تسکهای ساده مانند قالببندی، تغییر نام یا تولید کد نمونه سوئیچ کنید. به خاطر داشته باشید که هر سوئیچ کش prompt را بازنشانی میکند (بالا را ببینید)، بنابراین در نشستهای طولانی اغلب ارزانتر است یک نشست تازه در مدل دیگر شروع کنید تا اینکه بین آنها بپرید.
/model
/usage را به طور دورهای اجرا کنید تا مصرف توکن خود را ببینید. /insights را برای دید گستردهتری از الگوهای استفاده در ۳۰ روز گذشته اجرا کنید.
/usage
/insights
نکات پیامرسانی
یک کانال خانه تنظیم کنید
/sethome را در چت Telegram یا Discord مورد علاقه خود استفاده کنید تا آن را به عنوان کانال خانه تعیین کنید. نتایج وظایف cron و خروجی وظایف زمانبندیشده در اینجا تحویل داده میشوند. بدون آن، agent جایی برای ارسال پیامهای پیشگیرانه ندارد.
/sethome
از /title برای سازماندهی نشستها استفاده کنید
نشستهای خود را با /title auth-refactor یا /title research-llm-quantization نامگذاری کنید. نشستهای نامدار به راحتی با hermes sessions list پیدا میشوند و با hermes -r "auth-refactor" از سر گرفته میشوند. نشستهای بدون نام انباشته شده و غیرقابل تشخیص میشوند.
/title auth-refactor
/title research-llm-quantization
hermes sessions list
hermes -r "auth-refactor"
جفتسازی DM برای دسترسی تیمی
به جای جمعآوری دستی شناسههای کاربر برای لیستهای مجاز، جفتسازی DM را فعال کنید. وقتی یک همکار DM میزند، یک کد جفتسازی یکبار مصرف دریافت میکنید. آن را با hermes pairing approve telegram XKGH5N7P تأیید میکنید — ساده و ایمن.
hermes pairing approve telegram XKGH5N7P
حالتهای نمایش پیشرفت ابزار
از /verbose برای کنترل میزان فعالیت ابزار قابل مشاهده استفاده کنید. در پلتفرمهای پیامرسانی، کمتر معمولاً بهتر است — آن را روی «new» نگه دارید تا فقط فراخوانیهای جدید ابزار را ببینید. در CLI، «all» دید زنده رضایتبخشی از همه کارهای agent به شما میدهد.
/verbose
به طور پیشفرض، نشستهای پیامرسانی هرگز بازنشانی خودکار نمیشوند — context تا زمانی که شما /reset کنید یا فشردهسازی شروع شود زنده میماند. اگر میخواهید نشستها به طور خودکار بازنشانی شوند (پس از زمان بیکاری یا روزانه در ساعت ثابت)، از طریق بخش session_reset در ~/.hermes/config.yaml فعال کنید.
/reset
session_reset
~/.hermes/config.yaml
امنیت
برای کد غیرقابل اعتماد از Docker استفاده کنید
هنگام کار با مخازن غیرقابل اعتماد یا اجرای کد ناآشنا، از Docker یا Daytona به عنوان پشتیبان ترمینال استفاده کنید. TERMINAL_BACKEND=docker را در فایل .env خود تنظیم کنید. دستورات مخرب داخل کانتینر نمیتوانند به سیستم میزبان شما آسیب برسانند.
TERMINAL_BACKEND=docker
.env
# در فایل .env شما:TERMINAL_BACKEND=dockerTERMINAL_DOCKER_IMAGE=hermes-sandbox:latest
از دامهای رمزگذاری ویندوز اجتناب کنید
در ویندوز، برخی رمزگذاریهای پیشفرض (مانند cp125x) نمیتوانند تمام کاراکترهای Unicode را نشان دهند، که میتواند UnicodeEncodeError هنگام نوشتن فایلها در تستها یا اسکریپتها ایجاد کند.
cp125x
UnicodeEncodeError
- ترجیح دهید فایلها را با رمزگذاری صریح UTF-8 باز کنید:
with open("results.txt", "w", encoding="utf-8") as f: f.write("✓ All good\n")
- در PowerShell، میتوانید نشست فعلی را نیز به UTF-8 برای خروجی کنسول و دستور بومی تغییر دهید:
$OutputEncoding = [Console]::OutputEncoding = [Text.UTF8Encoding]::new($false)
این کار PowerShell و پروسههای فرزند را روی UTF-8 نگه میدارد و به جلوگیری از خرابیهای فقط ویندوزی کمک میکند.
قبل از انتخاب «Always» بررسی کنید
وقتی agent یک تأیید دستور خطرناک را فعال میکند (rm -rf، DROP TABLE و غیره)، چهار گزینه دارید: once، session، always، deny. قبل از انتخاب «always» با دقت فکر کنید — این الگو را به طور دائمی در لیست مجاز قرار میدهد. تا زمانی که راحت شوید با «session» شروع کنید.
rm -rf
DROP TABLE
تأیید دستور شبکه ایمنی شماست
Hermes هر دستور را قبل از اجرا با یک لیست گزینششده از الگوهای خطرناک بررسی میکند. این شامل حذفهای بازگشتی، حذفهای SQL، لوله کردن curl به shell و موارد دیگر است. این را در تولید غیرفعال نکنید — به دلایل خوبی وجود دارد.
هنگام اجرا در پشتیبان کانتینر (Docker، Singularity، Modal، Daytona)، بررسیهای دستور خطرناک رد میشوند زیرا کانتینر مرز امنیتی است. مطمئن شوید تصاویر کانتینر شما به درستی قفل شدهاند.
برای رباتهای پیامرسانی از لیستهای مجاز استفاده کنید
هرگز GATEWAY_ALLOW_ALL_USERS=true را روی یک ربات با دسترسی ترمینال تنظیم نکنید. همیشه از لیستهای مجاز خاص پلتفرم (TELEGRAM_ALLOWED_USERS، DISCORD_ALLOWED_USERS) یا جفتسازی DM برای کنترل اینکه چه کسی میتواند با agent شما تعامل کند استفاده کنید.
GATEWAY_ALLOW_ALL_USERS=true
TELEGRAM_ALLOWED_USERS
DISCORD_ALLOWED_USERS
# توصیه شده: لیستهای مجاز صریح به ازای هر پلتفرمTELEGRAM_ALLOWED_USERS=123456789,987654321DISCORD_ALLOWED_USERS=123456789012345678# یا از لیست مجاز بین پلتفرمی استفاده کنیدGATEWAY_ALLOWED_USERS=123456789,987654321
نکتهای دارید که باید در این صفحه باشد؟ یک issue یا PR باز کنید — مشارکتهای جامعه خوشآمد است.