Releases: labring/FastGPT
Release list
v4.15.2
📦 升级指南
1. OpenSandbox 镜像升级
如果部署中启用了 OpenSandbox,请同步更新以下镜像:
opensandbox/server:v0.2.1opensandbox/execd:v1.0.21opensandbox/egress:v1.1.4
升级后可修复中文文件名的文件无法下载的问题。完整配置请参考 OpenSandbox 配置。
2. AGENT_ENGINE 环境变量值调整
V4.15.2 起,AGENT_ENGINE 使用新的枚举值。升级前,请按下表修改部署环境变量:
| 旧值 | 新值 |
|---|---|
default |
fastAgent |
pi |
piAgent |
旧值不再兼容。继续使用 default 或 pi 会导致环境变量校验失败,FastGPT 无法启动。未配置 AGENT_ENGINE 时,可正常启动,系统默认使用 fastAgent。
3. 修改文件下载模式变量
V4.15.2 新增 STORAGE_DOWNLOAD_URL_MODE 环境变量,默认值为 short-proxy。
short-proxy:返回 FastGPT 短链,由 FastGPT App 代理文件下载。short-redirect:返回 FastGPT 短链,校验后跳转到临时 S3/CDN 地址。
如需使用短链但不希望文件流量经过 FastGPT App,可配置:
STORAGE_DOWNLOAD_URL_MODE=short-redirect
使用 short-redirect 时,必须配置 STORAGE_EXTERNAL_ENDPOINT。
4. 镜像变更
- 更新 fastgpt-app(fastgpt 主服务) 镜像 tag: v4.15.2
- 更新 fastgpt-pro(fastgpt 商业版) 镜像 tag: v4.15.2
- 更新 fastgpt-plugin 镜像 tag: v1.0.2
🚀 新增内容
- 工作流节点增加实时错误提示。
- 自定义工具参数节点,支持手动输入 jsonschema,同时支持必填选项。
- 文件上传、下载链接改用短访问链接,减少长链接占用上下文及模型输出异常;已签发的旧版链接仍保持兼容。
- 针对无明确后缀的文件链接,进行 buffer 推测后缀,提高文件解析成功率。
- 企业认证/公司认证能力。
- 门户页支持选择 AgentV2 应用进行对话。
⚙️ 优化
- Skill 未关联应用时的删除弹窗文案。
- 适配最新微信发布渠道 sdk。
- 将插件的已下线命名改成已卸载。
- 判断器节点采用唯一 ID 作为标识,而不是 index,实现删除、排序时,目标分支保持不变。
- 系统工具生成的文件不会 1 小时过期,改成长期,跟随会话一起删除。
- 同步模式下不显示注册用户按钮。
- 对话框流输出,淡入效果性能优化。
- 升级
LiteParse版本,解决并发解析 PDF 报错问题;文件解析 worker 默认数量由 10 调整为 5,仍可通过PARSE_FILE_WORKERS配置。 - 前端请求增加并发去重能力,模型列表和沙盒依赖接口的相同请求会复用进行中的结果,减少工作流节点和选择器重复触发的请求。
- 工作流 SSE 返回 nodeResponse。
🐛 修复
- 优化 CI 流程,通过 hashtag 固定 step 版本,规避 CI 供应链投毒攻击风险。
- 移除 PPTX 解析依赖的高风险解压库,改为流式解压解析流程,规避恶意代码执行风险。
- 自定义分块标识符拒绝传入单一"|"或连续"||"符号,避免错误解析大量 chunks。
- 企微版本客户付款后自动购买 license 判断逻辑优化,避免重复购买/少购买的情况
- 插件市场空 Tag 标签问题
- 修复循环运行节点的迭代项和并行运行节点的任务项耗时计算错误,改为分别记录每个子项的实际运行时间,不再累加子节点耗时。
- Agent Loop 部分边界情况优化。
- 删除正在上传的对话文件时,会同步中止预签名和上传请求,避免已删除文件重新出现或错误更新其他文件。
- 修复调用上传、草稿上传及首轮媒体消息场景下,文件持久化、类型或元数据可能丢失的问题。
🛠️ 代码优化
常规代码优化
- Agent V2 辅助生成/ChatAgentHelper 重构,复用对话框。
- 保存包含超长 base64/data URL 的 AI 请求记录时可能触发栈溢出,提前进行截断。
- SSE 事件统一封装,强化类型提示。
- packages/service 和 packages/global 移除 next 依赖。
- 新增
AUTH_COOKIE_SECURE环境变量,启用后登录 Cookie 将添加Secure属性,仅通过 HTTPS 传输。
Agent Loop 重构
- Workflow Agent 与 ToolCall 统一接入共享的 Agent Loop 执行内核。ToolCall 关闭 plan 和 ask 能力,其他循环执行、上下文处理、工具事件、交互恢复及计费规则与 Workflow Agent 保持一致。
- 统一
fastAgent和piAgent的 Provider 接口,可通过AGENT_ENGINE切换执行引擎,并共用标准化的输入、运行时和返回结果协议。 - 统一 plan、ask、sandbox、文件读取、知识库搜索和业务工具的事件生命周期,使 SSE、运行详情和错误信息保持一致。
- 统一
assistantResponses、节点响应、Provider 状态和上下文压缩快照的生成及持久化流程,移除旧执行链路中的重复适配层。 - 统一模型调用、上下文压缩和工具执行的 usage 收集入口,避免同一笔用量被重复计费或统计。
- 优化工具调度:允许安全工具批量并行执行,并保持工具响应按模型调用顺序写回;plan、ask 等有状态工具继续串行执行。
What's Changed
- Deplot doc by @c121914yu in #7251
- fix: hide skill delete reference text when unused by @DigHuang in #7255
- fix: secure wechat outlink binding by @c121914yu in #7260
- feat: company certification by @shortlight5980 in #7122
- feat(chat): support Agent v2 in portal app selectors by @DigHuang in #7259
- feat(login): add WeCom auto redirect switch by @FinleyGe in #7264
- fix: pin DNS for safe axios direct requests by @c121914yu in #7261
- docs: add admin coupon openapi schema by @c121914yu in #7272
- feat(marketplace): support community plugins and uninstall flow by @FinleyGe in #7250
- feat(chat): helper bot ui & file upload support by @DigHuang in #7245
- chore(deploy): configure plugin service base url by @FinleyGe in #7273
- feat(chat): show Agent v2 in team app filters by @DigHuang in #7274
- fix certification by @shortlight5980 in #7270
- perf(marketplace): cap tool grid columns by @FinleyGe in #7278
- fix(service): set default expiration for invoked file uploads by @FinleyGe in #7279
- ci: add Forgejo platform support with custom variables by @ctlaltlaltc in #7265
- fix(ai): avoid stack overflow saving base64 request records by @YYH211 in #7280
- fix: use stable branch ids for ifelse node by @c121914yu in #7276
- feat(skill): update sandbox runtime upgrade modal by @DigHuang in #7275
- refactor(workflow): type workflow SSE events by @c121914yu in #7283
- fix(marketplace): filter empty tool card tags by @FinleyGe in #7285
- fix certification by @shortlight5980 in #7282
- fix(certification): remove initiative expire by @shortlight5980 in #7288
- fix: clamp uploaded file access url expiration by @c121914yu in #7289
- fix(volume-manager): default pvc storage class to empty by @lingdie in #7291
- fix: guard embedding token limits by @YYH211 in #7269
- chore(deploy): upgrade OpenSandbox images and integrate agent-sandbox-proxy by @DigHuang in #7294
- fix(wecom): track purchased license capacity by @FinleyGe in #7292
- fix(security): harden archive parsing and CI actions by @FinleyGe in #7293
- fix:split register methods from team sync mode by @shortlight5980 in #7230
- docs(upgrading): sync v4.15.2 release notes by @FinleyGe in #7299
- fix(ci): use allowlisted action versions by @c121914yu in #7301
- perf(chat): reduce long stream rendering cost by @c121914yu in #7297
- fix(markdown): strengthen streaming tail fade by @c121914yu in #7303
- perf(markdown): cache completed streaming blocks by @c121914yu in #7306
- fix(workflow): record loop and parallel item runtimes independently by @c121914yu in #7312
- fix(workflow): materialize editable node text by @DigHuang in #7308
- perf: agent loop by @c121914yu in #7055
- feat:add new UI components for pricing plans by @siiigure in #7188
- refactor: decouple engine packages from Next.js by @ctlaltlaltc in #7300
- feat(s3): add short access links and SDK core by @xqvvu in #7281
- fix: stabilize concurrent PDF parsing with LiteParse WASM by @c121914yu in #7318
- feat(workflow): add workflow check issue handling and validation mess… by @siiigure in #7167
- refactor(s3): remove presigned download mode by @xqvvu in #7321
- fix(chat): add MyTooltip for app name overflow handling by @siiigure in #7322
- fix(chat): allow users to update own history metadata by @xqvvu in #7325
- chore(workflow): update workflowUtilsContext and add normalization fo… by @siiigure in #7324
- feat: configure auth cookies, simplify form results, and track referrals by @c121914yu in #7320
New Contributors
Full Changelog: v4.15.1...v4.15.2
v4.14.29
变更说明
- 修复微信发布渠道登录、登出和二维码状态接口的权限校验,改为使用发布渠道 ID 鉴权,并校验渠道类型,避免非微信发布渠道被误操作。
- 适配最新微信发布渠道 sdk,避免header报错。
Full Changelog: v4.14.28...v4.14.29
v4.15.1
📦 升级指南
1. fastgpt-pro 环境变量更新
社区版跳过。
v4.15.1 起,FastGPT 主应用访问 Pro/Admin 内部接口不再使用 rootkey,改为使用独立的服务间凭证 PRO_TOKEN。同时要求 FE_DOMAIN 变量必填,如果你部署了 Pro 版本,需要同时在 FastGPT 主应用和 Pro/Admin 服务中配置相同的 PRO_TOKEN:
PRO_TOKEN=your_pro_token_at_least_32_chars
FE_DOMAIN=fastgpt_domain注意事项:
PRO_TOKEN长度必须不少于 32 位,并且主应用与 Pro/Admin 必须保持一致。- 如果 FastGPT 主应用配置了
PRO_URL,则必须同时配置PRO_TOKEN,否则服务会启动失败。 - Pro/Admin 服务必须配置
PRO_TOKEN,否则内部接口鉴权会失败。 rootkey不再作为 FastGPT 主应用访问 Pro/Admin 内部接口的凭证,仅作为当前系统的管理员密钥,用于调用/api/admin/**接口,例如下方初始化脚本。- 开源版部署配置文件不会内置
PRO_TOKEN。Pro 部署请在私有部署环境变量中手动增加该配置。
2. 镜像变更
- 更新 fastgpt-app(fastgpt 主服务) 镜像 tag: v4.15.1
- 更新 fastgpt-pro(fastgpt 商业版) 镜像 tag: v4.15.1
- 更新 fastgpt-plugin 镜像 tag: v1.0.1
3. API Key 应用名初始化
为了兼容旧版 API 密钥,便于找到以前应用关联的密钥,v4.15.1 增加了全局 API Key 标签管理,并为历史应用级 API Key 增加 appName 展示快照。升级后建议执行一次初始化脚本,为已有 appId 的历史 API Key 自动回填应用名。
从任意终端,发起 1 个 HTTP 请求。其中 {{rootkey}} 替换成环境变量里的 rootkey;{{host}} 替换成 FastGPT 域名。
curl -X POST "{{host}}/api/admin/initv4151" \
-H "rootkey: {{rootkey}}"脚本只会回填缺失的 appName,不会覆盖已有值,不会修改 appId,也不会创建或绑定标签。脚本可重复执行。
🚀 新增内容
- 增加全局 API Key 标签管理,并为历史应用级 API Key 增加
appName展示快照,便于兼容旧版 API 密钥并查找以前应用关联的密钥。 - 发布技能时,预提取技能名称和描述,便于辅助生成。
⚙️ 优化
- AgentV2 调用嵌套工作流时候,去除系统字段参数。
🐛 修复
- 工作流工具调试时,运行详情看不到。
- 对话页,凭证到期不会自动跳出登录组件。
- 修复工作流工具运行子工作流时未按工具应用的全局变量配置初始化变量,导致默认变量、系统变量等运行态变量读取异常的问题。
- 修复循环节点和并行执行节点中通过【变量更新】修改全局变量或容器外节点输出时,主流程未按轮次/任务结束同步更新的问题。成功轮次或成功任务会回写本轮变更,失败轮次或失败任务不提交本轮变更。
- 重试全部知识库集合时,未立即刷新组件。
🛠️ 代码优化
- 修复冒号的文件路径,避免 window 系统不兼容。
What's Changed
- fix: workflow tool by @c121914yu in #7226
- docs(guide/getting-started): 重写快速上手文档并新增配套案例与截图 by @xuyupeng07 in #7229
- perf: action by @c121914yu in #7231
- doc by @c121914yu in #7233
- fix(plugin): normalize debug channel routes by @FinleyGe in #7237
- feat: add API key tag management by @c121914yu in #7235
- feat: pro token by @c121914yu in #7238
- fix(system-tool): omit null json schema fields by @FinleyGe in #7239
- doc by @c121914yu in #7241
- lock node version by @c121914yu in #7242
- feat: persist runtime skill metadata by @YYH211 in #7225
- fix(chat): show login modal on expired auth by @FinleyGe in #7246
- fix(workflow): sync container run state updates by @c121914yu in #7249
- fix(error-list): retry refresh by @shortlight5980 in #7244
Full Changelog: v4.15.0...v4.15.1
v4.14.28
v4.14.27
升级指南
1. 更新镜像 tag
- 更新 fastgpt-app(fastgpt 主服务) 镜像 tag: v4.14.27
- 更新 fastgpt-pro(fastgpt 商业版) 镜像 tag: v4.14.27
变更说明
该版本修复一些历史升级脚本问题,由于近期变更导致旧的升级脚本无法正常使用。
- 修复 V4.13.2 升级脚本中 S3 lifecycle 清理可能被跳过的问题。该脚本不再依赖
instanceof MinioStorageAdapter判断 MinIO 客户端,避免 Next.js dev 或 bundle 场景下 workspace package 被加载为不同模块实例导致误判。 - 修复 V4.14.3 升级脚本中图片迁移日志的资源类型,将
data_image修正为dataset_image,避免已完成的图片迁移记录无法被正确识别。 - 修复 V4.14.4 升级脚本中图片迁移已完成记录的过滤条件,同样使用
dataset_image,避免重复执行脚本时再次迁移已完成的图片。
Full Changelog: v4.14.26...v4.14.27
v4.15.0-beta7
v4.15.0
📦 升级指南
🚀 新增内容
- 新增技能模块,Agent V2 可绑定静态 Skill 来运行。
- 重写 Agent V2 loop 逻辑,提升多轮工具调用和流程编排的稳定性。
- 沙盒支持自定义 npm 和 pip 源。
- 插件系统架构重写,支持插件级 runtime config,系统工具运行迁移到 local-pool。
- 商业版支持本地直连 FastGPT 调试插件。
- 重写 chatbox UI,支持快速滚动到底部、模型生成对话标题和更流畅的流式输出动效。
- 支持通过 LLM 生成对话标题。
- 新增循环节点,弃用旧的批量执行。
- 知识库搜索支持原生多模态 embedding 模型、图搜图和 Agent 模式权限过滤。
- 多模态模型支持音视频输入。
- API 密钥逻辑优化,统一 APIKey 管理并由请求显式传入应用上下文。
- 生成 DevAPI 和 System OpenAPI 两套 API 文档。
- 支持快速回复的输出语法。
- 第三方知识库新增钉钉知识库接入。
- 增加模型思考配置。
- 工作流模板导出支持同时导出名称和介绍。
- 全局变量输入框支持输入 object 类型数据。
- 工具调用模式下,如果开启虚拟机功能,用户对话框上传的文件会直接注入到虚拟机中。
- 增加文件解析、HTML 转 Markdown、文本切块 worker pool,避免并发太高导致资源耗尽。
- 支持目录深度环境变量,避免无限嵌套目录。可配置环境变量
MAX_FOLDER_DEPTH。 - S3 支持配置 CDN。
- Rerank 支持配置 defaultConfig。
- 分享链接/门户页支持语言切换,不再强制自动识别浏览器语言。
- Chat API 增加
dataId重复校验,避免脏数据进入工作流与流恢复合并逻辑。 - HTTP 节点支持配置忽略 TLS 证书校验,并支持返回完整错误对象。
⚙️ 优化
- 插件运行入口支持从对象存储拉取,并缓存到本地文件目录。
- 优化 OTEL 日志采集格式。
- 禁用工作流无效连接模式。
- 增加父子节点选中互斥功能,解决同时选中父子节点时移动节点抖动的问题。
- 优化工作流节点名称、介绍输入和超长名称适配。
- 工作流编辑页因登录失效跳出后,自动保存草稿用于恢复。
- 工作流运行详情中,表单输入节点的文件字段以文件列表形式展示。
- 工作流数组引用类型增强校验,避免与二维数据冲突。
- 图片处理线程支持配置是否转化成 base64 发送给模型,
MULTIPLE_DATA_TO_BASE64=true变量。 - HTML 输出后自动切换为预览,减少手动打开预览的操作。
- 流恢复暂停和异常中断恢复体验优化,减少会话卡在「生成中」或停止态不准确的问题。
- 切换应用时按应用恢复最近会话,切换团队时清除本地 chat 缓存。
- 优化知识库搜索测试交互和知识库数据编辑弹窗。
- 知识库被删除后,应用编排时优雅提示。
- 知识库训练出现错误时优化提示,并支持一键全部重试。
- 过滤掉无效的知识库引用角标。
- PDF 解析将 PDFJs 替换为
liteparse,速度提高 3 倍。 - xlsx 解析自动去除空行空列,并补充合并单元格。
- 输入引导配置增加校验,避免错误配置自定义词库地址。
- 加强第三方知识库请求、HTTP tool parse、IP 检测和 Code Sandbox AST 检查等安全防护。
- 文件注入 messages 位置从 system 调整至 user,便于命中缓存。
- reason hide 开关完善,确保 UI 不显示时,请求 LLM 仍可保留 reason。
- chat2messages adapt 优化,避免出现独立的 reason。
- 工具运行空响应时自动补充
none,避免部分模型报错。 - 非管理员/访客触发余额不足时,优化提示。
- 无创建权限时隐藏模板功能。
- 应用、知识库、文件和文件夹等长名称展示优化:超出宽度时自动省略,hover 名称时展示完整内容。
- 技能模块相关弹窗、编辑交互和列表接口性能优化。
- 登录页 UI 优化。
- 站点同步限流错误提示去重。
- 应用/知识库增加虚拟列表渲染,优化大列表加载性能。
- LLM 请求追踪记录增加团队隔离,避免
requestId被跨团队用于读取请求体、知识库召回片段和模型响应。
🐛 修复
- 修复 Agent V2 模式下,模型响应报错会导致 step 重复执行。
- 修复知识库源文件预览和下载时文本类型响应缺少 charset 的问题。
- 修复工作流单节点调试存在异常默认值的问题。
- 修复模型配置
defaultConfig覆盖异常。 - 修复 TTS 语音播放适配最新 OpenAI SDK 时的报错。
- 修复知识库数据分块遇到代码块时可能出现超大分块的问题。
- 修复模型获取多模态文件链接异常。
- 修复 training 接口、HTTP tool parse 和 S3 私有对象 key 相关的潜在安全风险。
- 修复交互节点后的工具调用展开 MCP 工具异常。
- 修复工作流工具 array 和 object 类型工具调用参数 schema 异常。
- 修复发布渠道 - 门户 UI 偏移。
- 修复 v1/completions 接口
nodeResponse中quoteList未返回q、a的问题。 - 修复对话流恢复过程中的表单回填、文件列表恢复、节点响应保留、重复交互追加、临时历史标题和跨应用会话串显问题。
- 停止会话提示改为与后端生成态同步,移除停止时的 warning toast。
- v1/chat/completions 接口,返回 nodeResponse 时候,过滤掉了 q/a/index,该版本恢复返回。
🛠️ 代码优化
- 调整整体代码结构,升级 Next.js 并切换至 Turbopack 构建;容器默认 Node.js 升级至 24。
- 统一 Agent tool 的声明和运行方式。
- 插件服务从旧
runtime结构调整为 pnpm workspace monorepo,拆分为 HTTP 服务入口、领域模型、用例、API adapter、基础设施、SDK 和 CLI。 - app API 接口统一使用 zod schema 编写并生成文档。
- 拆分 AI request、工作流运行详情和对话框相关代码,降低模块耦合。
- 优化用户自定义密钥计费逻辑和 token 计算依赖。
- 服务端 env 加载统一使用
@t3-oss/env-core,增加类型检查;其余服务也采用集中导出 env 的方式使用环境变量。 - 升级工程化工具链,包括 ESLint、Prettier、textlint、lint-staged 和 TS6。
- 优化单测性能,全量测试从 10 分钟降至 5 分钟。
- GitHub Action 增强安全性。
- 流恢复相关模块补充设计文档与单元测试。
- volume manager 从 Bun 改为 Node.js 运行。
- 及时处理 worker 内图片,不再存留 base64,降低内存消耗。
- 增加系统处理字符串时的长度保护,如果长度过大会停止继续同步替换,避免高 CPU 负载。
- 工作流运行的 nodeResponse 改为扁平化存储,避免大的嵌套工作流保存失败。
- 移除所有内置 LLM 请求中的
temperature和max_tokens,避免部分模型不兼容。 - 修复工作流节点配置中
FlowNodeInputTypeEnum.*、FlowNodeOutputTypeEnum.*和WorkflowIOValueTypeEnum.*枚举表达式字符串脏数据导致输入渲染和 IO 类型判断异常的问题。 - 工作流文本框,ctrl+c 复制文本内容时,会被节点复制抢占,导致无法复制文本。
- chat 接口抽象,不再绑定 app, 改成平台级别通用。
What's Changed
- perf: agent tool code by @c121914yu in #6798
- perf: wechat channel by @c121914yu in #6800
- perf: SSRF check by @c121914yu in #6805
- fix(storage): swap reversed sourceKey/targetKey in OssStorageAdapter.copyObjectInSelfBucket by @octo-patch in #6806
- fix(embedding): decode base64 embedding responses before vector processing by @octo-patch in #6807
- doc by @c121914yu in #6810
- helper-error by @YYH211 in #6802
- Update 41411.mdx by @c121914yu in #6811
- perf: adapt reason text by @c121914yu in #6812
- fix: messages adapt test by @c121914yu in #6813
- feat(workflow): add loop run node with start/break sub-nodes by @DigHuang in #6797
- feat: support multiple valueTypes for text input variables by @DigHuang in #6801
- chore(workflow): deprecate loop node and add deprecation skill by @DigHuang in #6815
- perf: stop loop by @c121914yu in #6816
- chore(deps-dev): bump postcss from 8.5.6 to 8.5.10 in /document by @dependabot[bot] in #6814
- fix: adapt systemTool by @c121914yu in #6817
- doc by @c121914yu in #6818
- doc by @c121914yu in #6819
- update doc by @c121914yu in #6823
- Update sdk by @c121914yu in #6824
- fix: template height by @c121914yu in #6825
- fix(workflow): clarify multi-select tooltip copy by @amingbo in #6827
- fix(drag): mutex selection between nested parent and child nodes by @DigHuang in #6821
- api_dataset_error by @YYH211 in #6828
- chore: bump pro submodule for hydration stability by @xqvvu in #6808
- update shell by @c121914yu in #6830
- fix: file-bug by @YYH211 in #6799
- .codex by @c121914yu in #6832
- chore: update actions workflow yamls by @xqvvu in #6835
- fix: home chat file uploads by @xqvvu in #6838
- [codex] chore: add skip file type check env by @xqvvu in #6839
- fix: step-retry-error by @YYH211 in #6829
- sandbox tool inject by @c121914yu in #6836
- [security] fix(app): validate stored MCP tool URLs by @Hinotoi-agent in #6826
- chore: update admin release workflow by @xqvvu in #6842
- fix(share): show contact admin message and hide plan button for visitors on insufficient AI points by @DigHuang in #6846
- Action by @c121914yu in #6847
- perf: template permission by @c121914yu in #6848
- perf: catch error toast by @c121914yu in #6849
- perf: ssrf check by @c121914yu in #6852
- perf: codex-sandbox check by @c121914yu in #6851
- fix: skip allowed extensions by @xqvvu in #6854
- fix: stt usage by @c121914yu in #6855
- fix(workflow): relax variable update reference validation to ignore stale valueType by @DigHuang in #6859
- feat(reason): configurable reasoning effort with tool-call propagation by @DigHuang in #6837
- feat: dingding dataset by @YYH211 in #6856
- feat(app): sync aiChatReasoningEffort in SimpleApp form and refine AI settings inputs by @DigHuang in #6862
- fix: use upload control file config by @xqvvu in #6858
- fix: scope chat resume to current app by @xqvvu in #6860
- chore(deps): bump mongoose from 8.12.1 to 8.22.1 by @dependabot[bot] in #6870
- chore(deps): bump axios from 1.13.6 to 1.15.2 by @dependabot[bot] in #6871
- Pick by @c121914yu in #6875
- Perf worker and env load by @c121914yu in #6861
- perf: ip check by @c121914yu in #6850
- Doc by @c121914yu in #6880
- fix: doc by @c121914yu in #6881
- redirect by @c121914yu in #6884
- redirect by @c121914yu in #6885
- redirect by @c121914yu in #6886
- chore: bump and clean deps by @xqvvu in #6878
- fix: redirect by @c121914yu in #6887
- fix: ts by @c121914yu in #6890
- rerank config by @YYH211 in #6892
- docs: update ai settings guide by @DigHuang in #6894
- fix: form input icon store by @c121914yu in #6891
- support cdn in s3 by @c121914yu in https://github...
v4.15.0-beta6
📦 升级指南
1. 修改默认模型配置
对话标题生成模型不再通过环境变量 CHAT_TITLE_MODEL 配置,升级后可在「模型配置」的「默认模型配置」中选择「对话标题模型」。该配置可以不设置,不设置时不会调用模型生成标题,仅使用用户问题截断作为标题。
如此前配置过 CHAT_TITLE_MODEL,升级后可从 fastgpt 和 fastgpt-pro 的环境变量中移除,并在页面中重新选择对应模型。
2. 清理旧 Skill Debug 对话数据
本版本将 Skill Edit 对话迁移到标准 Chat 存储模型。历史 Skill Debug 数据曾把 skillId 写入 Chat 三表的物理 appId 字段,且没有 sourceType;历史 sandbox 实例也需要补齐 sourceType/sourceId。升级后旧 Skill Debug 对话不会被新 Skill Edit 对话读取,但建议执行一次 root-only 初始化接口完成 sandbox 实例字段迁移并清理旧 Skill Debug 对话。该接口仅用于本次升级迁移,不作为 OpenAPI 对外接口。
执行前请先确认新的 Chat source 索引已经创建完成。该初始化接口默认 dry-run,只统计不删除:
curl -X POST 'https://你的域名/api/admin/4150/init4150-beta6' \
-H 'Content-Type: application/json' \
-H 'rootkey: 你的ROOT_KEY' \
-d '{"dryRun":true}'返回结果确认无误后,将 dryRun 改为 false 执行迁移和删除:
curl -X POST 'https://你的域名/api/admin/4150/init4150-beta6' \
-H 'Content-Type: application/json' \
-H 'rootkey: 你的ROOT_KEY' \
-d '{"dryRun":false}'接口参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dryRun |
boolean | true |
是否只统计不执行。 |
该接口会全量读取 skills 表,不支持只传部分 Skill ID。原因是 sandbox 实例迁移需要先识别所有 Skill,再把剩余未命中 Skill 且带 appId 的实例统一视为 App sandbox;如果只扫描部分 Skill,会把未扫描到的 Skill sandbox 误标成 App。
迁移逻辑:
- 查询
skills表拿到全部_id。 - 对缺少
sourceType或sourceId的agent_sandbox_instances,如果匹配appId=skillId或metadata.skillId=skillId,写入sourceType=skillEdit和sourceId=skillId,并清理旧appId/metadata.skillId字段。 - 对剩余缺少
sourceType或sourceId、未命中 Skill 且存在非空appId的 sandbox 实例,写入sourceType=app和sourceId=appId,并清理旧appId/metadata.skillId字段。 - 对已经具备
sourceType/sourceId但残留旧appId或metadata.skillId的 sandbox 实例,只清理旧字段,不覆盖现有标准归属。 - 没有
appId、appId=null或appId=""且无法通过metadata.skillId归属到 Skill 的 orphan sandbox,会在非 dry-run 模式下删除远端 sandbox、OpenSandbox volume、S3 归档和 Mongo 记录;dry-run 只通过orphanMatchedCount统计。 - 清理旧 Skill Debug chat:先用
apps表去掉与 App_id重复的 Skill ID,再删除剩余 Skill ID 下匹配到的旧chats、chatitems、chat_item_responses和旧格式 Chat S3 文件前缀。
该接口不会回填几亿条历史 App Chat 的 sourceType。
3. 更新环境变量(可选)
Agent Sandbox 新增包管理镜像源配置。配置后,Agent Sandbox 初始化时会在 sandbox HOME 下写入 npm、yarn、bun、pip 和 uv 的镜像配置文件,提升在私有网络或跨境网络环境中安装依赖的稳定性。
# Agent Sandbox 内 npm/yarn/pnpm/bun 使用的 npm registry
AGENT_SANDBOX_NPM_REGISTRY=
# Agent Sandbox 内 pip/python -m pip/uv 使用的 PyPI index URL
AGENT_SANDBOX_PYPI_INDEX_URL=该配置会按内容 hash 缓存在 sandbox runtime state 中,同一个 sandbox 仅在配置变化时重新写入。
4. 更新镜像
- 更新 fastgpt-app(fastgpt 主服务) 镜像 tag: v4.15.0-beta6
- 更新 fastgpt-pro(fastgpt 商业版) 镜像 tag: v4.15.0-beta6
- 更新 fastgpt-plugin 镜像 tag: v1.0.0-beta6
- 更新 aiproxy 镜像 tag: v0.6.2
如果启用 Agent Sandbox,需同步更新下面镜像:
- 更新 fastgpt-agent-sandbox-proxy 镜像 tag: v0.2.0-beta3
- 更新 fastgpt-agent-sandbox 镜像 tag: v0.2.0-beta3
风险点
1. LLM 请求追踪记录增加团队隔离
LLM 请求追踪记录(llm_request_records)新增 teamId 字段,GET /api/core/ai/record/getRecord 会按当前登录团队查询 { requestId, teamId },避免仅凭 requestId 读取其他团队的请求体、知识库召回片段和模型响应。
同时,llm_request_records 的唯一索引从单字段 requestId 调整为复合唯一索引 { teamId: 1, requestId: 1 }。如自托管环境关闭了 SYNC_INDEX,升级后需要执行一次索引同步,确保旧的 requestId_1 唯一索引被移除。
风险点:升级前已写入的旧追踪记录没有 teamId,升级后将无法再通过 requestId 查询,页面会按追踪记录已过期处理。该记录本身有 TTL,仅用于临时排查模型调用详情;如需排查历史问题,请在升级前导出相关日志或保留原始请求信息。
🚀 新增内容
- 商业版支持本地直连 FastGPT 调试插件。
- 沙盒支持自定义 npm 和 pip 源,主动探测版本升级。
⚙️ 优化
- 对话标题生成模型改为使用系统默认模型配置管理,便于运行时切换和统一维护。
- LLM 请求追踪记录按团队隔离查询,唯一索引调整为
{ teamId, requestId },避免requestId被其他团队复用读取敏感 trace。 - Skill Edit 对话统一使用标准 Chat 存储和清理链路,历史 Skill Debug 对话可通过初始化接口清理。
- Agent Sandbox 支持配置 npm 和 PyPI 镜像源,初始化时自动写入常见包管理器配置,减少 sandbox 内依赖安装失败。
- PDF 解析兼容
linux/arm64 + Alpine/musl架构,回退到pdfjs解析方案。
🐛 修复
- chat/completions 接口,返回 nodeResponse 时候,过滤掉了 q/a/index,该版本恢复返回。
代码优化
- chat 接管接口抽象,不再绑定 app, 改成平台级别通用。
What's Changed
- doc by @c121914yu in #7174
- doc by @c121914yu in #7175
- deploy doc by @c121914yu in #7178
- Fix test by @c121914yu in #7179
- feat: integrate Skill assisted generation by @YYH211 in #7166
- fix: agent v2 plan select expand/fold animation by @xqvvu in #7181
- feat(app): persist skill debug sessions and optimize playground UI by @DigHuang in #7180
- fix: translations by @xqvvu in #7182
- refactor(sandbox): unify runtime preparation flow and support package mirrors by @DigHuang in #7184
- feat(ide-agent): add filesystem exec and path operations support by @DigHuang in #7191
- feat: support source typed skill edit chat by @c121914yu in #7185
- feat: add skill context for agent helper generation by @YYH211 in #7187
- Docs updates and fix portal chat tool call issue by @YYH211 in #7194
- fix(chat): align share chat history controls by @xqvvu in #7195
- feat(sandbox): support runtime upgrade and advanced file/command operations by @DigHuang in #7189
- feat(plugin): support local plugin debug channel by @FinleyGe in #7176
- Change fastgpt-agent-sandbox-proxy tag to v0.2.0-beta2 by @Deepturn in #7196
- fix: title generation and fix chat api parase by @c121914yu in #7192
Full Changelog: v4.15.0-beta5...v4.15.0-beta6
v4.15.0-beta5
📦 升级指南
1. 修改环境变量
fastgpt 和 fastgpt-pro 增加环境变量 CHAT_TITLE_MODEL,用于自动生成对话的标题,例如:
CHAT_TITLE_MODEL=deepseek-v4-flash2. 镜像变更
- 更新 fastgpt-app(fastgpt 主服务) 镜像 tag: v4.15.0-beta5
- 更新 fastgpt-pro(fastgpt 商业版) 镜像 tag: v4.15.0-beta5
- 更新 fastgpt-plugin 镜像 tag: v1.0.0-beta5
- 更新 aiproxy 镜像 tag: v0.6.2
3. 升级脚本
将所有旧的沙盒 workspace 归档到 s3 里,从而更彻底的释放不活跃的沙盒,旧的沙盒可能因为超时安装 zip 失败。因为旧的沙盒大部分关联的是旧的对话,不执行该脚本,直接把旧的沙盒全部移除也可以。该脚本仅影响旧的沙盒,不影响新生成沙盒。
curl --location --request POST 'https://{{host}}/api/admin/initSandboxArchive' \
--header 'rootkey: {{rootkey}}' \
--header 'Content-Type: application/json' \
-d '{"runArchive":true,"inactiveDays":0}'功能重大变化
- ApiKey 功能调整,不再区分应用 key 和系统 key,只保留系统 key,如需兼容 openai sdk 用法,可使用
apikey-appId的方式传递 Token。已有的 apikey 保持兼容,不影响使用。具体和查阅 FastGPT API 文档说明
🚀 新增内容
- HTTP 节点支持配置忽略 TLS 证书校验,适用于调用使用自签名证书或内部证书的 HTTPS 服务。
- 支持目录深度环境变量,避免无限嵌套目录。
- 对话框支持快速滚动到底部按键。
- 参考 Lobe UI 优化流输出动效。
- 支持通过模型生成对话标题,需配置
CHAT_TITLE_MODEL变量。 - 调整 Skill Edit 编辑交互。
- HTTP 节点支持返回完整错误对象。
- agent 模式知识库搜索,支持权限过滤。
- API 密钥逻辑优化,统一 APIKey 管理并由请求显式传入应用上下文。
- 优化 agent 上下文压缩逻辑。
- 支持快速回复的输出语法。
⚙️ 优化
- HTML 输出后自动切换为预览,减少手动打开预览的操作。
- 优化应用、知识库、文件和文件夹等长名称展示:超出宽度时自动省略,并在 hover 名称时展示完整内容。
- 移除所有内置 LLM 请求中的
temperature和max_tokens,避免部分模型不兼容。 - 知识库训练出现错误时的提示,同时支持一键全部重试。
- 过滤掉无效的知识库引用角标。
- 工具运行空响应时候,自动补充 "none",避免部分模型报错。
- 系统工具运行前,再次进行二次权限校验。
- 优化重定向后 SSRF 校验。
🐛 修复
- 修复 S3 私有对象 key 未绑定已鉴权资源时可能导致的跨资源文件访问风险。
- 工作流工具,array 和 object 类型,工具调用参数 schema 异常。
- 发布渠道 - 门户,UI 偏移。
代码优化
- 增加系统处理字符串时的长度保护,如果长度过大会停止继续同步替换,避免高 CPU 负载,可通过环境变量
SYSTEM_MAX_STRING_LENGTH_M调整上限。
What's Changed
- Update marketplace by @c121914yu in #7097
- fix: optimize top agent prompt by @YYH211 in #7095
- feat: improve code block rendering by @siiigure in #7066
- fix: align mobile chat headers by @xqvvu in #7100
- Codex/siigure http https by @siiigure in #7085
- debug: import compatibility issue by @shortlight5980 in #7099
- docs(workflow): loop run node user documentation by @DigHuang in #7098
- Add client IP proxy troubleshooting notes by @xqvvu in #7102
- feat: tooltip by @siiigure in #7087
- Fix login language synchronization by @YYH211 in #7101
- fix: optimize agent v2 tool labels by @YYH211 in #7096
- fix: bind S3 object keys to authorized resources by @c121914yu in #7104
- fix: normalize uploaded file extension to lowercase (#6996) by @DadaVinqi in #7105
- [codex] remove duplicate chat log error detail by @c121914yu in #7109
- perf: reduce workflow variable replacement CPU cost by @c121914yu in #7108
- Chat UI improvement by @xqvvu in #7118
- Use JSON extraction for content extract node by @YYH211 in #7117
- folder-depth-limit by @siiigure in #7103
- perf: node store by @c121914yu in #7112
- fix: include query extension selection time by @YYH211 in #7119
- feat: dataset error list by @shortlight5980 in #7084
- fix: update pro modal titles in multiple languages for consistency by @siiigure in #7107
- Fix/bug1 by @siiigure in #7115
- feat(sandbox): migrate to standalone Rust proxy and implement stateless WSS gateway with dynamic file sync by @DigHuang in #7034
- refactor(fastgpt): update default fastgpt-ide-agent image to ghcr.io by @DigHuang in #7124
- fix: 数据集更新接口不支持 API Key 鉴权 (#7006) by @DadaVinqi in #7123
- feat: chat title generate by @c121914yu in #7120
- refactor(app): optimize tool selector UI/UX by @FinleyGe in #7127
- fix: action by @c121914yu in #7128
- fix(sandbox): resolve inotify infinite loops & proxy loopback connection by @DigHuang in #7129
- fix: slider title by @c121914yu in #7130
- Fix chat by @c121914yu in #7131
- fix: make whisper config fields optional by @FinleyGe in #7133
- Fix/http nodes by @siiigure in #7111
- refactor: align system tool JSON schema codec by @FinleyGe in #7116
- feat(app): filter unavailable tools in system tool selector by @FinleyGe in #7138
- feat(openapi): refine API key auth proxy and app isolation by @FinleyGe in #7126
- refactor(skill): optimize publish flow & upgrade sandbox images by @DigHuang in #7132
- feat: route helper bot generation through pro by @YYH211 in #7137
- fix: strip admin plugin IO schemas by @FinleyGe in #7141
- perf: invalid quote filter by @c121914yu in #7139
- fix(agent): pass uploaded file urls to tools by @FinleyGe in #7091
- fix: 短代码块跟随代码长度显示 by @siiigure in #7142
- feat: add agent dataset auth entry by @FinleyGe in #7140
- fix: update private list permission count by @FinleyGe in #7143
- Fix/playground-visibility-config-layout by @siiigure in #7135
- perf(app): optimize tool selector performance by @FinleyGe in #7148
- fix(permission): optimize private resource check and deduplicate collaborators by @FinleyGe in #7147
- fix(skill): resolve debug chat state mismatch & simplify test container by @DigHuang in #7146
- fix: preserve system tool child icons by @FinleyGe in #7144
- fix(mcp): only fall back to legacy SSE transport on a 4xx Streamable HTTP error by @serhiizghama in #7154
- perf: http repalce by @c121914yu in #7156
- feat: optimize context compression algorithm by @YYH211 in #7052
- adapt old version config by @c121914yu in #7158
- feat(markdown): add quick replies feature and related styling by @siiigure in #7136
- extract log by @c121914yu in #7161
- feat(chat): improve chat feedback interactions by @xqvvu in #7160
- feat: gate app api keys by auth option by @FinleyGe in #7162
- debug: training count error by @shortlight5980 in #7169
- Handle Agent V2 helper Pro modal by @YYH211 in #7168
- fix(agent): normalize empty tool responses by @YYH211 in #7171
- feat: refine chat log feedback actions by @xqvvu in #7172
- fix: require invoke token secret configuration by @FinleyGe in #7170
- feat(sandbox): support sandbox and skill version entrypoint scripts by @DigHuang in #7145
- [codex] secure code sandbox secret isolation by @c121914yu in #7173
New Contributors
- @siiigure made their first contribution in #7066
- @DadaVinqi made their first contribution in #7105
- @serhiizghama made their first contribution in #7154
Full Changelog: v4.15.0-beta4...v4.15.0-beta5