15 KiB
对话区对标阶段进度(2026-10-08)
2026-10-09:删除对话确认浮层
通过 WorkBuddy 9223 CDP 打开真实会话菜单的「删除任务」,仅采集并取消,未删除会话。参考实际组件为 wb-popconfirm:无全屏遮罩,贴会话行右侧、8px 间隔及小箭头;宽 240px、内边距 16px、边框 #dedede、圆角 16px、两层轻阴影;标题 16px/24px、600 字重,说明 14px/22px、黑色 70% 透明度;正文与按钮区间隔 24px,按钮间距 12px、高 32px、圆角 8px,确认按钮 #e85c5c。
Ygent 删除入口改为共享的行锚定浮层,侧栏和项目列表均使用相同组件;空间不足时左右翻转及纵向避让,随滚动/尺寸变化更新定位。文案按真实能力显示「删除对话?」和「删除后,对话记录将被移除,且无法恢复。」,不照搬 WorkBuddy 的所有设备同步承诺;后台删除规则与工作目录保留行为不变。初始焦点放取消,支持 Escape、外部点击关闭、Tab 焦点循环及关闭后焦点恢复;提交期间禁用操作并防重复提交,失败保留浮层与原有错误提示。重命名入口保留原交互。
真实 Ygent WebView2 1335×916、DPR 1 实测浮层 240×166,文字/按钮尺寸、颜色、间距、边框与阴影匹配参考;WorkBuddy 视口为 1334×919、DPR 1,未为采集修改用户窗口。原生验证取消、Escape、焦点循环与恢复,未实际删除用户数据;构建通过。截图保存在用户私有目录 ~/.ygent/imports/session-delete-native.png。提交中/失败保护通过实现审阅确认,本轮未触发真实删除请求。
2026-10-09:工具状态图标补齐
按当前本机 WorkBuddy 前端包的 ToolHeader、ToolExpandable 和工具图标注册表核对,Ygent 的 ToolCard 改为工具类型图标,不再将普通成功状态统一替换为绿色勾。读取、写入、命令、搜索、目录、网页、技能、计划、Agent、浏览器和通用工具采用核实的向量路径;Ygent 内置任务/浏览器/技能及 OMP 别名映射到对应类别。
图标为 14×14,中性灰;失败/取消使用参考组件的灰色感叹号。命令外层摘要保留终端图标,意图层显示异常标记。执行中普通工具隐藏图标,文字采用参考组件 2.2 秒扫光;写入工具保留图标并以 1.2 秒周期改变透明度,减少动态效果时静态显示。成功、失败、取消的原始数据和输出保留,状态在可访问名称及悬停说明中区分。权限回执移除装饰性勾叉;下拉选中标记和复制反馈不受影响。
验证:构建及对话回归通过;组件矩阵覆盖 14 种工具/别名的完成、运行、失败、取消与手动展开保留。真实 Ygent WebView2 1335×916 下核验当前普通会话的浏览器成功与失败工具:SVG 几何匹配参考包,实际图标 14×14、颜色 rgba(0,0,0,0.5),无逐工具旋转图标。当前 WorkBuddy 页面没有工具行,本轮参考来自已安装源码与此前命令原生采集,未声称完成所有类别的 WorkBuddy 双端实时流式验收。原生证据保存在用户私有 imports 目录。
阶段状态
按用户要求,对话区工作在此阶段收尾,暂不继续修改。当前状态为:主要字体规则、工具呈现、折叠状态和流式事件管线已实现并分层验证;尚未完成 WorkBuddy 双端原生流式 1:1 验收。本页是恢复工作时的当前进度入口,详细证据与历史基线保留在关联文档中。
目标仍是流式交互效果一致,包括块顺序、工具增量、自动/手动折叠、滚动、完成/失败/取消和重载恢复。所有会话共用呈现规则,不能按会话标题、ID或导入身份修补。产品名称与头像统一为 Ygent;名称字体、头像尺寸和间距参考 WorkBuddy,品牌内容按用户要求保留 Ygent。
已完成的实现与验证范围
| 模块 | 当前实现 | 已取得的证据与边界 |
|---|---|---|
| 调试与参照数据 | 原生 Tauri WebView2/CDP 调试、WorkBuddy CDP/打包源码分析、真实本地对话导入及元数据补齐 SOP;规则写入 AGENTS.md | 对话界面修改以真实 DOM、计算样式、几何及状态验收,截图作为补充。原始会话/源码采集保存在私有目录,不入库 |
| 窗口与六档字体 | 对齐窗口基准1335×916;设置滑杆、快捷键和持久化共用六档;正文/UI采用不同缩放规则,名称、Markdown代码、终端代码分别管理字体族 | 两端默认及六档原生测量:108组字号/行高、18组几何对比一致。此为当时指定9个位置的结果,不能外推所有组件;本机系统字库依赖仍存在 |
| 工具基础外观 | 历史、过程、实时回合共用 ToolCard;命令摘要/意图/输出分层,修正颜色、竖线、缩进、滚动条和长命令断行 | 同一失败命令的原生面板文本、换行及尺寸与WB匹配;失败摘要保留灰色终端图标,意图层有失败标记,输出保留非零退出码。其他工具类型状态图标尚未全面验收 |
| 路径与阶段元数据 | 共用行内路径组件;普通会话通过真实IPC识别路径,导入会话补齐来源元数据;只恢复有来源事件的“深度思考”标题 | 参照路径标签几何匹配,普通真实目录可识别、不存在候选不变成链接;增量保留控件。路径实际打开的完整行为、文件图标和公开思考阶段仍待补验;内部推理正文未导入 |
| 正文锚点与整体折叠 | 完成/取消共用“全部并列最长正文+最后正文”;中间短正文进入过程;整体展开显示完整时间线,权限/产物保留专用渲染器,末段后真实事件不挪到前面 | 组件覆盖最长位置、并列、一/两段、空白、混合过程、权限/widget及尾部工具。原生完成/取消3个样本验证完整/摘要互斥和节点/详情状态保留;WB自动折叠资格和时机尚未完整对照 |
| 展开状态与增量稳定性 | 按回合/消息ID持有组、工具、意图状态;单工具升级为组保持边界;完整时间线与摘要首次挂载后隐藏而不卸载;普通增量不重置手动选择 | 运行→完成/取消、最终输出更新、父层往返、明确关闭的详情、代码容器/复制按钮/路径控件均有回归;原生历史样本往返通过。文字选择、面板滚动位置及超长会话性能不能据此算通过 |
| 工具动作摘要 | 40种动作/别名按参数对象、动作组、相邻正文和状态生成标题;运行/等待/未知动作有对应文案,不把命令正文或工具意图任意拼成标题 | 与安装WB纯摘要函数离线对照1760组一致;17个独立语义场景及标题更新不重建节点回归通过;原生3组检查字号/省略与往返。组头图标、推理参与分组、底座命名适配和双端真实流式标题切换待验收 |
| 流式事件与持久化 | 请求/会话/块/工具ID隔离;正文按工具边界分块,工具start/update/end原位合并;按创建顺序串行落库;取消拒绝迟到事件;SSE按完整字节行解码 | 组件/模拟IPC事件回归及先前16项Rust测试通过;YG真实Rust/Tauri/WebView2+隔离受控SSE的6项端到端检查通过。受控HTTP服务不是实际OMP/Codex模型,也不是WB双端动态验收 |
阶段末的验证记录
- 最新前端实现通过
pnpm check:chat,包含事件隔离、渲染/折叠保留及17个摘要语义场景;pnpm build通过,仍有既有大bundle提示。 node scripts/fe-check.mjs在整体折叠统一后通过;先前Rust16项测试和隔离SSE6项记录属于对应批次验证,没有在纯文档收尾时重复运行。- 原生对话实测以1335×916、DPR1、默认2档为主要条件,普通会话和导入参照会话均有检查。不同尺寸、所有消息类型、所有工具底座并未全面覆盖。
- 正式参照会话没有发送测试请求;未替换真实IPC或向正式会话注入delta。原生历史往返、组件合成事件、离线源码对照和隔离SSE测试分别记录,不能互相替代。
私有证据目录为 C:/Users/Administrator/.ygent/imports/render-audit-20261008/,关键记录:full-turn-fold-native-check.json、tool-summary-native-check.json、summary-oracle-check.mjs、native-stream-check.json。其中早期anchor-layout-native-check.json对应仅展开前段历史的旧入口,当前整体入口已改为完整时间线/摘要切换;不能直接沿用旧选择器和计数验收新实现。
剩余工作及优先级
| 优先级 | 未完成项 | 下次验收位置/通过条件 |
|---|---|---|
| P0 | 滚动跟随与阅读锚点(S05) | ChatView的messages/atBottom逻辑,以及展开、字体、图片、公式、widget异步变高;贴底跟随,上翻不拉回,回底恢复,记录scrollTop/scrollHeight及锚点 |
| P0 | 自动折叠时机与活动回合资格(S04) | WorkBuddy活动/非活动回合、后续正文、完成/取消和尾部工具;按事件采集双端时间序列,不能只比较终态截图 |
| P0 | 实际OMP/Codex与WB动态链路(S01/S02/S06) | 隔离会话中真实工具增量、并行、空结果、失败、取消、迟到、切会话、重载;核对正文/工具顺序、完整输出及落库恢复 |
| P1 | 公开思考/等待/错误阶段(S07) | 接入有依据的公开阶段/摘要,检查首字前、工具中和终态的可见元素;不伪造内部推理、模型或消耗元数据 |
| P1 | 组头图标、组成员与局部间距 | 通用摘要头图标、推理事件是否参与分组、非命令工具状态图标;组内gap、reasoning包装与段落间距分别测量,不硬补整段高度 |
| P1 | 回合尾部与更多交互 | 产物入口/操作栏、代码/表格/widget中间态、搜索命中展开、队列、附件与@/技能候选等,区分已有入口和真正接通/验收的行为 |
| P1 | 长会话与跨环境 | 完整/摘要保留DOM的挂载量、829条及更长会话性能,窗口/右栏变化、六档扩大覆盖、系统字库缺失回退 |
原精确差异清单中的40项渲染差异、4项外围差异、5项交互缺口和15个待验收场景是修复前及指定采集范围的基线,不是当前剩余数量。部分已修、部分有后续修正、部分未验收,不能据此计算“完成百分比”,也不能把当前所有差异都归为未修代码。
恢复时建议先选择隔离测试会话与同条件双端样本,更新原生基线/展开状态,再处理S05滚动及S04触发时机,随后补真实底座动态验收。任何新结构调整都复测增量、手动展开、取消、顺序和重载;正式参照会话继续保持只读测试原则。
文档入口
- 动态实现与逐项验收记录:S01—S07、各批次实现、原生证据与必测序列。
- 原生渲染差异基线:逐位置坐标、字体、几何及历史D/C/V项。
- 六档字体验收:缩放规则、实际字库和测量结果。
- Ygent调试SOP、WorkBuddy调试SOP、参照数据导入SOP。
- 旧路线图及工具折叠源码参考:用于追溯设计,不替代本页当前状态和动态验收记录。
对话页面背景调整(2026-10-08 补充)
按用户后续要求,对话页面外层采用与侧栏、项目页相同的连续背景:移除 .main-chat 的整块白底,工作台区块与分享区移除外层分割线,分享区底色透明。输入框、用户消息气泡和代码块保留内容层级。本次是页面设计语言调整,不计作 WorkBuddy 白底的逐像素一致性验收。
通过真实 Tauri WebView2 / CDP 9335 在 1335×916 视口检查普通对话、工作台展开和分享模式。主区域与分享区 computed background 为透明,工作台分割线与分享区上边框为 0;退出分享后输入框正常恢复。采集保存到私有 .ygent/imports/chat-surface-20261008/。
与新建任务页统一视觉(2026-10-08 补充)
按用户最新要求,对话页沿用新建任务页的品牌渐变背景;两处输入框共用半透明白色表面、16px 圆角、轻描边、柔和阴影与蓝色聚焦环,发送按钮统一品牌蓝。共享输入表面变量集中于 tokens.css,避免页面分别维护后再次出现差异。停止按钮保留独立语义与危险色悬停反馈。
对话仍采用适合连续阅读的正文宽度和底部输入布局。此次调整为产品视觉选择,不代表 WorkBuddy 静态或动态对标项目全部通过。原生 Tauri WebView2 在 1335×916、DPR 1 下检查新建任务、普通对话、829 条消息的历史会话、输入框聚焦及工作台展开;背景和输入表面计算样式一致,未出现窗口横向溢出。此次没有新增流式执行验收。证据位于用户私有目录 .ygent/imports/chat-newtask-style-20261008/。
发送输入反馈修复(2026-10-08 补充)
原输入框在 await onSubmit/send 返回后才清空,因内核确认或直连流式 IPC 等待导致已发送正文长时间残留。共享 Composer 与新建任务输入改为提交后立即清空;拒绝或异常时恢复原文,若用户已输入新草稿则同时保留两段,成功回执不清除新草稿。提交中的按钮禁用,与同步锁共同避免重复发送。此次仅调整输入反馈,不缩短内核响应耗时,也不修改请求接受或失败判定。
验证:在原生 WebView2 中额外挂载辅助 Composer,用可控异步回执检查立即清空、成功保留新草稿、失败恢复且不覆盖新草稿、字符串拒绝恢复及重复提交禁用;没有替换真实 IPC,没有发送实际消息,不能视为真实内核端到端验收。证据为私有目录 chat-newtask-style-20261008/send-check.json。
右侧工作台开始接入(2026-10-08)
以当前 WorkBuddy 的标签工作台重新梳理范围,已接入真实目录、文本预览及 Git 读取,不再把文件变更入口实现为跳回对话。详情、真实原生验收和未完成范围见 工作台进度。内嵌浏览器、富文档、终端、引用来源及完整流式刷新验收仍待完成。
对话授权与问题回答(2026-10-09)
输入区浮动卡、紧凑历史问答、真实 OMP 选项/自由输入/跳过回传已接入。修复完全访问隐藏问题、问题被误当授权、Other→editor 重复记录与旧回执覆盖新状态。原生隔离链路 7 项及六档字号检查通过,批量多选与双端同场景动态验收仍待补充。详见 实现与 SOP。