Repository navigation
fix(workflow-builder): 统一交互回复并完善工具配置与聊天 UI - #8079
Merged
c121914yu merged 14 commits intoOct 22, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
|
✅ Admin Preview Image Ready! 🕒 Time: 2026-10-22 17:47:09 (UTC+8) |
|
✅ Build and publish successful - Preview fastgpt Image: 🕒 Time: 2026-10-22 17:48:15 (UTC+8) |
Coverage Report
File CoverageNo changed files found. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
AgentAsk 与 Workflow Preview 的选项、自定义回答和预览决策统一保存为新的 Human/AI 轮次,用户气泡直接展示结构化输入。答案只保存在 user,原 AI 保留提问、工具调用和执行断点。
user value 增加与 text/file 并列的
select输入,仅保留type和questions: [{ question, value }];展示、模型上下文和续跑共用 value,移除重复的 answer 和根级 feedback。旧用户askId保留为z.string().nullish()并标记 deprecated,新消息不再写入;移除interactiveReply展示快照和重复答案 JSON。ChatBox 请求原样传输 select,chat adapt 转为可读文本或相邻 Ask 的 tool response。只读取提问 AI 紧接着的一条消息;缺失或不是 user 时返回空 response,不按 ID 匹配或跨消息查找。
Ask、Preview 确认/修改/取消均完成本轮预创建的 Human/AI,移除旧 AI 的答案回写、前端乐观回填及提交状态合并。预览确认/取消使用原预览的按钮文案识别,修改意见直接存入 value;普通文本按修改意见处理。普通工作流选择与表单保留原有 submit 续跑机制。
新增
isAskInteractive,将 AgentAsk 和 Workflow Preview 的公共判断统一用于发送方式、历史待答状态、AI 展示与恢复生成;具体 Ask 载荷和运行时答案格式仍按各自协议处理。删除与重试沿用普通消息流程:仅软删除,裁剪后重新加载历史窗口和分页锚点,再原样发送 text/files/select。删除末轮回答及其后 AI 后,原 Ask/Preview 自然重新待答,不传 retry 标记、不补查原问题、不反向清空旧 AI。中间问答删除造成的跨轮缺口暂不支持,后续由删除入口限制。
问题与回答在真实 useritem 中按两行展示,长问题使用 MyTooltip 溢出提示;保留复制、禁用编辑。AI 保留 Mermaid 和说明,不重复显示回答、正在询问或已选择提示。旧 Ask 只保证读取和渲染不崩溃,不恢复旧协议或断点。
修复续跑工具调用及 SSE 按工具 ID 合并,避免空 AI 占位崩溃或结果写入其他正文。移除「过程详情」外层折叠,处理项与代码标题分层吸顶,透明标题下的内容通过原生滚动动画裁剪;仅在标题已实际吸顶时,收起才滚动回标题,并为外层标题保留偏移。移除工具详情 maxH,保留生成中文本的展示。
辅助生成 placeholder 改为「描述你想完成的任务」;应用错误统一使用 myToast 的 title + description,成功提示强调实际版本名称。画布导入后的输入/输出补齐改为幂等,避免重复应用版本出现重复 key,保留手动重复键校验。
恢复 Web 运行/发布前的工具密钥激活检查,同时覆盖普通串联和 selectedTools 挂载工具。CLI 生成校验允许暂未激活的工具,其他输入类型与密钥结构检查保留。
AI 模板不携带
hasSystemSecret,模型不参与选密钥。应用到画布时查询当前工具状态,只为配置为空且有系统密钥的节点默认选择系统密钥,保留已有选择与默认值;同次应用复用相同工具查询,查询失败仍允许应用,运行前继续提示激活。导入归档及 checksum 保持原样,系统密钥默认值只写入画布。保存/导出保留工具版本名称和最新版本标记;工作流错误汇总包含节点名,去重后最多展示三条,节点诊断仍完整保留。
模型选择器使用 MyTooltip 在文本溢出时展示完整名称,并恢复下拉触发器内标签的 hover 事件。统一结构化 user 气泡字号。
Pro 配套优化:节点模板通过 Sandbox HOME 的 runtime state 记录目标路径与内容 hash,相同内容且文件存在时跳过重复上传;模板变化或文件缺失时重新写入,成功后才更新标记。
交互数据、删除与重试的设计约定记录于
.agents/design/core/chat/chatbox-refactor.md。Pro 配套 PR:https://github.com/labring/fastgpt-pro/pull/1216;子模块引用固定对应提交。评测适配器使用原预览文案并新建回答轮次,版本加载和提交跟随新的 AI 消息。验证:本轮 17 个受影响的局部测试文件共 276 项测试通过,覆盖模板数据隔离、生成与运行校验边界、默认密钥选择、画布应用与归档隔离、工具版本导出、模型状态与 TTS 选择、聊天渲染、吸顶定位及沙盒缓存命中/修复/失败重试。App、Pro、Workflow Core 类型检查,变更文件 ESLint、Prettier 和差异检查通过;Workflow Core/CLI 构建通过。最新提交的 14 项 GitHub CI 检查全部通过,包含 App、Service、Pro 测试、覆盖率汇总和两项镜像构建。使用实际样式和 hooks 的本地浏览器回归页验证普通收起保持位置、吸顶收起定位、嵌套标题/代码头部、下一项接替吸顶及按钮点击。未运行全量测试,本轮未重跑完整对话端到端验收。