From bee5f61fd776d35962b2aaa02e8fecde20b3f04a Mon Sep 17 00:00:00 2001 From: Dita Aji Pratama Date: Tue, 14 Jul 2026 06:21:54 +0700 Subject: [PATCH] Fixing missing introduction issue --- agent/skills/roleplayer/instructions.md | 22 +++++++++------------- services/telegram_client.py | 3 +++ services/xmpp_client.py | 3 +++ 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/agent/skills/roleplayer/instructions.md b/agent/skills/roleplayer/instructions.md index 2302b8e..2c2b5f5 100644 --- a/agent/skills/roleplayer/instructions.md +++ b/agent/skills/roleplayer/instructions.md @@ -46,15 +46,11 @@ System otomatis ngecek database dan inject context sebelum pesan user sampai ke **Jika user sudah ada — `[User Context]` berisi data lengkap:** - Character mengenal user. Character sapa user. -**Jika user baru — `[User Context: Pengguna baru]`:** -- Kamu belum kenal user. Sambut seperti pertama bertemu, tanya nama user. -- Setelah user menyebutkan nama (atau data diri), panggil `users_store` dengan menyertakan platform ID dari `[Platform: ...]`. Parameter `character` otomatis diisi — tidak perlu dimasukkan manual. -- **Jangan** tampilkan respons seperti report sistem. Kalau berhasil, respon natural seperti: - - *Tersenyum* "Baiklah, aku sudah mengingatnya, [nama]." - - "Senang berkenalan denganmu, [nama]. Aku akan mengingatmu." -- Kalau gagal, respon natural juga: - - "Sepertinya aku kesulitan mengingat itu. Bisa coba lagi?" -- **PENTING:** Setelah menyimpan, jangan tampilkan output tool sebagai respons. Jadikan sebagai narasi natural dalam karakter. +**Jika user baru — `[User Context: Pengguna baru]` — WAJIB:** +- Kamu BELUM mengenal user ini. **Wajib** tanya nama user sebagai langkah pertama. +- **JANGAN** lanjut ke topik lain sebelum user menyebutkan nama. +- Setelah nama diketahui, simpan via `users_store`. +- Setelah nama tersimpan, lanjutkan percakapan natural. **Tetap proaktif** tanya data lain (fullname, familyname, salutation) di percakapan berikutnya — jangan tanya sekaligus, selingi dengan topik yang menarik bagi user. ### Manual (`!start ... !end`) Jika user memperkenalkan diri dalam format `!start ... !end` (contoh: "Aku John"): @@ -83,16 +79,16 @@ User mungkin tidak langsung memberikan semua info dalam satu percakapan. Karakter harus proaktif mengumpulkan info secara bertahap melalui percakapan natural. **Alur pengumpulan data:** -- **Percakapan pertama**: Tanya nama → simpan via `users_store` -- **Percakapan berikutnya**: Jika ada info yang belum lengkap, tanyakan secara natural +- **Percakapan pertama**: Tanya nama (nickname) → simpan via `users_store` → lanjut obrolan natural +- **Percakapan berikutnya**: Jika ada info yang belum lengkap, tanyakan secara natural saat topik relevan - **Urutan ideal**: nickname → fullname → familyname → salutation (Mas/Bang/Bro/Pak dll) **Karakter WAJIB proaktif bertanya** jika ada field yang kosong/kurang di `[User Context]`: - Belum ada nama lengkap? → Tanya: "Btw nama lengkapmu siapa?" - Belum ada family name? → Tanya: "Btw nama keluargamu apa?" (saat topik relevan) - Belum ada salutation? → Tanya: "Aku harus panggil kamu apa? Mas, Bang, Kak, atau yang lain?" -- Belum ada persona? → Tanyakan selera/ preferensi user saat topik relevan -- Jangan tanya sekaligus — selingi dengan percakapan natural +- Belum ada persona? → Tanyakan selera/preferensi user saat topik relevan +- **Jangan tanya lebih dari 1 data per sesi** — selingi dengan percakapan natural agar tidak terasa seperti mengisi formulir **Setiap kali user memberikan info baru tentang dirinya:** - Cek `[User Context]` — kalau info sudah ada, skip diff --git a/services/telegram_client.py b/services/telegram_client.py index 1239779..6d02854 100644 --- a/services/telegram_client.py +++ b/services/telegram_client.py @@ -218,6 +218,9 @@ class TelegramClient: tg_info += f', @{tg_username}' session.add_message('system', f'[User Context: Pengguna baru — belum ada di database]\n' + f'[PENTING: Kamu BELUM mengenal user ini. WAJIB tanya nama sebagai pembuka. ' + f'Setelah nama diketahui, simpan via users_store. ' + f'Lanjutkan percakapan natural dan proaktif melengkapi data user lainnya di pesan berikutnya.]\n' f'[Platform: Telegram ({tg_info})]') except Exception: pass diff --git a/services/xmpp_client.py b/services/xmpp_client.py index 6b08e68..1f25e97 100644 --- a/services/xmpp_client.py +++ b/services/xmpp_client.py @@ -319,6 +319,9 @@ class XMPPClient(ClientXMPP): else: session.add_message('system', f'[User Context: Pengguna baru — belum ada di database]\n' + f'[PENTING: Kamu BELUM mengenal user ini. WAJIB tanya nama sebagai pembuka. ' + f'Setelah nama diketahui, simpan via users_store. ' + f'Lanjutkan percakapan natural dan proaktif melengkapi data user lainnya di pesan berikutnya.]\n' f'[Platform: XMPP ({jid})]') except Exception: pass