Commit f2a89141 by Archer Committed by GitHub

Doc (#7063)

* doc

* doc

* add reference check

* remove log
parent 29f5cf05
......@@ -18,29 +18,26 @@ description: 'FastGPT V4.15.0-beta4 更新说明'
本次插件服务将系统工具从旧的内置工具源码与运行时缓存机制,升级为独立插件包的上传、安装、版本管理和 local-pool 运行机制。
- 升级后需要使用官方系统工具 zip 包重新导入系统工具。
- 升级后可使用官方系统工具 [zip 包](<https://github.com/labring/fastgpt-img/raw/refs/heads/main/fastgpt-official-plugins(1).zip>)重新导入系统工具,该 zip 包含了旧版所有系统工具。
- 模型配置和 workflow 模板保持兼容,无需专项迁移。
- 插件服务建议连接新的 MongoDB 数据库,保留旧插件服务数据库和对象存储数据,便于回滚和审计。
- 插件服务生产环境需设置强 `AUTH_TOKEN`,避免继续使用默认 token。
- 插件服务生产环境需设置强 `AUTH_TOKEN`,要求 32 位以上。
插件服务可继续复用原 MongoDB 实例,但需要修改数据库名,让新版插件数据写入新库。参考环境变量如下:
插件服务可继续复用原 MongoDB 实例,可使用独立数据库名,避免冲突,参考:
```yaml
fastgpt-plugin:
environment:
MONGODB_URI: mongodb://myusername:mypassword@fastgpt-mongo:27017/fastgpt-plugin-v1?authSource=admin
MONGODB_URI: mongodb://myusername:mypassword@fastgpt-mongo:27017/fastgpt-plugin?authSource=admin
```
## 🚀 新增内容
1. 系统工具支持以独立 `.pkg` 插件包方式安装。
2. 系统工具支持上传官方 zip 包批量导入。
3. 插件服务支持插件上传确认、URL 安装、版本列表、删除和 disabled 清理。
4. 插件版本支持通过 `pluginId`、`version` 和 `etag` 唯一识别。
5. 插件服务启动时会自动注册 active 插件到 local-pool 运行时。
6. 应用/知识库增加虚拟列表渲染。
7. 增加单独的 openapi 文档,区分 devapi 文档。
8. 导出工作流模板,同时导出名字和介绍。
1. 重写插件系统架构。
2. 重写 chatbox ui。
3. 应用/知识库增加虚拟列表渲染。
4. 增加单独的 openapi 文档,区分 devapi 文档。
5. 导出工作流模板,同时导出名字和介绍。
## ⚙️ 优化
......
......@@ -275,7 +275,7 @@
"content/self-host/upgrading/4-15/41503.en.mdx": "2026-05-28T16:21:09+08:00",
"content/self-host/upgrading/4-15/41503.mdx": "2026-05-28T16:21:09+08:00",
"content/self-host/upgrading/4-15/41504.en.mdx": "2026-06-01T17:19:55+08:00",
"content/self-host/upgrading/4-15/41504.mdx": "2026-06-05T15:13:52+08:00",
"content/self-host/upgrading/4-15/41504.mdx": "2026-06-05T18:12:32+08:00",
"content/self-host/upgrading/outdated/40.en.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/outdated/40.mdx": "2026-04-26T21:08:47+08:00",
"content/self-host/upgrading/outdated/41.en.mdx": "2026-04-26T21:08:47+08:00",
......
......@@ -287,13 +287,15 @@ export const filterWorkflowEdges = (edges: RuntimeEdgeItemType[]) => {
export const getReferenceVariableValue = ({
value,
nodesMap,
variables
variables,
isReferenceVal = true
}: {
value?: ReferenceValueType;
nodesMap: Record<string, RuntimeNodeItemType> | Map<string, RuntimeNodeItemType>;
variables: Record<string, unknown>;
isReferenceVal?: boolean;
}) => {
if (!value) return value;
if (!value || !isReferenceVal) return value;
const resoleValue = (value: [string, string | undefined]) => {
const sourceNodeId = value[0];
......
......@@ -71,7 +71,6 @@ export const getSubapps = async ({
lang
});
console.log('tools', JSON.stringify(tools, null, 2));
formatTools.forEach((tool) => {
completionTools.push(tool.requestSchema);
subAppsMap.set(tool.id, {
......
......@@ -46,7 +46,7 @@ import { surrenderProcess } from '../../../common/system/tools';
import type { DispatchFlowResponse, WorkflowDebugResponse } from './type';
import { rewriteRuntimeWorkFlow, filterOrphanEdges } from './utils';
import { WorkflowVariableState } from './utils/variables';
import { getHandleId } from '@fastgpt/global/core/workflow/utils';
import { getHandleId, nodeInputIsReference } from '@fastgpt/global/core/workflow/utils';
import { callbackMap } from './constants';
import { getUserChatInfo } from '../../../support/user/team/utils';
import { checkTeamAIPoints } from '../../../support/permission/teamLimit';
......@@ -864,7 +864,8 @@ export class WorkflowQueue {
value = getReferenceVariableValue({
value,
nodesMap: this.runtimeNodesMap,
variables: runtimeVariables
variables: runtimeVariables,
isReferenceVal: nodeInputIsReference(input)
});
// Dynamic input is stored in the dynamic key
......
......@@ -88,7 +88,6 @@ export const buildTaskRuntimeContext = (
): TaskRuntimeContext => {
const { runtimeNodes, runtimeEdges, childrenNodeIdList, item, index } = params;
const childrenSet = new Set(childrenNodeIdList);
// Include ALL nodes (not just children) so that external node outputs remain accessible
// for variable reference resolution (getReferenceVariableValue uses runtimeNodesMap).
const taskRuntimeNodes = cloneDeep(runtimeNodes);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment