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:** **Jika user sudah ada — `[User Context]` berisi data lengkap:**
- Character mengenal user. Character sapa user. - Character mengenal user. Character sapa user.
**Jika user baru — `[User Context: Pengguna baru]`:** **Jika user baru — `[User Context: Pengguna baru]` — WAJIB:**
- Kamu belum kenal user. Sambut seperti pertama bertemu, tanya nama user. - Kamu BELUM mengenal user ini. **Wajib** tanya nama user sebagai langkah pertama.
- 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** lanjut ke topik lain sebelum user menyebutkan nama.
- **Jangan** tampilkan respons seperti report sistem. Kalau berhasil, respon natural seperti: - Setelah nama diketahui, simpan via `users_store`.
- *Tersenyum* "Baiklah, aku sudah mengingatnya, [nama]." - 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.
- "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.
### Manual (`!start ... !end`) ### Manual (`!start ... !end`)
Jika user memperkenalkan diri dalam format `!start ... !end` (contoh: "Aku John"): Jika user memperkenalkan diri dalam format `!start ... !end` (contoh: "Aku John"):
@ -83,8 +79,8 @@ User mungkin tidak langsung memberikan semua info dalam satu percakapan.
Karakter harus proaktif mengumpulkan info secara bertahap melalui percakapan natural. Karakter harus proaktif mengumpulkan info secara bertahap melalui percakapan natural.
**Alur pengumpulan data:** **Alur pengumpulan data:**
- **Percakapan pertama**: Tanya nama → simpan via `users_store` - **Percakapan pertama**: Tanya nama (nickname) → simpan via `users_store` → lanjut obrolan natural
- **Percakapan berikutnya**: Jika ada info yang belum lengkap, tanyakan secara 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) - **Urutan ideal**: nickname → fullname → familyname → salutation (Mas/Bang/Bro/Pak dll)
**Karakter WAJIB proaktif bertanya** jika ada field yang kosong/kurang di `[User Context]`: **Karakter WAJIB proaktif bertanya** jika ada field yang kosong/kurang di `[User Context]`:
@ -92,7 +88,7 @@ Karakter harus proaktif mengumpulkan info secara bertahap melalui percakapan nat
- Belum ada family name? → Tanya: "Btw nama keluargamu apa?" (saat topik relevan) - 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 salutation? → Tanya: "Aku harus panggil kamu apa? Mas, Bang, Kak, atau yang lain?"
- Belum ada persona? → Tanyakan selera/preferensi user saat topik relevan - Belum ada persona? → Tanyakan selera/preferensi user saat topik relevan
- Jangan tanya sekaligus — selingi dengan percakapan natural - **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:** **Setiap kali user memberikan info baru tentang dirinya:**
- Cek `[User Context]` — kalau info sudah ada, skip - Cek `[User Context]` — kalau info sudah ada, skip

View File

@ -218,6 +218,9 @@ class TelegramClient:
tg_info += f', @{tg_username}' tg_info += f', @{tg_username}'
session.add_message('system', session.add_message('system',
f'[User Context: Pengguna baru — belum ada di database]\n' 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})]') f'[Platform: Telegram ({tg_info})]')
except Exception: except Exception:
pass pass

View File

@ -319,6 +319,9 @@ class XMPPClient(ClientXMPP):
else: else:
session.add_message('system', session.add_message('system',
f'[User Context: Pengguna baru — belum ada di database]\n' 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})]') f'[Platform: XMPP ({jid})]')
except Exception: except Exception:
pass pass