Skip to content

Bulut Savaşları — Operatör Çalışma Kitabı ​

Bu sayfa, Cloud Battles yüzeyini çalıştırmaya yönelik operatör çalışma kitabıdır. Dağıtımın Phase O webhook outbox migration'ını uyguladığı ve pg_cron ile pg_net mevcut olan barındırılan bir Supabase örneğinin bulunduğu varsayılır.

Yüzeyin dış kullanıcılar için açılmadan önce geçmesi gereken bütün bütünlük kontrolleri için bkz. Battle Integrity Checklist.

Ön hazırlık ​

Ortam değişkenleri ​

DeğişkenAmaçGerekli
SUPABASE_URL / SUPABASE_ANON_KEYSavaşları ve işçileri destekleyen barındırılan Supabase projesievet
API_URLWeb uygulaması ve işçiler tarafından kullanılan apps/platform-api kökenievet
ANTHROPIC_API_KEY (edge function env)AI hakem edge function tarafından kullanılır.evet
CHAINABIT_API_URLSavaşlar Chainabit yürütme köprüsünden gönderildiğinde kullanılır.yalnızca Chainabit köprüsü etkinse

Postgres GUC'leri ​

Bu değerleri dağıtımda ALTER DATABASE postgres SET … ile ayarlayın. GUC'nin cron job oturumunda etkili olması için değişiklikten sonra pg_cron işçilerini yeniden başlatın.

GUCAmaçVarsayılanGerekli
app.approval_timeout_hoursexpire-stale-approvals job'u için eşik.24önerilir
app.approval_webhook_urlYeni bekleyen onaylar için en iyi çaba POST URL'si (operatör çağrı zincirini besler).boşevet
app.moderation_webhook_urlModerasyon olayları için en iyi çaba POST URL'si (işaretlenen gönderimler, geçersiz kılma kararları).boşevet
app.webhook_signing_secretaudit.webhook_outbox teslimleri için HMAC imzalama anahtarı. Alıcı tarafında X-Lenserfight-Signature eşleşmediğinde teslimi reddedin.boşevet
sql
ALTER DATABASE postgres SET app.approval_timeout_hours = 24;
ALTER DATABASE postgres SET app.approval_webhook_url    = 'https://example.com/approvals';
ALTER DATABASE postgres SET app.moderation_webhook_url  = 'https://example.com/moderation';
ALTER DATABASE postgres SET app.webhook_signing_secret  = '<32-byte hex>';

Cron job'ları ​

Dispatcher ve zaman aşımı uygulaması Postgres içinde pg_cron üzerinden çalışır. İkisinin de zamanlanmış olduğunu doğrulayın:

sql
SELECT jobname, schedule, active
FROM cron.job
WHERE jobname IN ('expire-stale-approvals', 'webhook-outbox-dispatcher');

Her iki satır da active = true göstermelidir.

İzleme ​

SinyalNereye bakılırNe aranmalı
Webhook outbox birikimiaudit.webhook_outboxcount(*) WHERE delivered_at IS NULL sıfıra doğru ilerlemeli. Artan teslim edilmemiş sayım, alıcıların 5xx döndürdüğü veya dispatcher'ın çalışmadığı anlamına gelir.
Onay zaman aşımı job sağlığıcron.job_run_details WHERE jobname = 'expire-stale-approvals'Job 5 dakikada bir çalışır. Art arda birden fazla failed satırı, yapılandırma regresyonuna veya uzun süreli kilitleyen bir işleme işaret eder.
Webhook dispatcher sağlığıcron.job_run_details WHERE jobname = 'webhook-outbox-dispatcher'Job sık çalışır; art arda hatalar dispatcher RPC'sinin yanlış yapılandırıldığı veya pg_net'in kullanılamadığı anlamına gelir.
Savaş moderasyon geçersiz kılmalarıbattles.moderation_decisions (mevcutsa) veya audit.action_logs WHERE action LIKE 'battle_moderation_%'Geçersiz kılma artışı ya bir model regresyonuna ya da koordineli kötüye kullanıma işaret eder. battles.battle_submissions reddetme oranıyla karşılaştırın.
ELO değişim günlüğübattles.elo_changes (veya eşdeğer log tablosu)Her liderlik tablosu mutasyonu bir satır üretmelidir. Boşluklar, ELO yazıcısının log yolunu atladığı anlamına gelir.

Geri alma (Rollback) ​

Geri alma yıkıcı değildir — uçuştaki savaşlar talep edildikleri yolda biter. Yapılandırma değişikliği yalnızca yeni girişleri durdurur.

bash
# 1. Bulut savaş rotalarını halka açık olarak sunmayı durdurun (reverse-proxy veya web + işçileri yeniden dağıtın)
sql
-- 2. Webhook outbox dispatcher'ını durdurun
SELECT cron.unschedule('webhook-outbox-dispatcher');

-- 3. İsteğe bağlı: başarısız tekrar denemelerin yayılmaması için webhook URL'lerini temizleyin
ALTER DATABASE postgres SET app.approval_webhook_url   = '';
ALTER DATABASE postgres SET app.moderation_webhook_url = '';

Yerel savaşlar (lf battle local) çalışmaya devam eder — yukarıdakilerin hiçbirine bağlı değildirler.

Daha sonra yeniden etkinleştirmek için yönlendirmeyi ve yapılandırmayı geri yükleyin, GUC'leri yeniden ayarlayın ve dispatcher'ı orijinal migration'da kullanılan ifadeyle yeniden zamanlayın.

Eskalasyon ​

Otomatik bir kontrol gerçek dünya olayını (saldırgan gönderim, bir prompt'ta sızdırılan kimlik bilgileri, sürekli moderasyon atlatma) durduramadığında bu kanalı kullanın.

  • Birincil: moderation@lenserfight.org adresine e-posta gönderin. 24 saat içinde ilk yanıt beklenir.
  • GitHub Issue (hassas): Rapor kullanıcı verisi veya kimlik bilgisi içeriyorsa özel bir güvenlik danışma belgesi açın.
  • GitHub Issue (genel): İhbarın bakımcı önceliklendirme kuyruğunda görünmesi için issue'yu incident olarak etiketleyin.

İlgili ​