Ana içeriğe atla
Bu kılavuz, AgentEye sunucusu ve panosunun üretim ortamına dağıtılmasını kapsamaktadır.

Mimari Özeti

  • Sunucu: Rust HTTP hizmeti; etkinlik toplamalarını alır, ClickHouse’a yazar ve ilişkisel durumu PostgreSQL’de tutar.
  • Pano: Next.js web uygulaması; sunucu API’si aracılığıyla okur ve yazar.
  • agenteye-collector: sunucu ana bilgisayarında değil, agent makinelerinde dağıtılır.
  • Postgres 15+: GEREKLI. (14’ten çok kiracılı sürümde yükseltildi; org-üyelik şeması ON DELETE SET NULL yabancı anahtarını kullanan bir sütun listesi kullanır ve bu Postgres 15+ gerektirir. Bu sürümü dağıtmadan önce Postgres’i yükseltin.) OLTP durumunu saklar: api_keys, users, sessions, evaluation_jobs (sıra), dashboards, saved_queries, otp_codes ve çok kiracılı tablolar orgs, org_memberships, org_settings.
  • ClickHouse 24+: GEREKLI. Her alınan etkinlik için analitik deposu. Motor: ReplacingMergeTree, aya göre bölümlendirilmiş, (session_id, ts, dedup_key) ile sıralanmış. Sunucu CLICKHOUSE_URL aracılığıyla bağlanır; paketlenmiş deploy/base/clickhouse/ performans ayarlı tek düğüm yapılandırması içerir. Çok kiracılı gereksinim: paketlenmiş yapılandırma SQL erişim yönetimini etkinleştirir ve users_without_row_policies_can_read_rows=false ayarını yapar, böylece sunucu kuruluş başına bir salt okunur ClickHouse kullanıcısı ve satır ilkesi oluşturabilir (SQL editörü ve AI ajanı için motor tarafından zorlanmış izolasyon sınırı). Kendi ClickHouse yapılandırmanızı sağlarsanız bu ayarları aktarın (bkz. deploy/base/clickhouse/configmap.yaml).
  • Redis 7+: isteğe bağlı paylaşılan önbellek + hız sınırı arka ucu. Sunucu ve pano her ikisi de REDIS_URL aracılığıyla bağlanır. Mevcut değilse, her ikisi de Postgres’e yapılan yollarla incelikle düşer. Aşağıda Redis (isteğe bağlı önbellek) bölümüne bakın.

Sunucu

Görüntüyü çekin

Mevcut yapılar beta-latest altında yayımlanır; latest yalnızca kararlı sürümlere atanır. Üretim için belirli bir :v<version> etiketine sabitle; bkz. Kullanılabilir Resim Etiketleri.

Ortam değişkenleri

