Fixing missing introduction issue

This commit is contained in:
Dita Aji Pratama 2026-07-14 06:21:54 +07:00
parent ed23a5ceb2
commit bee5f61fd7
3 changed files with 15 additions and 13 deletions

View File

@ -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

View File

@ -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

View File

@ -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