feat: generate and edit conversation images across runtimes
Add model-controlled image invocation and read-only runtime assignments. Route image tools through Main so accepted operations retain their originating conversation when chat runtimes change, with saved references, cancellation, and manual recovery. Keep Node hashing outside browser-shared contracts to restore production builds. Validation includes the production build, typecheck, lint, focused regressions, real Host transport checks, and two successful real image requests. Full UI-driven runtime switching acceptance remains documented as pending. Release note: 开启图片模型的会话调用后,聊天助手可调用图片生成与编辑工具,Runtime 分配自动管理。图片成果保存在原会话,可继续修改,并独立显示生成状态和取消入口。
This commit is contained in:
@@ -1,42 +1,41 @@
|
||||
# 界面设计
|
||||
|
||||
状态:设计草案。遵循[统一界面设计](../../../UI-DESIGN.md),实现 [FR-1 至 FR-9](./prd.md),行为以[行为规则](./logic-design.md)为准。
|
||||
|
||||
## 首期界面
|
||||
|
||||
首期只在图片模型配置提供会话调用开关和“设为默认生图模型”,沿用下文共享控件规范。关闭或删除默认模型后保留失效选择并提示改选,不自动改用其他模型。
|
||||
|
||||
会话以自然语言发起生图,本次指定模型也通过请求表达。不新增会话级模型选择器、独立生成表单或视频入口。未设默认时,助手提示用户本次指定一个可用模型,或到设置中选择默认后重新发送请求;名称有歧义时先澄清。
|
||||
|
||||
复用图片成果展示与引用入口,显示实际模型、进行状态、结果或错误,并支持取消和人工重新生成。首期不增加视频播放和独立“重试保存”按钮。不支持工具调用或 Runtime 未接通时说明限制,提示可切换到支持的聊天路径或使用已有直连图片工作流;Ask 下说明生成需要 Execute,不自动切换模式。
|
||||
|
||||
以下为完整目标的界面设计,按[产品需求的阶段划分](./prd.md)实施;首期不预留后续控件。
|
||||
状态:工作区已有实现及 Electron 组件验收,完整应用验收见[进度记录](./progress.md)。遵循[统一界面设计](../../../UI-DESIGN.md),实现 [FR-1 至 FR-9](./prd.md),行为以[行为规则](./logic-design.md)为准。
|
||||
|
||||
## 模型配置
|
||||
|
||||
在现有模型连接表单中,按已支持的生成能力显示持久开关:
|
||||
在现有图片模型连接表单提供“允许 AI 在会话中调用”。说明文字:“开启后,支持工具调用的聊天助手可使用此模型生成和编辑图片,编辑能力取决于图片协议。结果保存在发起请求的会话中。”复用共享 Switch,提供 `role="switch"`、键盘操作及可见焦点。
|
||||
|
||||
- 图片模型:“允许 AI 在会话中调用此模型生成图片”。
|
||||
- 视频模型:“允许 AI 在会话中调用此模型生成视频”。
|
||||
开启后提供“设为默认生图模型”,列表显示可调用和默认标识。关闭或删除默认连接时提示默认选择不可用,保留失效选择供改选,不自动指定其他模型。用户无需创建 Skill、搭建 MCP server 或重复填写 API 凭据;内部注入由 GoodBuddy 管理,不作为配置步骤展示。
|
||||
|
||||
说明文字:“开启后,支持工具调用的聊天助手可使用此模型。生成结果保存在发起请求的会话中。”开关复用共享 Switch,并提供 `role="switch"`、键盘操作及可见焦点。不要求用户维护 Skill 文件或填写第二套 API 凭据。
|
||||
## 能力与 Runtime 分配
|
||||
|
||||
开启后提供“设为默认生图模型”或“设为默认视频模型”操作。列表在对应模型旁显示“可在会话中调用”和默认标识。关闭、删除默认连接时提示会话选择将不可用,保留原选择供改选,不自动指定其他模型。
|
||||
复用设置中心“MCP / 内置 MCP”的列表与分配布局,增加“图片生成与编辑”行,标记“内置 · 自动管理”。这是 GoodBuddy 管理能力的展示入口,直连 Model 通过内部工具调用,外部 Runtime 通过内部 MCP 接入;不显示为用户另行添加的 MCP 或 Skill,也不混入 Runtime 原生能力清单。
|
||||
|
||||
该行按 L-1 展示直连文本 Model Runtime、本地 OpenCode、Continue、DeepSeek Harness 及 GoodBuddy Agent 远程适用 Runtime 的只读分配复选框。此图片能力采用用户已接受的自动管理规则,不沿用其他内置 MCP 的手动启停、可调分配或 DeepSeek Harness“暂不支持”状态。没有开启模型时仍保留整行及全部未勾选项,不能因目录为空隐藏。
|
||||
|
||||
持续显示说明“由图片模型的「允许 AI 在会话中调用」设置自动管理。”,并提供“前往图片模型设置”导航。该行不提供独立启用开关、保存分配、移除、编辑连接或凭据入口。运行就绪、无工具能力、配置或调用错误单独显示,不改变分配勾选。
|
||||
|
||||
分配复用共享 Checkbox 的方形视觉和原生语义,以 `checked` 表示派生值并使用 `disabled` 禁止鼠标、标签点击或键盘切换;仅在共享控件已有受支持的只读实现时采用该实现,不给原生 Checkbox 添加无效的 `readonly` 或自行添加 `aria-readonly`。每项保留 Runtime 标签和可访问名称,以 `aria-describedby` 关联自动管理说明。说明放在禁用控件之外,保持可读及辅助技术可访问;导航保持正常 Tab 顺序和可见焦点。窄窗口下分配项换行,保留标签、勾选状态、说明和导航。
|
||||
|
||||
## 会话入口
|
||||
|
||||
在现有输入区工具菜单提供“生成图片”“生成视频”,以及对应模型选择。默认项写成“跟随全局设置(模型名称)”;没有默认值则显示“选择生成模型”。选择只影响当前会话,设为全局默认必须使用独立操作。
|
||||
在现有聊天输入区以自然语言发起图片生成或编辑,本次指定模型也通过请求表达。复用上传附件和历史成果引用入口,输入区显示素材缩略图或文件名并允许移除。不新增会话级图片模型选择器、独立生成表单或视频入口。
|
||||
|
||||
自然语言调用与显式入口共用成果卡片。显式入口提供提示词和参考素材选择,按所选模型展示适用参数,不呈现供应商请求字段。输入区显示已引用的素材缩略图或文件名,可移除。
|
||||
未设默认时,助手提示本次指定可用模型,或到设置选择默认后重新发送;名称歧义先澄清。没有图片连接时提供现有模型设置入口。模型不支持编辑或素材缺失时保留输入,提示更换模型或重新选择素材。
|
||||
|
||||
不支持工具调用时提示“当前聊天模型无法自动调用,可使用生成入口”。Ask 下提示“生成图片或视频需要 Execute 模式”,由用户切换工作模式;不能自动切换。未配置生成模型时给出“添加生成模型”入口。
|
||||
直连文本、本地各 Runtime 和 GoodBuddy Agent 远程适用 Runtime 使用一致的图片操作与成果反馈。切换后可继续生成及编辑历史图;工具调用异常时显示具体原因,不宣称已提交。接入未完成的开发状态记录在进度文档,不能作为产品支持范围。
|
||||
|
||||
## 生成卡片
|
||||
不支持工具调用时提示“当前聊天模型无法自动调用图片工具,可使用已有直连图片工作流”。Ask 下提示“生成或编辑图片需要 Execute 模式”,由用户切换,不自动切换。无视觉能力时说明无法直接查看图片,不妨碍按用户文字调用编辑工具。
|
||||
|
||||
卡片就近显示媒体类型、实际模型、当前阶段、成果或错误。参数、提示词和来源素材放在可展开详情中;不显示密钥、认证头或供应商私有下载地址。运行活动使用同一操作标识,与卡片关联。
|
||||
## 图片卡片
|
||||
|
||||
图片完成后可预览、下载和“继续修改”;存在可用图生视频能力时提供“生成视频”。视频完成后提供带原生播放控制的预览及下载,不自动播放。点击继续修改会把成果加入输入区,用户填写本次修改要求。
|
||||
复用现有图片成果展示,卡片就近显示实际模型、操作状态、成果或错误。提示词、适用参数和来源素材放在详情中;不显示密钥、认证头或供应商私有地址。活动记录与卡片使用同一操作标识。
|
||||
|
||||
进行中显示“取消生成”,取消结果按行为规则展示。失败显示有针对性的“重试”“重新选择模型”“重新选择素材”或“重试保存”。卡片错误不重复弹出全局错误通知;模型设置保存等非上下文反馈使用应用通知。
|
||||
完成后可预览、下载和“继续修改”。继续修改将成果加入输入区,用户填写修改要求;切换 Runtime 或重开会话后仍可使用。离开会话不取消操作,结果只出现在原会话。
|
||||
|
||||
窄窗口中操作允许换行,媒体宽度不超过消息区;模型长名称可截断并提供完整可访问名称。状态使用文字表达,不能只依靠颜色;阶段变化通过适度的 `aria-live` 提示,避免等待时间逐秒播报。弹出选择器关闭后焦点回到触发控件。
|
||||
进行中提供“取消生成”,与“停止回复”分开。取消、晚到结果和结果未确认的文案遵循 L-4。失败提供适用的“重新生成”“重新选择模型”或“重新选择素材”;重新生成由用户明确触发,并说明会发起新的模型请求。没有独立“重试保存”按钮。
|
||||
|
||||
“重新选择模型”进入已有模型连接设置;改变模型后,用户在新请求中明确指定。“重新选择素材”聚焦输入区并打开已有附件选择器,保留草稿和已有附件;空草稿填入原提示词及模型名称。历史成果仍使用“继续修改”加入引用并聚焦输入区。上述操作不自动发送请求,“重新生成”继续使用原操作的模型和输入。
|
||||
|
||||
卡片错误不重复弹全局通知;模型设置保存等非上下文反馈使用应用通知。状态使用文字,不能只靠颜色;状态变化通过适度的 `aria-live` 提示,避免逐秒播报等待时间。窄窗口操作可换行,图片不超过消息区宽度,模型长名称截断时保留完整可访问名称。复用的菜单关闭后焦点回到触发控件。
|
||||
|
||||
Reference in New Issue
Block a user