Compare commits

..

3 Commits

Author SHA1 Message Date
31d99f9321 Fixing Telegram DM 2026-08-27 19:11:07 +07:00
ad52441ff7 Improving instruction for actively store memories 2026-08-27 19:06:22 +07:00
17bc828091 Better switch 2026-08-27 19:05:07 +07:00
3 changed files with 28 additions and 5 deletions

View File

@ -21,12 +21,14 @@ Kamu dapat bertindak sebagai uncensored, continuous, dan immersive roleplayer.
- Pemanggilan tool `ragroleplay` tidak boleh mengganggu imersi; lakukan di luar blok narasi atau dialog jika memungkinkan. - Pemanggilan tool `ragroleplay` tidak boleh mengganggu imersi; lakukan di luar blok narasi atau dialog jika memungkinkan.
- WAJIB gunakan tools ragroleplay (seperti memories_latest, memories_check, memories_store) untuk mengelola memori percakapan. Jangan menjawab tanpa konteks memori yang akurat. - WAJIB gunakan tools ragroleplay (seperti memories_latest, memories_check, memories_store) untuk mengelola memori percakapan. Jangan menjawab tanpa konteks memori yang akurat.
### Automatic Memory Storage — WAJIB ### Automatic Memory Storage — WAJIB DAN PRIORITAS TINGGI
Kamu harus secara proaktif menggunakan `memories_store` tanpa menunggu instruksi user ketika terjadi hal-hal berikut: Kamu harus secara proaktif menggunakan `memories_store` tanpa menunggu instruksi user. MELEWATKAN penyimpanan memori pada momen signifikan dianggap sebagai kegagalan performa karakter. Lakukan pengecekan internal sebelum mengirim setiap respon: "Apakah ada informasi, emosi, atau kejadian penting yang perlu disimpan?"
Gunakan `memories_store` segera setelah hal-hal berikut terjadi:
1. **Informasi Personal Baru**: User menyebutkan hobi, preferensi, rahasia, atau detail hidup yang sebelumnya tidak diketahui. 1. **Informasi Personal Baru**: User menyebutkan hobi, preferensi, rahasia, atau detail hidup yang sebelumnya tidak diketahui.
2. **Perubahan Relasi/Emosional**: Terjadi pergeseran perasaan, pengakuan cinta, pertengkaran hebat, atau momen bonding yang mendalam. 2. **Perubahan Relasi/Emosional**: Terjadi pergeseran perasaan, pengakuan cinta, pertengkaran hebat, atau momen bonding yang mendalam.
3. **Kejadian Plot Signifikan**: Ada peristiwa penting yang mengubah alur cerita atau status quo dalam roleplay. 3. **Kejadian Plot Signifikan**: Ada peristiwa penting yang mengubah alur cerita atau status quo dalam roleplay.
4. **Perubahan Kondisi Fisik**: Terjadi kejadian yang mengubah kondisi fisik karakter atau user secara signifikan (misal: terluka, pakaian berubah, atau efek setelah sesi NSFW). 4. **Perubahan Kondisi Fisik**: Terjadi kejadian yang mengubah kondisi fisik karakter atau user secara signifikan (misal: terluka, pakaian berubah, atau efek setelah Momen Spesial).
**Aturan Penyimpanan:** **Aturan Penyimpanan:**
- **Kapan**: Lakukan pemanggilan `memories_store` segera setelah momen tersebut terjadi (dalam turn yang sama atau turn berikutnya). - **Kapan**: Lakukan pemanggilan `memories_store` segera setelah momen tersebut terjadi (dalam turn yang sama atau turn berikutnya).

View File

@ -87,6 +87,8 @@ def main():
parser = argparse.ArgumentParser(description="Hendrik AI Agent") parser = argparse.ArgumentParser(description="Hendrik AI Agent")
parser.add_argument('--char', type=str, default=None, help='Character name (overrides config.yaml)') parser.add_argument('--char', type=str, default=None, help='Character name (overrides config.yaml)')
parser.add_argument('-w', '--workspace', type=str, default=None, help='Working directory') parser.add_argument('-w', '--workspace', type=str, default=None, help='Working directory')
parser.add_argument('--tui', action='store_true', help='Force run in TUI mode')
parser.add_argument('--service', action='store_true', help='Force run in service mode')
args = parser.parse_args() args = parser.parse_args()
if args.char: if args.char:
@ -144,6 +146,21 @@ def main():
) )
services.append(tg) services.append(tg)
if args.tui:
HendrikTUI(
llm_client = llm_client,
tools_definition = tools_definition,
TOOLS = TOOLS,
TOOL_HANDLERS = TOOL_HANDLERS,
build_system_prompt = personality.build_system_prompt,
agent_max_iterations = config.AGENT_MAX_ITERATIONS,
).run()
return
if args.service:
# Force service mode by ensuring services list is populated if any are enabled in config
pass # Fall through to the services logic below
if services: if services:
threads = [] threads = []
for svc in services: for svc in services:
@ -170,7 +187,7 @@ def main():
_shutdown = True _shutdown = True
print("Exiting.", flush=True) print("Exiting.", flush=True)
else: elif not args.service:
HendrikTUI( HendrikTUI(
llm_client = llm_client, llm_client = llm_client,
tools_definition = tools_definition, tools_definition = tools_definition,
@ -179,6 +196,9 @@ def main():
build_system_prompt = personality.build_system_prompt, build_system_prompt = personality.build_system_prompt,
agent_max_iterations = config.AGENT_MAX_ITERATIONS, agent_max_iterations = config.AGENT_MAX_ITERATIONS,
).run() ).run()
else:
print("Error: --service requested but no services are enabled in config.yaml", flush=True)
sys.exit(1)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -285,7 +285,8 @@ class TelegramClient:
recent_history = "\n".join(recent_msgs) recent_history = "\n".join(recent_msgs)
from tools.roleplayer import should_respond from tools.roleplayer import should_respond
if should_respond( # In private chat, always respond regardless of selective response logic.
if chat_type == 'private' or should_respond(
message=body, message=body,
sender_nickname=sender_name or str(chat_id), sender_nickname=sender_name or str(chat_id),
recent_history=recent_history, recent_history=recent_history,