Files
ctbjrj/.zcode/plans/plan-sess_2ed54f95-ab0c-4078-a4d3-1c950002662f.md

24 lines
2.2 KiB
Markdown

# 拖入文件回归 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 分支均不动——桌面端行为不受影响)
## 构建与部署
1. 改 `zcode-build\ZCode\packages\ui\src\lib\chatAttachments.ts`(约 4 行)。
2. `pnpm build` 重建(曾完整跑通过)→ 把新 `packages\web\dist` 覆盖到 `ai助手\zcode\web\`(项目+安装目录 C:\成套报价软件 两份)。
3. 主程序重编(DockWindow10 回退版)→ 同步 bin+安装目录 exe → 重启软件。
## 验证
- 无头 playwright:拖 xlsx/png 到聊天框 → **原生附件胶囊出现** → 引擎日志 `attachmentBeginV4/ChunkV4/CommitV4 OK`(不再出现"缺少可读取内容");CSV 文本回归原生通道不受影响。
- 你实测拖一个 Excel:应看到和拖文本一样的附件胶囊+上传完成,随消息一起发给 AI。
## 记录
代码索引追加;构建脚本不动;打包等你说打包再做。