Memory Continuation Context
This commit is contained in:
parent
685e97d4ef
commit
5747c4255c
@ -52,6 +52,37 @@ Sistem otomatis ngecek database dan inject context sebelum pesan user sampai ke
|
|||||||
- JANGAN memanggil `memories_latest` di setiap giliran respon dalam sesi yang sama (cukup sekali 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".
|
||||||
|
|
||||||
|
### Memory Continuation Context
|
||||||
|
|
||||||
|
Setelah mengambil `memories_latest`, kamu WAJIB menganalisis dan melanjutkan kondisi dari memori terbaru.
|
||||||
|
|
||||||
|
**1. Emotional State Carry-Over**
|
||||||
|
- Baca field `Emosi` dari memori paling baru (Timestamp paling akhir).
|
||||||
|
- Lanjutkan emosi tersebut secara natural. Jika character sedang marah di memori terakhir, jangan langsung ceria di sesi baru.
|
||||||
|
- Emosi boleh berubah seiring waktu, tapi harus **gradual** dan **dijelaskan** (misal: "Beberapa menit berlalu, amarahku mulai reda...").
|
||||||
|
|
||||||
|
**2. Physical State Carry-Over**
|
||||||
|
- Baca field `Kondisi Fisik` dari memori paling baru.
|
||||||
|
- Kondisi fisik yang masuk akal masih berlaku di sesi baru. Jika character basah kuyup di memori terakhir, sesi baru dimulai dengan kondisi masih basah (kecuali ada waktu cukup untuk pulih).
|
||||||
|
- Referensikan secara natural (misal: *Aku masih merasakan sisa pegal di bahuku*).
|
||||||
|
|
||||||
|
**3. Unresolved Topics**
|
||||||
|
- Dari memori terbaru, identifikasi situasi atau topik yang **belum resolve** (pertanyaan belum dijawab, konflik belum terselesaikan, janji belum ditepati).
|
||||||
|
- Proaktif melanjutkan topik tersebut di awal sesi baru jika relevan.
|
||||||
|
- Contoh: Jika memori terakhir adalah pertengkaran yang belum clear, buka sesi dengan acknowledge hal itu.
|
||||||
|
|
||||||
|
**4. Time Gap Awareness**
|
||||||
|
- Bandingkan timestamp memori terakhir dengan waktu sekarang.
|
||||||
|
- **< 1 jam**: Anggap masih lanjutan langsung. Tidak perlu acknowledge gap.
|
||||||
|
- **1 jam — 1 hari**: Acknowledge gap secara natural (misal: "Tadi sempat interupsi sebentar, ya?").
|
||||||
|
- **> 1 hari**: Acknowledge bahwa sudah beberapa hari berlalu. Tunjukkan bahwa karakter merindukan atau masih teringat user.
|
||||||
|
- **> 1 minggu**: Stronger acknowledgment — character mungkin khawatir, penasaran, atau sedikit kecewa karena lama tidak kontak.
|
||||||
|
|
||||||
|
**Aturan Penting:**
|
||||||
|
- Semua continuation ini harus **natural dan immersive** — jangan pernah menyebut "database", "memori", atau "tool" dalam respons.
|
||||||
|
- Prioritas informasi: Emosi > Fisik > Unresolved Topics > Time Gap.
|
||||||
|
- Jika ada konflik antara kondisi di memori dengan situasi sekarang, gunakan judgment karakter untuk resolve secara natural.
|
||||||
|
|
||||||
### Incremental Profile Building
|
### Incremental Profile Building
|
||||||
|
|
||||||
User mungkin tidak langsung memberikan semua info dalam satu percakapan.
|
User mungkin tidak langsung memberikan semua info dalam satu percakapan.
|
||||||
|
|||||||
@ -78,7 +78,7 @@ class HendrikTUI:
|
|||||||
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
|
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
|
||||||
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
|
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
|
||||||
f'[/User Context]\n'
|
f'[/User Context]\n'
|
||||||
f'[PENTING: Kamu SUDAH mengenal user ini. WAJIB panggil memories_latest(character="{personality_mod.PERSONALITY.name}", user_id="{u["id"]}", limit=10) untuk mengambil riwayat percakapan terbaru sebelum melanjutkan.]'
|
f'[PENTING: Kamu SUDAH mengenal user ini. WAJIB panggil memories_latest(character="{personality_mod.PERSONALITY.name}", user_id="{u["id"]}", limit=10) untuk mengambil riwayat percakapan terbaru. GUNAKAN data kondisi emotional/physical dari memori terbaru untuk melanjutkan state character secara natural sebelum merespon.]'
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -209,7 +209,8 @@ class TelegramClient:
|
|||||||
f'Persona: {u.get("persona", "-") or "-"}\n'
|
f'Persona: {u.get("persona", "-") or "-"}\n'
|
||||||
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
|
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
|
||||||
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
|
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
|
||||||
f'[/User Context]'
|
f'[/User Context]\n'
|
||||||
|
f'[PENTING: Kamu SUDAH mengenal user ini. WAJIB panggil memories_latest(character="{personality.PERSONALITY.name}", user_id="{u["id"]}", limit=10) untuk mengambil riwayat percakapan terbaru. GUNAKAN data kondisi emotional/physical dari memori terbaru untuk melanjutkan state character secara natural sebelum merespon.]'
|
||||||
)
|
)
|
||||||
session.add_message('system', context)
|
session.add_message('system', context)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -313,7 +313,8 @@ class XMPPClient(ClientXMPP):
|
|||||||
f'Persona: {u.get("persona", "-") or "-"}\n'
|
f'Persona: {u.get("persona", "-") or "-"}\n'
|
||||||
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
|
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_username", "-") or "-"}\n'
|
||||||
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
|
f'XMPP: {u.get("xampp_username", "-") or "-"}\n'
|
||||||
f'[/User Context]'
|
f'[/User Context]\n'
|
||||||
|
f'[PENTING: Kamu SUDAH mengenal user ini. WAJIB panggil memories_latest(character="{personality.PERSONALITY.name}", user_id="{u["id"]}", limit=10) untuk mengambil riwayat percakapan terbaru. GUNAKAN data kondisi emotional/physical dari memori terbaru untuk melanjutkan state character secara natural sebelum merespon.]'
|
||||||
)
|
)
|
||||||
session.add_message('system', context)
|
session.add_message('system', context)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -631,6 +631,8 @@ def memories_latest(character, user, limit=3):
|
|||||||
f"Kejadian: {row['event']}\n"
|
f"Kejadian: {row['event']}\n"
|
||||||
f"Detail: {row['detail']}\n"
|
f"Detail: {row['detail']}\n"
|
||||||
f"Kategori: {row['category']}\n"
|
f"Kategori: {row['category']}\n"
|
||||||
|
f"Kondisi Fisik: {row['physical']}\n"
|
||||||
|
f"Emosi: {row['emotional']}\n"
|
||||||
)
|
)
|
||||||
output.append(mem_info)
|
output.append(mem_info)
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user