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:
- Sorumlulukları nedir? Hangi işleri yapması, hangilerini yapmaması beklenir?
- Hangi araçlara erişebilir? Veritabanı, API, dosya sistemi, ağ, dış hizmet. Hangileri?
- Hata veya risk durumunda ne yapmalı? Onay isteyebilir mi? İnsan müdahalesini geciktirebilir mi?
- 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)
- Yeni yazılmış, test edilmiş, ancak üretim ortamında henüz çalışmaya hazır değil
- Belki politikası tamamlanmadı, belki becerisi tam doğrulanmadı
- Sadece geliştirici ve test ortamında çalışır
- Git branch’inde, main’de değil
Aktif (Active)
- Üretim ortamında çalışıyor, gerçek işler yapıyor
- policy.md bitmişti, beceri testleri geçti, sahibi sorumluluğunu kabul etti
- Git main branch’inde,
config/agents.yaml’dastatus: active
Pasif (Inactive)
- Artık çalışmıyor ama silmiyoruz
- Kullanılmadığı halde politikası ve geçmiş logu duruyor
- Belki tekrar ihtiyaç olur, belki eski ajan gereklilik görmeyeceği yerde yapıyor
- Git history’de kalıyor, ama
status: inactiveişaretleniyor
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ı
- Örn: metin işleme, basit matematik, veri dönüştürme
- Hızlı, bağımlılık yok, güvenli çünkü kontrol edilebilir
mcp (Model Context Protocol): Harici sistem bağlantısı
- Örn: Slack API, GitHub API, Jira
- Standart arabirim, yönetilen bağlantı, authentication yapılı
http: Serbest HTTP çağrı
- Örn: dış hizmete REST API, kendi API endpoint’leri
- Esnektir ama risklidir; URL validation ve rate limit zorunlu
function: Harici Python/Node.js fonksiyonu
- Örn: veri tabanı sorgusu, özel ml modeli çağrısı
- Güçlüdür ama, harici kod çalıştırması riski taşır
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?