aps-agent/tests/golden/test_context.py

62 lines
2.2 KiB
Python

# ============================================================
# 多轮上下文:短确认 / 文件夹解析
# ============================================================
from __future__ import annotations
from server.agent_core.assistant import reply as assistant_reply
from server.agent_core.context import resolve_followup
from server.agent_core.intent import parse_fast
from server.state.seed import seed_world
def test_affirm_yes_maps_to_schedule_hint():
hist = [
{"role": "user", "text": "帮我分析项目"},
{"role": "agent", "text": "看起来齐了。直接跟我说「直接排一版」。"},
]
r = resolve_followup("是的", hist)
assert r["kind"] == "affirm"
assert "排一版" in r["text"]
def test_folder_intent_fast():
world = seed_world()
r = parse_fast("你给我解析文件夹里面的数据给我展现出来", world)
assert r is not None and r.intent == "folder.analyze"
r2 = parse_fast("以上数据根据排产你要怎么数据", world)
assert r2 is not None and r2.intent == "folder.schedule"
r3 = parse_fast("根据这些数据排产", world)
assert r3 is not None and r3.intent == "folder.schedule"
import pytest
@pytest.mark.asyncio
async def test_folder_listing_reply_not_kimi_excuse():
world = seed_world()
reply = await assistant_reply(
world,
"你给我解析文件夹里面的数据给我展现出来",
history=[
{"role": "user", "text": "帮我分析一下当前项目里面的数据"},
{"role": "agent", "text": "手头有啥……"},
],
session_id="s1",
)
assert "Kimi" not in reply.text
assert "没配大模型" not in reply.text
assert "项目" in reply.text or "文件夹" in reply.text or "文件" in reply.text
@pytest.mark.asyncio
async def test_yes_after_offer_not_echo_yes():
world = seed_world()
hist = [
{"role": "user", "text": "看看能不能排"},
{"role": "agent", "text": "齐了的话可以说「直接排一版」。"},
]
reply = await assistant_reply(world, "是的", history=hist, session_id="s1")
assert "你问的是「是的」" not in reply.text
assert "是的" not in reply.text[:20] or "明白" in reply.text or "排" in reply.text