feat: preserve isolated visitor agent runtime

This commit is contained in:
张胜宇
2026-09-10 17:36:39 +08:00
parent 8e36a9941d
commit ba22a2220f
10 changed files with 154 additions and 17 deletions
@@ -51,6 +51,34 @@ async def test_execute_classifies_before_handle_and_attaches_result(governance)
assert result["intent"]["confidence"] == 0.9
@pytest.mark.asyncio
async def test_fixed_route_agent_skips_model_intent_classification(governance) -> None:
"""固定路由 Agent 不能因模型意图端点不可用而阻断服务。"""
definition = AgentDefinition(
agent_type="demo", version="1", allowed_roles=("customer",),
allowed_portals=("api",), requires_model_intent_classification=False,
)
factory = AgentFactory(
governance=governance,
intent_classifier=IntentClassifier(StubModel()),
intent_endpoint_resolver=StubResolver(),
)
factory.register(definition, lambda _context: DemoAgent(definition))
context = RequestContext(
user_id="1", trace_id="fixed-route", roles=("customer",), permissions=("agent:run",)
)
request = AgentRequest(
agent_type="demo", message="本地路由", session_id="s",
idempotency_key="fixed-route-request-0001",
)
events = [
event async for event in factory.create("demo", context).execute(request, context, "run")
]
assert events[-1].payload["result"]["result"]["intent"] is None
def test_business_agent_cannot_override_intent_governance() -> None:
with pytest.raises(TypeError, match="classify_intent"):
class InvalidAgent(BaseAgent):