145 lines
8.0 KiB
Markdown
145 lines
8.0 KiB
Markdown
---
|
||
status: diagnosed
|
||
phase: 06-
|
||
source:
|
||
- 06-01-SUMMARY.md
|
||
- 06-02-SUMMARY.md
|
||
- 06-03-SUMMARY.md
|
||
- 06-COMMIT-SUMMARY.md
|
||
- 06-SUMMARY.md
|
||
started: 2026-04-15T03:14:38Z
|
||
updated: 2026-04-15T06:02:00Z
|
||
---
|
||
|
||
## Current Test
|
||
|
||
[testing complete]
|
||
|
||
## Tests
|
||
|
||
### 1. 输入 @ 可看到当前线程文件候选并可过滤
|
||
expected: 在输入框输入 @ 后出现候选列表,继续输入关键字可过滤,且候选仅来自当前线程。
|
||
result: issue
|
||
reported: "出现的候选列表,应该在紧贴在input的上方"
|
||
severity: cosmetic
|
||
|
||
### 2. 选择候选后显示引用 chip 且支持删除/去重
|
||
expected: 选择候选后,输入区显示可删除 chip;重复选择同一文件不会重复新增;可通过删除按钮或 Backspace 移除最后一个 chip。
|
||
result: issue
|
||
reported: "我希望引用的图片出现在textarea中而不是在input上方,而且不要复用tag组件"
|
||
severity: major
|
||
|
||
### 3. 引用上限为 10,超过会被阻止并提示
|
||
expected: 单条消息最多只能添加 10 个引用;尝试添加第 11 个时出现错误提示且不会新增。
|
||
result: issue
|
||
reported: "限制为6个。且点击后端列表的时候不要收起input"
|
||
severity: major
|
||
|
||
### 4. 失效引用会被自动移除,但文本发送不被阻断
|
||
expected: 当某个已选引用失效时,发送时会提示“部分引用已失效,已自动移除”,其余内容仍成功发送。
|
||
result: skipped
|
||
reason: "本地无法测试失效引用。"
|
||
|
||
### 5. 带引用的消息可正常发送并保持文件上下文
|
||
expected: 发送包含引用的消息后,消息成功进入对话流;引用对应的文件信息在后续上下文中可用。
|
||
result: issue
|
||
reported: "文件信息在上下文中不可用。当前系统未被当作上下文的传参是 artifact mention(包含 ref_kind/ref_source),上传文件会被当作上下文传参;且在输入中的任何时候输入@都应出现候选列表,不应仅在输入框为空时出现。发送提及文件时也会被误认为发送文件(例如 ref_kind=mention、ref_source=upload 的对象被当作 upload)。"
|
||
severity: major
|
||
|
||
## Summary
|
||
|
||
total: 5
|
||
passed: 0
|
||
issues: 5
|
||
pending: 0
|
||
skipped: 1
|
||
blocked: 0
|
||
|
||
## Gaps
|
||
|
||
- truth: "在输入框输入 @ 后出现候选列表,继续输入关键字可过滤,且候选仅来自当前线程。"
|
||
status: failed
|
||
reason: "User reported: 出现的候选列表,应该在紧贴在input的上方"
|
||
severity: cosmetic
|
||
test: 1
|
||
root_cause: "候选面板使用 `DropdownMenuContent` 默认定位,且未绑定输入框锚点/上边缘约束,导致面板位置与输入区视觉预期不一致。"
|
||
artifacts:
|
||
- path: "frontend/src/components/workspace/input-box.tsx"
|
||
issue: "mention dropdown positioned by generic menu behavior, not explicitly anchored above textarea"
|
||
missing:
|
||
- "将候选列表定位策略改为紧贴输入区上方(含滚动与窗口边界处理)"
|
||
debug_session: ""
|
||
- truth: "选择候选后,输入区显示可删除 chip;重复选择同一文件不会重复新增;可通过删除按钮或 Backspace 移除最后一个 chip。"
|
||
status: failed
|
||
reason: "User reported: 我希望引用的图片出现在textarea中而不是在input上方,而且不要复用tag组件"
|
||
severity: major
|
||
test: 2
|
||
root_cause: "当前引用展示放在输入区外层绝对定位容器,并复用了 `Tag` 组件;未实现 textarea 内联引用预览组件。"
|
||
artifacts:
|
||
- path: "frontend/src/components/workspace/input-box.tsx"
|
||
issue: "references rendered in absolute `bottom-full` area using `Tag`"
|
||
- path: "frontend/src/components/ui/tag.tsx"
|
||
issue: "component reused for mention chips against UX requirement"
|
||
missing:
|
||
- "实现 textarea 内联引用卡片/图片缩略块"
|
||
- "替换 Tag 复用,使用专用引用 UI 组件"
|
||
debug_session: ""
|
||
- truth: "单条消息最多只能添加 10 个引用;尝试添加第 11 个时出现错误提示且不会新增。"
|
||
status: failed
|
||
reason: "User reported: 限制为6个。且点击后端列表的时候不要收起input"
|
||
severity: major
|
||
test: 3
|
||
root_cause: "上限常量硬编码为 10;同时选择候选后调用 `setMentionOpen(false)` 并存在外部点击收起逻辑,导致输入态被打断。"
|
||
artifacts:
|
||
- path: "frontend/src/components/workspace/input-box.tsx"
|
||
issue: "`MAX_REFERENCES_PER_MESSAGE = 10` and mention selection closes dropdown/input focus"
|
||
missing:
|
||
- "上限从 10 改为 6 并同步提示文案"
|
||
- "选择候选后保持输入框展开与焦点,不自动收起"
|
||
debug_session: ""
|
||
- truth: "发送包含引用的消息后,消息成功进入对话流;引用对应的文件信息在后续上下文中可用。"
|
||
status: failed
|
||
reason: "User reported: 文件信息在上下文中不可用。当前系统未被当作上下文的传参是 artifact mention(包含 ref_kind/ref_source),上传文件会被当作上下文传参;且在输入中的任何时候输入@都应出现候选列表,不应仅在输入框为空时出现。"
|
||
severity: major
|
||
test: 5
|
||
root_cause: "artifact 引用仅以前端构造的 `additional_kwargs.files` 元数据提交,缺少后端可解析的上下文绑定信号;另外 `@` 触发依赖当前 token 解析,未覆盖“任意输入位置”策略。"
|
||
artifacts:
|
||
- path: "frontend/src/core/threads/submit-files.ts"
|
||
issue: "references appended as metadata only; no backend-compatible context discriminator beyond ref_source"
|
||
- path: "frontend/src/core/threads/hooks.ts"
|
||
issue: "submit envelope does not include explicit artifact-context contract for backend resolution"
|
||
- path: "frontend/src/components/workspace/input-box.tsx"
|
||
issue: "mention trigger tied to `findMentionToken` result and closes when token not matched"
|
||
missing:
|
||
- "补充 artifact 引用的后端可消费上下文字段(与 uploads 对齐)"
|
||
- "确保任意输入位置输入 `@` 都可触发候选"
|
||
debug_session: ""
|
||
- truth: "若已输入文本,在任意位置输入 `@` 仍应弹出候选;选择文件后不得清空已输入问题文本。"
|
||
status: failed
|
||
reason: "User reported: 如果已经输入了文字,再输入@的时候,应该弹出候选列表,如果选择了文件,不要清空已经输入的问题"
|
||
severity: major
|
||
test: 5
|
||
root_cause: "当前选择候选后会执行文本 token 替换并 `trimEnd`,在已有输入场景可能导致用户已输入问题文本被截断或清空。"
|
||
artifacts:
|
||
- path: "frontend/src/components/workspace/input-box.tsx"
|
||
issue: "`selectMentionCandidate` mutates textarea value when resolving mention token"
|
||
missing:
|
||
- "选择候选后仅移除当前 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_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: ""
|