From 3caa2d6ce1f608a62facfdbfcafc97e98a90dab0 Mon Sep 17 00:00:00 2001 From: MT-Mint <798521692@qq.com> Date: Wed, 15 Apr 2026 15:34:10 +0800 Subject: [PATCH] test(06): record mention-upload misclassification gap and closure plan --- .planning/phases/06-/06-06-PLAN.md | 81 ++++++++++++++++++++++++++++++ .planning/phases/06-/06-UAT.md | 19 ++++++- 2 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 .planning/phases/06-/06-06-PLAN.md diff --git a/.planning/phases/06-/06-06-PLAN.md b/.planning/phases/06-/06-06-PLAN.md new file mode 100644 index 00000000..8ef84f94 --- /dev/null +++ b/.planning/phases/06-/06-06-PLAN.md @@ -0,0 +1,81 @@ +--- +phase: 06- +plan: 06 +type: execute +wave: 5 +depends_on: + - 06-05 +gap_closure: true +files_modified: + - backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py + - backend/tests/test_uploads_middleware_core_logic.py +autonomous: true +requirements: + - ATREF-04 +must_haves: + truths: + - "提及文件(ref_kind=mention)发送时不应被识别为本次新上传文件。" + - " 的 new_files 区块仅包含真实上传附件,不包含 mention 引用。" + artifacts: + - path: "backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py" + provides: "按 metadata 区分真实上传与 mention 引用" + contains: "_files_from_kwargs" + - path: "backend/tests/test_uploads_middleware_core_logic.py" + provides: "mention 引用过滤回归测试" + contains: "ref_kind" +--- + + +关闭 UAT 新增 gap:修复“ref_kind=mention, ref_source=upload 被当作本次上传文件”的误判。 + +Purpose: 保持提及文件与真实上传附件在后端语义分离,避免 injected 误导模型。 +Output: Middleware 仅接收真实上传文件为 new_files,mention 引用不再进入 uploaded_files state update。 + + + +@.planning/phases/06-/06-UAT.md +@backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py +@backend/tests/test_uploads_middleware_core_logic.py + + + + + + Task 1: 过滤 mention 引用,避免误判为新上传 + backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py + + 在 `_files_from_kwargs` 解析 `additional_kwargs.files` 时,若条目 `ref_kind == "mention"` 则直接跳过,不纳入 `new_files`。保留现有 filename 校验、size/path 归一化、磁盘存在性检查逻辑。 + + + - `ref_kind=mention` 条目不会进入返回列表。 + - 普通上传条目(无 ref_kind)行为不变。 + - `before_agent` 的 `` 注入仅反映真实上传。 + + + + + Task 2: 补充回归测试覆盖 mention 过滤 + backend/tests/test_uploads_middleware_core_logic.py + + 新增测试:当 files 中包含 `ref_kind=mention`(含 `ref_source=upload`)时,`_files_from_kwargs` 不返回该条目;并验证 mixed list 下真实上传仍可保留。 + + + - 新增测试在修复前失败、修复后通过。 + - 不影响已有核心 middleware 测试。 + + + + + + +- `cd backend && pytest -q tests/test_uploads_middleware_core_logic.py -k "mention or files_from_kwargs"` + + + +- UAT 新增 gap 的 root cause 与修复措施一一对应。 +- 计划可直接由 `/gsd-execute-phase 6 --gaps-only` 执行。 + + + +After completion, create `.planning/phases/06-/06-06-SUMMARY.md` + diff --git a/.planning/phases/06-/06-UAT.md b/.planning/phases/06-/06-UAT.md index bba52648..cbbe3118 100644 --- a/.planning/phases/06-/06-UAT.md +++ b/.planning/phases/06-/06-UAT.md @@ -8,7 +8,7 @@ source: - 06-COMMIT-SUMMARY.md - 06-SUMMARY.md started: 2026-04-15T03:14:38Z -updated: 2026-04-15T03:33:07Z +updated: 2026-04-15T06:02:00Z --- ## Current Test @@ -43,7 +43,7 @@ reason: "本地无法测试失效引用。" ### 5. 带引用的消息可正常发送并保持文件上下文 expected: 发送包含引用的消息后,消息成功进入对话流;引用对应的文件信息在后续上下文中可用。 result: issue -reported: "文件信息在上下文中不可用。当前系统未被当作上下文的传参是 artifact mention(包含 ref_kind/ref_source),上传文件会被当作上下文传参;且在输入中的任何时候输入@都应出现候选列表,不应仅在输入框为空时出现。" +reported: "文件信息在上下文中不可用。当前系统未被当作上下文的传参是 artifact mention(包含 ref_kind/ref_source),上传文件会被当作上下文传参;且在输入中的任何时候输入@都应出现候选列表,不应仅在输入框为空时出现。发送提及文件时也会被误认为发送文件(例如 ref_kind=mention、ref_source=upload 的对象被当作 upload)。" severity: major ## Summary @@ -127,3 +127,18 @@ blocked: 0 - "选择候选后仅移除当前 mention token,不影响其余已输入文本" - "补充“已有文本 + 中途 @ + 选中文件”回归测试" debug_session: "" +- truth: "提及文件(ref_kind=mention)发送时应保留 mention 语义,不应被系统识别为“本次新上传文件”。" + status: failed + reason: "User reported: 在发送提及文件的时候,系统误认为我的提及文件是发送文件。因为上传时传了 {filename,size,path,status,ref_kind:mention,ref_source:upload}。" + severity: major + test: 5 + root_cause: "后端 UploadsMiddleware 在 `_files_from_kwargs` 中仅按 `filename/size/path/status` 解析 `additional_kwargs.files`,没有排除 `ref_kind=mention`,导致 mention 引用被归类为 new_files 并注入 `` 的“uploaded in this message”块。" + artifacts: + - path: "backend/packages/harness/deerflow/agents/middlewares/uploads_middleware.py" + issue: "`_files_from_kwargs` ignores `ref_kind/ref_source` and classifies mention references as newly uploaded files" + - path: "frontend/src/core/threads/submit-files.ts" + issue: "references use `ref_kind=mention` with `ref_source=upload|artifact`; middleware currently does not honor this discriminator" + missing: + - "在 `_files_from_kwargs` 过滤 `ref_kind=mention` 条目,不将其计入 new_files" + - "补充 middleware 单测覆盖 mention 条目不被识别为本次上传" + debug_session: ""