2.2 KiB
2.2 KiB
拖入文件回归 ZCode 原生机制:删光我的桥接 + 修前端源码漏读二进制内容
先认错
拖放应该用 ZCode 原生的附件流程(拖入→附件胶囊→原生上传→随消息发送),我擅自拦截并自动发路径消息,是越权,全部删除。
改动一:DockWindow10.cs 回到干净状态
删除我加的全部拖放代码:拖放拦截JS 注入、WebMessageReceived 处理器(AI面板_收到网页消息)、处理拖入文件、发送消息到聊天。保留原有功能(浅色主题注入、⚡按钮、引导页),按钮此前已删。
改动二:修 ZCode 前端源码(根因修复,原生通道)
根因(已从源码实证):packages/ui/src/lib/chatAttachments.ts 收集附件时——图片/PDF/视频分支都会 readAttachmentBase64(file) 读内容走原生上传(引擎侧 attachmentBeginV4/ChunkV4/CommitV4 通道实测可用);普通文件(xlsx/dwg/zip…)的兜底分支只读文本(isTextLike 才 textContent),非文本直接返回"仅元信息"→"附件缺少可读取内容"。
修法:兜底分支补上与图片分支同款的 readAttachmentBase64——非文本二进制也读成 dataBase64,走 ZCode 原生上传协议。一处改动,原生 UI/胶囊/上传进度/发送全流程不变。
(原路径 localPath 分支、文本 textContent 分支均不动——桌面端行为不受影响)
构建与部署
- 改
zcode-build\ZCode\packages\ui\src\lib\chatAttachments.ts(约 4 行)。 pnpm build重建(曾完整跑通过)→ 把新packages\web\dist覆盖到ai助手\zcode\web\(项目+安装目录 C:\成套报价软件 两份)。- 主程序重编(DockWindow10 回退版)→ 同步 bin+安装目录 exe → 重启软件。
验证
- 无头 playwright:拖 xlsx/png 到聊天框 → 原生附件胶囊出现 → 引擎日志
attachmentBeginV4/ChunkV4/CommitV4 OK(不再出现"缺少可读取内容");CSV 文本回归原生通道不受影响。 - 你实测拖一个 Excel:应看到和拖文本一样的附件胶囊+上传完成,随消息一起发给 AI。
记录
代码索引追加;构建脚本不动;打包等你说打包再做。