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).
|
||||
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
|
||||
|
||||
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'XMPP: {u.get("xampp_username", "-") or "-"}\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:
|
||||
return (
|
||||
|
||||
@ -209,7 +209,8 @@ class TelegramClient:
|
||||
f'Persona: {u.get("persona", "-") or "-"}\n'
|
||||
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_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)
|
||||
else:
|
||||
|
||||
@ -313,7 +313,8 @@ class XMPPClient(ClientXMPP):
|
||||
f'Persona: {u.get("persona", "-") or "-"}\n'
|
||||
f'Telegram: {u.get("telegram_id", "-") or "-"} / @{u.get("telegram_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)
|
||||
else:
|
||||
|
||||
@ -631,6 +631,8 @@ def memories_latest(character, user, limit=3):
|
||||
f"Kejadian: {row['event']}\n"
|
||||
f"Detail: {row['detail']}\n"
|
||||
f"Kategori: {row['category']}\n"
|
||||
f"Kondisi Fisik: {row['physical']}\n"
|
||||
f"Emosi: {row['emotional']}\n"
|
||||
)
|
||||
output.append(mem_info)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user