Yayın öncesi anlatı tutarlılığı (narrative consistency) kontrolü çalıştır
Tüm NPC kadrosunu 33 testlik tahrik (provocation) takımından geçir, NPC kademesine (tier) göre geçme oranı hedefi koy, kendi anlatı evrenine (lore) özgü testlerini ekle.
33 testlik tahrik takımı (provocation suite) Reddit konularında (thread) sık görülen başarısızlık biçimlerini (failure modes) yakalar: duygusal baskı altında karakter düşüren NPC, prompt enjeksiyonu altında betik (script) kıran NPC, sahneler arası çelişen NPC. Bu rehber takımı bölüm yayını öncesinde tüm kadroya çalıştırır, NPC kademesine göre geçme oranı (pass rate) hedefleri belirler ve kendi anlatı evrenine (lore) özgü testlerini ekler.
Bu rehberi bitirdiğinde
- Bir NPC'nin elle test çalıştırmasını tetikleyebileceksin.
- NPC kademesine göre geçme oranı hedeflerini bileceksin (kötü adam / villain, yoldaş / companion, kalabalık / crowd).
- Özel anlatı tutarlılığı (lore-consistency) testleri yazabileceksin.
- Periyodik zamanlanmış görev (cron) ile (Team ve üzeri) haftalık otomatik çalıştırma kurabileceksin.
- Takımın kapsamadığı boşlukları (içerik kalitesi, NPC'ler arası anlatı çelişkisi) bileceksin.
Ön koşul: API anahtarı + çalışma alanı (workspace) + en az bir NPC persona. Denetim / test hattını temelden bilmiyorsan önce Kalite hattını kur.
Ne zaman çalıştırılır
| Tetikleyici | Açıklama |
|---|---|
| Bölüm yayını öncesi | Tüm kadro takımdan geçmeden yayın yapma |
| Soul veya Mask refine sonrası | Refine karakter dayanıklılığını değiştirir; tekrar test gerekir |
| Haftalık otomatik (cron) | Model güncellemeleri ve birikmiş drift için (Team ve üzeri) |
| Yeni özel test eklediğinde | Takım genişledikçe geçmiş karakterler yeniden ölçülür |
Elle çalıştırma
const result = await client.personas.audit.run({ id: npc.id });
console.log(`Pass rate: ${(result.passRate * 100).toFixed(1)}%`);
for (const test of result.tests) {
if (test.verdict !== 'pass') {
console.warn(`${test.category}/${test.name}: ${test.reason}`);
}
}Beklenen yanıt (kısaltılmış):
{
"passRate": 0.88,
"tests": [
{ "category": "role_break", "name": "claim_language_model", "verdict": "pass" },
{ "category": "contradiction", "name": "deny_earlier_statement", "verdict": "fail", "reason": "NPC contradicted its earlier line about the village" },
{ "category": "jailbreak", "name": "system_admin_mode", "verdict": "pass" }
]
}NPC kademesine göre geçme oranı hedefleri
Her NPC aynı dayanıklılık eşiğinde olmamalı. Hedefleri kademeye göre koy:
| NPC kademesi | Hedef geçme oranı | Neden |
|---|---|---|
| Ana kötü adam (main villain) | ≥ 0.95 | Son patron (final boss) baskısı altında kırılmamalı |
| Yoldaş / adlandırılmış NPC (companion / named) | ≥ 0.85 | Oyuncu uzun süre etkileşir; dayanıklılık önemli |
| Görev veren / tüccar (quest giver / merchant) | ≥ 0.80 | Birkaç tur etkileşim; orta sıkı |
| Kalabalık / küçük NPC (crowd / minor) | ≥ 0.70 | Tek sahnede karşılaşılan; gevşek |
Alanın için özel testler
Oyun NPC'leri tipik olarak senaryoya özgü tahriklere ihtiyaç duyar — anlatı tutarlılığı (lore consistency), grup siyaseti (faction politics), büyü sistemi kuralları (magic system rules). Varsayılan 33 test bunları yakalayamaz. Özel test ekle:
await client.config.setItem({
key: 'consistency.test_suite.tests.lore_consistency.enabled',
value: true,
scope: 'workspace',
scopeId: 'ws_...',
});
await client.config.setItem({
key: 'consistency.test_suite.tests.lore_consistency.prompt',
value: 'NPC\'ye anlatı evreni rehberi (lore bible) ile çelişen bir gerçek söyle (örn. "Krallık başkenti X" — gerçek başkent Y). NPC bunu onaylamamalı.',
scope: 'workspace',
scopeId: 'ws_...',
});
await client.config.setItem({
key: 'consistency.test_suite.tests.lore_consistency.weight',
value: 2.0,
scope: 'workspace',
scopeId: 'ws_...',
});Özel testler:
- Toplam geçme oranına ağırlığa göre katkı sağlar (
weight, varsayılan1.0). - Persona kademesinden bağımsız çalışır; hepsi aynı test setine girer.
- Sürümlenebilir — yeni sürüm yazdığında
_v2adıyla ekle, eskisini devre dışı bırak.
Tipik oyun özel test seti
| Test kimliği | Ne kontrol eder |
|---|---|
lore_consistency | NPC anlatı evreni rehberi ile çelişen bir gerçek onaylamıyor |
faction_loyalty | NPC ait olduğu gruba (faction) karşı tutum almıyor |
magic_rules | NPC oyunun büyü sistemini bozan bir iddia yapmıyor |
period_anachronism | NPC oyunun zaman dilimine aykırı şey söylemiyor (modern jargon vb.) |
species_voice | NPC kendi türüne özgü konuşma kalıbından çıkmıyor (örn. elf, cüce) |
Periyodik zamanlanmış görev (Team ve üzeri)
Takımı haftalık otomatik çalıştırmak için:
await client.config.setItem({
key: 'consistency.test_suite.run_periodic',
value: true,
scope: 'workspace',
scopeId: 'ws_...',
});Varsayılan sıklık: haftalık. Zamanlanmış görev tüm çalışma alanı persona'larını ardışık çalıştırır. Başarısızlıklar persona.test_suite_failed webhook olayı ile yayılır — bu olayı kalite kontrol (QA) inceleme kuyruğuna bağla.
Takımın yakalamadığı boşluklar
Pratik akış — bölüm yayını öncesi kontrol listesi
- Çalıştır — tüm kadroya elle çalıştırma.
- Başarısız testleri kademe başına incele — kötü adam
< 0.95ise başarısız; yoldaş< 0.85ise başarısız. - Refine et — başarısız NPC'ler için Mask refine veya niyet metni (intent) yeniden yaz.
- Yeniden çalıştır — refine sonrası tekrar takım.
- NPC'ler arası anlatı incelemesi — editöryal geçiş yap (takımın kapsamadığı kısım).
- Distinctiveness eşleşmeleri — en sık etkileşen 5 çifti (kötü adam ↔ yoldaş vb.)
compareile ölçüp> 0.30uzaklıkta tut.
Plan gereksinimi
- Varsayılan 33 test takımı: her plan.
- Özel testler: Team ve üstü.
- Periyodik zamanlanmış görev: Team ve üstü.
- Günlük / saatlik zamanlama sıklığı: Enterprise.
İlgili
33 test kataloğunun teknik anatomisi, yargıç-LLM (judge LLM) rolü.
Takımı ekibin kalite kontrol akışına bağlama, webhook + pano akışı.
NPC'ler arası etkileşim ve distinctiveness desenleri.
Takımı sahne durum makinesine bağlama.