5.2 KiB
5.2 KiB
feature/chat-order-artifact-files 任务卡
任务主记录:Dev PR(本卡随分支合入,PR 见 Git 远端 feature/chat-order-artifact-files → main);状态:已完成;owner:weichen
基线与授权
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)=
ffda6d33ea - 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-chat-order-artifact-files(worktree);分支:feature/chat-order-artifact-files
- 授权与交付终点:用户四项反馈的修复(消息顺序保真 / 下载通道 / 工件文件管理 / 设置界面布局),实现+验证+PR 合入 main + gitlink 推进 + 卡闭合。
目标与非目标
用户反馈(2026-09-30,附用户设置界面截图):
- 会议纪要 docx 任务中"工具调用的位置和实际的位置不符,助手输出显示的顺序没有保持"——根因:Conversation.tsx 按
p.process布尔把一条消息的 parts 二分重排(过程全前置);live 流式同病(固定模板序)且 live 期间无工件 chip。 - "整理好的内容,没有下载通道"——后端无 Content-Disposition/MIME 回退;chip 无下载;DocViewer 弹层套弹层。
- "工作区中的文件应该能浏览、显示、下载、回看"——ArtifactsPanel 仅 图标+名+kind 裸列表;收件箱结果卡 doc-ref 点不开(无 docBridge)。
- "用户设置界面设计有问题"——根因:SettingsShell 根挂
.modal.ui-settings-shell,宿主 styles.css 后加载以同特异性覆盖(column/860px)压坏左右布局;设置行未用 @ui SettingRow;保存按钮随内容滚动。
非目标:docx 在线预览(无新依赖原则,下载为主);新增 fs 类工具/工作区目录("工作区文件"即 artifacts);live 事件协议改动。
修复要点(四仓)
- modules/ui:
.modal.ui-settings-shell复合选择器(0,2,0)免疫加载顺序;SettingsShell 增actions固定底栏 +.ui-settings-scroll滚动区;ActivityCardView/InboxList 透传docBridge;Icon 增 file/image/download/trash/eye;SettingRow label/desc 放宽 ReactNode。 - modules/backend:
artifactContent始终回 Content-Disposition(默认 inline,?download=1→ attachment;RFC 5987 filename* + ASCII 兜底);contentTypeOf增 Office/PDF/CSV/MD 扩展名显式表 + mime.TypeByExtension 回退。 - modules/frontend:
messageparts.ts新增groupParts(连续过程部件就地聚块,渲染顺序=落库顺序)+ humanSize/artifactIcon;AssistantMessage 按块序渲染;LiveState.parts 按事件到达序维护(含 artifact.created 即时上 chip);工件 chip = 图标+打开+下载;ArtifactsPanel = 搜索+kind 过滤+上传+行内 预览/下载/删除(确认);DocViewer 单层 OverlayHost(pdf iframe / csv·json 等宽 / 二进制信息卡+下载 CTA);SettingsModal 迁移 SettingRow+actions 底栏;InboxList 接 docBridge。 - modules/documents:本卡 + 提案补记(渲染顺序=落库顺序 约定)。
同步记录
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|---|---|---|---|
| 启动 | ffda6d33ea |
ffda6d33ea |
2026-09-30T14:54:07Z |
| 同步前验收 | ffda6d33ea |
76e255342b24e34f1b344784c87f5b076c6b8557 | 2026-09-30T15:18:27Z |
| 合入前(子仓变基至 cross-session-reading 合入后的 main 并全套重验) | ca84888… | e6fdc5b… | 2026-09-30T15:35:00Z |
结果与验证
- 结果(四子仓 PR 均已合入 main;Dev gitlink 推进):
- UI https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-UI/pulls/14(merged)
- Backend https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Backend/pulls/19(merged)
- Frontend https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Frontend/pulls/15(merged)
- Documents https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Documents/pulls/22(merged)
- 验证:
make precheck(READY,R0=ffda6d33ea);make task-sync(synced,15:18:27Z)。make test(Dev 组合,gitlink 推进后):core ok、backend 全包 ok(含 disposition/MIME 新测)、frontend vitest 20 passed、ui tsc + 37 passed、agent-command ok。- 头链(Playwright + 缓存 Chromium,mock 后端 + SQLite 直插交错 parts 探针消息)12/12:
消息 DOM 序 = text → process-collapse(含 knowledge_search) → text → artifact-chip;
设置外壳 computed flex-direction=row、侧栏/主区并排、actions 底栏含"保存设置";
?download=1→ attachment + RFC5987 中文名、默认 inline;工件面板 工具栏/过滤/上传/行内下载齐全。
- 影响与剩余项:
- docx 在线预览未做(下载为主;pdf 已内嵌预览)——如需 docx 预览需引入新依赖,另行裁定。
- live 流式顺序为到达序投影,与顺序执行的工具调用一致;并行工具执行的顺序语义需后端先定义。
- Mimosa 钩子在个别 commit 报 scanner_no_output(按兼容策略继续);未宣称安全结论。
| 同步前验收 |
816b40e8f7|26230bcea0| 2026-09-30T15:27:57Z |