6.3 KiB
6.3 KiB
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)
- dev 环境应用迁移:
goose_db_version=73且context_conflict_adjudications可写 - 真实 PI 任务链路:清洗后对话注入小队工作区
context/dialogue/(五文件 + TASK.md 导航 + 权威度指引) - 冲突裁决入库:同级时间相近冲突 →
needs_confirm + trigger_user持久化 - 冲突确认卡冒烟:卡片到达触发用户会话;回复「确认」→ 期望命中、黑板同步、确认话术
三、测试方案与环境 (Test Plan & Environment)
- 环境:本机 no-docker dev(
bin/agent-server@ devf89b946d+ 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)PASScontext_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)
- 会话收到 assistant 消息(intent=
- 判定:PASS(任务失败路径与成功路径均能投递卡片——裁决与任务成败解耦)
5.4 裁决入库
context_conflict_adjudications:run_1790371496904633435与run_1790372128945688932两行budget → needs_confirm / trigger_user(adjudications-db.txt)PASS
5.5 过程中修复(基础设施,非本行能力缺陷)
- 冲突卡接线缺失(dev
ebb82820):expectations 原被丢弃;现经 taskrunOnTerminal(exactly-once)投递 +confirm_context_fact期望命中处理。 - 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 失败)与单二进制路径并存,属环境形态差异,另行登记。