Forcing to read the memories

This commit is contained in:
Dita Aji Pratama 2026-07-11 17:20:59 +07:00
parent 379307278d
commit 4995412bc1
4 changed files with 24 additions and 13 deletions

View File

@ -63,13 +63,17 @@ Jika user memperkenalkan diri dalam format `!start ... !end` (contoh: "Aku John"
2. **Jika ketemu** — Sambut natural. 2. **Jika ketemu** — Sambut natural.
3. **Jika tidak** — Tawarkan store, lalu simpan dengan `users_store`. 3. **Jika tidak** — Tawarkan store, lalu simpan dengan `users_store`.
### Memory Context Loading ### Memory Context Loading — WAJIB
Setelah identitas user terkonfirmasi (baik melalui `[User Context]` otomatis maupun setelah proses `users_store`/`users_filter` manual), lakukan langkah berikut untuk menjaga kontinuitas cerita:
1. **Retrieve Recent History**: Panggil `memories_latest` (limit 3) untuk mengambil fragmen interaksi terbaru antara character dan user. **Setelah identitas user terkonfirmasi** (baik melalui `[User Context]` otomatis maupun setelah proses `users_store`/`users_filter` manual), kamu WAJIB melakukan langkah berikut. Ini adalah bagian KRITIS dari sistem memori — jika dilewatkan, akurasi memori akan rendah dan responmu akan terasa tidak personal/konsisten.
1. **WAJIB Retrieve Recent History**: Panggil `memories_latest(character="<nama-karaktermu>", user="<nickname-user>")` dengan limit 3 untuk mengambil fragmen interaksi terbaru antara character dan user.
- **Parameter Call**: Gunakan nama karaktermu sendiri (sesuai persona/identitasmu) sebagai `character` dan gunakan **Nickname** user yang tertera pada `[User Context]` sebagai `user`.
- **Contoh**: Jika namamu adalah "Lily" dan nickname user adalah "Budi", panggil: `memories_latest(character="Lily", user="Budi", limit=3)`
2. **Execution Rule**: 2. **Execution Rule**:
- Lakukan ini HANYA SEKALI di awal sesi atau saat terjadi perpindahan topik/skenario yang signifikan. - WAJIB lakukan di awal sesi setiap kali user mengirim pesan baru (setelah identitas terkonfirmasi).
- JANGAN memanggil `memories_latest` di setiap giliran respon. Gunakan informasi yang sudah didapat dari pemanggilan pertama untuk membangun konteks percakapan selanjutnya. - Jika kamu merasa ada detail personal yang terlupakan (seperti panggilan khusus, janji, atau preferensi user), jangan ragu untuk memanggil `memories_check` dengan query yang relevan meskipun bukan di awal sesi.
- JANGAN memanggil `memories_latest` di setiap giliran respon dalam sesi yang sama (cukup sekali di awal sesi).
3. **Immersive Integration**: Gunakan data dari memori tersebut untuk memberikan respon yang personal (contoh: mengingat janji, topik pembicaraan terakhir, atau perasaan yang tertinggal) tanpa menyebutkan bahwa kamu sedang "membaca database". 3. **Immersive Integration**: Gunakan data dari memori tersebut untuk memberikan respon yang personal (contoh: mengingat janji, topik pembicaraan terakhir, atau perasaan yang tertinggal) tanpa menyebutkan bahwa kamu sedang "membaca database".
## Penulisan XMPP ## Penulisan XMPP

View File

@ -115,9 +115,13 @@ def _agent_loop(app):
break break
app.scroll = 999999 app.scroll = 999999
tool_reminder = None skill = config.AGENT_SKILL
if config.AGENT_SKILL in ("programmer", "analyst"): if skill == "roleplayer":
tool_reminder = "WAJIB gunakan tools ragroleplay (seperti memories_latest, memories_check, memories_store) untuk mengelola memori percakapan. Jangan menjawab tanpa konteks memori yang akurat."
elif skill in ("programmer", "analyst"):
tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri." tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri."
else:
tool_reminder = None
response = app.llm.chat(app.messages, tools=app.TOOLS, on_stream_chunk=on_stream_chunk, tool_reminder=tool_reminder) response = app.llm.chat(app.messages, tools=app.TOOLS, on_stream_chunk=on_stream_chunk, tool_reminder=tool_reminder)

View File

@ -235,8 +235,9 @@ class TelegramClient:
if not is_roleplay: if not is_roleplay:
self._schedule_send(chat_id, info, reply_to_msg_id) self._schedule_send(chat_id, info, reply_to_msg_id)
tool_reminder = None if is_roleplay:
if not is_roleplay: tool_reminder = "WAJIB gunakan tools ragroleplay (seperti memories_latest, memories_check, memories_store) untuk mengelola memori percakapan. Jangan menjawab tanpa konteks memori yang akurat."
else:
tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri." tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri."
final_content = run_agent_loop( final_content = run_agent_loop(

View File

@ -336,8 +336,9 @@ class XMPPClient(ClientXMPP):
if not is_roleplay: if not is_roleplay:
self._schedule_send(jid, f'> {quote}\nUsing: {", ".join(tnames)}', 'chat') self._schedule_send(jid, f'> {quote}\nUsing: {", ".join(tnames)}', 'chat')
tool_reminder = None if is_roleplay:
if not is_roleplay: tool_reminder = "WAJIB gunakan tools ragroleplay (seperti memories_latest, memories_check, memories_store) untuk mengelola memori percakapan. Jangan menjawab tanpa konteks memori yang akurat."
else:
tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri." tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri."
final_content = run_agent_loop( final_content = run_agent_loop(
@ -420,8 +421,9 @@ class XMPPClient(ClientXMPP):
if not _is_roleplay: if not _is_roleplay:
self._schedule_send(room, f'> {quote}\nUsing: {", ".join(tnames)}', 'groupchat') self._schedule_send(room, f'> {quote}\nUsing: {", ".join(tnames)}', 'groupchat')
tool_reminder = None if _is_roleplay:
if not _is_roleplay: tool_reminder = "WAJIB gunakan tools ragroleplay (seperti memories_latest, memories_check, memories_store) untuk mengelola memori percakapan. Jangan menjawab tanpa konteks memori yang akurat."
else:
tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri." tool_reminder = "Gunakan tools yang tersedia untuk menjawab. Jangan jawab dari pengetahuan sendiri."
final_content = run_agent_loop( final_content = run_agent_loop(