diff --git a/web/app/components/workflow/nodes/_base/hooks/use-node-help-link.ts b/web/app/components/workflow/nodes/_base/hooks/use-node-help-link.ts
new file mode 100644
index 0000000000..68bf6b07b0
--- /dev/null
+++ b/web/app/components/workflow/nodes/_base/hooks/use-node-help-link.ts
@@ -0,0 +1,54 @@
+import { useMemo } from 'react'
+import { useGetLanguage } from '@/context/i18n'
+import { BlockEnum } from '@/app/components/workflow/types'
+
+export const useNodeHelpLink = (nodeType: BlockEnum) => {
+ const language = useGetLanguage()
+ const prefixLink = useMemo(() => {
+ if (language === 'zh_Hans')
+ return 'https://docs.dify.ai/v/zh-hans/guides/workflow/node/'
+
+ return 'https://docs.dify.ai/features/workflow/node/'
+ }, [language])
+ const linkMap = useMemo(() => {
+ if (language === 'zh_Hans') {
+ return {
+ [BlockEnum.Start]: 'start',
+ [BlockEnum.End]: 'end',
+ [BlockEnum.Answer]: 'answer',
+ [BlockEnum.LLM]: 'llm',
+ [BlockEnum.KnowledgeRetrieval]: 'knowledge_retrieval',
+ [BlockEnum.QuestionClassifier]: 'question_classifier',
+ [BlockEnum.IfElse]: 'ifelse',
+ [BlockEnum.Code]: 'code',
+ [BlockEnum.TemplateTransform]: 'template',
+ [BlockEnum.VariableAssigner]: 'variable_assigner',
+ [BlockEnum.VariableAggregator]: 'variable_assigner',
+ [BlockEnum.Iteration]: 'iteration',
+ [BlockEnum.ParameterExtractor]: 'parameter_extractor',
+ [BlockEnum.HttpRequest]: 'http_request',
+ [BlockEnum.Tool]: 'tools',
+ }
+ }
+
+ return {
+ [BlockEnum.Start]: 'start',
+ [BlockEnum.End]: 'end',
+ [BlockEnum.Answer]: 'answer',
+ [BlockEnum.LLM]: 'llm',
+ [BlockEnum.KnowledgeRetrieval]: 'knowledge-retrieval',
+ [BlockEnum.QuestionClassifier]: 'question-classifier',
+ [BlockEnum.IfElse]: 'if-else',
+ [BlockEnum.Code]: 'code',
+ [BlockEnum.TemplateTransform]: 'template',
+ [BlockEnum.VariableAssigner]: 'variable-assigner',
+ [BlockEnum.VariableAggregator]: 'variable-assigner',
+ [BlockEnum.Iteration]: 'iteration',
+ [BlockEnum.ParameterExtractor]: 'parameter-extractor',
+ [BlockEnum.HttpRequest]: 'http-request',
+ [BlockEnum.Tool]: 'tools',
+ }
+ }, [language])
+
+ return `${prefixLink}${linkMap[nodeType]}`
+}
diff --git a/web/app/components/workflow/nodes/_base/panel.tsx b/web/app/components/workflow/nodes/_base/panel.tsx
index 44539a7f56..a6d3d6a2aa 100644
--- a/web/app/components/workflow/nodes/_base/panel.tsx
+++ b/web/app/components/workflow/nodes/_base/panel.tsx
@@ -12,6 +12,7 @@ import { useShallow } from 'zustand/react/shallow'
import { useTranslation } from 'react-i18next'
import NextStep from './components/next-step'
import PanelOperator from './components/panel-operator'
+import HelpLink from './components/help-link'
import {
DescriptionInput,
TitleInput,
@@ -134,7 +135,8 @@ const BasePanel: FC
= ({
)
}
-
+
+