feat(ai-moderation): personality-rich user/channel profiling & memory-aware analysis

- moderationPrompt.ts: Add PERSONALITY & MEMORY section instructing LLM to
  use user_profile and channel_culture in analysis, with 3 new few-shot
  examples (normal profile use, deviation detection, don't overfit)
- userProfileLearner.ts: Richer personality summary prompt — asks for
  communication style, passion topics, unique habits/signature traits,
  social dynamics, and writes in warm observer prose
- cultureLearner.ts: Richer channel culture summary — asks for 'vibe',
  inside jokes, social norms, dynamics. Writes in anthropologist style
This commit is contained in:
MythEclipse
2026-06-21 19:11:11 +07:00
parent 21b818a344
commit e5fa2b3f30
3 changed files with 116 additions and 17 deletions
@@ -44,16 +44,45 @@ async function learnChannelCulture(
.map((m) => `${m.username}: ${m.content}`)
.join("\n");
const prompt = `Anda adalah AI ahli perilaku sosiologis dan budaya online.
Tugas Anda adalah merangkum budaya (culture) dari sebuah channel chat berdasarkan riwayat pesan-pesan yang dianggap bersih (clean/tidak melanggar).
const prompt = `Anda adalah AI ahli sosiologi digital dan pembaca budaya online.
Tugas Anda adalah merangkum KEPRIBADIAN SEBUAH CHANNEL — bagaimana "rasanya" berada di channel ini,
siapa saja anggotanya, dan norma tidak tertulis apa yang berlaku.
Pesan-pesan terakhir:
Pesan-pesan terakhir dari channel (hanya pesan bersih/clean):
<messages>
${messagesText}
</messages>
Berdasarkan pesan-pesan di atas, buatlah ringkasan singkat (maksimal 3 paragraf) mengenai gaya bahasa, topik obrolan, dan norma sosial di channel ini. Ringkasan ini akan digunakan oleh sistem AI moderasi untuk memahami konteks dan "inside jokes" yang wajar di channel ini.
Jangan menambahkan teks basa-basi, langsung berikan ringkasannya.`;
Berdasarkan pesan-pesan di atas, buatlah ringkasan singkat (maksimal 4 paragraf)
mengenai:
1. **"VIBE" channel** — Bagaimana suasana channel ini? Serius dan profesional? Santai dan penuh tawa?
Campuran? Apakah channel terasa hangat, sarkastik, chaos, atau tertib? Jelaskan "feel"-nya.
2. **Gaya bahasa dan inside jokes** — Bahasa apa yang dominan (Indonesia/Inggris/campuran)?
Apakah ada slang, meme, atau referensi yang khas di channel ini? Istilah-istilah teknis atau
inside joke yang sering muncul? Apakah orang-orang di sini saling sapa atau langsung ke topik?
3. **Topik utama & aktivitas** — Apa yang biasanya dibahas di channel ini? Coding problem? Ngobrol
santai? Sharing berita? Debat? Apakah ada ritual atau rutinitas (misal "pagi bro", "makan siang")?
4. **Dinamika sosial & norma tidak tertulis** — Siapa anggota yang paling aktif? Apakah ada tokoh
sentral atau "pengurus" informal? Apakah channel ini ramah ke pendatang baru atau lebih eksklusif?
Norma apa yang berlaku (misal: no politics, no NSFW, strict on-topic, atau bebas)?
**GAYA RINGKASAN**: Tulislah seperti seorang antropolog yang sedang mendeskripsikan sebuah desa
digital dengan bahasa Indonesia yang hidup dan natural. JANGAN gunakan format bullet point dalam
output — tulis dalam bentuk prosa paragraf yang mengalir. Jangan basa-basi, langsung berikan
ringkasannya.
Contoh gaya yang baik: "Channel ini adalah pusat komunitas developer dengan vibe santai dan
kekeluargaan. Bahasa dominan campuran Indonesia-Inggris dengan banyak istilah teknis React dan
Rust. Inside joke yang sering muncul adalah soal 'production bug' dan 'deploy Friday' — mereka
punya tradisi saling ledek kalau ada yang nge-deploy pas Jumat sore. Topik utama adalah debug
help, code review, dan kadang curhat karir. Channel sangat ramah ke pendatang baru — setiap
pertanyaan baru selalu direspons dengan antusias. Norma tidak tertulis: dilarang keras promosi
judi/NSFW, tapi selain itu bebas. Ada dua anggota senior yang jadi 'mom' channel—sabar jelasin
hal dasar ke newbie tanpa judge."`;
try {
const completion = await llmChat({