diff --git a/src/kimi_cli/soul/kimisoul.py b/src/kimi_cli/soul/kimisoul.py index 9365c11b9..dee575f1b 100644 --- a/src/kimi_cli/soul/kimisoul.py +++ b/src/kimi_cli/soul/kimisoul.py @@ -64,6 +64,7 @@ from kimi_cli.soul.message import check_message, system, system_reminder, tool_result_to_message from kimi_cli.soul.slash import registry as soul_slash_registry from kimi_cli.soul.toolset import KimiToolset +from kimi_cli.exception import MCPRuntimeError from kimi_cli.tools.dmail import NAME as SendDMail_NAME from kimi_cli.tools.utils import ToolRejectedError from kimi_cli.utils.logging import logger @@ -683,6 +684,8 @@ async def _agent_loop(self) -> TurnOutcome: wire_send(MCPLoadingBegin()) try: await self.wait_for_background_mcp_loading() + except MCPRuntimeError as e: + logger.warning("MCP loading failed, continuing without MCP tools: {}", e) finally: if loading: wire_send(StatusUpdate(mcp_status=self._mcp_status_snapshot())) diff --git a/src/kimi_cli/web/runner/process.py b/src/kimi_cli/web/runner/process.py index 91bfe7eb0..c0f2ff3b3 100644 --- a/src/kimi_cli/web/runner/process.py +++ b/src/kimi_cli/web/runner/process.py @@ -355,6 +355,8 @@ async def _read_loop(self) -> None: raise except Exception as e: logger.warning(f"Unexpected error in read loop: {e.__class__.__name__} {e}") + self._in_flight_prompt_ids.clear() + await self._emit_status("error", reason="read_loop_error", detail=str(e)) async def _handle_out_message(self, message: JSONRPCOutMessage) -> None: """Handle outbound message from worker."""