Edit: prevent the FAISS/KeyError (or any extension error) from crashing agent loop at the agent.py level. The call to self.call_extensions("message_loop_prompts", ...) in prepare_prompt is now wrapped in a try/except block.

deci committed May 11, 2025 at 20:15 UTC 0e5647c31a30dd6259745f523bfa0287a9c2bb8f
1 file changed +13 -1
agent.py
+13 -1
@@ -363,7 +363,19 @@ class Agent:
363 loop_data.history_output = self.history.output()
364
365 # and allow extensions to edit them
366 - await self.call_extensions("message_loop_prompts", loop_data=loop_data)
366 + try:
367 + await self.call_extensions("message_loop_prompts", loop_data=loop_data)
368 + except Exception as e:
369 + error_message = errors.format_error(e)
370 + error_text = errors.error_text(e)
371 + self.context.log.log(
372 + type="error",
373 + heading="Extension Error",
374 + content=error_message,
375 + kvps={"text": error_text},
376 + )
377 + PrintStyle.error(error_message)
378 + self.hist_add_warning(error_message)
379
380 # extras (memory etc.)
381 extras: list[history.OutputMessage] = []