Dify可自动处理代码扫描工具的JSON漏洞数据并生成结构化报告:需确保JSON含rule_id、file_path、line_number、severity、description、code_snippet六字段;上传时启用结构化解析;工作流经预处理、LLM生成(强制Markdown四段式输出)、条件分支过滤后,支持JSON归档或邮件分发。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify自动读取代码扫描工具(如Fortify、Semgrep或SonarQube)输出的原始漏洞数据,再调用大模型理解上下文、定位风险等级、生成修复建议,并输出结构化报告——整个过程不能手动复制粘贴,也不能依赖外部脚本中转。
准备可被Dify解析的漏洞输入源
导出扫描结果为JSON格式,确保包含rule_id、file_path、line_number、severity、description和code_snippet六个字段。缺失任一字段会导致后续LLM节点无法准确生成修复建议。
将该JSON文件上传至Dify知识库,或通过API直接传入工作流起始节点。若使用知识库方式,必须勾选“启用结构化数据解析”,否则Dify会将其当作普通文本切块,丢失字段语义。
【上传前务必验证JSON合法性】:用在线JSONLint校验,存在非法转义或末尾逗号将导致工作流在“数据生成节点”报错中断,且错误提示不明确。
构建漏洞报告生成工作流
第一步:从组件库拖入“开始节点”→连接“代码解释器节点”。该节点用于预处理原始JSON,提取关键字段并补全缺失的language(根据file_path后缀自动推断)和cwe_id(通过rule_id映射表查得)。
第二步:连接“大语言模型节点”,配置如下:
- 模型选择GPT-4或DeepSeek-VL(二者对安全规则理解最稳);
- Prompt需强制要求输出Markdown格式,且必须包含“风险等级”“漏洞原理”“修复代码片段”“验证方式”四段落;
- 在Prompt末尾追加约束:“若
code_snippet为空,则拒绝生成,返回‘缺失代码上下文,无法生成修复建议’。”
第三步:接入“条件分支节点”,设置判断逻辑:output contains "无法生成修复建议" → 走“人工复核”分支;其余走“自动归档”分支。此步骤避免低质量输出污染最终报告。
输出结构化报告并分发
方法一:用“代码节点”将所有LLM输出合并为单个JSON数组,字段包括vuln_id(自增)、title、severity_zh、fix_code、reference_link(自动补全CWE官网链接)。
方法二:接“邮件插件节点”,配置SMTP参数后,设置收件人为安全团队邮箱,正文为Markdown渲染后的HTML(Dify内置支持),附件为上述JSON报告。触发条件设为“循环完成且无‘人工复核’分支命中”。
这一步操作起来很简单,直接把文件拖进去就行。但注意:邮件插件必须提前在Dify后台完成OAuth2.0授权,否则发送时静默失败,日志里只显示“HTTP 401”,不会提示具体原因。


















