Files
Hy-Memory/tests/coding/test_write_scene_routing.py
2026-10-16 16:26:27 +08:00

64 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
"""write(scene=None) 三分类结果必须真正选择 working/coding variant。"""
import asyncio
from types import SimpleNamespace
import pytest
from hy_memory.client import HyMemoryClient
def _messages():
return [
{"role": "user", "content": "修改 auth.py 修复异常"},
{
"role": "assistant",
"content": "",
"tool_calls": [{
"id": "1", "type": "function",
"function": {
"name": "Edit",
"arguments": '{"path":"auth.py"}',
},
}],
},
{"role": "tool", "content": "done", "tool_call_id": "1", "name": "Edit"},
]
@pytest.mark.asyncio
async def test_auto_scene_routes_to_judged_coding_variant(monkeypatch):
seen = {}
async def _judge(*args, **kwargs):
return "coding"
class _Writer:
async def write(self, *args, **kwargs):
return {"success": True, "experience_ids": [], "fact_ids": []}
async def _get_writer(*, variant):
seen["variant"] = variant
return _Writer()
monkeypatch.setattr("hy_memory.client.classify_messages_scene", _judge)
cfg = SimpleNamespace(coding=SimpleNamespace(enable=True))
ns = SimpleNamespace(
_config=cfg,
_coding_llm_provider=object(),
_cache=None,
_get_coding_writer=_get_writer,
_observe_chain=lambda *args, **kwargs: 0,
_normalize_scene=HyMemoryClient._normalize_scene,
_scene_variant=HyMemoryClient._scene_variant,
_parse_input=HyMemoryClient._parse_input,
)
result = await HyMemoryClient._async_add_impl(
ns, _messages(), user_id="u1", agent_id="a1", scene=None,
)
assert result["success"] is True
assert seen["variant"] == "coding"