优化前端,优化前端指令,优化自定义控制

This commit is contained in:
minghanchen
2026-08-24 09:40:16 +08:00
parent fff7657fea
commit 8d05815773
130 changed files with 5543 additions and 2206 deletions
@@ -177,7 +177,7 @@ class SeatServiceIntegrationTests(unittest.TestCase):
route = next(event for event in result["trace_events"] if event["stage"] == "domain_route")
self.assertEqual(route["details"]["domains"], ["climate"])
def test_openai_unscoped_passenger_target_is_rewritten_to_driver_ch1(self) -> None:
def test_local_rules_precede_openai_for_unscoped_driver_console_command(self) -> None:
model_output = {
"detected_domains": ["seat"],
"requests": [
@@ -202,29 +202,24 @@ class SeatServiceIntegrationTests(unittest.TestCase):
"关闭座椅通风", "openai", context
)
self.assertEqual(parsed["decision_summary"], ["model-owned-plan"])
self.assertEqual(parsed["model_requests"], model_output["requests"])
self.assertEqual(parsed["actions"], [])
self.assertTrue(
any("默认选择主驾座椅" in item for item in parsed["decision_summary"])
)
self.assertEqual(len(parsed["model_requests"]), 1)
self.assertEqual(
parsed["deferred_requests"],
[
{
"domain": "seat",
"capability": "seat.set_driver_ventilation_native",
"target_scope": "driver",
"desired_change": "deactivate",
"requested_value": "off",
"parameters": {"state": "off"},
"reason": "model-owned-plan",
"execution_backend": "native_can",
}
],
parsed["model_requests"][0]["capability"],
"seat.set_driver_ventilation_native",
)
self.assertEqual(provider, f"openai:{self.service.openai.model}")
self.assertEqual(parsed["actions"], [])
self.assertEqual(len(parsed["deferred_requests"]), 1)
deferred = parsed["deferred_requests"][0]
self.assertEqual(deferred["capability"], "seat.set_driver_ventilation_native")
self.assertEqual(deferred["target_scope"], "driver")
self.assertEqual(deferred["parameters"], {"state": "off"})
self.assertEqual(deferred["execution_backend"], "native_can")
self.assertEqual(provider, "local_rules")
self.assertIsNone(notice)
interpret.assert_called_once_with(
"关闭座椅通风", context, self.service.capability_context
)
interpret.assert_not_called()
def test_explicit_gpt_failure_falls_back_to_local_rules(self) -> None:
self.service.openai.api_key = "test-key"
@@ -235,7 +230,7 @@ class SeatServiceIntegrationTests(unittest.TestCase):
side_effect=OpenAIIntentError("invalid_api_key"),
):
result = self.service.process(
"打开副驾座椅通风",
"打开副驾座椅通风,同时播放音乐",
"openai",
"conv-explicit-gpt-fallback",
)
@@ -250,6 +245,75 @@ class SeatServiceIntegrationTests(unittest.TestCase):
any("已降级到本地规则解析" in item for item in result["decision_summary"])
)
def test_local_first_calls_model_with_only_uncovered_clauses(self) -> None:
self.service.openai.api_key = "test-key"
model_output = {
"detected_domains": ["ambient_light"],
"requests": [
{
"domain": "ambient_light",
"capability": "ambient_light.set_power",
"target_scope": "vehicle",
"operation": "set",
"parameters": [{"name": "state", "value": "on"}],
"reason": "播放场景需要氛围灯。",
}
],
"ambiguities": [],
"decision_summary": ["仅补充本地规则未覆盖的播放场景。"],
"confidence": 0.9,
}
context = self.service.conversations.snapshot("conv-clause-fallback")
with patch.object(
self.service.openai, "interpret", return_value=model_output
) as interpret:
parsed, provider, notice = self.service._interpret(
"空调温度设置为25度,播放音乐",
"openai",
context,
)
interpret.assert_called_once_with(
"播放音乐", context, self.service.capability_context
)
self.assertEqual(
provider, f"local_rules+openai:{self.service.openai.model}"
)
self.assertIn("仅未覆盖", str(notice))
self.assertEqual(
[item["capability"] for item in parsed["native_can_actions"]],
["climate.set_temperature"],
)
self.assertEqual(
[item["capability"] for item in parsed["domain_actions"]],
["ambient_light.set_power"],
)
def test_local_first_compiles_memory_temperature_and_fan_without_model(self) -> None:
self.service.openai.api_key = "test-key"
with patch.object(self.service.openai, "interpret") as interpret:
result = self.service.process(
"主驾座椅调整到记忆位置3,空调温度设置为25度,风速设置为1档",
"openai",
"conv-local-memory-climate",
)
interpret.assert_not_called()
self.assertEqual(result["status"], "succeeded")
self.assertEqual(result["provider_used"], "local_rules")
self.assertEqual(
set(result["function_configs"]), {"native_seat", "native_climate"}
)
commands = [
command["signals"]["debug_command"]
for plan in result["command_plans"].values()
for command in plan["spec"]["commands"]
]
self.assertEqual(
commands,
["seat driver memory recall 3", "ac temp driver 25", "ac fan 1"],
)
def test_model_climate_request_completes_domain_loop(self) -> None:
model_output = {
"detected_domains": ["climate"],
@@ -316,7 +380,7 @@ class SeatServiceIntegrationTests(unittest.TestCase):
with patch.object(self.service.openai, "interpret", return_value=model_output):
result = self.service.process(
"副驾有点冷、有点闷",
"打开副驾座椅加热,播放音乐并把车内风量调舒适",
"openai",
"conv-model-partial",
)
@@ -328,6 +392,10 @@ class SeatServiceIntegrationTests(unittest.TestCase):
{"state": "on", "level": 1},
)
self.assertEqual(result["domain_state"]["climate"]["fan_level"], 2)
self.assertEqual(
result["provider_used"],
f"local_rules+openai:{self.service.openai.model}",
)
self.assertEqual(set(result["function_configs"]), {"seat", "climate"})
self.assertEqual(result["scene_config"]["kind"], "SceneConfig")