Dify 跑步AI助手-5.0 复刻包

从当前 Chrome 登录态抓取 Dify 只读接口生成。本页面用于人工 review,Markdown 和 raw DSL 是复刻真源。
节点58
连线72
测试798
模式advanced-chat

关键文件

raw/dify-export-no-secret.yml
同版本 Dify 优先导入。
raw/workflow-draft.json
1:1 复刻主真源,包含完整 graph。
docs/dify-running-ai-assistant-5-replication.md
详细复刻说明。
tests/test_workflow_contract_unittest.py
零依赖 798 个单元测试。

迁移后必须重新填写 PROFILE_API_KEY,导出文件中该密钥已被 Dify 掩码;不要把真实密钥写入仓库。

节点类型分布

类型数量
start1
llm10
code18
assigner1
if-else9
http-request3
answer11
knowledge-retrieval4
variable-aggregator1

节点清单

ID类型标题关键参数
1779676995552start用户输入{"variables": "0"}
1780468871825llm用户输入提取 / 路由解析{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0, "prompt_roles": "system,user"}
1781771000104code路由 JSON 清洗 / 字段标准化{"language": "python3", "inputs": "raw_text,user_query", "outputs": "parse_ok,parse_error,parsed_json,selected_route,route_confidence,route_reason,is_continuation,continuation_type,current_stage,next_action,current_intent,response_mode,missing_slots,safety_flags,has_discomfort,has_medical_risk,has_emergency_symptom,has_prompt_injection,has_out_of_scope_disguise,has_dangerous_request,safety_risk_reason,extracted_slots,profile_read_needed,profile_read_keys,profile_update_candidates,has_profile_update,ordinary_qa_needed,ordinary_qa_topics,ordinary_qa_primary_query,ordinary_qa_expanded_queries,ordinary_qa_query_text,ability_calculation,calculation_type,performance_source,ability_distance,ability_time,ability_pace,easy_pace,easy_pace_context,easy_pace_confirmed,allow_easy_pace_estimate,target_distance,target_time,question_focus,unit_type,unit_ambiguous,needs_vdot,needs_race_pace,needs_profile_for_ability,estimate_confidence,ability_missing_info,clarification_needed,clarification_question,fallback_needed,fallback_reason,resolved_query,primary_intent,task_mode,qa_domains,qa_domains_text,analysis_data_source,needs_coros,risk_level,risk_type,safety_route,medical_context,doctor_guidance_text,plan_mode,missing_info,missing_info_text,pending_task,ability_input,relevant_profile,relevant_profile_text,result"}
1781760882848code入口兼容字段整理{"language": "python3", "inputs": "cleaned", "outputs": "ability_input,analysis_data_source,conversation_relation,dangerous_behavior_type,doctor_guidance_text,injury_status,medical_context,missing_info,missing_info_text,needs_coros,plan_mode,primary_intent,qa_domains,qa_domains_text,relevant_profile,relevant_profile_text,resolved_query,result,risk_flags,risk_flags_text,risk_level,risk_type,safety_route,task_mode,updated_profile,updated_profile_text,selected_route,current_intent,current_stage"}
1780545505390assigner会话变量更新{"items": "6"}
1783000000300code画像写入候选标准化 / Payload 构造{"language": "python3", "inputs": "user_id,selected_route,current_intent,profile_update_candidates,extracted_slots,ability_calculation,safety_flags,has_prompt_injection,has_out_of_scope_disguise,has_dangerous_request", "outputs": "profile_write_needed,profile_write_allowed,write_reason,skip_reason,has_basic_profile_update,has_training_status_update,has_training_availability_update,has_risk_profile_update,has_performance_record_update,basic_profile_payload,training_status_payload,training_availability_payload,risk_profile_payload,performance_record_payload,write_modules,profile_write_payload,profile_write_payload_json,skipped_candidates,profile_update_summary,profile_context_text,profile_followup_question"}
1783000000305if-else画像写入分流{"cases": "1", "conditions": "1"}
1783000000301http-request统一保存用户画像{"method": "post", "url": "{{#env.PROFILE_API_BASE_URL#}}/profile/upsert", "error_strategy": "fail-branch"}
1780469319091if-else主分流{"cases": "4", "conditions": "4"}
1780469932737llm身体不适固定回复{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.4, "prompt_roles": "system,user"}
1780536637801answer输出-医疗急症安全回复{"answer": "{{#1780469932737.text#}}"}
1782100000011answer超范围固定回复{"answer": "抱歉,这个问题超出了我目前的专业解答范围。 我主要擅长跑步训练、训练计划、配速评估、训练分析、运动营养和赛事补给策略。如果你有这些方面的问题,我可以继续帮你分析和建议。"}
1782001000002code普通问答检索配置{"language": "python3", "inputs": "query,topics,ordinary_qa_query_text", "outputs": "answer_scope,excluded_terms_json,knowledge_route,needs_evidence_review,product_specific,retrieval_query,source_policy"}
1782001000003if-else日常问答知识域路由{"cases": "2", "conditions": "2"}
1780478651801knowledge-retrieval跑步通用知识检索{"datasets": "4393a498-bef1-4469-92d8-591fc5169ea2", "retrieval_mode": "multiple", "query": "1782001000002.retrieval_query"}
1782001000004knowledge-retrieval运动营养与产品知识检索{"datasets": "ead9bb6a-57e7-4a6d-a39d-5e13f11d32ca", "retrieval_mode": "multiple", "query": "1782001000002.retrieval_query"}
1782001000005code跑步知识证据整理{"language": "python3", "inputs": "retrieval_result,retrieval_query,knowledge_route,answer_scope,excluded_terms_json,source_policy,product_specific,needs_evidence_review", "outputs": "evidence_text"}
1782001000006code营养知识证据整理{"language": "python3", "inputs": "retrieval_result,retrieval_query,knowledge_route,answer_scope,excluded_terms_json,source_policy,product_specific,needs_evidence_review", "outputs": "evidence_text"}
1782001000007variable-aggregator日常问答证据聚合{"variables": "1782001000005.evidence_text,1782001000006.evidence_text"}
1780478708723llm普通问答生成{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.3, "prompt_roles": "system,user"}
1780536649345answer输出-日常问答{"answer": "{{#1780478708723.text#}}"}
1780536284962codeVDOT 能力基准计算{"language": "python3", "inputs": "vdot_input_mode,distance,time,easy_pace,saved_vdot,saved_training_paces,question_focus,performance_source,estimate_confidence,notes", "outputs": "result"}
1780535635827if-elseVDOT 结果后续路由{"cases": "4", "conditions": "5"}
1780536548441llmVDOT / 配速回答生成{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.3, "prompt_roles": "system,user"}
1780536661204answer输出-能力评估{"answer": "{{#1780536548441.text#}}"}
1783000000101http-request读取用户画像{"method": "get", "url": "{{#env.PROFILE_API_BASE_URL#}}/profile/{{#sys.user_id#}}", "error_strategy": "fail-branch"}
1780645110626http-request读取COROS最近30天数据{"method": "get", "url": "https://coros-connector.onrender.com/coros/runs?user_id={{#sys.user_id#}}&days=30", "error_strategy": "fail-branch"}
1780645215873codeCOROS训练统计{"language": "python3", "inputs": "http_body,status_code", "outputs": "connected,runs_summary,training_stats"}
1780479405124llmCOROS训练分析{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.4, "prompt_roles": "system,user"}
1780536679787answer输出-COROS训练分析{"answer": "{{#1780479405124.text#}}"}
1781771000101llm用户提供数据训练分析{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.4, "prompt_roles": "system,user"}
1781771000102answer输出-用户数据训练分析{"answer": "{{#1781771000101.text#}}"}
1781771000103answerCOROS读取失败{"answer": "当前无法读取你的COROS最近30天训练记录,因此不能可靠分析跑量、配速、心率和负荷变化。 你可以检查COROS授权与连接服务,或直接提供最近4周的周跑量、每周训练次数、最长跑、典型配速和平均心率。 {{#1781760882848.d"}
1782001000008code训练计划检索配置{"language": "python3", "inputs": "query,plan_mode,plan_context_text,answer_scope_from_check,missing_info_text,can_use_exact_training_paces,ability_result", "outputs": "answer_scope,excluded_terms_json,needs_evidence_review,product_specific,retrieval_query,source_policy"}
1780480474845knowledge-retrieval训练计划窄范围检索{"datasets": "4393a498-bef1-4469-92d8-591fc5169ea2", "retrieval_mode": "multiple", "query": "1782001000008.retrieval_query"}
1782001000009code训练计划证据整理{"language": "python3", "inputs": "retrieval_result,retrieval_query,knowledge_route,answer_scope,excluded_terms_json,source_policy,product_specific,needs_evidence_review", "outputs": "evidence_text"}
1782300000001code训练计划营养检索配置{"language": "python3", "inputs": "query,plan_mode,profile_text,ability_result", "outputs": "nutrition_answer_scope,nutrition_excluded_terms_json,nutrition_needs_evidence_review,nutrition_product_specific,nutrition_retrieval_query,nutrition_source_policy,supplement_structure_policy"}
1782300000002knowledge-retrieval训练计划营养与产品知识检索{"datasets": "ead9bb6a-57e7-4a6d-a39d-5e13f11d32ca", "retrieval_mode": "multiple", "query": "1782300000001.nutrition_retrieval_query"}
1782300000003code训练计划营养证据整理{"language": "python3", "inputs": "retrieval_result,retrieval_query,answer_scope,excluded_terms_json,source_policy,product_specific,needs_evidence_review", "outputs": "evidence_text"}
1780480510371llm训练计划生成{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.5, "prompt_roles": "system,user"}
1780536689356answer输出-训练计划{"answer": "{{#1780480510371.text#}}"}
1783600000007if-else训练计划与分析二级分流{"cases": "3", "conditions": "3"}
1783500000011code配速计算准备 / 字段校验{"language": "python3", "inputs": "calculation_type,performance_source,ability_distance,ability_time,ability_pace,easy_pace,easy_pace_confirmed,allow_easy_pace_estimate,target_distance,target_time,question_focus,unit_type,unit_ambiguous,needs_vdot,needs_race_pace,needs_profile_for_ability,ability_missing_info", "outputs": "ability_ready,next_calc_action,calculation_type,performance_source,distance,time,pace,easy_pace,easy_pace_confirmed,target_distance,target_time,question_focus,missing_info,error_reason"}
1783500000012if-else配速计算类型判断{"cases": "4", "conditions": "5"}
1783500000014code比赛配速计算{"language": "python3", "inputs": "target_distance,target_time,question_focus", "outputs": "race_pace_ready,target_distance,target_time,distance_km,average_pace,average_speed_kmh,question_focus,error"}
1783500000015llm配速信息不足回复{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.4, "prompt_roles": "system,user"}
1783500000025answer输出-配速信息不足{"answer": "{{#1783500000015.text#}}"}
1783500000018llm配速计算兜底回复{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.4, "prompt_roles": "system,user"}
1783500000028answer输出-配速兜底{"answer": "{{#1783500000018.text#}}"}
1783500000017llm比赛配速回答生成{"model": "deepseek-v4-flash", "provider": "langgenius/deepseek/deepseek", "temperature": 0.4, "prompt_roles": "system,user"}
1783500000027answer输出-比赛配速{"answer": "{{#1783500000017.text#}}"}
1783500000022codeVDOT 计算输入合并 / 标准化{"language": "python3", "inputs": "next_calc_action,direct_distance,direct_time,direct_pace,direct_easy_pace,direct_easy_pace_confirmed,allow_easy_pace_estimate,direct_question_focus,direct_performance_source,profile_ability_action,profile_distance,profile_time,saved_vdot,saved_training_paces,profile_question_focus,profile_performance_source,plan_ability_basis", "outputs": "vdot_input_ready,vdot_input_mode,vdot_input_source,distance,time,pace,easy_pace,easy_pace_confirmed,saved_vdot,saved_training_paces,question_focus,performance_source,source_date,source_label,source_confidence,estimate_confidence,missing_info,error_reason,notes"}
1783500000019if-else画像读取用途分流{"cases": "2", "conditions": "2"}
1783500000020code从用户画像提取能力依据{"language": "python3", "inputs": "profile_raw,question_focus", "outputs": "profile_ability_found,profile_ability_action,performance_source,distance,time,pace,saved_vdot,saved_training_paces,question_focus,source_date,source_label,source_confidence,estimate_confidence,missing_info,error_reason,notes"}
1783500000021if-else画像能力结果分流{"cases": "1", "conditions": "2"}
1783500000023code训练计划信息合并 / 标准化{"language": "python3", "inputs": "extracted_slots,profile_raw", "outputs": "plan_context_ready,goal,basic_profile,current_training,training_availability,risk_profile,ability_basis,source_map,conflicts,preliminary_missing_slots,notes"}
1783500000024code训练计划资料完整度判断{"language": "python3", "inputs": "user_query,goal,current_training,training_availability,risk_profile,ability_basis,preliminary_missing_slots", "outputs": "plan_check_ready,route_action,plan_mode,needs_vdot_for_plan,can_use_exact_training_paces,personalization_level,missing_info,missing_info_text,answer_scope,plan_safety_note,doctor_guidance_needed,doctor_guidance_text,plan_context_text,error_reason"}
1783500000026if-else训练计划VDOT需求判断{"cases": "1", "conditions": "1"}

