Files
ycode/docs/reference/ygent-attachments.md
T

49 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 输入框菜单与附件进度
2026-10-08:已将技能、连接器从输入框底栏合并到 WorkBuddy 风格的“+”二级菜单。新建任务、普通对话和项目内输入使用相同添加菜单与附件组件。专家仍按能力接入方案 P3 实施,当前菜单不显示未实现的专家操作。
2026-10-09:添加列表进一步统一为12px圆角、36px行高和线条图标;文件来源子菜单收窄至200px,两级菜单间隔4px,首行内容沿父条目对齐。技能/连接器的重复标题移除,勾选控件统一置于行右侧,空态和管理入口采用相同间距。原生9335验证三种子菜单在六档字号下均位于视口内,位置仍随内容尺寸与窗口边界调整;本轮实际列表为空,未新增安装或修改会话能力选择。
## 当前行为
- + → 添加文件 → 本地文件,调用系统多选选择器;也支持拖入输入框。拖到侧栏等输入框以外位置不添加。
- 一次/一条消息最多8个附件,单文件不超过20MB。草稿展示名称、大小和移除按钮;可不填写文字直接发送,使用“请查看附件”作为请求。
- 导入时将原文件复制到 Ygent 数据目录 `attachments/<独立ID>/`,保留文件扩展名,原文件不移动、不修改。相同名称独立保存,源文件随后改变不影响已保存副本。
- 附件元数据由后端按ID解析,与用户消息在同一SQLite事务内保存到 render_meta;正文仍为用户输入,不混入附件路径和文件内容。显示、重载和分支使用此元数据。
- OMP 请求加入附件副本路径;UTF-8文本内联前128KB,超过部分明确标注截取,工具可继续读取副本。图片/其他二进制保留真实扩展名和副本路径,由模型的文件工具读取;不能宣称所有文档格式均已支持。
- 直连模式只支持128KB以内、不含NUL的UTF-8文本附件;不支持的二进制/大文本在发送前明确报错,不产生用户消息。直连后续请求重新从真实副本恢复历史附件上下文。
- 发送后立即清空草稿;失败恢复文字和附件。切换会话/页面清理当前附件草稿,文件选择期间切换页面不会把旧选择落到另一输入框。生成中不改动当前回合附件。
- 技能与连接器仍使用原会话选择逻辑,菜单显示已选数量,生成中不能修改选择;管理入口进入相应的技能/连接器标签页。
## 已验证
环境为真实Tauri WebView2、CDP9335,视口1335×916、DPR1。使用独立临时对话和本地测试文件,未在参照会话发送测试消息。
1. 真实IPC导入UTF-8文本,OMP模型回答附件中的验证口令。
2. 在新建任务页面通过受控Tauri拖入事件触发前端导入,再点击实际发送按钮;模型正确读取,重新载入会话后附件名称/大小仍存在。
3. PNG附件通过真实OMP `read` 工具读取,模型正确回答图片主色;不是仅将图片名称作为文字传入。
4. 真实数据库回复分支包含两条用户消息的附件元数据。
5. 用直连模式发送PNG,消息数不变,前端文字及附件恢复,显示明确限制提示。
6. 1至6档真实原生DOM测量,菜单字号为13/14/15/16/16/16px,子菜单没有内部横向溢出,位于视口内。主菜单的scrollWidth包含向右定位的子菜单,不把此正常外部定位当作内部文字溢出。
7. Rust 33项测试、前端构建、对话回归通过;附件测试覆盖副本独立性、路径越界拒绝、二进制直连拒绝与OMP引用。
证据位于用户私有目录 `~/.ygent/imports/hello-layout-20261008/yg-attachment-*` 和 `yg-add-fonts.json`,不提交真实消息/截图。测试对话已从可见列表删除,恢复原会话5、OMP及字号第2档。
## 验收边界与后续
系统文件选择器使用真实后端Dialog API,但本轮没有自动操作Windows原生文件选择窗口;受控拖入事件验证的是前端处理和真实导入链路,不等同于真实鼠标拖拽验收。项目内输入复用同一组件和发送合同,项目对话附件专项尚未单独发送模型测试。
尚未接入项目资产选择、云文件来源、附件内容预览、图片缩略图、OCR/文档转换及自动清理未发送的副本。二进制解析能力取决于当前OMP工具/模型;本轮明确实测UTF-8文本与PNG,不承诺PDF/Office等类型全部可读。当前副本保留用于历史与分支,移除草稿不会删除源文件或历史副本。
## 调试操作
按 `ygent-debug.md` 启动9335,打开临时对话;使用原生DOM和IPC采集,禁止用浏览器模拟IPC代替桌面验收。日常验证命令:
```powershell
npm run build
npm run check:chat
cargo test --lib --manifest-path src-tauri/Cargo.toml
```
真实模型验收分别发送含唯一口令的文本和具有明确主色的PNG,检查模型响应、工具调用、render_meta、重载及分支;失败路径检查消息未误发送、正文/附件恢复。恢复原会话与字号,清理临时对话,不改用户参考消息。