docs(test): record intent confirm and stage-aware acceptance

Update short-term/CURRENT claim for the extension branch and archive
unit/web evidence pending live rebuild after merge.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
weichen
2026-09-21 08:28:28 +00:00
co-authored by Cursor
parent 6bb2f72507
commit 5a0e5e7001
5 changed files with 166 additions and 4 deletions
+4 -4
View File
@@ -5,16 +5,16 @@
## 焦点
1. **任务执行状态卡**:竖向时间线 `TaskRunCard` + `task_phase_snapshot` 刷新不退化。见 [报告](../test-reports/2026-09-21-taskrun-status-card-persistence-test-report.md)。test/main 未晋升。
2. **意图填槽工作流作用域**:激活流匹配池收窄 + 跨流拦截引导,已合入 `dev`。见 [报告](../test-reports/2026-09-21-intent-workflow-scoping-test-report.md)。test/main 未晋升。
2. **工作流文档键已收成 7 条**:项目 6579 的旧键 `intake` 已归档,管理员列表为 7 条 `bd_*`。见 [报告](../test-reports/2026-09-21-workflow-doc-key-unification-test-report.md)。test/main 未晋升。
3. **dev 四问题修复**:近似说法可启动摸底表;刷新后重放任务进度;继续任务走 resume;模板态显示「模板预览」。见 [报告](../test-reports/2026-09-21-dev-deep-test-four-issues-test-report.md)。test/main 未晋升。
1. **意图确认优先与阶段感知**:弱写「整理需求」→ intake 确认卡片。见 [报告](../test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md)。test/main 未晋升。
2. **任务执行状态卡**:竖向时间线 `TaskRunCard` + `task_phase_snapshot` 刷新不退化。见 [报告](../test-reports/2026-09-21-taskrun-status-card-persistence-test-report.md)。test/main 未晋升。
3. **意图填槽工作流作用域**:激活流匹配池收窄 + 跨流拦截引导,已合入 `dev`。见 [报告](../test-reports/2026-09-21-intent-workflow-scoping-test-report.md)。test/main 未晋升。
4. **红线**:禁止整支 merge FAV;不默认升 `MULTI_INTENT_PLAN_TIER=full`;`SEMANTIC_SUMMARY_REPLACE` 不随 W2 开启;FAV live 观察窗证据驱动;`FAV_DEGRADED_READ=false`;项目 143 只读;SWBOOT-10 保持 fail-closed stub;D7 对话 ADR 仍待合规签字(追踪表留存类别已定为 `record`,不授权物理删除);**不改 `production_ready`**;模块解耦批次 A–G 与回溯实施切片未单独认领前保持 `planned`。
## 并行认领
| owner | task | branch | worktree | mutex | status |
|-------|------|--------|----------|-------|--------|
| Cursor | 2026-09-21-intent-confirm-stage-aware | fix/intent-confirm-stage-aware-2026-09-21 | .worktrees/intent-confirm-stage-aware-2026-09-21 | intent+web+docgov | in_progress |
| Cursor | 2026-09-21-taskrun-status-card | feature/taskrun-status-card-2026-09-21 | .worktrees/feature-taskrun-status-card-2026-09-21 | chat+web+taskrun | done |
| Cursor | 2026-09-21-intent-workflow-scoping | fix/intent-workflow-scoping-2026-09-21 | - | intent+web+docgov | done |
| Codex | 2026-09-21-agent-workflow-governance-adoption | feature/agent-workflow-governance-plan | .worktrees/feature-agent-workflow-governance-plan | agent-workflow-governance | in_progress |
@@ -0,0 +1,41 @@
---
title: "意图确认优先与阶段感知消解"
status: in_progress
created: 2026-09-21
updated: 2026-09-21
owner: Cursor
branch: fix/intent-confirm-stage-aware-2026-09-21
worktree: .worktrees/intent-confirm-stage-aware-2026-09-21
base_dev_sha: 49fb68fec1ea56f00616c23d08efb15950c2300d
mutex: intent+web+docgov
---
# 意图确认优先与阶段感知消解
## 目标
商务流初期「整理一下需求」等弱写表述 → 阶段感知消解为 intake,经确认卡片拍板后再执行;不强指令误伤。扩展已合入的工作流作用域修复。
## 范围
- 批次5 `feat(intent)`:弱写动词 + `stageAwareRequirementsTask` + `needs_confirmation`
- 批次6 `feat(coordinator)`:智能确认门禁(PendingExpectation)
- 批次7 `feat(web)`:阶段错误降级聊天一次
- 批次8:验收报告 + 合回 `dev`
## 步骤
1. [x] 批次5–7 实现与单元门禁
2. [ ] 批次8:合入 `dev` + rebuild + 真实链路抽样
## 验收标准
- [x] V0.1「整理一下需求」→ 确认 →「好」→ intake(单元 E2E)
- [x] 强指令不强制确认;「编写用户需求表」无 rdev 误拦
- [ ] 合入后真实 PI 抽样
## 相关链接
- Plan: `~/.cursor/plans/意图确认优先与阶段感知_7ab2c4d5.plan.md`
- Prior (done): `.doc/archive/ops/2026-09-21-intent-workflow-scoping.md`
- Test report: `.doc/test-reports/2026-09-21-intent-confirm-stage-aware-test-report.md`
@@ -0,0 +1,78 @@
# 意图确认优先与阶段感知消解 测试报告
## 一、 测试背景 (Background)
商务对接流初期用户说「整理一下需求」时,系统要么落入闲聊兜底,要么被研发短别名「用户需求」截走并跨流拦截/阶段门禁失败。需要:按当前阶段消解到《用户初始需求收集表》(intake),并以确认卡片拍板后再执行。
本报告覆盖扩展任务 `fix/intent-confirm-stage-aware-2026-09-21`(批次5–7);批次1–3 工作流作用域此前已合入 `dev`。
## 二、 测试目标 (Test Objectives)
- 弱写动词 + 需求宾语 → `TRIGGER_TASK/intake` + `needs_confirmation`
- 协调层确认门禁下发 `PendingExpectation`;回复「好」后执行
- 强指令(如「生成需求表」)不强制确认
- 「编写用户需求表」在 main 流不再误作 rdev 跨流拦截
- 任务直通道遇 `TASK_SCOPE_UNRESOLVED` / `DOC_TASK_NOT_IN_ACTIVE_STAGE` 降级聊天一次
## 三、 测试方案与环境 (Test Plan & Environment)
- OS:linux;分支 `fix/intent-confirm-stage-aware-2026-09-21`;base `dev@9798b130`
- 单元:`go test ./internal/intent ./internal/coordinator`;`web npm test` / `npm run build`
- 真实容器 rebuild:待合入 `dev` 后由集成槽位持有者执行(本报告撰写时槽位由 taskrun-status-card 占用)
- 证据:`.doc/test-reports/assets/2026-09-21-intent-confirm-stage-aware/`
## 四、 预期结果 (Expected Results)
| 输入 | 预期 |
|------|------|
| V0.1「整理一下需求」 | 确认话术含《用户初始需求收集表》;默认选项 intake |
| 回复「好」 | `TRIGGER_TASK/intake`,StatusAccepted(无 runner 时 stub) |
| 「生成需求表」 | 直接 TRIGGER_TASK/intake,无 needs_confirmation |
| 「编写用户需求表」 | TRIGGER_TASK/user_requirements,无 workflow_scope_mismatch |
| 阶段错误码 | 前端 `isTaskStageDegradeCode` 为 true,hook 含降级路径 |
## 五、 实际测试结果与判定 (Actual Results & Evaluation)
### 用例 1:弱写需求 → 确认 → 拍板
- **测试输入**:`整理一下需求` → 确认后 `好`
- **实际输出**:见 `assets/.../go-unit.txt` — `TestProcessIntent_WeakRequirementsConfirmsIntake` PASS;首轮 conf=0.78 ClarificationRequired;拍板后 EXPECTATION_HIT conf=1 Accepted
- **评价判定**:PASS
- **性能与耗时**:约 10ms 内
### 用例 2:强指令不确认
- **测试输入**:`生成需求表`;协调层 `Confidence=0.86` intake
- **实际输出**:`TestStageAwareRequirements_StrongIntakeDirect` / `TestConfirmGate_StrongHighConfidenceDirect` PASS
- **评价判定**:PASS
### 用例 3:用户需求表不再跨流误拦
- **测试输入**:main + V0.1「编写用户需求表」
- **实际输出**:`TestStageAwareRequirements_WriteUserRequirementsV01` → TRIGGER_TASK/user_requirements,无 mismatch
- **评价判定**:PASS
### 用例 4:前端降级
- **测试输入**:源码/单测 `isTaskStageDegradeCode`
- **实际输出**:`useTaskRunAttempts.test.ts` PASS;含「改由对话确认引导」
- **评价判定**:PASS
### 用例 5:全量回归
- **实际输出**:`web npm test` 471+33 PASS,`npm run build` PASS;`go test -short ./internal/intent ./internal/coordinator` PASS。全量 `./...` 中 `notification`/`storage` 既有 PG 唯一约束失败,与本改动无关(与既有报告一致)。
- **评价判定**:PASS(本改动路径)
## 六、 自动化测试套件汇总 (Test Suite Execution)
```text
go test ./internal/intent ./internal/coordinator -run 'StageAware|ConfirmGate|ProcessIntent_Weak' → PASS
web npm test → 471 + vitest 33 PASS
npm run build → PASS
```
## 七、 测试结论与后续优化建议 (Conclusion & Next Steps)
- 代码与单元/前端门禁达到合入标准。
- **合入与真实链路**:集成槽位释放后 `--no-ff` 合入 `dev`,`./scripts/env-service.sh dev rebuild`,在商务对接项目实测「整理一下需求」确认卡片与拍板执行。
- test/main 不晋升;不改 `production_ready`;项目 143 未改写。
@@ -0,0 +1,30 @@
=== RUN TestStageAwareRequirements_WeakVerbIntakeConfirm
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78
--- PASS: TestStageAwareRequirements_WeakVerbIntakeConfirm (0.00s)
=== RUN TestStageAwareRequirements_WriteUserRequirementsV01
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.86
--- PASS: TestStageAwareRequirements_WriteUserRequirementsV01 (0.00s)
=== RUN TestStageAwareRequirements_StrongIntakeDirect
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.86
--- PASS: TestStageAwareRequirements_StrongIntakeDirect (0.00s)
=== RUN TestStageAwareRequirements_WeakNonRequirementsStaysCasual
2026/09/21 08:27:04 INFO intent_recognition intent=CASUAL_CHAT branch=AMBIGUOUS_FALLBACK confidence=0.2
--- PASS: TestStageAwareRequirements_WeakNonRequirementsStaysCasual (0.00s)
PASS
ok chat-agent-system/internal/intent 0.008s
=== RUN TestConfirmGate_WeakVerbNeedsConfirmation
--- PASS: TestConfirmGate_WeakVerbNeedsConfirmation (0.00s)
=== RUN TestConfirmGate_StrongHighConfidenceDirect
--- PASS: TestConfirmGate_StrongHighConfidenceDirect (0.00s)
=== RUN TestConfirmGate_StageMismatchRemapsDefaultToIntake
--- PASS: TestConfirmGate_StageMismatchRemapsDefaultToIntake (0.00s)
=== RUN TestProcessIntent_WeakRequirementsConfirmsIntake
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78
2026/09/21 08:27:04 INFO coordinator_route intent=TRIGGER_TASK branch=NEW_INTENT_PREEMPT confidence=0.78 channel=SQUAD_FIXED reason=标准任务/阶段推进/工作流运行/长任务续跑指令,进入小队受控执行
2026/09/21 08:27:04 INFO intent_recognition intent=TRIGGER_TASK branch=EXPECTATION_HIT confidence=1
2026/09/21 08:27:04 INFO coordinator_route intent=TRIGGER_TASK branch=EXPECTATION_HIT confidence=1 channel=SQUAD_FIXED reason=标准任务/阶段推进/工作流运行/长任务续跑指令,进入小队受控执行
--- PASS: TestProcessIntent_WeakRequirementsConfirmsIntake (0.00s)
PASS
ok chat-agent-system/internal/coordinator 0.006s
@@ -0,0 +1,13 @@
✔ chat and task attempts live in one hook (0.843565ms)
✔ stage unresolved and not-in-active-stage degrade to chat once (0.105797ms)
✔ failed run with error_message surfaces TASK_FAILED not NETWORK_ERROR (0.514175ms)
✔ snake_case blocked_pending_governance is governance, not a network error (0.240533ms)
✔ unknown 4xx business code is not reported as a network error (0.236113ms)
ℹ tests 5
ℹ suites 0
ℹ pass 5
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 94.410096