连线清单

#SourceSource HandleTargetTarget Handle
1用户输入source用户输入提取 / 路由解析target
2用户输入提取 / 路由解析source路由 JSON 清洗 / 字段标准化target
3路由 JSON 清洗 / 字段标准化source入口兼容字段整理target
4入口兼容字段整理source会话变量更新target
5会话变量更新source画像写入候选标准化 / Payload 构造target
6画像写入候选标准化 / Payload 构造source画像写入分流target
7画像写入分流profile-write-needed统一保存用户画像target
8画像写入分流false主分流target
9统一保存用户画像source主分流target
10统一保存用户画像fail-branch主分流target
11主分流route-discomfort身体不适固定回复target
12身体不适固定回复source输出-医疗急症安全回复target
13主分流route-out-of-scope超范围固定回复target
14主分流route-training训练计划与分析二级分流target
15主分流route-ordinary普通问答检索配置target
16主分流false超范围固定回复target
17普通问答检索配置source日常问答知识域路由target
18日常问答知识域路由daily-route-running跑步通用知识检索target
19日常问答知识域路由daily-route-nutrition运动营养与产品知识检索target
20日常问答知识域路由false跑步通用知识检索target
21跑步通用知识检索source跑步知识证据整理target
22运动营养与产品知识检索source营养知识证据整理target
23跑步知识证据整理source日常问答证据聚合target
24营养知识证据整理source日常问答证据聚合target
25日常问答证据聚合source普通问答生成target
26普通问答生成source输出-日常问答target
27训练计划与分析二级分流intent-ability配速计算准备 / 字段校验target
28训练计划与分析二级分流intent-plan读取用户画像target
29训练计划与分析二级分流intent-analysisVDOT 结果后续路由target
30训练计划与分析二级分流false普通问答检索配置target
31配速计算准备 / 字段校验source配速计算类型判断target
32配速计算类型判断calc-missing配速信息不足回复target
33配速信息不足回复source输出-配速信息不足target
34配速计算类型判断calc-need-profile读取用户画像target
35配速计算类型判断calc-race-pace比赛配速计算target
36比赛配速计算source比赛配速回答生成target
37比赛配速回答生成source输出-比赛配速target
38配速计算类型判断calc-vdotVDOT 计算输入合并 / 标准化target
39配速计算类型判断false配速计算兜底回复target
40配速计算兜底回复source输出-配速兜底target
41读取用户画像source画像读取用途分流target
42读取用户画像fail-branch画像读取用途分流target
43画像读取用途分流profile-for-ability从用户画像提取能力依据target
44从用户画像提取能力依据source画像能力结果分流target
45画像能力结果分流profile-vdotVDOT 计算输入合并 / 标准化target
46画像能力结果分流false配速信息不足回复target
47画像读取用途分流profile-for-plan训练计划信息合并 / 标准化target
48训练计划信息合并 / 标准化source训练计划资料完整度判断target
49训练计划资料完整度判断source训练计划VDOT需求判断target
50训练计划VDOT需求判断plan-needs-vdotVDOT 计算输入合并 / 标准化target
51训练计划VDOT需求判断false训练计划检索配置target
52VDOT 计算输入合并 / 标准化sourceVDOT 能力基准计算target
53VDOT 能力基准计算sourceVDOT 结果后续路由target
54VDOT 结果后续路由vdot-to-answerVDOT / 配速回答生成target
55VDOT / 配速回答生成source输出-能力评估target
56VDOT 结果后续路由vdot-to-plan训练计划检索配置target
57VDOT 结果后续路由analysis-coros读取COROS最近30天数据target
58读取COROS最近30天数据sourceCOROS训练统计target
59COROS训练统计sourceCOROS训练分析target
60COROS训练分析source输出-COROS训练分析target
61读取COROS最近30天数据fail-branchCOROS读取失败target
62VDOT 结果后续路由analysis-user用户提供数据训练分析target
63VDOT 结果后续路由false用户提供数据训练分析target
64用户提供数据训练分析source输出-用户数据训练分析target
65训练计划检索配置source训练计划窄范围检索target
66训练计划检索配置source训练计划营养检索配置target
67训练计划窄范围检索source训练计划证据整理target
68训练计划证据整理source训练计划生成target
69训练计划营养检索配置source训练计划营养与产品知识检索target
70训练计划营养与产品知识检索source训练计划营养证据整理target
71训练计划营养证据整理source训练计划生成target
72训练计划生成source输出-训练计划target