DeğişkenGerekliVarsayılanAçıklama
DATABASE_URLEvetyokPostgres DSN. Şema postgres:// ile standart libpq bağlantı dizesi biçimi. ?sslmode=require ve diğer libpq parametrelerini destekler. Parola /, + veya = içeremez; URL-safe parolalar oluşturmak için openssl rand -hex kullanın.
ADMIN_KEYHayıryokÖnyükleme yöneticisi API anahtarı. Her başlangıçta tüm izinlerle güncelleştirilir. Değeri değiştirerek ve yeniden başlatarak döndürün.
LISTEN_ADDRHayır0.0.0.0:8080Bağlanacak TCP adresi
MAX_BODY_BYTESHayır134217728 (128 MB)Maksimum istek gövde boyutu
ADMIN_EMAILHayıryokÖnyükleme yöneticisi kullanıcı e-postası. Her başlangıçta tüm izinlerle güncelleştirilir ve korumalı olarak işaretlenir: pano/API aracılığıyla devre dışı bırakılamaz veya izinleri değiştirilemez. Önyükleme yöneticisini döndürmek için ADMIN_EMAIL değiştirin ve yeniden başlatın; yeni e-posta korumalı olarak güncelleştirilir ve önceki e-posta el ile veritabanından temizleninceye kadar korumayı tutar.
ALLOWED_EMAILSHayıryok (hepsi engellenir)Kullanıcı oluşturma ve oturum açma için izin verilen e-postaların virgülle ayrılmış listesi. Tam adresler (user@example.com) ve alan adı joker karakterleri (*@example.com) destekler. Ayarlanmamışsa, hiçbir kullanıcı oluşturulamaz veya oturum açamaz. İlk önyükleme tohumlandırması: varsayılan org’un izin listesini ilk önyüklemede tohurnlanır; bundan sonra her org’un /<org>/settings sayfası gerçeği kaynağıdır ve bu ortam değişkenini değiştirmek etkisi olmaz.
SMTP_HOSTHayıryokOTP e-postaları göndermek için SMTP sunucusu ana bilgisayar adı. Ayarlanmamışsa, OTP kodları bunun yerine stdout’a kaydedilir.
SMTP_PORTHayır587SMTP sunucusu portu
SMTP_USERNAMEHayıryokSMTP kimlik doğrulaması kullanıcı adı
SMTP_PASSWORDHayıryokSMTP kimlik doğrulaması parolası
SMTP_FROMHayıryokOTP e-postaları için gönderen e-posta adresi
SMTP_TLSHayırSTARTTLSSTARTTLS açıkça kapatmadığınız sürece kullanılır: false veya 0 düz metin gönderir (TLS yok); diğer herhangi bir değer — ayarlanmamış da dahil olmak üzere — STARTTLS’i etkinleştirir.
DASHBOARD_URLHayıryerleşik varsayılanOTP-e-posta sihirli bağlantısı ve uyarı bildirimlerindeki olay sihirli bağlantıları oluşturmak için kullanılan pano kaynağı. Ayarlanmamışsa yerleşik varsayılana geri düşer (ve yalnızca OTP için panosundan türetilen istek kökenine ilk olarak geri düşer). Bölünmüş alan kurulumları için ayarlayın, böylece hem e-posta hem de Slack/olay bağlantıları panonuza işaret eder. E-posta sihirli bağlantı URL’si bölümüne bakın; çoğu operatör bunu ayarlamaya gerek duymaz.
SESSION_TTL_SECSHayır86400 (24 s)Pano oturumu süresi saniye cinsinden. İlk önyükleme tohumlandırması: ilk dağıtımdan sonra /<org>/settings aracılığıyla org başına düzenleyin.
OTP_TTL_SECSHayır600 (10 dak)OTP kodu geçerlilik süresi saniye cinsinden. İlk önyükleme tohumlandırması: ilk dağıtımdan sonra /<org>/settings aracılığıyla org başına düzenleyin.
REDIS_URLHayıryokİsteğe bağlı paylaşılan önbellek + hız sınırı arka ucu, örn. redis://redis:6379/0. Ayarlandığında sunucu kimliği doğrulanmış API anahtarı aramaları, panonun /models toplamsı, oturumlar listesi ve ortam listesi grubunu önbelleğe alır; ayrıca OTP istek hız sınırlamasını Postgres COUNT’tan Redis INCR’ye taşır. Ayarlanmamışsa veya ulaşılamıyorsa, sunucu önbellek olmadan çalışır (OTP sınırı Postgres’e geri düşer, her diğer önbellek çağrısı gerçeği kaynağından düşer). Aşağıda Redis (isteğe bağlı önbellek) bölümüne bakın.
CLICKHOUSE_URLEvetyokClickHouse örneğinin temel URL’si, örn. http://clickhouse:8123. Sunucu bu veritabanına etkinlik şemasını her başlangıçta uygular ve ClickHouse’a ulaşamıyorsa önyüklemeden kaçınır. Aşağıda ClickHouse (gerekli analitik deposu) bölümüne bakın.
CLICKHOUSE_DATABASEHayıragenteyeClickHouse veritabanı (şema) adı. Sunucu mevcut değilse başlangıçta oluşturur.
ORG_CH_SECRETHayır (tek kiracılı) / Evet (çok org)geliştirme varsayılanıHer kuruluşun kiracı başına ClickHouse parolasının türetildiği HMAC anahtarı. SQL editörü ve AI ajanın run_query kuruluşun kendi salt okunur ClickHouse kullanıcısı olarak çalışır ve satır ilkesi motorun içinde kiracı izolasyonunu zorlar. Tek kiracılı dağıtımlar yerleşik geliştirme varsayılanı iyi önyüklenir; ikinci bir org sağlamadan önce güçlü, kararlı bir değer ayarlaMALISINIZ çünkü agenteye-orgctl org create CLI yerleşik geliştirme varsayılanında çalışmayı reddeder. Döndürmek her org’un ClickHouse kullanıcısını yetime bırakır ta ki sonraki başlangıç bunları yeniden sağlayıncaya kadar (önyükleme süresi uzlaştırması bunu otomatik olarak iyileştirir). Gizli tutun ve çoğaltmalar arasında değiştirilmeyecek olarak saklayın. Org sağlaması kendisinin operatörü; aşağıda Kuruluşlar (çok kiracılılık) bölümüne bakın.
DEFAULT_ORG_NAMEHayırDefaultYerleşik varsayılan org için tohumlandırılan görünen ad. İlk önyükleme tohumlandırması, ve yalnızca org hala yeni geçiş genel kimliğini taşırken, başlangıçta uygulanır, sonra yok sayılır. Org’u yeniden adlandırdığınızda (agenteye-orgctl org rename) yeniden adlandırma yetkilidir ve bu ortam değişkeninin başka etkisi yoktur.
DEFAULT_ORG_SLUGHayırdefaultYerleşik varsayılan org için URL slugu, pano yolunda yaşadığı (/<slug>/…). DEFAULT_ORG_NAME ile aynı ilk önyükleme yalnızca / ilkel anlamıdır. default tuttuğu sürece geçersiz bir değer yok sayılır. Tek kiracılı kurulumun /default yerine örn. /acme olarak sunulmasını sağlar, post-dağıtım CLI adımı olmadan.
RUST_LOGHayırinfoGünlük ayrıntı düzeyi (debug, warn, error, agenteye_server=trace)
EVALUATOR_ENDPOINTHayıryokDeğerlendirici hizmetinizin temel URL’si (örn. http://evaluator:9000). Ayarlanmadığında tüm değerlendirme işlem hattı no-op’dir; hiçbir kuyruk satırı yazılmaz, işçi çalışmaz. Bkz. Değerlendirme Paketi.
EVALUATOR_TOKENHayıryokDeğerlendirici olarak Authorization: Bearer <token> gönderilir. Değerlendirici hizmetinin yapılandırıldığı aynı değere eşit OLMALIDIR. İsteğe bağlı yalnızca değerlendiriciniz belirteç olmadan yapılandırılmışsa.
EVALUATOR_WORKERSHayır2Eşzamanlılık: sunucu örneği başına değerlendirmeler gönderen işçi görevlerinin sayısı. Yatay olarak ölçeklendirilmiş birden fazla sunucu arasında çalıştırmak güvenlidir.
EVALUATOR_CLAIM_BATCHHayır4Tek işçinin bir tik başına talep ettiği maksimum değerlendirme sayısı. Toplu işler eşzamanlı olarak gönderilir, bu nedenle değerlendirici uç noktası üzerinde toplam eşzamanlılık EVALUATOR_WORKERS × EVALUATOR_CLAIM_BATCH olur.
EVALUATOR_POLL_IDLE_SECSHayır2İşçi hiçbir şey gelmiş olduğunda gönderim denemeleri arasında uyuyacağı süre.
EVALUATOR_POLLING_INTERVAL_SECSHayır10GET /evaluate/{id} yoklaması için son yedek kadansı (saniye), değerlendirici yanı başına next_poll_secs döndürmediğinde ve GET /config adresinden default_poll_interval_secs bildirmediğinde.
EVALUATOR_REQUEST_TIMEOUT_MSHayır30000Değerlendirici karşısında HTTP istek başına zaman aşımı (milisaniye).
EVALUATOR_MAX_ATTEMPTSHayır5Bu kadar başarısız denemeden sonra, bir değerlendirme terminal error (veya başarısızlıklar istek zaman aşımlarıysa timeout) olarak kaydedilir.
EVALUATOR_CONFIG_REFRESH_SECSHayır300 (5 dak)Sunucu değerlendirici’den GET /config öğesini yeniden getirir.
EVALUATOR_MAX_POLL_DURATION_SECSHayır3600 (1 saat)Bir oturumun yoklama sırasında kalabileceği maksimum duvar saati süresi, AgentEye bunu timeout olarak sonlandırmadan önce. Sonsuza kadar pending döndüren bir değerlendiriciyi korur.
ALERT_WORKERSHayır1Eşzamanlılık: sunucu örneği başına uyarı kurallarını değerlendiren işçi görevlerinin sayısı. Bkz. Uyarılar.
ALERT_CLAIM_BATCHHayır16Tek işçinin bir tik başına talep ettiği maksimum uyarı sayısı.
ALERT_POLL_IDLE_SECSHayır5Kuyruk boşken uyarılar işçisinin uyuması gereken süre.
ALERT_REQUEST_TIMEOUT_MSHayır15000Tetikleyici değerlendirmesi başına zaman aşımı (ClickHouse sorguları + giden kanal HTTP).
ALERT_MAX_ATTEMPTSHayır5Ardışık geçici başarısızlıklar, bir uyarı üstel geri alma yerine normal kadansında yeniden zamanlanıncaya kadar.
AUDIT_WORKERSHayır1Eşzamanlılık: sunucu örneği başına denetimleri yürüten işçi görevlerinin sayısı. Bkz. Denetimler.
AUDIT_CLAIM_BATCHHayır1Tek işçinin bir tik başına talep ettiği maksimum yürürlükte denetim sayısı. Ajansal bir araştırma tek uzun bir döngüdür, bu nedenle varsayılan 1’dir.
AUDIT_POLL_IDLE_SECSHayır30Hiçbir denetim yürürlükte olmadığında denetim işçisinin uyuması gereken süre.
AUDIT_REQUEST_TIMEOUT_MSHayır30000ClickHouse karşısında ilke sorgusu başına zaman aşımı (milisaniye).
AUDIT_LLM_TIMEOUT_MSHayır1440000AI asistan hizmetine ajansal araştırma çağrısının zaman aşımı. Tam bir ajan döngüsü dakikalar çalışır; bunu sunucunun bırakılmadan önce ajan kısmi bulgularını döndürmesi için ajanın kendi AGENTEYE_AUDIT_TIMEOUT_MS değerinin ÜZERİNDE tutun.
AUDIT_MAX_ATTEMPTSHayır5Ardışık geçici başarısızlıklar, bir denetim üstel geri alma yerine normal kadansında yeniden zamanlanıncaya kadar.
AGENTEYE_AGENT_URL / AGENTEYE_AGENT_TOKENHayırDenetimin ajansal araştırması AI asistan agent hizmetini çağırır, asistan ile aynı bağlantıyı yeniden kullanarak — bu nedenle bunları ikisini sunucuda da ayarlayın (paketlenmiş manifestler/compose yapar). Her ikisi ayarlanmış ⇒ denetimler AI araştırmasını çalıştırır; her ikisi ayarlanmamış ⇒ denetimler yalnızca ilke çalıştırır (belirlenimci SQL ilkesi geçişi yine de çalışır), per-denetim llm_enabled bayrağından bağımsız olarak. Ajanın da bir LLM yapılandırması olmalıdır — bkz. assistant.md.
AI asistan hizmeti — denetim + sanal alan ayarları. Ajansal araştırma ve pod içi Python sanal alanı ajan hizmetinde ayarlanır (sunucu değil), hepsi AGENTEYE_AUDIT_* önekinde ve hepsi isteğe bağlı:
DeğişkenVarsayılanAnlamı
AGENTEYE_AUDIT_MAX_STEPS200Araştırma başına maksimum ajan dönüşleri.
AGENTEYE_AUDIT_TIMEOUT_MS1200000Bir araştırma için duvar saati (20 dak). Sunucunun AUDIT_LLM_TIMEOUT_MS değerinin altında kalmalıdır.
AGENTEYE_AUDIT_MAX_CONCURRENCY1Ajan başına pod başına eşzamanlı araştırmalar (sohbet asistan bütçesinden ayrı).
AGENTEYE_AUDIT_SANDBOX_TIMEOUT_MS / _MEM_MB / _CPU_SECS / _OUTPUT_MAX_BYTES / _SCRIPT_MAX_BYTES20000 / 768 / 10 / 64000 / 64000Bubblewrap sanal alanı için komut başına sınırlar.
Sanal alan platform gereksinimiş. Denetim kodu sanal alanı modelin Python’u bir bubblewrap hapishanesinde çalıştırır, bu ayrıcalıklı olmayan kullanıcı ad alanları gerektirir. Ajan pod’u clone() bayraklarına izin vermelidir — seccompProfile: Unconfined ayarlayın (k8s) veya security_opt: [seccomp:unconfined] (compose) ajan’da. Düğüm çekirdeğinin ayrıcalıklı olmayan kullanıcı ad alanlarını devre dışı bıraktığı durumlarda (örn. bazı GKE COS görüntüleri), sanal alan önyükleme başarısız olur ve denetim otomatik olarak yalnızca SQL’e düşer — hata yok, ajan’ın /health üzerinde yalnızca sandbox_available: false. |

Çalıştırma

Ortamda DATABASE_URL ayarlayın, ardından konteynera geçirin:
Sunucu, başlangıçta veritabanı geçişlerini otomatik olarak çalıştırır; ayrı geçiş adımı gerekmez.

Sağlık kontrolü

Kimlik doğrulama gerekmez. Canlılık yoklamalar için /health ve hazırlık / yük dengeleyici yoklamaları için /ready kullanın. /ready sunucunun olmadan hizmet veremeyeceği sert bağımlılıkları kontrol eder (Postgres + ClickHouse), bu nedenle çalışan ancak veritabanına ulaşamayan bir sunucu döndürülmesinin dışında tutulur ve NotReady olarak gösterilir; Redis raporlanır ancak asla hazırlığı başarısız yapmaz. Paketlenmiş Kubernetes manifestlerinde hazırlık yoklaması zaten /ready adresini işaret eder ve canlılık /health üzerinde kalır. Tam resim, Kubernetes-native pod-başarısızlık uyarılarını Slack’e dahil etmek için bkz. enterprise-docs/health-monitoring.md.

E-posta sihirli bağlantı URL’si

OTP oturum açma e-postaları tek dokunuşla panoyu aç düğmesi içerir. Tıklamak kullanıcıyı /login?token=<code>&email=<address> adresine indirir; pano bu çifti bir oturumla değiştirir ve hiçbir manuel kod yeniden girişi olmadan uygulamaya yönlendirir. Sunucu, bağlantı oluşturmak için kullanılan pano kökenini üç katmanda çözer:
  1. X-AgentEye-Dashboard-Url başlığı: panonun kendi genel kaynağından /api/auth/otp/request proxy tarafından otomatik olarak ayarlayır. Aynı kaynak dağıtımında (sunucu ve pano bir ön uç ardında bir ana bilgisayarı paylaşır, proxy başlıklarını iletir), hiçbir yapılandırma gerekmez.
  2. DASHBOARD_URL ortam değişkeni: panonuz sunucunun OTP istek uç noktasının gördüğü orijinin farklı bir kaynağında erişilebilirse (bölünmüş api.example.com / app.example.com), veya ön ucunuz genel ana bilgisayarı pano pod’una yaymıyorsa (bu nedenle request.nextUrl.origin aksi takdirde 0.0.0.0:3000 gibi joker bir bağlamaya çözecektir) ayarlayın. Örnek: DASHBOARD_URL=https://app.example.com.
  3. Varsayılan: https://app.befailproof.ai, yalnızca yukarıdaki her ikisi yoksa kullanılır.
Başlık değeri doğrulanır: yalnızca https://* ve geri döngü (http://localhost*, http://127.0.0.1*) kaynakları kabul edilir ve joker bağlama adresleri (0.0.0.0, [::]) https:// şemasıyla bile reddedilir. Başka bir şey katman 2’ye düşer. Çalışan bir kümede tek satırlı olarak ayarlayın; dosya yok, kustomize yeniden derlemesi yok:
Bu bir dağıtımı tetikler; yeni pod’lar ilk istekte değeri alır. Geçersiz kılmanın yalnızca Dağıtımda yaşadığını unutmayın; sonraki kustomize build | kubectl apply ön ek aşılıya karşı, ön ekinizdeki server-env.yaml yama aynı ortam değişkenini eklemediniz sürece bunu silecektir.

Pano

Görüntüyü çekin

Ortam değişkenleri

DeğişkenGerekliVarsayılanAçıklama
AGENTEYE_SERVER_URLEvetyokSunucunun temel URL’si, örn. http://localhost:8080
AGENTEYE_API_KEYEvetyokPanonun sunucuda kimlik doğrulaması yapmak için kullandığı API anahtarı. Tüm izinleri gerektirir (yönetici anahtarı önerilir).
AE_LOG_LEVELHayırinfoSunucu tarafı günlük ayrıntı düzeyi: debug, info, warn, error. Sorunları tanılarken yukarı akış istek/yanıt satırlarını ve oturum doğrulaması izlerini görmek için debug ayarlayın.
AE_LOG_JSONHayırotomatik1 JSON-per-satır çıktısını zorlar; 0 insan tarafından okunabilir çıktıyı zorlar. Ayarlanmadığında, NODE_ENV=production ise JSON otomatik olarak etkinleştirilir. Üretimde JSON önerilir, böylece günlükler jq veya bir günlük toplayıcı ile temiz biçimde ayrıştırılır.
AE_ANALYTICS_DISABLEDHayıryokPanonun anonim ürün kullanımı telemetrisini devre dışı bırakmak için 1/true ayarlayın. Aşağıda Telemetri & Gizlilik bölümüne bakın.
REDIS_URLHayıryokİsteğe bağlı paylaşılan önbellek arka ucu, örn. redis://redis:6379/0. Ayarlandığında pano çoğaltmalar arasında validateSession() sonuçlarını önbelleğe alır ve gecikme toplama / ortam listesi proxy rotaları için Next.js getirme önbelleğini paylaşır. Edge-side OTP istek ve doğrulama hız sınırları mevcut olduğunda Redis’i kullanır (Redis ulaşılamıyorsa açılır; sunucu tarafı sınırı güvenlik yedeklenidir). Aşağıda Redis (isteğe bağlı önbellek) bölümüne bakın.
AGENTEYE_AGENT_URLHayıryokİsteğe bağlı AI-asistan agent hizmetinin temel URL’si, örn. http://agent:9100. Asistanı tamamen gizlemek için ayarlanmış halde bırakın: pano asistan balonu görünmez. Bkz. enterprise-docs/assistant.md.
AGENTEYE_AGENT_TOKENHayıryokPanonun agent hizmetine sunduğu paylaşılan gizli. Ajan’da yapılandırılan AGENTEYE_AGENT_TOKEN ile eşleşmeli. Bkz. enterprise-docs/assistant.md.

Çalıştırma

Telemetri & Gizlilik

Pano, anonim ürün kullanımı analitikleri Exosphere’in analitik hizmetine (PostHog) gönderir: hangi pano sayfalarının görüntülendiği ve API anahtarı oluşturma veya oturumu yeniden değerlendirme gibi bir avuç UI eylemi. Bu kullanım sinyali hangi özelliklerin önceliklendirildiğini bildiridir.
  • Agent, oturum veya etkinlik verileri hiçbir zaman altyapınızdan ayrılmaz. Yalnızca pano UI kullanımı raporlanır. Sayfa URL’leri göndermeden önce tanımlayıcılardan çıkarılır ve operatörler asla e-posta tarafından değil, yalnızca opak bir iç kimliği tarafından tanımlanır.
  • Telemetri varsayılan olarak etkindir. Tamamen kapatmak için panonun konteynerinde AE_ANALYTICS_DISABLED=1 ayarlayın ve yeniden başlatın.
  • Analitikler panonun kendi /ingest yoluna gönderilir, pano PostHog’a ters proxy yapar (https://us.i.posthog.com). İstekleri birinci taraf olarak tutmak, tarayıcı reklam engelleyicilerin bunları bırakmaması anlamına gelir. Pano konteyneri PostHog’a giden erişime ihtiyaç duyar; engellenmişse telemetri sessizce hiçbir şey yapmaz ve pano etkilenmez.

AI Asistanı (isteğe bağlı)

Pano içi AI asistanı, ekibinizin Agent veri hakkında düz dilde soru sormasına (oturumları özetleme, /queries editörü için SQL taslakları ve kaydedilmiş sorguları pano kutucuklarına dönüştürme) panodan ayrılmadan izin verir. Bağımsız bir dahili agent konteynerinde (Claude Agent SDK’da) çalışır, yalnızca pano ulaşabilir ve bir LLM uç noktası yapılandırana kadar devre dışı kalır. Etkinleştirmek için agent hizmetinde bir LLM bağlantısı (Portkey aracılığıyla PORTKEY_API_KEY + model-katalog sonu AGENTEYE_AGENT_MODEL=@<slug>/<model>, doğrudan Anthropic aracılığıyla ANTHROPIC_API_KEY, başka bir ağ geçidi aracılığıyla ANTHROPIC_BASE_URL veya Bedrock/Vertex), ayrılmış bir veri anahtarı ve panola eşleşen paylaşılan AGENTEYE_AGENT_TOKEN ayarlayın. Pano kullanıcıları ek olarak agent:use izni gerektirir. Asistanın veri anahtarı için elle hiçbir şey basılmaz: rastgele bir gizli seçin, agent üzerinde AGENTEYE_API_KEY olarak ve server üzerinde AGENT_API_KEY olarak ayarlayın ve sunucu başlangıçta bunu sabit bir izin kümesi ile tohurnlanır. Veri erişimi salt okunur (events:read, evaluations:read, dashboards:read, queries:read) ve ek olarak onay geçidi yazarlık kapsamları tutar (dashboards:write, queries:write, queries:run) böylece kullanıcının adına kaydedilmiş sorguları ve pano kutucuklarını taslaklandırabilir ve doğrulayabilir; tüm SQL yine de org’un salt okunur ClickHouse rolü aracılığıyla çalışır, bu nedenle bu asistanın hangi veri yazabileceğini yığar, ulaşabileceği verileri değil. Kapsamlar kodda sabitlenmiş ve yapılandırma tarafından genişletilemez. Bu anahtar korunur; API aracılığıyla devre dışı bırakılamaz veya yeniden oluşturulamaz, yalnızca değeri değiştirerek ve yeniden başlatarak döndürülebilir. Yönetici/pano anahtarını hiçbir zaman bu amaç için yeniden kullanmayın. Tam kurulum, tam ortam değişkeni referansı, telemetri seçenekleri ve güvenlik modeli enterprise-docs/assistant.md içindedir.

ClickHouse (gerekli analitik deposu)

ClickHouse yüksek etkinlik birimlerinde panonuları duyarlı tutar ve /queries SQL editörü etkinlikleri, değerlendirmeleri ve oturumları tek mağazada birleştirmeyi sağlar. Bu, her alınan etkinlik, her terminal değerlendirme sonucu ve türetilmiş oturum başına toplamaların gerekli kanonik deposudur. PostgreSQL ilişkisel / değişebilir durum tablolarını tutar (api_keys, users, otp_codes, evaluation_jobs, dashboards, saved_queries); analitik yüzey ClickHouse’ta yaşar, böylece panonun açılmış işlemleri ve kendi SQL sorgularınız bunu yerel olarak tarayabilir ve birleştirebilir, veritabanları arası gidiş dönüş olmadan. Sunucu CLICKHOUSE_URL olmadan önyüklemeden kaçınır.

Şema

Üç ClickHouse nesnesi sunucu başlangıcında oluşturulur, tüm idempotenttir (CREATE IF NOT EXISTS):
  • agenteye.events: ReplacingMergeTree(ingested_at), toYYYYMM(ts) ile bölümlendirilmiş, (session_id, ts, dedup_key) ile sıralanmış. Yinelenen eklenmeler (toplayıcı yeniden denemeleri) birleştirme zamanında tek satıra çöker; sunucu her etkinlik için belirlenimci bir SHA-256 dedup_key hesaplar, böylece yeniden denenmeler güvenlidir.
  • agenteye.evaluations: ReplacingMergeTree(ingested_at), toYYYYMM(finished_at) ile bölümlendirilmiş, (session_id, finished_at, dedup_key) ile sıralanmış. Her terminal değerlendirme sonucu için değerlendirici ardışık düzen tarafından bir kez yazılır. events ile aynı dedup-anahtar modeli.
  • agenteye.agent_sessions: fiziksel bir tablo değil, agenteye.events üzerindeki bir VIEW. Her sütun türetilmiş (started_at = min(ts), last_event_at = max(ts), ended_at = max(if event_type='agent_end', ts, NULL), event_count = count(), vb.). Etkinlik başına upsert yok ve ayrı backfill yok; görünüm otomatik olarak events içinde ne varsa yansıtır.
Öncek uyumluluk için analytics.evaluations / analytics.sessions başvuran kaydedilmiş sorgularla, sunucu ayrıca agenteye.* tablolarında görünümler içeren analytics ClickHouse veritabanını oluşturur; analytics.events, analytics.evaluations, analytics.agent_sessions, analytics.sessions hepsi doğru şekilde çözülür.

Yapılandırma

Paketlenmiş docker-compose ve deploy/base/clickhouse/ AgentEye iş yükü için ayarlanmış bir ClickHouse hizmeti içerir:
  • 2 GiB istenen / 4 GiB limit bellek paketlenmiş temel ön ek (küçük POC/hazırlık düğümlerine sığmak için boyutlandırılmış); üretim müşterileri ön ek tekrar olmalıdır — önerilen alt sınır 2c / 4Gi istek, 6c / 8Gi sınırıdır. max_server_memory_usage_to_ram_ratio=0.9
  • 5 GiB mark önbellek + 8 GiB sıkıştırılmamış önbellek
  • background_pool_size=16, background_merges_mutations_concurrency_ratio=2
  • MergeTree: parts_to_throw_insert=3000, parts_to_delay_insert=1500, non_replicated_deduplication_window=1000
  • local_io_method=auto (desteklenen çekirdeklerde io_uring)
  • fsync_metadata=0: at-least-once alım + ReplacingMergeTree dedup nedeniyle kabul edilebilir
  • query_log 30 günlük TTL etkinleştirilmiş; query_thread_log kaldırılmış (yüksek QPS’de pahalı)
  • max_execution_time=30 kullanıcı tarafı sorguları için
  • StatefulSet şablonunda 100 GiB PVC (müşteri ön ekleri üretim için hızlı SSD depolama sınıfına geçersiz kılmalıdır)

Yedeklemeler

Tam veri setin tek bir geri yüklenebilir arşivde her gece yakalanır, bu nedenle küme veya depolama kaybı kurtarılabilir. ClickHouse günlük agenteye-backup CronJob’u tarafından otomatik olarak yedeklenir, bu da bir geçişte hem PostgreSQL hem de ClickHouse’u döker. ClickHouse HTTP API’si üzerinden okunur: agenteye.events ve agenteye.evaluations ClickHouse-native biçiminde dökerlenmiştir (görünümler ve satır ilkeleri sunucu başlangıcında yeniden oluşturulur, böylece tablo verileri tam resimdir) ve Postgres dökümü ile nesne depolamaya yüklenen tek bir sıkıştırılmış arşive birleştirilmiş. Hedef bucket ve bulut kimlik bilgileri ön ek başına yapılandırılır. Yükleme yapılandırması ve geri yükleme adımları için enterprise-docs/kubernetes-deployment.md Yedeklemeler bölümüne bakın.

Redis (isteğe bağlı önbellek)

Redis, sunucu ve pano tarafından kullanılan isteğe bağlı bir paylaşılan önbellek + hız sınırı arka ucu. Redis dağıtılırken ve REDIS_URL her iki hizmette ayarlandığında:
  • Sunucu kimliği doğrulanmış API anahtarı aramaları, /events/environments + /evaluations/environments listeleri, /events/latency_aggregate açılmış (panonun yokladığı en ağır sorgu), /sessions listesi önbelleğe alır ve OTP istek hız sınırlamasını Postgres COUNT(*) adresinden Redis INCR + EXPIRE adresine değiştirir.
  • Pano validateSession() sonuçlarını çoğaltmalar arasında önbelleğe alır, böylece tipik sayfa yükü sorunları olan 10-20 authed API çağrısı tüm bir yukarı akış oturumu kontrolü paylaşır. Ayrıca panonun kenarında OTP istek ve OTP doğrulama hız sınırı tutar.
Her iki hizmet de Redis ulaşılamıyorsa incelikle düşer. Her önbellek çağrısı sınırlı bir zaman aşımı içinde Err döndürür ve çağıran gerçeği kaynağına geri düşer (sunucuda Postgres, panonun yukarı akış Rust sunucusu). OTP hız sınırı sunucuda Postgres COUNT(*) yoluna geri düşer (güvenlik özelliği korunur); panonun kenar OTP sınırı Redis ulaşılamıyorsa açılır, sunucu tarafı sınırı hala tutar. Redis kapalı olduğunda gecikmeyi düşürür, doğruluk değil.

Yapılandırma

docker-compose paket zaten Redis hizmetini ve REDIS_URL=redis://redis:6379/0 sunucu ve panoyu içerir. Harici Redis kullanmak için REDIS_URL uç noktanız olarak ayarlayın ve compose dosyasından redis hizmetini kaldırın.

Bellek + kalıcılık

Paketlenmiş Redis görüntüsü --appendonly yes --appendfsync everysec --maxmemory 256mb --maxmemory-policy allkeys-lru ile çalışır. AOF kalıcılığı, önbelleğin kapsayıcı yeniden başlatmalarından kurtulması anlamına gelir; everysec doğru dayanıklılık/perf dengesidir çünkü son saniyelik önbellek yazmaları kaybı zararsızdır. LRU tahliye bellek büyümesini sınırlar.

Redis dağıtmamak için

  • Tek örnek geliştirme/QA. Sunucuda işlem içi önbellekler tek başına çoğu per-çoğaltma avantajını teslim eder; Redis, tek örnek kurulumları gereken çapraz çoğaltma paylaşımını ekler.
  • Bir hizmeti daha çalıştırmanın operasyonel maliyeti gecikme kazancından daha ağır olan hava geçitli kurulumlar.

Docker Compose (önerilen)

agenteye-enterprise/releases deposunda bir docker-compose.yml mevcuttur. Postgres, sunucusu ve panosu tek komutla getirtir.
.env aracılığıyla varsayılanları geçersiz kılın:
Dur (veri birimini tutar):
Dur ve tüm verileri sil:

İşletimsel ayarlar

Ortam değişkenleri tarafından sabitlenmiş küçük bir operasyonel düğme seti artık panonun /<org>/settings sayfasından kuruluş başına düzenlenebilir; her org kendi yapılandırır. Değişiklikler saniyeler içinde etkili hale gelir, yeniden başlatma yok ve yeniden dağıtma yok.
AyarÖnyükleme ortam değişkeniNe denetler
İzin verilen oturum açmalarALLOWED_EMAILSOTP almalarına izin verilen e-postalar (veya *@domain.com joker karakterleri) ve kullanıcı olarak eklenir
Varsayılan kullanıcı izinleriDEFAULT_USER_PERMISSIONSBir yönetici + yeni kullanıcı açtığında önceden seçilen virgülle ayrılmış izin jetonları. Her jeton API anahtarı izinleri altında listelenen dizelerden biri olmalıdır. standard ön ayarına varsayılan: salt okunur erişim ve günlük gündüz eylem (değerlendirmeleri yeniden tetikleme, sorgular çalıştırma, olayları onaylama, asistanı kullanma).
Oturum yaşam süresiSESSION_TTL_SECSPano oturum açması yeniden kimlik doğrulamadan önce ne kadar geçerli kalır. Pano yukarı akış oturumunu her 5 saniyede yeniden kontrol eder, bu nedenle /<org>/users üzerindeki izin güncellemesi etkilenen kullanıcının sonraki isteğinde, yeniden oturum açılmadan etkili olur.
Tek kullanımlık kod yaşam süresiOTP_TTL_SECSOTP / sihirli bağlantı ne kadar süreyle kullanılabilir kalır
Uyarı bildirim kanallarıALERTS_ENABLED_CHANNELSUyarı göndericisinin kullanmasına izin verilen kanal türlerinin virgülle ayrılmış listesi: email, slack, webhook. Per-uyarı yapılandırması hala /<org>/alerts/<id> üzerinde yazılır, ancak göndericisi bu küme aracılığıyla her giden teslimi filtreler; burada devre dışı bırakılan bir kanal skipped_disabled denetim satırı ile kısa devreye girer. dashboard kanalı (yerel denetim ekleme) her zaman izin verilir. Üçünün tümü açılmış olarak varsayılan ayarlar.

Önyükleme nasıl çalışır

Ayarlar kuruluş başına org_settings içinde depolanır. İlk önyüklemede, sunucu varsayılan org’un eksik satırlarını eşleşen ortam değişkeninden (veya ortam değişkeni ayarlanmadığında akla yatkın bir varsayılandan) tohurnlanır. Bundan sonra, depolanmış değer gerçeği kaynağı ve ortam değişkeni yok sayılır; ortam değişkenini daha sonraki yeniden başlatmada değiştirmek canlı org’un değerini etkilemez ve ek org’lar varsayılanlardan başlayıp kendi yapılandırır. Bu anlamına gelir:
  • Yeni bir dağıtım için, ortam değişkenlerini yukarıda gösterildiği gibi ayarlayın ve varsayılan org ilk önyüklemede onları okur.
  • Bir değeri daha sonra değiştirmek için panonuya giriş yapın ve /<org>/settings altında düzenleyin. Değişiklik saniyeler içinde tüm sunucu çoğaltmaları arasında etkili olur; yeniden başlatma gerekmez.
  • Bir başlangıç günlük satırı ne tohurnlandığını ve ne zaten var olduğunu kaydeder, böylece önyüklemenin etkili olduğunu doğrulayabilirsiniz:

Kuruluşlar arasında oturum açma anlambilimi

Oturum ve OTP, tek org’a değil küreseldir, bu nedenle iki kural oturum açma zamanında per-org ayarlarını uzlaştırır:
  • Oturum / OTP yaşam süresi: en katı (en kısa) yaşam süresi kullanıcının ait olduğu org’lar arasında kazanır.
  • İzin verilen oturum açmalar: kapı VEYA’lar her org’un izin listesi kuruluş üyeliğiyle: bir kullanıcı herhangi bir org’un izin listesi e-postalarını kabul ederse OTP isteyebilir veya zaten herhangi bir org’un üyeleri.

İzinler

/<org>/settings sayfasına erişim iki izin tarafından kapılır:
  • settings:read: sayfayı görmek ve geçerli değerleri.
  • settings:write: değişiklikleri kaydet.
Önyükleme yöneticisi kullanıcısı (önyükleme ADMIN_EMAIL adresinde) otomatik olarak her diğer izinle birlikte her ikisini alır. Gerektiğinde diğer kullanıcılara /<org>/users adresinden verin.

Kuruluşlar (çok kiracılılık)

Tek bir dağıtım birden fazla izole kuruluş (kiracı) sunabilir; her veri satırı tam olarak bir org’a aittir ve izolasyon veritabanı motorunda uygulanır. Tek kiracılı kurulum buna gerek duymaz; tüm veriler yerleşik default org’da yaşar. (Bu org’a daha uygun bir ad ve URL sunu verebilirsiniz, böylece default yerine örn. /acme adresinde yaşar, ilk önyüklemeden önce DEFAULT_ORG_NAME / DEFAULT_ORG_SLUG ayarlayarak veya herhangi bir zamanda agenteye-orgctl org rename ile yeniden adlandırarak.) Kiracı sağlaması yalnızca operatördür. Kuruluşlar ve üyelikleri agenteye-orgctl CLI ile oluşturulur ve yönetilir, bu sunucu görüntüsünün içinde gemi (agenteye-server yanında) ve mevcut sunucu pod içinde çalışır; ayrı pod/Job, HTTP API ve pano düğmesi yok. Sunucunun DATABASE_URL, CLICKHOUSE_URL ve ORG_CH_SECRET yeniden kullanır.
Kullanılabilir fiiller: org create | list | rename | delete | purge ve member add | list | update | remove, yerleşik izin kümesi admin, standard ve read-only ile. Eklenen üyeler ilk pano girişinde OTP alır. İkinci bir org oluşturmadan önce: güçlü, kararlı ORG_CH_SECRET ayarlayın (org create komutu yerleşik geliştirme varsayılanında çalışmayı reddeder) ve Postgres’in 15+ olmasını sağlayın. Değiştirilmemiş: per-org API anahtarları hala pano/API tarafından org üyeleri tarafından basılır; yalnızca org + üyesi yaşam döngüsü CLI’ye taşındı. Tam komut referansı ve çalışılan örnek: enterprise-docs/tenant-management.md.

Bağlam penceresi doldurma

Her model_response etkinliği bir bağlam dolgu hapı gösterir — o modelin bağlam penceresinin yüzdesi olarak giriş artı çıkış jetonları. Bantlar healthy (0–24%), watch (25–49%), compacting (50–74%) ve reset context (75–100%) olur. AgentEye yaygın model kimliklerini otomatik olarak çözer, bu nedenle hiçbir ilk yapılandırma gerekmez. Bir kuruluşun gönderdiği her model Ayarlar → model bağlam pencereleri altında görünür. settings:write izni olan kullanıcılar pencereyi geçersiz kılabilir veya özel/proxy model ekleyebilir (0–1.000.000 jeton); 0 “bilinmiyor” anlamına gelir ve hapı bastırır. Değişiklikler yeni alınan etkinliklere uygulanır. settings:read izni olan kullanıcılar listeyi görüntüleyebilir. Yeni etkinlikler yükseltmede anı alır. Ayrıca mevcut dağıtım için tarihsel etkinlikleri doldurmak için (ve per-model listeyi), bir kez çalıştırılan backfill çalıştırın — sunucu görüntüsünün içinde gemi (agenteye-orgctl gibi) ve mevcut sunucu pod’unda çalışır:
Eğersiz (yeniden çalıştırmak güvenlidir) ve pod’dan DATABASE_URL / CLICKHOUSE_URL / REDIS_URL yeniden kullanır. Model pencereleri düzenledikten sonra varolan etkinlikleri yeniden hesaplamak istiyorsanız yeniden çalıştırın.

Üretim Hususları

  • Postgres: Yönetilen Postgres hizmetini veya düzenli yedeklemeleri olan ayrılmış bir örneği kullanın. DATABASE_URL sslmode=require dahil olmak üzere tüm standart libpq parametrelerini destekler, şifreli bağlantılar için.
  • TLS: Sunucu ve panoyu TLS’yi sonlandıran ters proxy’nin (nginx, Caddy, Traefik) ardına koyun.
  • Güvenlik duvarı: Sunucu portu (varsayılan 8080) yalnızca toplayıcı makinelerinden ve pano ana bilgisayarından erişilebilir olmalıdır, genel İnternet’ten değil.
  • Yönetici anahtarı: ADMIN_KEY güçlü rastgele gizli ayarlayın. Önyüklemeden sonra, yönetici anahtarını her yerde kullanmak yerine toplayıcılar ve pano için ayrılmış kapsamlı anahtarlar oluştu