Files
Agent-System/.doc/test-reports/2026-09-26-dialogue-ctx-closeout-test-report.md
T

6.3 KiB
Raw Blame History

dialogue-ctx-injection 收口(dev 迁移 + 真实 PI 落盘 + 冲突确认卡冒烟)测试报告

一、测试背景 (Background)

FEATURE-MATRIX dialogue-ctx-injection 行关闭条件:dev 迁移 goose 00071(实际编号 00072,因 maintenance-windows 占号顺延)+ 真实 PI 落盘核验 + 冲突确认卡冒烟。收口分析发现 trigger_user 路由的 PendingExpectation 在 service_task_run.go 调用点被丢弃,本轮先补齐接线(dev ebb82820)再验收;另修复 no-docker dev sidecar 任务路径硬编码容器扩展路径导致 PI 任务全挂的问题(dev f89b946d)。

二、测试目标 (Test Objectives)

  1. dev 环境应用迁移:goose_db_version=73 且 context_conflict_adjudications 可写
  2. 真实 PI 任务链路:清洗后对话注入小队工作区 context/dialogue/(五文件 + TASK.md 导航 + 权威度指引)
  3. 冲突裁决入库:同级时间相近冲突 → needs_confirm + trigger_user 持久化
  4. 冲突确认卡冒烟:卡片到达触发用户会话;回复「确认」→ 期望命中、黑板同步、确认话术

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

  • 环境:本机 no-docker dev(bin/agent-server @ dev f89b946d + localpg managed PG18+pgvector + PI sidecar :18865,模型 MiniMax-M2.7-highspeed)
  • 数据:新建项目 6633(zhanggong/uid10 创建,成员 11/12),main 工作流仅启用 bd_intake(author 10 / reviewer 11 / approver 12)
  • 层级:真实产品链路(HTTP API + 真实 PI Agent Runner 任务执行)
  • 证据:assets/2026-09-26-dialogue-ctx-closeout/

四、预期结果 (Expected Results)

# 用例 预期
1 dev health/迁移 schema_version=73;adjudications 表存在
2 项目对话种子(5 条含 budget 冲突对) 清洗保留事实轮;噪声/状态卡排除
3 intake 任务(真实 PI) run completed;workspace context/dialogue/ 五文件;TASK.md 导航
4 冲突裁决 budget=10万 vs 20万 → needs_confirm + trigger_user 入库
5 冲突确认卡 会话收到 CTX_CONFLICT_CARD 消息;「确认」→ EXPECTATION_HIT + 黑板更新

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

5.1 dev 迁移与就绪

  • GET /api/v1/health:schema_version=73、database/events/kb ready=true(dev-health.json)PASS
  • context_conflict_adjudications 查询与写入成功(见 5.4)PASS

5.2 真实 PI 任务落盘(run_1790372128945688932)

  • 输入:POST /api/v1/tasks/runs(intake,项目 6633);真实 PI Runner 三步(organize/draft/review)
  • 实际输出:run completed;工作区 intake_1790372128959911040:
    • context/dialogue/{digest.md, turns.md, facts.json, CONFIRMATIONS.md, README.md} 五文件齐备
    • digest.md:纳入 10 轮 / 噪声排除 14(状态卡等),覆盖窗口当日
    • facts.json:customer_name、classification、budget×2(冲突对)等事实抽出
    • 三个步骤 TASK.md 均含 ../../context/dialogue/ 导航行;context/README.md 含 collab_dialogue 权威度指引
    • 证据:workspace-evidence.txt
  • 判定:PASS

5.3 冲突确认卡冒烟(两次:失败 run 与 completed run 各一次)

  • 输入:budget 冲突对(「预算大概10万」 vs 「预算还是要20万吧…」,30 分钟内、无明确证据词)→ 任务运行
  • 实际输出:
    • 会话收到 assistant 消息(intent=CTX_CONFLICT_CARD,branch=EXPECTATION_HIT):“⚠️ 检测到项目对话与现有事实存在说法冲突…回复「确认」采信推荐值(将同步项目黑板);回复「纠正」后直接告诉我正确的事实。”(06-chat-after-run2.json)
    • 回复「确认」→ ✅ 冲突确认完成:已按您的确认采信「budget」=「还是要20万吧…」,并同步项目黑板(EXPECTATION_HIT → supplement-info 黑板路径;07-confirm2.json)
  • 判定:PASS(任务失败路径与成功路径均能投递卡片——裁决与任务成败解耦)

5.4 裁决入库

  • context_conflict_adjudications:run_1790371496904633435 与 run_1790372128945688932 两行 budget → needs_confirm / trigger_user(adjudications-db.txt)PASS

5.5 过程中修复(基础设施,非本行能力缺陷)

  1. 冲突卡接线缺失(dev ebb82820):expectations 原被丢弃;现经 taskrun OnTerminal(exactly-once)投递 + confirm_context_fact 期望命中处理。
  2. no-docker sidecar 任务路径(dev f89b946d):runner.mjs 硬编码 /app/extensions/tavily-search.mjs,主机侧 PI 任务全部 spawn 失败;增加 PI_AGENT_EXTENSION 覆盖并在 start.sh 导出。另修正本机 .env 的 PI_AGENT_BIN(原为 macOS brew 路径,非仓库变更)。

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

套件 结果
go test ./internal/bizdev/ ./internal/coordinator/ ./internal/taskrun/ ./internal/server/ -short PASS
./scripts/arch-check.sh --mode block PASS(候选 ebb82820 与 f89b946d)
go vet ./... / go test -short ./... PASS(候选验证收据)
新增单测:bizdev 卡片投影/期望重建、coordinator 确认/纠正/回退、server 会话投递 PASS

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

结论:dialogue-ctx-injection 关闭条件全部满足——dev 迁移已应用并验证、真实 PI 任务链路完成 context/dialogue/ 落盘核验、冲突确认卡冒烟(投递 + 确认闭环 + 黑板同步)PASS。FEATURE-MATRIX 行可升 done。

备注与后续:

  • 会话内实时推送(SSE 通道主动推卡)未做,卡片以会话消息落盘呈现(刷新/历史可见);后续增强另立。
  • 「纠正」分支引导用户陈述正确值后由 SUPPLEMENT_INFO 吸收,本轮验收确认路径。
  • no-docker dev 的 compose 构建路径(dockerignore 排除 web/dist 导致 go:embed 失败)与单二进制路径并存,属环境形态差异,另行登记。