# WorkBuddy 对话与输入交互统一对齐方案 > 双机协作入口:[开发与验收协作流程](协作/开发与验收协作流程.md)。仅使用 `gitea/master` 交接;另一台电脑开发,当前对话验收、评审与规划。以下复测版本是历史基线,正式复测以开发端交付记录中的完整 SHA 为准。 > 2026-10-21 Windows 复测:开发成果已在 `gitea/master` 的 `37ddb2c`,而当前本地 `master` 的 `771ca54` 只保存了方案。已对新版本做隔离构建、回归、原生窗口与专项反例测试。**基础功能已落地,但尚未完整验收**;继续开发请先读[复测结果与后续指引](对话输入对齐复测与后续开发-2026-10-21.md)。下文仍为验收目标,不能将条目存在视为实现完成。 ## 一、目标与证据基线 统一覆盖十项:**会话加载、模型选择、权限保存与首发生效、模式输入栏、过程分组、运行状态、问答展示、完成收起/展开、工具授权、归档/删除确认**。 - 以 WorkBuddy 5.8.3 截图及已核验代码、样式为目标;历史源码明确版本范围,当前文件哈希相同的部分可以复用。 - 所有原版调查通过 REA。区分静态代码确认、运行行为验证和像素验收,不将编译通过视为完整对齐。 - 保留处理时间及其他任务已有修改,实施前重新审阅差异,增量补齐,不重做已有修复。 - 不更换内核、不重建数据管理页面,不伪造模型、费用、进度、审批原因或超时状态。 ## 二、会话加载、模型与权限一致性 ### 会话加载 - 接入现有 loading 状态,区分新任务首页、已有空会话、加载中和加载失败;不再因加载时消息为空而显示首页。 - 无缓存时恢复原版两组消息骨架:用户气泡、助手头像/名称和三行正文占位,使用主题 token、1.5 秒扫光及约 300ms 淡出。 - 目标会话有非空缓存时先显示其消息,不显示骨架;重复点击已就绪的当前会话不清空、不闪烁。 - 保留页面框架和输入区;标题未知时显示顶栏占位。保留草稿,但禁止向尚未就绪的会话发送。 - 保留 session/version 防串、活动回合快照和缓冲事件归并;失败撤除骨架并提供错误与重试,旧请求不得覆盖新会话。 - 使切换反馈先于异步结果呈现;另测大历史的解析和渲染阻塞,仅优化实测热点,不以骨架动画替代性能修复。 ### 模型选择 - 输入栏与发送路径共用有效模型解析;没有模型时显示“配置自定义模型”,点击进入配置并阻止发送。 - 移除旧配置名称回退,不能因选择为空或失效而显示不存在的 `deepseek-chat`。 - 新增成功后自动选中新模型,同步全局默认和当前任务下一次请求;编辑已有模型不无故改变选择。 - 删除后清理会话、草稿中的失效引用:有剩余模型则使用有效默认选择,否则清空。 - 进行中的请求及历史消息保留真实模型快照,不因模型删除或新增而改写。 - 检查旧配置迁移,保留真实用户配置,不从程序内置默认值凭空创建模型。 ### 权限保存与首发生效 - 补齐草稿权限 → 会话创建 → 持久化 → 请求参数 → 内核策略,修复创建会话遗漏 permissionMode 的路径。 - 已有会话以保存权限为准,全局偏好只作为新任务默认值;首发直接读取权威选择,不依赖 effect 尚未同步的副本。 - 请求更新权限后同步前端会话元数据;重启、重入、活动回合恢复后,标签、存储、请求和内核策略一致。 - 验证 craft 完全访问从首条请求生效,无需停止重选;保留明确安全例外及 plan/ask 限制。 - 复用另一任务已有的权限保存和策略更新,不新增第二套权限状态。 ## 三、输入栏、过程、问答与完成态 ### 模式输入栏 - 恢复 StatusChips/ModeChip:craft 不显示,plan 为剪贴板图标+“计划”,ask 为气泡图标+“仅问答”。 - 使用原版 SVG 和样式:32px 高、8px 水平内边距、4px 间距、16px 图标、13px/20px/500 文字,恢复主题及焦点规则。 - Chip 本体不打开下拉;hover/focus 显示清除按钮,点击回 craft;模式变更禁用时不显示清除按钮。 - 恢复加号 → 分支 → 权限 → 模式及其他状态的插槽,右侧保留模型、麦克风和发送。 - plan/ask 真正禁用权限控件,并关闭、卸载已打开的权限浮层,保留原因提示。 - plan 使用默认权限并保留进入前的值用于退出恢复;ask 保留此前权限显示但禁用修改。补核当前版本宿主差异,不覆盖用户保存的原始偏好。 - 加号菜单与 Chip 共用会话/草稿模式状态,切换失败回滚、保留草稿;不增加模式专属 placeholder。 ### 过程与完成折叠 - 移除全局最新组过滤和全回合过程聚合;各段独立计算摘要、管理明细和展开状态。 - 连续至少两项可折叠过程形成候选段;后方出现非空正文或回合结束时才局部收起,当前尾段保留独立思考和工具项。 - 保留正文锚点、提问、widget 等特殊分类,新过程不覆盖旧组。 - 回合结束、允许折叠且存在正文锚点时,生成默认收起的完成/取消耗时块;展开后按原顺序显示。 - 外层完成折叠、局部摘要、思考和工具分别管理状态,不用一个布尔值控制全部层级。 - 完成操作区对齐顺序、间距、模型和时间规则;使用真实终态时间,不冒用创建时间,不将时间显隐绑定到折叠状态。 ### 提问与已回答记录 - 对齐 QuestionFloating 的分页、选项、自定义补充、关闭、提交、键盘、焦点及提交中/失败状态,恢复原版 24px 圆角和排版。 - 已答记录恢复 QuestionView/ToolExpandable:问题与答案均为 14px、行高 1.75、不额外加粗;问题 tertiary,答案 primary。 - 恢复灰底、16px 圆角、`12px 16px` 内边距、条目间距和滚动限制。 - 统一 interaction 与工具 metadata 投影,按工具关联去重并放回提问位置,移除最终正文后的重复追加。 - 内联问答不参与普通工具摘要,但允许进入外层完成折叠;历史缺失节点保留兼容路径,不丢记录、不伪造顺序。 ## 四、运行状态与授权交互 ### 底部运行状态 - 增加共享运行进度类型和 ChatEvent 进度事件,由当前 Claude SDK、准备流程及交互代理提供真实阶段和工具信息。 - 贯通序列控制、事件归并和活动回合恢复,按 session/run 隔离,终态清理。 - 恢复文案顺序:有效准备阶段 → 云启动阶段 → agent phase → “思考中”;文案、工具 detail 和覆盖条件按 REA 恢复。 - 恢复 reasoning-only 显隐、网络恢复专用展示、真实收尾分支及准备/bootstrap 的 tips 控制。 - tips 保留原版延迟、轮换、悬停/焦点暂停和关闭回调;不补造云状态、credit、网络原因或静默超时提示。 ### 工具授权卡 - 按真实请求类型选择原版对应组件。截图中的规则拦截使用 InterceptCard/SandboxInterceptCard 结构,不再统一套用高额度审批或居中权限模态。 - 恢复输入区宽卡、24px 圆角、16px/500/25px 标题、命令或目标说明、编号选项、选中背景及箭头;普通选项行采用原版 40px 高和12px 圆角。 - 补齐审批数据契约中的真实工具名、命令/目标、原因、规则信息及允许范围,避免把 toolCallId 当作工具名称,不把所有请求描述成“命中询问规则”。 - “查看拦截规则”放在右上 headerAction,展示实际命中信息;缺少规则身份或详情时使用明确的不可用说明,不捏造规则页面。 - 恢复允许一次、会话允许、拒绝及键盘、提交中、失败重试状态;只根据真实能力提供会话允许选项。 - 保留 run/id 绑定和重复提交保护,提交失败不能显示已授权,取消或终态不得执行滞后的审批响应。 ### “本次会话内始终允许”生效链路 - 先建立真实 SDK 回归,检查整组 suggestions 是否正确返回、SDK 是否应用,以及后续请求是否匹配同一授权范围;不得仅凭按钮提交成功认定修复完成。 - 会话允许仅授予用户确认的建议规则,不改为完全访问,不按工具名做无条件放行,不自行扩大命令、路径或操作范围。 - 区分 YCode 对话、单次 run 和内核实例。会话授权以 YCode session 为隔离边界,不能因正常切换会话、跨回合或内核重建而无故丢失。 - 若 SDK 的会话规则不能随内核恢复,在主进程维护最小必要的、类型化的会话授权记录,并通过 SDK 支持的权限接口重放;不得用字符串模糊匹配绕过安全检查。 - 会话授权不写入用户级/项目级永久权限设置。客户端重启后的行为需通过原版 REA 证据补核;在证实前不承诺跨启动持久化。 - 显式拒绝、不可覆盖的安全规则和 plan/ask 限制继续有效;规则恢复失败时保留审批要求并报告失败,不能默默扩大权限。 ## 五、任务确认、实施与验收 ### 归档/删除确认 - 两种确认改为任务行右侧 240px Popconfirm,恢复箭头、排版、按钮、确认自动聚焦、Escape 和外部点击关闭。 - 共享 Popover 增加可选锚点、箭头、点击吞掉、宿主类及无障碍属性,默认不影响其他调用。 - 无遮暗模态遮罩,外部点击不误选底层任务;边缘避让,锚点失效时关闭并合理恢复焦点。 - 异步确认防重复,成功关闭,失败保留浮层和可见错误。 - 按此前选择恢复原版归档说明,记录其指向当前不存在入口的差异;保留全权限确认仍使用的模态样式。 ### 实施与验证 - 主上下文先统一进度事件、审批数据与授权作用域、问答投影和输入栏/Popover 接口,再委派边界明确的子任务;主上下文负责集成、审查和最终验证。 - 加载测试覆盖无缓存、有缓存、重复点击、延迟 IPC、失败重试、A→B→C 乱序返回、活动回合恢复和大历史;等待期间侧栏仍可切换。 - 模型与权限测试覆盖删空后新增首发、失效草稿、重启、模型快照、新任务完全访问首发、会话保存及模式进出恢复,核对界面/存储/请求/内核一致。 - 授权测试覆盖允许一次后再次询问、会话允许后匹配请求不再询问、不匹配请求及另一会话仍询问、跨回合与内核重建、拒绝、取消、并发请求和应用失败。 - 用同一轨迹验收提问中、完成收起、完成展开;逐事件验证“正文 A→思考→工具→正文 B→新工具”,覆盖去重、长文本、多选、跳过、失败和历史兼容。 - 回归其他 Popover、全权限模态、归档与删除;运行相关对话、摘要、聊天、内核、审批、权限、模型、字体及持久化测试,以及 token 检查、typecheck 和 build。 - 在相同视口、DPR、缩放、主题和字体下检查实际窗口,交付加载、模式栏、对话三态及授权卡截图、测试结果、REA 版本/Evidence 和剩余差异。 - 分别报告结构、交互、授权语义、性能、样式及像素验收状态;未查明的原版授权生命周期明确保留,不以推测或界面成功替代验证。 ## 六、方案来源与精简交接材料 - 本文前五节恢复自 Codex 对话“检查正在思考状态逻辑”(`01a158f8-0ddd-7710-8466-f5717cbd6cc8`)中用户要求“融合到方案里面”后的最新十项完整计划;此前仅存在于对话,并未保存到文件。本次仅保存和交接,不代表实施完成。 - 精简材料按该对话及授权卡取证子任务的引用筛选,保留原有相对路径,复制到交接项目的 `.tmp/`;清单为 `.tmp/workbuddy-interaction-handoff-manifest.json`,逐文件记录大小及 SHA-256。材料不提交 Git,需单独随项目交接。 - 主要入口:`.tmp/rea-runtime-scripts.json`(历史运行时脚本)、`.tmp/rea-css-recovered/manifest.json`(恢复 CSS 的来源清单)、`.tmp/rea-css-evidence/`(本方案引用的选定证据)、`.tmp/rea-context-source-candidates-20261017/src-0FGg1seX.js`、`.tmp/task-menu-runtime-source.js`、`.tmp/rea-visual-tool-expanded/` 及完成态、归档确认对照截图。 - JS Evidence `ev_717fa5e846e64d67ac19c8925d121bff632c0d3aefb3603b10858559cabb2dcb` 对应 WorkBuddy 5.8.2;CSS Evidence `ev_176b4a0369c4836f9498bd4a9c7c9dff10022defcbddaad6dd0080442de78ee9` 对应 5.8.3。不得将历史 JS 统一标注为 5.8.3,或把前端映射当成后台授权生命周期已验证。 - 不复制 `.tmp/rea-current-evidence.json` 整包(约 511 MiB)、无关资料库模块导出、REA 工具运行时及依赖、测试编译产物。本交接是选定材料集,不是完整 REA 会话备份;没有覆盖的记录及后台行为仍须经 REA 补取,不能推断为已验证。 ## 七、最新复测状态与继续开发入口(2026-10-21) - 审查版本:`37ddb2c`(包含 `308b98d` 实现和后续修复),不是旧工作区 `771ca54`。完整结果、代码位置、关闭条件及测试边界见[Windows复测报告](对话输入对齐复测与后续开发-2026-10-21.md)。本轮只更新文档,未修改产品源码、提交或合并分支。 - **优先修复**:A01原生 `AskUserQuestion` 大小写未命中专用renderer;A02工具完成、正文输出和SDK重试状态未闭环;A03外层完成块切换会重置内层展开状态。这三项已由当前代码最小反例复现,不能以现有绿色回归关闭。 - **样式继续对齐**:A04已答问答标题仍包在灰卡内;A05模式Chip仍用灰块/外置关闭按钮;A06 Popconfirm按钮变体未加载、圆角和排版不同;A07骨架尺寸为本地版本;A08规则详情仍是内联块,授权选中和占位布局待补。已有Windows计算样式和截图,具体值见报告。 - **授权验收独立保留**:A09已有主机侧会话规则与重放,但测试仍为mock,没有验证真实SDK的重复匹配、不匹配、跨回合/内核重建。不得直接声称“始终允许已修好”,也不能反向声称“完全没有恢复实现”。 - **已经修复的旧问题不重复开发**:会话factory传递权限、新增/删除模型同步、全局latest过程栏、单工具强制摘要、问答文字12px/600和完成时间冒用创建时间,均已有新实现;继续验证其完整链路和视觉边界。 - 验证结果:构建/类型检查、离线alignment及66项DOM、聊天/持久化/会话等回归通过;真实Windows任务菜单47项通过。`check:tokens`仍为原基线相同6项失败;fold-summary在CRLF检出环境摘要失败,LF归一后匹配,分别作为既存门禁和构建可复现性问题处理。 - 本地证据位于 `.tmp/workbuddy-alignment-audit-20261021/`,不随Git自动交接。大历史浏览器渲染、真实SDK授权、深色/窄窗及原版同状态像素仍须继续验收。