Dify工作流可一站式实现代码生成、语法与风格审查、安全漏洞扫描。需创建Workflow应用,配置DeepSeek-R1或Qwen2.5-Coder模型并启用流式响应;搭建三节点流程:Code Generator生成代码、Style & Syntax Review检查规范与语法、Security Scanner扫描OWASP高危漏洞;通过参数绑定与JSON结构化输出确保数据正确传递。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让AI自动写代码、检查语法错误、识别安全漏洞,还要能根据团队编码规范做风格审查——Dify工作流能一次性串联这三个环节,无需写一行后端代码。
创建Workflow应用并配置基础模型
登录Dify控制台(https://cloud.dify.ai或你的私有部署地址)→ 左侧导航栏点击「工作室」→ 点击「新建应用」→ 选择「Workflow」类型 → 输入应用名称“CodeGen-Review-Agent” → 点击「创建」。
进入应用后,点击右上角「模型设置」→ 在「LLM Provider」中添加DeepSeek-R1或Qwen2.5-Coder API(需提前获取API Key并填入密钥字段)→ 将该模型设为默认推理模型 → 保存。
【必须启用流式响应】否则后续节点无法实时捕获代码生成过程中的中间输出,导致审查环节缺失上下文。
搭建三段式工作流节点
在画布空白处双击,添加第一个节点:选择「LLM」类型 → 命名为「Code Generator」→ 在提示词编辑区粘贴以下内容:
你是一个资深全栈工程师,严格按用户需求生成可运行代码。要求:1)只输出代码块,不加任何解释;2)代码必须包含完整依赖声明和入口函数;3)若需求模糊,用注释标出待确认点。用户需求:{{input}}。
添加第二个节点:选择「LLM」类型 → 命名为「Style & Syntax Review」→ 连接前一节点的「output」→ 提示词写为:你是一名Python/JS代码规范审查员。请逐行检查上一段代码:1)是否符合PEP8/ESLint默认规则;2)是否存在语法错误或未定义变量;3)指出具体行号和修复建议。仅输出JSON格式:{"issues": [{"line": 12, "type": "style", "message": "缺少空格"}]}。
添加第三个节点:选择「LLM」类型 → 命名为「Security Scanner」→ 连接「Style & Syntax Review」节点 → 提示词写为:你是一名OWASP Top 10安全专家。扫描代码中是否存在硬编码密钥、SQL注入、XSS、反序列化等高危漏洞。只返回JSON:{"vulnerabilities": [{"risk": "high", "location": "line 45", "description": "硬编码API key"}]}。
配置输入输出与连接逻辑
第一步:点击画布左上角「开始」节点 → 在参数配置中新增一个字符串参数,命名为「code_requirement」,勾选「用户输入」。
第二步:将「开始」节点拖拽连线至「Code Generator」节点 → 弹出映射窗口 → 左侧选「code_requirement」,右侧选「input」→ 确认绑定。
第三步:依次连接「Code Generator」→「Style & Syntax Review」→「Security Scanner」→「结束」节点,全部使用默认「output」→「input」映射。
注意:不要手动修改节点间的数据路径名,Dify会自动识别同名字段;若改名,后续JSON解析将失败。
添加结构化输出与异常兜底
方法一:在「Security Scanner」节点后添加「代码」节点 → 类型选「Python」→ 输入代码:
import json
try:
result = json.loads({{previous_node.output}})
output = {"code": {{Code Generator.output}}, "review": result}
except:
output = {"error": "审查模块返回非JSON格式"}
方法二:直接在「结束」节点配置「输出模板」→ 勾选「启用自定义输出」→ 输入:
{
"generated_code": "{{Code Generator.output}}",
"style_issues": {{Style & Syntax Review.output.issues}},
"security_vulns": {{Security Scanner.output.vulnerabilities}}
}
【结束节点必须开启「返回原始输出」】否则Dify会自动包裹一层response字段,前端解析时取不到code字段。


















