From 19557c322731bb8bd87c70ccb0e1218b1aeeaca7 Mon Sep 17 00:00:00 2001 From: huanghuoguoguo <1051233107@qq.com> Date: Sun, 17 May 2026 10:49:27 +0800 Subject: [PATCH] fix: log agent runner best-effort failures --- src/langbot/pkg/agent/runner/resource_builder.py | 14 +++++++------- src/langbot/pkg/agent/runner/result_normalizer.py | 6 +++--- tests/unit_tests/agent/test_registry.py | 6 +++++- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/langbot/pkg/agent/runner/resource_builder.py b/src/langbot/pkg/agent/runner/resource_builder.py index 67045704..4cf539ea 100644 --- a/src/langbot/pkg/agent/runner/resource_builder.py +++ b/src/langbot/pkg/agent/runner/resource_builder.py @@ -112,8 +112,8 @@ class AgentResourceBuilder: 'model_type': getattr(model.model_entity, 'model_type', None), 'provider': getattr(model.provider_entity, 'name', None) if hasattr(model, 'provider_entity') else None, }) - except Exception: - pass + except Exception as e: + self.ap.logger.warning(f'Failed to build model resource {model_uuid}: {e}') # Add fallback models if present fallback_uuids = query.variables.get('_fallback_model_uuids', []) @@ -126,8 +126,8 @@ class AgentResourceBuilder: 'model_type': model.model_entity.model_type, 'provider': model.provider_entity.name if hasattr(model, 'provider_entity') else None, }) - except Exception: - pass + except Exception as e: + self.ap.logger.warning(f'Failed to build fallback model resource {fb_uuid}: {e}') return models @@ -195,8 +195,8 @@ class AgentResourceBuilder: 'kb_name': kb.get_name(), 'kb_type': kb.knowledge_base_entity.kb_type if hasattr(kb.knowledge_base_entity, 'kb_type') else None, }) - except Exception: - pass + except Exception as e: + self.ap.logger.warning(f'Failed to build knowledge base resource {kb_uuid}: {e}') return kb_resources @@ -209,4 +209,4 @@ class AgentResourceBuilder: return { 'plugin_storage': 'plugin' in storage_perms, 'workspace_storage': 'workspace' in storage_perms, - } \ No newline at end of file + } diff --git a/src/langbot/pkg/agent/runner/result_normalizer.py b/src/langbot/pkg/agent/runner/result_normalizer.py index 80d925b5..85fa482d 100644 --- a/src/langbot/pkg/agent/runner/result_normalizer.py +++ b/src/langbot/pkg/agent/runner/result_normalizer.py @@ -81,8 +81,8 @@ class AgentResultNormalizer: if isinstance(content, str) and len(content) > 10000: # Keep reasonable length data['chunk'] = {'role': 'assistant', 'content': content[:10000] + '...[truncated]'} - except Exception: - pass + except Exception as e: + self.ap.logger.warning(f'Failed to validate runner {descriptor.id} result size: {e}') # Handle each result type data = result_dict.get('data', {}) @@ -181,4 +181,4 @@ class AgentResultNormalizer: msg = provider_message.Message.model_validate(message_data) return msg except Exception as e: - raise RunnerProtocolError(descriptor.id, f'Invalid message schema: {e}') \ No newline at end of file + raise RunnerProtocolError(descriptor.id, f'Invalid message schema: {e}') diff --git a/tests/unit_tests/agent/test_registry.py b/tests/unit_tests/agent/test_registry.py index 3ae064fb..d737f7d4 100644 --- a/tests/unit_tests/agent/test_registry.py +++ b/tests/unit_tests/agent/test_registry.py @@ -243,7 +243,11 @@ class TestRegistryMetadataForPipeline: # extracted config at top level. assert len(stages) == 1 assert stages[0]['name'] == 'plugin:alice/my-agent/custom' - assert stages[0]['config'] == [{'name': 'param1', 'type': 'string'}] + assert stages[0]['config'] == [{ + 'name': 'param1', + 'type': 'string', + 'id': 'plugin:alice/my-agent/custom.param1', + }] class TestDescriptorValidation: