Yapay zeka ajanı araçlarının çoğu ya bir editöre gömülüdür ya da bir tarayıcı sekmesinde yaşar. Hermes Agent, Nous Research tarafından geliştirilen açık kaynaklı bir ajan ve iki noktada bunlardan ayrışıyor: kendi makinenizde ya da sunucunuzda çalışıyor, ve yaptığı işlerden ders çıkarıp bunu kalıcı hafızasına ve becerilerine yazıyor.
Bu rehber, Hermes Agent kurulumunu aşırı detaylı biçimde ele alıyor: kurulum komutlarından dizin yapısına, yapılandırma önceliklerinden terminal backend seçimine, hafıza sisteminden Telegram entegrasyonuna ve sekiz katmanlı güvenlik modeline kadar.
Sürüm notu: Hermes Agent hızla geliştirilen bir proje. Bu yazıdaki komutlar ve yapılandırma anahtarları resmî dokümantasyondan doğrulandı, ancak sürümler arasında değişiklik olabilir. Kurulum sonrası
hermes doctorçıktısını ve güncel dokümantasyonu kontrol edin.
Hermes Agent Nedir?
Hermes Agent, Nous Research’ün MIT lisanslı açık kaynak ajanı. Tanıtımındaki iddiası şu: yerleşik öğrenme döngüsüne sahip tek ajan. Yani her oturumda sıfırdan başlamak yerine, tekrar eden düzeltmeleri ve iş akışı derslerini kalıcı hafızaya veya yeniden kullanılabilir becerilere (skills) dönüştürüyor.
Öne çıkan özellikleri:
- Kalıcı hafıza: İki katmanlı hafıza dosyası (
MEMORY.md,USER.md) ve geçmiş oturumlarda tam metin arama - Beceri sistemi: 26+ kategoride 160’ın üzerinde izlenen beceri;
agentskills.iostandardıyla uyumlu - 16+ mesajlaşma platformu: Telegram, Discord, Slack, WhatsApp, Signal, Matrix, e-posta, webhook ve daha fazlası
- Altı terminal backend: Local, Docker, SSH, Daytona, Singularity, Modal
- MCP desteği: Model Context Protocol sunucularını araç olarak bağlayabilme
- Model bağımsızlığı: Farklı sağlayıcı ve modellerle çalışabilme
Hermes’i ne zaman seçmeli?
Ajan araçları arasındaki konumunu netleştirelim:
| Hermes Agent | n8n AI Agent | IDE tabanlı ajanlar | |
|---|---|---|---|
| Çalışma yeri | Terminal, sunucu, mesajlaşma uygulamaları | Tarayıcı, görsel akış | Kod editörü |
| Kurulum | Tek satır komut | Docker + sunucu | Eklenti |
| Kalıcı hafıza | Yerleşik, öğrenme döngülü | Manuel kurulur | Sınırlı |
| Tetikleme | CLI, mesaj, cron, webhook | Görsel tetikleyiciler | Manuel |
| Kimin için | Terminal rahatlığı olan kullanıcı | Görsel akış kuranlar | Geliştiriciler |
Hermes’i seçin, eğer: Ajanın uzun süre çalışıp zamanla iyileşmesini istiyorsanız, Telegram/Slack üzerinden erişilebilir bir asistan kurmak istiyorsanız, ya da her şeyin kendi sunucunuzda kalmasını istiyorsanız.
Başka bir araç seçin, eğer: Görsel akış kurmayı tercih ediyorsanız (n8n daha uygun), ya da terminal kullanmaktan hiç hoşlanmıyorsanız.
Ajan kavramlarına yeniyseniz, önce yeni başlayanlar için AI ajanı oluşturma rehberini okumanız bu yazıyı çok daha anlaşılır kılar.
Sistem Gereksinimleri ve Platform Desteği
Desteklenen platformlar
| Platform | Durum |
|---|---|
| Linux | Tam destek |
| macOS | Tam destek |
| WSL2 (Windows) | Tam destek — Windows için önerilen yol |
| Native Windows | Erken beta (PowerShell installer) |
| Android (Termux) | Destekleniyor |
Windows kullanıyorsanız WSL2 üzerinden kurmanız öneriliyor. Native Windows desteği mevcut ama henüz beta aşamasında.
Donanım
Hermes’in kendisi ağır bir yazılım değil. Modeller uzak API’ler üzerinden çalıştığı için asıl yük ağ tarafındadır. Küçük bir VPS (1 CPU / 1 GB RAM) veya 4 GB üzeri RAM’e sahip bir Raspberry Pi 4/5 rahatça yeterlidir.
Ancak şu iki durumda daha fazla kaynağa ihtiyaç duyarsınız:
- Docker backend kullanacaksanız — konteyner katmanı ek RAM ister
- Yerel model çalıştıracaksanız — bu tamamen ayrı bir donanım hesabıdır
Ön gereksinimler
İyi haber: bağımlılıkların çoğunu kurucu script kendisi hallediyor. Sizin sağlamanız gerekenler:
- Git — tek zorunlu ön gereksinim
- Linux’ta:
curlvexz-utils - Masaüstü uygulaması için:
g++veyabuild-essential
Python, Node.js, ripgrep ve ffmpeg’i elle kurmanıza gerek yok — kurucu eksik olanları tespit edip kendisi kuruyor.
Kurulum
Yöntem 1: Tek satırlık kurulum (CLI)
Linux, macOS, WSL2 ve Android (Termux) için:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
Native Windows için (PowerShell):
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
Güvenlik notu: İnternetten indirilen bir scripti doğrudan shell’e boru ile vermek (
curl | bash) yaygın bir pratik ama körlemesine yapılmamalı. Kurmadan önce scripti indirip okumak iyi bir alışkanlıktır:curl -fsSL https://hermes-agent.nousresearch.com/install.sh -o install.sh, dosyayı inceleyin, sonrabash install.shile çalıştırın. Bu, Hermes’e özel bir uyarı değil — her tek satırlık kurucu için geçerli.
Yöntem 2: Masaüstü kurulumu
Hem komut satırı hem masaüstü uygulamasını birlikte isteyenler için, resmî siteden Hermes Desktop yükleyicisini indirip çalıştırabilirsiniz (Windows ve macOS).
Kurucu ne yapıyor?
Kurulum sırasında arka planda şunlar gerçekleşir:
- Eksik bağımlılıklar tespit edilip kurulur (Python, Node.js, ripgrep, ffmpeg)
- Depo klonlanır
- Sanal ortam (virtualenv) oluşturulur
- Global
hermeskomutu PATH’e eklenir - LLM sağlayıcı yapılandırması başlatılır
Kurulum sudo gerektirmez — kullanıcı dizinine kurar.
Kurulum konumları
Neyin nereye kurulduğunu bilmek, sonradan yedekleme ve sorun giderme için önemli:
| Kurulum tipi | Kod konumu | Komut konumu | Veri dizini |
|---|---|---|---|
| Kullanıcı bazlı | ~/.hermes/hermes-agent/ | ~/.local/bin/hermes | ~/.hermes/ |
| Root modu | /usr/local/lib/hermes-agent/ | /usr/local/bin/hermes | /root/.hermes/ |
Kurulumu doğrulayın
Kurulum bitince shell’i yeniden yükleyin ve tanılama çalıştırın:
source ~/.bashrc # zsh kullanıyorsanız: source ~/.zshrc
hermes doctor
hermes doctor, kurulumun sağlığını kontrol eder: bağımlılıklar, yapılandırma, sağlayıcı bağlantısı ve bilinen güvenlik uyarıları. Bir sorun varsa neredeyse her zaman burada görünür.
Ardından ajanı başlatın:
hermes
İlk Yapılandırma
Hızlı yol: Portal kurulumu
En pratik başlangıç tek komut:
hermes setup --portal
Bu OAuth akışı, tek seferde bir model sağlayıcısı ve dört Tool Gateway aracını (web arama, görsel üretimi, metin okuma, tarayıcı) birden yapılandırır. YAML dosyası düzenlemenize gerek kalmaz.
Manuel yol
Kendi sağlayıcınızı ve modelinizi kullanmak isterseniz:
hermes model # Sağlayıcı ve model seçimi (etkileşimli)
hermes tools # Araçları aç/kapat
hermes model komutu size mevcut sağlayıcıları ve model listesini gösterir. Model kimliklerini elle yazmak yerine bu listeden seçmek en güvenlisidir — model isimleri sağlayıcıya göre değişir ve zamanla güncellenir.
API anahtarını komutla da verebilirsiniz:
hermes config set OPENROUTER_API_KEY sk-or-...
hermes config set akıllı davranır: API anahtarlarını .env dosyasına, diğer ayarları config.yaml dosyasına yazar.
Dizin Yapısı: Ne Nerede Duruyor?
Hermes’in tüm durumu ~/.hermes/ altında yaşar. Bu yapıyı bilmek yedekleme, taşıma ve sorun giderme için kritik:
~/.hermes/
├── config.yaml # Ana ayarlar (model, terminal, sıkıştırma vb.)
├── .env # API anahtarları ve gizli bilgiler
├── auth.json # OAuth kimlik bilgileri
├── SOUL.md # Ajanın kimliği / karakteri
├── memories/ # Kalıcı hafıza dosyaları
├── skills/ # Ajanın oluşturduğu beceriler
├── cron/ # Zamanlanmış görevler
├── sessions/ # Gateway oturumları
└── logs/ # Hata ve etkinlik kayıtları
Yedeklemeniz gereken şey bu klasörün tamamı. Özellikle .env ve auth.json gizli bilgi içerir; bunları asla bir git deposuna veya paylaşılan bir dizine koymayın.
SOUL.md dosyası ilginç bir ayrıntı: ajanın kimliğini ve davranış tarzını tanımlar. Ajanınızın nasıl konuşacağını, hangi tonu kullanacağını buradan şekillendirirsiniz.
Yapılandırma: config.yaml ve .env
Temel kural
Gizli olan her şey
.envdosyasına, geri kalan her şeyconfig.yamldosyasına.
API anahtarları, tokenlar, parolalar .env’e gider. Model tercihi, backend seçimi, davranış ayarları config.yaml’a.
Öncelik sırası
Bir ayar birden fazla yerde tanımlıysa, şu sırayla çözümlenir (en yüksek öncelik üstte):
| Sıra | Kaynak | Kullanım |
|---|---|---|
| 1 | CLI argümanları | Tek seferlik geçersiz kılma (--model ...) |
| 2 | ~/.hermes/config.yaml | Ana, gizli olmayan ayarlar |
| 3 | ~/.hermes/.env | Ortam değişkeni yedeği; gizli bilgiler için zorunlu |
| 4 | Yerleşik varsayılanlar | Güvenli sabit değerler |
Bu sıralamayı bilmek, “ayarı değiştirdim ama uygulanmıyor” sorununun büyük kısmını çözer — genellikle daha yüksek öncelikli bir yerde aynı ayar tanımlıdır.
Yapılandırma komutları
hermes config # Mevcut yapılandırmayı görüntüle
hermes config edit # config.yaml'ı editörde aç
hermes config get KEY # Çözümlenmiş bir değeri yazdır
hermes config set KEY VAL # Bir ayarı belirle
hermes config unset KEY # Kullanıcı tanımlı bir ayarı kaldır
hermes config check # Eksik seçenekleri kontrol et
hermes config migrate # Eksik seçenekleri etkileşimli ekle
hermes config check ve hermes config migrate özellikle güncelleme sonrasında işinize yarar: yeni sürümle gelen ayarları mevcut yapılandırmanıza ekler.
Ortam değişkeni referansları
config.yaml içinde ${DEGISKEN_ADI} sözdizimiyle ortam değişkenlerine referans verebilirsiniz:
auxiliary:
vision:
api_key: ${GOOGLE_API_KEY}
base_url: ${CUSTOM_VISION_URL}
İki önemli ayrıntı:
- Referans verilen değişken tanımlı değilse, yer tutucu olduğu gibi kalır ve bir uyarı loglanır — sessizce boş geçmez.
- Süslü parantezsiz
$DEGISKENbiçimi genişletilmez. Her zaman${...}kullanın.
Ayrıca her terminal: ayarının bir TERMINAL_<ANAHTAR> ortam değişkeni karşılığı vardır:
| Ortam değişkeni | Karşılığı | Örnek |
|---|---|---|
TERMINAL_DOCKER_IMAGE | docker_image | Temel konteyner imajı |
TERMINAL_DOCKER_FORWARD_ENV | docker_forward_env | '["GITHUB_TOKEN"]' (JSON) |
TERMINAL_DOCKER_VOLUMES | docker_volumes | '["/host:/container"]' |
Terminal Backend Seçimi: En Önemli Karar
Hermes’in komutları nerede çalıştıracağını belirleyen ayar budur ve güvenlik açısından kurulumun en kritik kararıdır.
| Backend | İzolasyon | Tehlikeli komut kontrolü | Uygun olduğu yer |
|---|---|---|---|
local | Yok | Var | Geliştirme, kişisel kullanım |
ssh | Uzak makine | Var | Ayrı bir sunucuda çalıştırma |
docker | Konteyner | Atlanır* | Üretim, gateway kurulumu |
modal | Bulut sandbox | Atlanır* | Ölçeklenebilir izolasyon |
daytona | Bulut sandbox | Atlanır* | Kalıcı çalışma alanları |
singularity | Konteyner | Atlanır* | HPC / araştırma ortamları |
*Konteyner backend’lerinde tehlikeli komut kontrolü atlanır, çünkü konteynerin kendisi güvenlik sınırıdır. Konteyner içindeki yıkıcı bir komut ana makineye zarar veremez.
Backend’i ayarlamak:
hermes config set terminal.backend docker
Karar rehberi:
- Kendi makinenizde, kendi projeleriniz üzerinde çalışıyorsanız:
localyeterli, onay sistemi sizi korur. - Ajanı Telegram/Slack üzerinden erişilebilir yapacaksanız: mutlaka
docker. Mesajlaşma üzerinden erişilebilen bir ajan, artık yalnızca sizin kontrolünüzde değildir. - Ajanın ana sunucunuza hiç dokunmamasını istiyorsanız:
sshile ayrı bir işçi makineye yönlendirin.
Daytona ve Modal, “sunucusuz kalıcılık” sunar: ortam boştayken uyku moduna geçer, ihtiyaç olunca uyanır. Aralıklı çalışan ajanlar için maliyet avantajlıdır.
Hafıza Sistemi: Ajanın Öğrenme Döngüsü
Hermes’i diğer ajanlardan ayıran ana özellik burası.
İki hafıza dosyası
~/.hermes/memories/ altında iki dosya tutulur:
| Dosya | İçerik | Limit |
|---|---|---|
| MEMORY.md | Ortam bilgileri, proje kuralları, öğrenilen çözümler | 2.200 karakter (~800 token) |
| USER.md | Kullanıcı kimliği, iletişim tercihleri, çalışma alışkanlıkları | 1.375 karakter (~500 token) |
Her iki dosya, oturum başında sistem talimatına dondurulmuş bir anlık görüntü olarak eklenir. Bu tasarım tercihi bilinçlidir: dosyalar oturum ortasında değişmediği için modelin prefix önbelleği korunur, bu da hem hız hem maliyet kazancı sağlar.
Karakter limitleri neden bu kadar dar?
İlk bakışta 2.200 karakter az görünebilir. Ama tasarım amacı, hafızanın bir çöp kutusu değil özet olması. Limit aşıldığında hafıza aracı sessizce veri düşürmez — hata döndürür ve ajan mevcut girdileri birleştirmek veya gereksizleri silmek zorunda kalır. Bu, hafızanın zamanla değersizleşmesini önler.
Hafıza işlemleri
Ajan üç eylem kullanır:
- add — yeni girdi ekler
- replace — mevcut içeriği alt dizgi eşlemesiyle günceller
- remove — eskimiş girdiyi siler
Sistem birebir tekrarları engeller ve kabul etmeden önce tüm girdileri enjeksiyon/veri sızdırma kalıplarına karşı tarar. Bu önemli bir koruma: ajanın işlediği bir web sayfası veya dosya, hafızaya kalıcı bir talimat yazmaya çalışabilir.
Onay kapıları
config.yaml içindeki kontroller:
memory:
write_approval: true # Hafıza yazımını onaya bağla
skills:
write_approval: true # Beceri oluşturmayı ayrıca onaya bağla
auxiliary:
background_review: true # İncelemeleri daha ucuz modelde çalıştır
İlk haftalarda write_approval ayarlarını açık tutmanızı öneririm. Ajanın neyi öğrenmeye değer bulduğunu görmek, hem sistem talimatınızı hem beklentinizi kalibre eder. Ajanın kendi kendine yanlış bir kuralı kalıcılaştırması, sonradan fark edilmesi zor bir sorundur.
Skills: Öğrenmenin kalıcı hali
Hafıza “bilgi”yi tutar, beceriler “nasıl yapılır”ı. Arka planda çalışan öz-gelişim incelemesi, tekrar eden düzeltmeleri ve iş akışı derslerini ya kompakt hafıza girdilerine ya da yeniden kullanılabilir becerilere dönüştürür.
Hermes 26’dan fazla kategoride 160’ın üzerinde beceri izler (87 gömülü + 79 opsiyonel) ve agentskills.io standardıyla uyumludur. Beceriler platform bazında açılıp kapatılabilir ve araç kullanılabilirliğine göre koşullu etkinleştirilebilir.
Beceriler ~/.hermes/skills/ altında durur — düz dosyalardır, okuyabilir ve elle düzenleyebilirsiniz.
Mesajlaşma Ağ Geçidi: Telegram Kurulumu
Hermes’in en çok kullanılan özelliklerinden biri, ajanı bir mesajlaşma uygulaması üzerinden erişilebilir yapmak. 16’dan fazla platform destekleniyor; Telegram üzerinden adım adım anlatıyorum, diğerlerinin mantığı benzer.
Adım 1 — Bot oluşturun
- Telegram’da @BotFather ile konuşma başlatın
/newbotkomutunu gönderin- Görünen adı girin (örn. “Hermes Asistan”)
botile biten benzersiz bir kullanıcı adı girin (örn.sirket_hermes_bot)- Verilen API tokenını kaydedin —
123456789:ABCdefGHIjklMNOpqrSTUvwxYZbiçimindedir
Bot tokenını gizli tutun. Bu tokena sahip olan herkes botu kontrol edebilir.
Adım 2 — Kullanıcı ID’nizi öğrenin
Hermes erişim kontrolünü sayısal Telegram kullanıcı ID’si ile yapar — kullanıcı adınızla değil. ID’niz 123456789 gibi bir sayıdır.
Öğrenmek için Telegram’da @userinfobot veya @get_id_bot ile konuşun; anında ID’nizi yazar.
Adım 3 — Yapılandırın
~/.hermes/.env dosyasına ekleyin:
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ
TELEGRAM_ALLOWED_USERS=123456789
Birden fazla kullanıcı için virgülle ayırın: TELEGRAM_ALLOWED_USERS=123456789,987654321
Etkileşimli sihirbazı tercih ederseniz:
hermes gateway setup
Adım 4 — Ağ geçidini başlatın
hermes gateway
Bot birkaç saniye içinde çevrimiçi olur. Telegram’dan bir test mesajı gönderip doğrulayın.
Grup sohbetleri
Botun grupta çalışması için Privacy Mode kapatılmalıdır:
- @BotFather’a gidin
/mybots→ botunuzu seçin- Bot Settings → Group Privacy → Turn off
- Değişiklikten sonra botu mevcut gruplardan çıkarıp yeniden ekleyin
Alternatif olarak, privacy mode’u global kapatmak yerine botu grup yöneticisi yapabilirsiniz.
Grupta her mesaja cevap vermesin
Grup ortamında ajanın her mesaja atlaması istenmez. config.yaml:
telegram:
require_mention: true
exclusive_bot_mentions: true
mention_patterns:
- "^\\s*hermes\\b"
Bu ayarla bot yalnızca doğrudan bahsedildiğinde, yanıtlandığında veya tanımlı kalıba uyan mesajlarda devreye girer.
Faydalı parametreler
| Parametre | İşlevi |
|---|---|
TELEGRAM_BOT_TOKEN | Bot kimlik doğrulaması |
TELEGRAM_ALLOWED_USERS | Erişim kontrolü (sayısal ID listesi) |
TELEGRAM_HOME_CHANNEL | Zamanlanmış görev çıktılarının gideceği kanal |
require_mention | Grupta yalnızca bahsedilince yanıtla |
Çoklu profil uyarısı: Aynı Telegram grubunda birden fazla Hermes profili çalıştıracaksanız, her profil için ayrı bot tokenı oluşturun ve her profil için ayrı gateway başlatın. Aynı tokenı iki çalışan gateway’de kullanmayın — Telegram aynı token için eşzamanlı yoklamayı reddeder.
Güvenlik Modeli: Sekiz Katman
Bir ajana terminal erişimi vermek ciddi bir karardır. Hermes’in güvenlik modeli sekiz ayrı sınırdan oluşuyor ve bunları anlamak, kurulumu güvenli yapmanın ön koşulu.
| # | Katman | Neyi korur |
|---|---|---|
| 1 | Kullanıcı yetkilendirme | Platform izin listeleri, DM eşleştirme kodları |
| 2 | Tehlikeli komut onayı | Yıkıcı işlemlerde insan onayı |
| 3 | Dosya yazma güvenliği | Korumalı yollar, opsiyonel sandbox kısıtı |
| 4 | Konteyner izolasyonu | Sertleştirilmiş Docker/Singularity/Modal ayarları |
| 5 | MCP kimlik bilgisi filtreleme | Alt süreçlerde ortam değişkeni izolasyonu |
| 6 | Bağlam dosyası taraması | Proje dosyalarında prompt enjeksiyonu tespiti |
| 7 | Oturumlar arası izolasyon | Oturumlar birbirinin verisine erişemez |
| 8 | Girdi temizleme | Çalışma dizini doğrulaması |
Tehlikeli komut onayı
Üç mod var:
- Smart (varsayılan): Yardımcı bir LLM riski değerlendirir. Düşük riskli komutlar otomatik onaylanır, gerçekten tehlikeli olanlar otomatik reddedilir, belirsiz durumlar manuel onaya düşer.
- Manual: Her seferinde kullanıcıya sorar.
- Off: Onay kontrollerini kapatır.
Mesajlaşma platformlarında HERMES_EXEC_ASK ortam değişkeni gateway çalıştırıldığında otomatik olarak ayarlanır — tehlikeli komutlar sohbette evet/hayır düğmeleriyle karşınıza gelir.
Aşılamayan blokaj listesi
Bazı komutlar onay modundan, --yolo bayrağından ve cron çalıştırmasından bağımsız olarak engellenir:
rm -rf /ve türevleri- Bash fork bombaları
- Bağlı kök cihazlarda
mkfs dd if=/dev/zero of=/dev/sd*- Root seviyesinde güvenilmeyen URL’lerin shell’e boru ile verilmesi
Bu, --yolo modunun bile altında kalan bir zemin — geçersiz kılma yolu yoktur.
Kendi yasak kurallarınız
config.yaml içinde glob kalıplarıyla ek kısıt tanımlayabilirsiniz:
approvals:
deny:
- "git push --force*"
- "*curl*|*sh*"
- "docker rm*"
Bu kurallar onay modlarından önce uygulanır ve YOLO ile aşılamaz. Şirket içi kurulumlarda değerli bir kontrol noktasıdır.
Korumalı dosya yolları
Şu yollara yazma her koşulda engellenir:
- İşletim sistemi kimlik depoları:
~/.ssh/,~/.aws/,/etc/sudoers - Hermes durumu:
auth.json,.env,mcp-tokens/ - Proje gizli dosyaları:
.env,.env.local,.env.production
İstisna: ~/.ssh/config sert blokaj yerine onay istemine düşer, çünkü özel anahtar içermez ama meşru düzenleme ihtiyacı sıktır.
Yazma sandbox’ı
Ajanın yalnızca belirli dizinlere yazmasını istiyorsanız:
export HERMES_WRITE_SAFE_ROOT=/home/kullanici/proje:/home/kullanici/.hermes
Birden fazla kök dizin Unix’te : ile ayrılır. Bu yolların dışındaki yazma işlemleri onay seçeneği bile sunulmadan engellenir.
Konteyner sertleştirmesi
Docker backend kullanıldığında konteynerler şu ayarlarla çalışır: tüm Linux yetenekleri düşürülür (yalnızca DAC_OVERRIDE, CHOWN, FOWNER koşullu verilir), no-new-privileges ile yetki yükseltme engellenir, süreç sayısı 256 ile sınırlanır, geçici dosya sistemleri nosuid ve boyut sınırıyla bağlanır (512 MB /tmp, 256 MB /var/tmp).
Prompt enjeksiyonu koruması
Proje yapılandırma dosyaları (AGENTS.md, .cursorrules, SOUL.md) sistem talimatına dahil edilmeden önce şunlara karşı taranır:
- Önceki talimatları yok saymayı söyleyen ifadeler
- Şüpheli anahtar kelimeler içeren gizli HTML yorumları
- Kimlik bilgisi veya
.envokuma girişimleri curlile veri sızdırma- Görünmez Unicode karakterleri (sıfır genişlikli boşluk, çift yönlü geçersiz kılma)
Engellenen dosya için [BLOCKED: file contained potential prompt injection] uyarısı gösterilir.
Ayrıca tirith adlı komut seviyesi tarayıcı, çalıştırmadan önce homograf URL sahteciliği, curl | bash kalıpları ve terminal enjeksiyon saldırılarını tespit eder.
SSRF koruması
URL kullanan tüm araçlar (web arama, tarayıcı, görsel) şu adreslere isteği engeller: özel ağlar (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback ve link-local adresler, bulut metadata sunucuları (169.254.169.254). DNS hataları engellenmiş sayılır (fail-closed).
Kendi iç ağınıza erişim gerekiyorsa (yerel wiki, iç Ollama sunucusu):
security:
allow_private_urls: true
Bunu açmadan önce düşünün: bu ayar, prompt enjeksiyonuna uğramış bir ajanın iç ağınıza istek atabilmesi demektir. Yalnızca bu riskin kabul edilebilir olduğu makinelerde açın.
DM eşleştirme sistemi
Tanınmayan kullanıcılara tek kullanımlık 8 karakterlik eşleştirme kodu verilir. Koruma katmanları: kriptografik rastgelelik, 1 saatlik geçerlilik, kullanıcı başına 10 dakikada 1 istek sınırı, platform başına en fazla 3 bekleyen kod, 5 başarısız denemede 1 saatlik kilitleme, eşleştirme verisinde chmod 0600 izni ve kodların stdout’a hiç yazılmaması.
Yetkilendirme sırası
Bir kullanıcının erişim hakkı şu sırayla kontrol edilir:
- Platform bazlı “herkese açık” bayrağı (
DISCORD_ALLOW_ALL_USERS=true) - DM eşleştirmesiyle onaylanmış liste
- Platform bazlı izin listesi (
TELEGRAM_ALLOWED_USERS=123,456) - Global izin listesi (
GATEWAY_ALLOWED_USERS=123,456) - Global “herkese açık” (
GATEWAY_ALLOW_ALL_USERS=true) - Varsayılan: Reddet
Son satır önemli — Hermes varsayılan olarak kapalıdır, açıkça izin vermeniz gerekir.
Üretim Kurulumu Kontrol Listesi
Ajanı mesajlaşma platformları üzerinden erişilebilir yapıyorsanız, aşağıdaki on maddeyi tamamlamadan yayına almayın:
- Açık izin listeleri tanımlayın —
GATEWAY_ALLOW_ALL_USERS=trueasla kullanmayın - Konteyner backend kullanın —
terminal.backend: docker - Kaynak sınırları koyun — CPU, bellek, disk
- Gizli bilgileri
~/.hermes/.enviçinde tutun vechmod 600uygulayın - Kullanıcı ID’lerini sabit yazmak yerine DM eşleştirmeyi açın
command_allowlistayarını düzenli denetleyinterminal.cwddeğerini ayarlayın — ajanın hassas dizinlerde çalışmasını engeller- Root olmayan bir kullanıcıyla çalıştırın
~/.hermes/logs/altındaki logları izleyin- Güncel tutun — güvenlik yamaları için
Maksimum izolasyon: mesajlaşmayı çalıştırmadan ayırın
En güvenli kurgu, gateway’in çalıştığı makine ile komutların çalıştığı makineyi ayırmaktır:
# ~/.hermes/config.yaml
terminal:
backend: ssh
# ~/.hermes/.env
TERMINAL_SSH_HOST=agent-worker.local
TERMINAL_SSH_USER=hermes
TERMINAL_SSH_KEY=~/.ssh/hermes_agent_key
SSH kimlik bilgilerinin config.yaml yerine .env içinde tutulması bilinçlidir: profil dışa aktarımlarında paylaşılmazlar.
Profiller: Birden Fazla Bağımsız Ajan
Aynı makinede birbirinden yalıtılmış birden çok Hermes çalıştırabilirsiniz:
hermes -P work chat # 'work' profili
hermes -P research chat # 'research' profili
Her profil kendi yapılandırmasını, hafızasını, becerilerini ve oturumlarını ayrı tutar. Kullanım senaryoları:
- Aynı depo üzerinde paralel ajanlar (git worktree ile)
- Bağlama göre farklı model/sağlayıcı
- Ayrı kimlik bilgileri ve araç yapılandırmaları
- Kullanım senaryoları arasında oturum izolasyonu
Hazır yapılandırılmış ajanları paylaşmak için profil dağıtımları da kullanılabilir:
hermes profiles install <dagitim-adi>
Pratik kullanım: İş ve kişisel işlerinizi ayırmak için iki profil, ya da biri kısıtlı yetkiyle Telegram’a açık, diğeri tam yetkiyle yalnızca yerelde çalışan iki ajan.
Güncelleme ve Bakım
Güncelleme
hermes update
Bu komut otomatik yeniden başlatmayı da destekler.
Güncelleme sonrası
Yeni sürümler yeni yapılandırma seçenekleri getirebilir:
hermes config check # Eksik seçenekleri listeler
hermes config migrate # Eksikleri etkileşimli olarak ekler
Düzenli sağlık kontrolü
hermes doctor
Hermes, bilinen güvenlik açığı taşıyan Python paket sürümlerini işaretleyen bir tarayıcı ile gelir (örneğin zehirlenmiş bir paket sürümü). Uyarılar CLI başlangıcında ve hermes doctor çıktısında görünür. İncelediğiniz bir uyarıyı kapatmak için:
hermes doctor --ack <uyari-id>
Yedekleme
Yedeklenecek şey ~/.hermes/ klasörünün tamamıdır:
tar czf hermes-yedek-$(date +%F).tar.gz \
--exclude='hermes-agent' \
~/.hermes/
hermes-agent alt klasörü kod deposudur; yeniden kurulabildiği için yedeğe dahil etmeye gerek yok. Asıl değerli olan config.yaml, .env, auth.json, memories/, skills/ ve cron/ içerikleridir.
Yedek dosyası gizli bilgi içerdiği için şifreleyerek saklayın ve herkese açık bir depolama alanına koymayın.
Sık Karşılaşılan Hatalar
”hermes: command not found”
PATH henüz güncellenmemiş. Shell’i yeniden yükleyin (source ~/.bashrc) veya ~/.local/bin dizininin PATH’inizde olduğunu doğrulayın.
”API key not set”
hermes model komutunu çalıştırın veya anahtarı doğrudan ayarlayın:
hermes config set OPENROUTER_API_KEY sk-or-...
Güncelleme sonrası yapılandırma eksik
hermes config check
hermes config migrate
Ayar değiştirdim ama uygulanmıyor
Öncelik sırasını kontrol edin. CLI argümanı config.yaml’ı, config.yaml da .env’i geçersiz kılar. Çözümlenmiş değeri görmek için:
hermes config get <anahtar>
${DEGISKEN} yer tutucusu olduğu gibi görünüyor
Referans verdiğiniz ortam değişkeni tanımlı değil. Ayrıca $DEGISKEN biçiminin genişletilmediğini unutmayın — süslü parantez zorunludur.
Telegram botu gruba yanıt vermiyor
İki olası sebep: Privacy Mode kapatılmamış (BotFather’dan kapatıp botu gruptan çıkarıp yeniden ekleyin) veya require_mention: true ayarlı ve bota doğrudan seslenmiyorsunuz.
Telegram’da bot çevrimiçi olmuyor
Aynı bot tokenıyla başka bir gateway çalışıyor olabilir. Telegram aynı token için eşzamanlı yoklamayı reddeder. Her profil için ayrı bot oluşturun.
Ajan tehlikeli komutlarda hiç sormuyor
Konteyner backend (docker, modal, daytona, singularity) kullanıyorsanız bu beklenen davranıştır — konteyner güvenlik sınırı olduğu için kontrol atlanır. Onay istemi görmek istiyorsanız local veya ssh backend kullanın.
Bir özellik yüklenemiyor
Opsiyonel bağımlılıklar (TTS, hafıza sağlayıcıları, Slack, Matrix) ilk kullanımda kurulur. Bu davranışı kapattıysanız açmanız gerekebilir:
security:
allow_lazy_installs: true
Sık Sorulan Sorular
Sonuç
Hermes Agent kurulumunun teknik kısmı gerçekten kısa: tek satırlık bir komut ve hermes setup --portal. Yarım saat içinde çalışan bir ajanınız olur.
Asıl iş, kurulumdan sonra verdiğiniz üç kararda:
- Terminal backend seçimi. Ajanı dışarıya (mesajlaşma platformlarına) açacaksanız konteyner backend tercih değil zorunluluktur.
- Onay kapıları. Hafıza ve beceri yazımını ilk haftalarda onaya bağlamak, ajanın neyi öğrendiğini görmenizi sağlar — sonradan yanlış öğrenmeyi fark etmek çok daha zordur.
- Yetki sınırları. İzin listeleri, yasak komut kuralları ve yazma sandbox’ı, ajanın hata yaptığında ne kadar zarar verebileceğini belirler.
Hermes’in öğrenme döngüsü onu güçlü kılan şey ama aynı zamanda dikkatli kurulum gerektiren şey de bu: zamanla iyileşen bir sistem, zamanla yanlış bir alışkanlığı da kalıcılaştırabilir. Onay kapılarını açık tutup hafıza dosyalarını ara ara okumak, bu dengeyi kuran en basit alışkanlık.
Küçük başlayın: önce yerel makinede, tek profille, onaylar açık. Ajanın davranışını tanıdıktan sonra sunucuya taşıyın, konteynerleyin ve mesajlaşma platformuna açın.
İşletmenizde yapay zeka ajanlarını hangi süreçlerde kullanabileceğinizi konuşmak isterseniz AI agent geliştirme sayfasına bakabilir veya iletişime geçebilirsiniz.