Files
Agent-System/.doc/test-reports/2026-09-28-agent-reply-llm-narrative-test-report.md
T
weichen dfd9f6efb3 docs(test): 记录助手回复智能体叙述的验收
附带任务记录与 CURRENT 认领行。真实 Runner 三轮 reply_source=pi-agent。
2026-09-28 03:25:18 +00:00

4.5 KiB
Raw Blame History

助手回复智能体叙述 测试报告

一、 测试背景 (Background)

项目助手大量查询、帮助和操作回执仍由 Go 硬编码模板直接返回。本轮把这些路径改为:系统先生成确定性事实底稿,再由产品 PI Agent Runner 组织自然语言;Runner 失败、开关关闭或无 backend 时回退原模板。安全拦截、权限不足和确认提问不进入叙述。

二、 测试目标 (Test Objectives)

  • T1 权责查询、T2 能力帮助、T3 暂缓回执由真实 Runner 生成,reply_source=pi-agent,且保留底稿中的人名、文档名或项目名。
  • Runner 失败时回退模板,并记录 agent_reply_fallback。
  • 开关关闭时不调用 backend。
  • 安全拦截话术不被叙述改写。
  • 存量 go test -short ./... 与 arch-check --mode block 通过。

三、 测试方案与环境 (Test Plan & Environment)

  • OS:Linux。Go 模块测试在任务 worktree feature/agent-reply-llm-narrative-2026-09-28,基线 dev 8f77053f5169502eaf3e4e4135a082e8914f3704。
  • 真实 Runner:宿主机 http://127.0.0.1:18865/health 返回 200。模型按本机批准配置 PI_AGENT_PROVIDER=minimax、PI_AGENT_MODEL=MiniMax-M2.7-highspeed。凭证只从本机 .env 读取,不写入报告。
  • 层级:Go 单测(scripted backend)+ 受影响产品 PI 链路(RUN_PI_E2E=1)。未跑 nightly 五项全量,因为本变更不改工作流生成链。

四、 预期结果 (Expected Results)

  • 有 backend 且开关开启:ReplySource=pi-agent,提示词含「系统确定性底稿」。
  • backend 返回失败:ReplySource=template,正文仍含模板标题「我能帮您做什么」。
  • AGENT_REPLY_LLM 测试开关关闭:不调用 backend。
  • SECURITY_FORBIDDEN:正文不含脚本注入的智能体改写句。
  • 真实 Runner 三轮均 source=pi-agent,且分别保留「张工/用户需求表」「查询/补充」「肌骨超声项目」。

五、 实际测试结果与判定 (Actual Results & Evaluation)

用例 1:真实 Runner T1/T2/T3

  • 测试输入 (Input):RUN_PI_E2E=1 go test -count=1 -timeout 8m -v ./internal/coordinator/ -run TestIntentReply_RealPI_NarratesQueryHelpAndDecline
  • 实际输出 (Actual Output):
intent=QUERY_USER_RIGHTS source=pi-agent duration=8.919s
intent=HELP_CAPABILITIES source=pi-agent duration=11.655s
intent=DECLINE_EXPECTATION source=pi-agent duration=6.329s
--- PASS: TestIntentReply_RealPI_NarratesQueryHelpAndDecline (26.90s)

权责回复含「张工」与「用户需求表」;帮助回复含「查询项目进展与风险」「补充项目事实」,并保留「请前往项目设置界面」;暂缓回复含「肌骨超声项目暂不推进」。路由日志里的 channel=TEMPLATE 是 R0 意图通道名,不是回复来源;回复来源字段为 pi-agent。

  • 评价判定:PASS
  • 性能与耗时:三轮合计 26.90s(8.919s / 11.655s / 6.329s)

用例 2:backend 失败回退模板

  • 测试输入:go test -short -v -run TestIntentReply_BackendFailureFallsBackToTemplate
  • 实际输出:
INFO agent_reply_fallback handler=handleHelpCapabilities intent=HELP_CAPABILITIES reason="forced failure"
--- PASS: TestIntentReply_BackendFailureFallsBackToTemplate (0.00s)
  • 评价判定:PASS
  • 性能与耗时:<1s(scripted backend,非真实 Runner)

用例 3:开关关闭与安全话术

  • 测试输入:TestIntentReply_FlagOffKeepsTemplate、TestIntentReply_SecurityForbiddenStaysTemplate
  • 实际输出:两者 PASS。安全用例未调用 dialogue backend。
  • 评价判定:PASS
  • 性能与耗时:<1s

六、 自动化测试套件汇总 (Test Suite Execution)

检查 结果
./scripts/arch-check.sh --mode block PASS(production gate passed)
go vet ./... PASS(exit 0)
go test -short -count=1 -timeout 8m ./... PASS(含 internal/coordinator 0.042s、internal/server 20.498s)
RUN_PI_E2E=1 叙述三轮 PASS(26.90s)

未运行 nightly 全量五项。不把未运行记为产品全链路 PASS。

七、 测试结论与后续优化建议 (Conclusion & Next Steps)

授权范围内的叙述改造达到本轮验收:真实 Runner 能在保留确定性事实的前提下改写查询、帮助和暂缓回执;失败与安全边界仍走模板。

后续可观察线上 agent_reply_fallback 比例,再决定是否把仍保持模板的确认提问也改为叙述。确认卡选项与权限拒绝本轮故意不改。