policy.md ve Ajan Durumu: Sınırlar, Statüler ve Beceriler

policy.md ve Ajan Durumu: Sınırlar, Statüler ve Beceriler

Dün konuştuk: her ajanın organizasyon şemasında bir yeri olmalı, sahibi (responsible_id) belli olmalı. Ama ajanı tanımlamak yetmiyor. O ajanın ne yapacağı, ne yapamayacağı, hangi araçları kullanacağı, hangi sınırların içinde kalacağı belli olmalı.

Çünkü bir ajan talimat aldığında, kime soracak? İnsan da aynı şekilde. Bir çalışan yeni bir müşteri garantisi vermesi gerekirse ne yapabilir? Sınırları neler? Bunlar “işletim kuralları” dosyalarında yazılı olmalı.

policy.md: Ajanın İşletim Kuralı

Bir ajan şu bilgilere ihtiyaç duyar:

  1. Sorumlulukları nedir? Hangi işleri yapması, hangilerini yapmaması beklenir?
  2. Hangi araçlara erişebilir? Veritabanı, API, dosya sistemi, ağ, dış hizmet. Hangileri?
  3. Hata veya risk durumunda ne yapmalı? Onay isteyebilir mi? İnsan müdahalesini geciktirebilir mi?
  4. Sonuçlarını kime rapor etmeli? Doğrudan sahibine mi, yoksa merkezi bir kayda mı?

İşte bu kurallar policy.md dosyasında yazılıdır.

# Ajan: Veri Temizlik Ajan (data_cleaner_001)

## Sorumluluğu
- Gelen CSV dosyalarındaki eksik, çift veya yanlış format kayıtları temizler
- Kurallar: RFC 4180 CSV standardı, UTF-8 encoding, 10 MB'dan büyük dosya reddet

## Erişim
- Tool: S3 bucket "raw_data" (okuma), "cleaned_data" (yazma)
- Tool: Slack API (başarı/başarısızlık rapor)
- Limit: Aynı dosyayı 3'ten fazla yeniden işleme
- Bloklu: İnsan verisine erişim, dış API çağrısı

## Hata Politikası
- İşleme başarısızsa: Slack kanalı #data-ops'a logla
- 5'ten fazla hata: İnsan müdahalesini talep et
- Hassas veri (SSN, IP) algılanırsa: Derhal işlemi durdur, responsible_id'ye uyar

## Rapor
- Günlük özet: Slack #data-ops, 08:00 UTC
- Ayrıntı log: S3 "logs" bucketine .json olarak

Görüyorsunuz, bu kurallar ajanın ne yapacağı açıkça tanımlıyor. Ve kurallar Git’e kaydediliyor. Değişiklik olursa PR ile insan onayından geçiyor.

Ajan Durumları: Taslak, Aktif, Pasif

Bir ajan her zaman aktif değildir. Yaşam döngüsü vardır.

Taslak (Draft)

Aktif (Active)

Pasif (Inactive)

agents:
  data_cleaner_001:
    name: "Veri Temizlik Ajan"
    owner: "person_Alice_DataOps"
    status: active        # Şu an çalışıyor
    created: 2026-08-15
    policy: "policy/data_cleaner_001.md"
    
  report_generator_v1:
    name: "Rapor Üreteç (Eski)"
    owner: "person_Bob_Analytics"
    status: inactive      # Geçmişteki versiyon, v2 tarafından yer aldı
    created: 2025-06-01
    retired: 2026-08-01
    policy: "policy/report_generator_v1.md"

Beceri Türleri: Ajanın Araç Kutusu

Bir ajan yapabilecekleri “beceri” adı verilen araçlarla tanımlanır. Dört tür vardır:

builtin: Ajanın yazılım kodu içinde tanımlı

mcp (Model Context Protocol): Harici sistem bağlantısı

http: Serbest HTTP çağrı

function: Harici Python/Node.js fonksiyonu

agents:
  data_cleaner_001:
    skills:
      - type: builtin
        name: "csv_validate"          # RFC 4180 doğrulaması
        
      - type: mcp
        name: "slack_notify"          # Slack mesaj gönder
        
      - type: http
        name: "call_external_clean"   # Üçüncü taraf API
        config:
          url: "https://api.cleaning-service.com/clean"
          timeout_sec: 30
          
      - type: function
        name: "db_update"             # Veritabanı yazma
        config:
          runtime: python
          path: "functions/db_update.py"

Bu tasarım neyin karşılığı? Kontrol ve görünürlük. Ajan tasarlandığında, politikası yazıldığında, becerileri kodlandığında, hepsi Git’e kaydediliyor. İnsan bakıyor, PR koşuluyor, onay veriliyor. Sonra aktif hale getiriliyor.

Gölge AI’nin ters tarafı bu. Herkes kendi ChatGPT’sini açıyor, hiç kimse ne yapıyor bilmiyor. Ama işletme kuralı olan organizasyonda, ajan ve politika Git’te, tüm dünyada görülebilir.

Yarın konuşacağımız konu: bir ajan başka bir ajana iş nasıl devreder?