测试范围:v0.5.22 → v0.5.23 变更 | 测试日期:2026-06-25 | 测试环境:macOS 本地 Docker (render-only 渲染 + 手动启动)
关联 PR: #979 feat(chat): 支持 MEDIA 文件卡片渲染与下载
当 LLM 输出 MEDIA:/root/智能助手工作空间/{sessionId}/sine_wave.wav 时,FileCardComponent 正确渲染(显示文件图标 + "点击预览文件"),但"打开文件"和"下载文件"按钮均为 disabled 状态(opacity 0.6, cursor: not-allowed)。
collapseMediaTags() 正确将 MEDIA 行转换为 <blade-file-card data-rel-path="sine_wave.wav" data-name="sine_wave.wav">,正则和路径提取逻辑均无问题。
但 streamdown 没有将 data-rel-path 和 data-name HTML 属性传递给 React 组件。通过 React fiber 检查确认:组件收到的 props 只有 node,而 node.properties 是空对象 {}。
尽管 allowedTags 已配置 [FILE_CARD_TAG]: ["data-rel-path", "data-name"],streamdown 仍未将这些属性注入 node.properties。
所有 MEDIA 文件卡片的"打开文件"和"下载文件"功能完全不可用。用户无法预览或下载 agent 生成的媒体文件。
web/packages/agent-kit/src/react/components/markdown/FileCardComponent.tsx — disabled 判断: !sessionId || !relPath || !isSafeRelPath(relPath),relPath 为空导致 disabledweb/packages/agent-kit/src/react/components/markdown/MarkdownContent.tsx — allowedTags 和 collapseMediaTags 逻辑配置 MODEL_ID=deepseek/deepseek-v4-flash 后,启动日志显示 tokenizer warmup finished: model_dir=deepseek-v4,tokenizer 正确识别并加载。
MEDIA 文件卡片 UI 渲染正确:显示文件图标、"点击预览文件"文本、下载按钮。文件详情表格(文件名、大小、时长、频率等)正常展示。仅下载/预览功能不可用(见 BUG-1)。
软件工厂页面显示 3 个在线项目(多轴打击态势推演 :25003、住宿登记系统 :25002、民宿用户登记系统 :25001),端口分配正常。沙盒容器创建成功:日志显示 sandbox preflight passed: image=blade-sandbox:v0.0.19。
输入三行文本(Shift+Enter 换行),发送后消息气泡中换行正确保留。
需要在长时间运行的任务中模拟 WebSocket 断连,浏览器自动化难以可靠触发此场景。建议手动测试。
需要 LLM 主动调用 AskUserQuestion 工具并使用 multiSelect 参数,通过自动化测试难以可靠触发。建议手动测试或通过 headless API 构造。
需要大量沙盒同时运行以耗尽端口池,测试成本高。用户已确认可跳过。
需要创建持久会话、分配端口、删除后再创建新会话验证端口不冲突。受限于测试环境,建议手动验证。
registry.cn-beijing.aliyuncs.com/bladeai/blade-agent:v0.5.23registry.cn-beijing.aliyuncs.com/bladeai/blade-sandbox:v0.0.19registry.cn-beijing.aliyuncs.com/bladeai/skill-registry:v0.3.11registry.cn-beijing.aliyuncs.com/bladeai/blade-os:v0.2.35