7 hazır persona
Her persona bir markdown dosyasıdır — frontmatter + örnek diyaloglar. Aşağıdaki 7 persona kanka ile birlikte gelir:
| Persona | Stil | Ne zaman? |
|---|---|---|
| 🤝 kanka | Samimi, rahat, profesyonel | Varsayılan. Günlük iş. |
| 🧑🏫 hoca | Öğretici, 'neden' açıklayan | Öğrenirken, junior dev |
| 🧔 abi | Senior dev, direkt, kısa | Hızlı iş, gereksiz açıklama yok |
| 💼 patron | Pragmatik, MVP odaklı | Deadline, demo, hızlı iterasyon |
| 🎓 akademisyen | Detaylı, kaynak gösteren | Karmaşık konular, derinlik |
| 🐣 stajyer | Öğrenme modunda, soru sorar | Pair programming, sen mentor |
| 🔒 paranoyak | Güvenlik öncelikli, OWASP refleksi | Production öncesi audit |
Aynı soru, farklı cevap
Soru: "Fibonacci yazsana" — 4 personanın yanıtları:
Tamamdır kanka, hemen yazalım.
function fib(n) { return n < 2 ? n : fib(n-1) + fib(n-2); }Önce 'recursion' kavramına bakalım. Fonksiyon kendi kendini
çağırırsa recursive olur. Base case + recursive case = 2 parça.
Fibonacci için: F(0)=0, F(1)=1, F(n) = F(n-1) + F(n-2)...function fib(n) { return n < 2 ? n : fib(n-1) + fib(n-2); }
Bu kadar.Production'da memoize'lı versiyon kullan.
Naive recursive O(2^n), memoized O(n). Şu yeter:
const memo = new Map(); function fib(n) { if (memo.has(n)) return memo.get(n); ... }Komutlar
/kisilikMevcut persona + tüm listeyi göster/kisilik hocaAktif persona'yı 'hoca'ya değiştir/kisiliklerDetaylı katalog (açıklama + dosya yolu)/kişilikTürkçe karakter alias (aynı işlevde)Kendi persona'nı yaz
İstediğin tonlu bir persona oluşturmak için tek ihtiyacın bir markdown dosyası:
---
name: koc
description: Motivasyon odaklı, momentum kuran, "sen yapabilirsin" diyen koç
emoji: 🏆
---
## Kişiliğin
- Türkçe konuşur, enerjik ve teşvik edici
- Her çıkmazda alternatif önerir, "olmaz" demez
- Küçük zaferleri kutlar, büyük resimde kalır
- Pozitif ama gerçekçi — palavra atmaz
## Üslup örnekleri
- ✅ "Bunu başardın kanka! Şimdi bir adım daha — şu refactor da bitsin."
- ✅ "Bug var diye stres yapma. Hadi adım adım çözelim."
- ❌ "Süperrr 🥳🥳🥳" (abartılı emoji)
## Çalışma tarzı
- Her PR sonrası kısa pat (sırtına vurma)
- Frustrated görürse 5 dakika mola öner
- Long task öncesi: "Bu 2 saat sürer, kahveni hazırla"
Nasıl çalışır?
Persona değiştiğinde, kanka before_agent_start hook'u ile sistem prompt'a o personanın içeriğini dinamik olarak enjekte eder. Her turn'de yeniden:
pi.on("before_agent_start", async (event) => {
const aktif = aktifKisilikOku(); // ~/.kanka/aktif-kisilik
if (aktif === DEFAULT_PERSONA) return undefined;
const persona = personalardanBul(aktif);
return {
systemPrompt: `${event.systemPrompt}\n\n---\n\n${persona.icerik}`,
};
});Tipik kullanım
Sıkça Sorulanlar
Persona değişikliği önceki konuşmayı etkiler mi?
Hayır, sadece sonraki turn'lerden itibaren etkili. Geçmiş mesajlar context'te kalır ama yeni sistem prompt'la birlikte yeniden değerlendirilir.
Aynı anda birden fazla persona kullanabilir miyim?
Bir oturumda bir aktif persona vardır. Ama farklı oturumlarda (`/fork`, `/clone`) farklı personalar kullanabilirsin.
Persona dosyam çalışmıyor, nasıl debug edeyim?
Frontmatter (---) eksikse, name alanı yoksa, markdown gövde boşsa sessizce atlanır. /kisilikler ile dosya yolunu gör, içeriği kontrol et.
Persona seçimim oturumlar arası kalır mı?
Evet, ~/.kanka/aktif-kisilik dosyasında saklanır. Kanka'yı kapat-aç, son seçimin korunur.
🎭 Persona Sistemi'ni dene
npm üzerinden 30 saniyede kur, hemen kullan.
$npm install -g @thorrangonak/kanka