告别重复劳动:利用Dify JSON导出实现CI/CD自动化(附完整示例)

第一章:告别重复劳动:Dify工作流自动化的起点

在现代软件开发与运维实践中,重复性任务不仅消耗大量时间,还容易引入人为错误。Dify工作流自动化提供了一种声明式的方式来定义、执行和监控复杂任务流程,将开发者从繁琐的手动操作中解放出来。

自动化的核心价值

  • 减少人为干预,提升执行一致性
  • 加快任务响应速度,实现分钟级部署与反馈
  • 支持可视化调试与日志追踪,便于问题定位

快速启动一个自动化工作流

通过Dify的YAML配置文件,可以轻松定义一个基础工作流。以下示例展示了一个监听代码提交并触发测试的任务流程:
# workflow.yaml
version: 1
name: CI Pipeline
triggers:
  - event: git.push
    source: github.com/myorg/myrepo
jobs:
  - name: Run Tests
    runner: docker
    image: python:3.11
    commands:
      - pip install -r requirements.txt
      - python -m pytest tests/
该配置文件定义了当GitHub仓库发生推送时,自动拉起一个基于Python 3.11镜像的容器环境,并执行依赖安装与单元测试命令。

工作流执行流程图

graph TD A[代码提交] --> B{触发器捕获事件} B --> C[启动Docker运行器] C --> D[安装依赖] D --> E[运行测试用例] E --> F[生成报告并通知结果]

配置项说明表

字段说明是否必需
version工作流配置版本号
name工作流名称,用于标识
triggers触发条件列表
jobs要执行的任务序列

第二章:深入理解Dify工作流与JSON导出机制

2.1 Dify工作流的核心概念与结构解析

Dify工作流通过可视化编排实现AI应用的模块化构建,其核心由节点(Node)、边(Edge)和上下文引擎构成。每个节点代表一个独立处理单元,如LLM调用、条件判断或数据处理。
核心组件说明
  • 节点(Node):执行具体逻辑的功能块,支持自定义参数配置
  • 边(Edge):定义节点间的执行顺序与数据流向
  • 上下文引擎:在节点间传递并维护运行时数据状态
典型工作流结构示例
{
  "nodes": [
    { "id": "user_input", "type": "input" },
    { "id": "llm_node", "type": "llm", "model": "gpt-3.5-turbo" }
  ],
  "edges": [
    { "from": "user_input", "to": "llm_node" }
  ]
}
该配置表示用户输入节点输出将作为LLM节点的输入,形成串行处理链路。字段model指定使用的语言模型,edges确保执行顺序与数据流动一致性。

2.2 JSON导出功能的技术原理与应用场景

JSON导出功能基于数据序列化技术,将内存中的结构化数据转换为轻量级的JSON文本格式,便于跨平台传输与解析。
核心实现流程
  • 数据采集:从数据库或内存对象中提取目标数据
  • 结构映射:将对象字段映射为JSON键值对
  • 序列化输出:调用标准库进行编码并写入输出流
代码示例(Go语言)
type User struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}
data, _ := json.Marshal(users) // 序列化用户切片
上述代码利用结构体标签控制字段命名,json.Marshal 将Go对象转为JSON字节流,适用于API响应或文件导出。
典型应用场景
场景用途描述
配置导出保存系统参数为可读文件
数据迁移在异构系统间交换数据

2.3 导出文件的关键字段详解与可扩展性分析

在数据导出流程中,理解核心字段的语义与结构是确保下游系统兼容性的关键。典型导出文件通常包含如下关键字段:`id`(唯一标识)、`created_time`(时间戳)、`data_version`(数据版本)和 `status`(状态码)。
关键字段说明
  • id:全局唯一,用于幂等处理
  • created_time:ISO8601 格式,便于时序分析
  • data_version:支持多版本兼容,建议采用语义化版本(如 v1.2.0)
  • status:枚举值,如 ACTIVE、INACTIVE、DELETED
可扩展性设计示例
{
  "id": "usr_12345",
  "created_time": "2025-04-05T10:00:00Z",
  "data_version": "v1.1",
  "status": "ACTIVE",
  "extensions": {
    "region": "CN",
    "tenant_id": "tn_67890"
  }
}
通过引入 extensions 字段,可在不修改主结构的前提下支持租户或区域等上下文信息,提升未来扩展能力。

2.4 手动导出与版本控制的最佳实践

在手动导出配置或代码时,确保每次变更都伴随清晰的版本记录是关键。使用 Git 等工具进行版本管理,可有效追踪变更历史。
导出前的准备工作
  • 确认当前工作区干净,无未提交的临时更改
  • 核对导出范围,避免遗漏关键配置文件
  • 在分支上操作,防止污染主干代码
版本提交规范示例
git add config.yaml
git commit -m "chore: export production config v1.4.0

- 更新数据库连接池参数
- 调整缓存过期时间为300s
- 关联任务: TASK-123"
该提交信息遵循约定式提交(Conventional Commits),包含类型、作用域、变更摘要及上下文说明,便于自动化解析和审计。
推荐的标签管理策略
标签格式用途
v1.4.0-export标识导出专用版本
prod-config-20241001按日期归档生产配置

2.5 验证导出工作流的完整性与一致性

在数据导出流程中,确保工作流的完整性与一致性是保障下游系统可靠性的关键环节。需通过多维度校验机制确认数据在传输前后保持一致。
数据一致性校验策略
采用哈希比对与记录计数相结合的方式进行验证:
# 计算源端与目标端数据快照的MD5摘要
import hashlib
def compute_hash(records):
    hash_obj = hashlib.md5()
    for record in sorted(records, key=lambda x: x['id']):
        hash_obj.update(str(record).encode('utf-8'))
    return hash_obj.hexdigest()
该函数对排序后的记录生成统一哈希值,避免因顺序差异导致误判。配合行数统计,可有效识别遗漏或重复插入问题。
校验结果对照表
校验项源端值目标端值状态
总记录数1024010240✅ 匹配
MD5哈希abc123...abc123...✅ 匹配

第三章:CI/CD集成中的关键技术准备

3.1 搭建支持Dify的持续集成环境

在构建支持 Dify 的持续集成(CI)流程时,首先需配置版本控制系统与自动化构建工具。推荐使用 GitLab CI 或 GitHub Actions 作为核心调度引擎,确保每次代码提交后自动触发测试与镜像构建。
CI 配置文件示例

# .github/workflows/ci-dify.yml
name: CI-Dify
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'
      - name: Install dependencies
        run: |
          pip install -r requirements.txt
          pip install dify-sdk
该工作流定义了代码推送后自动拉取源码、配置 Python 环境并安装包含 Dify SDK 的依赖项,为后续服务调用和测试奠定基础。
关键依赖管理
  • dify-sdk:用于与 Dify 平台进行 API 交互
  • pytest:执行单元测试,验证逻辑正确性
  • docker-buildx:支持多架构镜像构建

3.2 自动化流水线中安全凭证的管理策略

在持续集成与交付(CI/CD)流程中,安全凭证(如API密钥、数据库密码、SSH密钥)的不当管理可能导致严重安全漏洞。为降低风险,推荐采用集中式凭证管理系统。
使用环境变量隔离敏感信息
避免将凭证硬编码在代码或配置文件中,应通过环境变量注入:

export DB_PASSWORD=$(vault read -field=password secret/ci/db)
该命令从Hashicorp Vault安全读取数据库密码并注入运行环境,实现动态获取与权限控制。
集成密钥管理服务
  • 使用云厂商提供的密钥管理服务(如AWS KMS、Azure Key Vault)
  • 配置最小权限访问策略,限制流水线角色仅能访问必要凭证
  • 启用审计日志,追踪凭证使用行为
自动化轮换机制
定期自动更新凭证可显著降低泄露风险。例如,结合定时任务与API调用实现密钥轮换,确保系统长期安全。

3.3 利用Git实现工作流版本追踪与回滚机制

在现代软件开发中,精确的版本控制是保障系统稳定性的核心。Git 提供了强大的提交历史追踪能力,通过分支管理与标签策略,可清晰记录每次变更。
提交历史与版本标记
使用语义化标签标记关键发布节点:
git tag -a v1.2.0 -m "Release version 1.2.0"
git push origin v1.2.0
该命令创建一个带注释的标签,便于识别重要版本。标签同步至远程仓库后,团队成员可快速定位稳定状态。
回滚操作流程
当线上出现严重缺陷时,可通过以下命令快速回退:
git revert HEAD~2..HEAD
此命令将撤销最近两次提交,生成新的安全提交,避免直接修改历史带来的协作风险。
  • revert 操作保留完整历史,适合共享分支
  • reset 适用于本地未推送的提交清理

第四章:实现全自动部署的工作流落地实践

4.1 编写可复用的Dify工作流导入脚本

在自动化部署场景中,编写可复用的Dify工作流导入脚本能显著提升效率。通过统一的脚本结构,可以实现跨环境的工作流配置同步。
脚本核心逻辑
# import_workflow.py
import requests
import json

def import_workflow(api_key, base_url, workflow_file):
    headers = {
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json"
    }
    with open(workflow_file, 'r') as file:
        payload = json.load(file)
    response = requests.post(f"{base_url}/workflows", json=payload, headers=headers)
    if response.status_code == 201:
        print("工作流导入成功")
    else:
        print(f"导入失败: {response.text}")
该脚本通过读取本地JSON文件并调用Dify API完成工作流创建。参数`api_key`用于身份认证,`base_url`支持多环境切换,`workflow_file`指定配置路径,便于版本控制。
可复用性设计
  • 参数化配置,适配不同部署环境
  • 错误处理机制保障执行稳定性
  • 支持CI/CD流水线集成

4.2 在GitHub Actions中触发自动化部署流程

在现代持续交付实践中,GitHub Actions 提供了强大的工作流自动化能力。通过定义 YAML 格式的工作流文件,可实现代码推送后的自动构建与部署。
配置触发条件
部署流程通常由特定事件触发,如 push 到主分支或创建标签:

on:
  push:
    branches:
      - main
    tags:
      - 'v*'
上述配置表示当有代码推送到 main 分支或打以 v 开头的标签时,将触发工作流执行。
部署任务编排
工作流可包含多个步骤,例如安装依赖、构建镜像并推送到容器 registry:
  • 检出代码(actions/checkout
  • 配置 Node.js 环境
  • 运行测试
  • 使用 Docker 打包并推送到远程仓库
通过合理编排这些步骤,可确保每次变更都经过标准化处理,提升发布可靠性。

4.3 自动化测试验证导出工作流的功能正确性

在持续集成环境中,确保数据导出工作流的稳定性至关重要。通过自动化测试可系统性验证各阶段输出与预期一致。
测试用例设计原则
  • 覆盖正常路径与异常边界条件
  • 模拟网络中断、数据格式错误等场景
  • 验证导出文件的完整性与结构合规性
核心验证代码示例

func TestExportWorkflow(t *testing.T) {
    result, err := ExportData(context.Background(), "test-query")
    if err != nil {
        t.Fatalf("导出失败: %v", err)
    }
    if len(result.Rows) == 0 {
        t.Error("期望非空结果集")
    }
}
该测试函数模拟调用导出接口,首先检查执行错误,再验证返回数据行数是否符合预期,保障基础功能可用性。
验证指标对比表
指标预期值实际阈值
响应时间<2s1.8s
文件完整性SHA256匹配通过

4.4 监控与告警:确保自动化稳定运行

在自动化系统中,监控与告警是保障服务稳定性的重要手段。通过实时采集关键指标,可快速发现并响应异常。
核心监控指标
  • CPU 与内存使用率:反映系统资源负载
  • 任务执行延迟:衡量自动化流程时效性
  • 错误日志频率:识别潜在故障点
告警规则配置示例
alert: HighTaskFailureRate
expr: rate(task_failures_total[5m]) > 0.1
for: 2m
labels:
  severity: critical
annotations:
  summary: "任务失败率过高"
  description: "过去5分钟内任务失败率超过10%"
该规则基于 Prometheus 表达式,当每秒任务失败率持续高于 0.1 超过两分钟时触发告警,有效避免瞬时抖动误报。
告警通知渠道
渠道适用场景响应级别
邮件非紧急事件
企业微信一般异常
短信/电话核心服务中断

第五章:未来展望:构建智能化的低代码运维体系

随着DevOps与AIOps的深度融合,低代码平台正从“可视化开发工具”演进为“智能运维中枢”。现代企业通过集成机器学习模型与自动化策略,在无需编写复杂脚本的前提下实现故障预测与自愈。
智能告警收敛
传统监控系统常面临告警风暴问题。某金融客户在其低代码运维平台中引入基于时间序列聚类的告警合并机制:

# 使用KMeans对告警源进行动态分组
from sklearn.cluster import KMeans
import numpy as np

alert_features = np.array([[timestamp, severity, source_ip_hash]])
kmeans = KMeans(n_clusters=5).fit(alert_features)
grouped_alerts = assign_to_clusters(kmeans.labels_)
该方案将日均告警量从12万条压缩至不足800条有效事件,显著提升响应效率。
自动化根因分析
通过低代码流程引擎编排多源数据关联分析,可自动触发诊断链路。以下是典型处理流程:
  • 接收Prometheus异常指标通知
  • 调用CMDB获取受影响服务拓扑
  • 查询Jaeger链路追踪最近慢请求
  • 比对变更管理系统中的发布记录
  • 输出疑似根因报告至企业微信机器人
资源弹性预测
结合历史负载数据与业务周期模型,平台可提前4小时预测资源瓶颈。下表展示了某电商系统在大促期间的预测准确率表现:
资源类型预测阈值实际触发次数命中率
CPU使用率>75%2391.3%
内存压力PageIn > 1000/s1888.9%
低代码AIOPS架构:用户界面 → 规则引擎 → ML模型服务 → 执行器集群
# 地质AI工作流系统完整部署方案(小白终极版) ## 📋 部署前准备 ### 硬件要求检查 - ✅ 操作系统:Windows 11 - ✅ 显卡:NVIDIA 2080ti双显卡(44GB显存) - ✅ 内存:96GB RAM - ✅ 存储:D盘有足够空间(建议至少100GB) ### 第一步:自动创建文件夹结构 1. **下载并运行自动创建脚本**: - 在桌面右键 → **新建** → **文本文档** - 重命名为:`自动创建文件夹.bat` - 右键编辑,粘贴以下代码: ```batch @echo off chcp 65001 >nul title 地质AI工作流系统文件夹创建工具 echo ========================================== echo 正在自动创建地质AI工作流系统文件夹结构 echo ========================================== echo. echo 请确保以管理员身份运行此脚本! echo. set "RootPath=D:\GeologyAI" echo 正在创建根目录... mkdir "%RootPath%" 2>nul echo 正在创建子文件夹... mkdir "%RootPath%\DockerData" 2>nul mkdir "%RootPath%\Ollama" 2>nul mkdir "%RootPath%\RAGFlow" 2>nul mkdir "%RootPath%\Dify" 2>nul mkdir "%RootPath%\Templates" 2>nul mkdir "%RootPath%\Templates\矿产勘查" 2>nul mkdir "%RootPath%\Templates\水工环地质" 2>nul mkdir "%RootPath%\Templates\岩土工程" 2>nul mkdir "%RootPath%\Templates\通用模板" 2>nul mkdir "%RootPath%\数据备份" 2>nul mkdir "%RootPath%\项目文档" 2>nul mkdir "%RootPath%\日志文件" 2>nul echo. echo ✅ 文件夹创建完成! echo. echo 创建的文件夹结构: tree "%RootPath%" /A echo. echo 按任意键退出... pause >nul ``` 2. **运行脚本**: - 右键点击 `自动创建文件夹.bat` - 选择"**以管理员身份运行**" - 等待完成,查看创建的文件夹结构 ### 第二步:开启WSL功能 1. **自动开启WSL**: - 创建新文件:`开启WSL.bat` - 右键编辑,粘贴: ```batch @echo off chcp 65001 >nul echo 正在启用WSL功能... dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart echo 正在启用虚拟机平台... dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart echo. echo ✅ WSL功能已启用! echo 请重启计算机完成安装... echo. pause ``` - 右键"以管理员身份运行" 2. **重启电脑** 3. **安装Ubuntu**: - 按 `Win + S`,输入"Microsoft Store" - 搜索"Ubuntu 22.04 LTS" - 点击"获取"安装 - 安装后打开,设置用户名和密码(记住密码!) ### 第三步:安装Docker Desktop 1. **下载Docker Desktop**: - 访问:https://www.docker.com/products/docker-desktop/ - 下载Windows版本 2. **自定义安装**: - 运行安装程序 - 取消"Use WSL 2 instead of Hyper-V"(如果出现) - 点击"Advanced" - 设置安装路径:`D:\GeologyAI\Docker\` - 设置数据目录:`D:\GeologyAI\DockerData\` - 完成安装 3. **配置Docker**: - 启动Docker Desktop - 右键系统托盘鲸鱼图标 → Settings - General → 勾选"Use the WSL 2 based engine" - 点击"Apply & Restart" ### 第四步:系统环境配置 1. **创建环境配置脚本**: - 在Ubuntu中运行以下命令: ```bash # 设置文件夹权限 sudo chmod -R 777 /mnt/d/GeologyAI/ # 创建项目目录链接 ln -s /mnt/d/GeologyAI ~/GeologyAI # 更新系统 sudo apt update && sudo apt upgrade -y # 安装必要工具 sudo apt install -y curl wget git vim ``` ### 第五步:安装Ollama 1. **创建Ollama安装脚本**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI # 创建安装脚本 cat > install_ollama.sh << 'EOF' #!/bin/bash echo "开始安装Ollama..." # 安装Ollama curl -fsSL https://ollama.ai/install.sh | sh # 设置模型存储路径 echo 'export OLLAMA_MODELS="/mnt/d/GeologyAI/Ollama"' >> ~/.bashrc source ~/.bashrc # 下载地质行业AI模型 echo "开始下载AI模型(这需要较长时间,请耐心等待)..." ollama pull deepseek-coder:6.7b ollama pull llama2:7b ollama pull deepseek-llm:7b echo "✅ Ollama安装完成!" EOF # 运行安装脚本 chmod +x install_ollama.sh ./install_ollama.sh ``` ### 第六步:部署RAGFlow 1. **创建RAGFlow配置**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI/RAGFlow # 创建docker-compose配置文件 cat > docker-compose.yml << 'EOF' version: '3.8' services: ragflow: image: inchat/ragflow:latest container_name: ragflow ports: - "9380:9380" volumes: - ./data:/app/data - /mnt/d/GeologyAI/Templates:/templates - /mnt/d/GeologyAI/项目文档:/projects environment: - RAGFLOW_DATA_DIR=/app/data restart: unless-stopped deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] EOF # 启动RAGFlow docker-compose up -d ``` ### 第七步:部署Dify 1. **创建Dify配置**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI/Dify # 创建docker-compose配置文件 cat > docker-compose.yml << 'EOF' version: '3.8' services: dify: image: langgenius/dify:latest container_name: dify ports: - "5001:5001" volumes: - ./data:/app/api/data - /mnt/d/GeologyAI/Templates:/templates environment: - DB_TYPE=sqlite - SQLITE_DATABASE=dify.db restart: unless-stopped EOF # 启动Dify docker-compose up -d ``` ### 第八步:创建地质模板结构 1. **创建模板初始化脚本**: - 在Windows中创建:`初始化地质模板.bat` ```batch @echo off chcp 65001 >nul echo 正在创建地质报告模板结构... set "TemplatePath=D:\GeologyAI\Templates" echo 创建矿产勘查模板目录... mkdir "%TemplatePath%\矿产勘查\第一章_前言" mkdir "%TemplatePath%\矿产勘查\第二章_地质特征" mkdir "%TemplatePath%\矿产勘查\第三章_勘查工作" mkdir "%TemplatePath%\矿产勘查\第四章_资源储量" mkdir "%TemplatePath%\矿产勘查\第五章_结论建议" echo 创建水工环地质模板目录... mkdir "%TemplatePath%\水工环地质\水文地质" mkdir "%TemplatePath%\水工环地质\工程地质" mkdir "%TemplatePath%\水工环地质\环境地质" echo 创建岩土工程模板目录... mkdir "%TemplatePath%\岩土工程\勘察报告" mkdir "%TemplatePath%\岩土工程\测试数据" mkdir "%TemplatePath%\岩土工程\分析评价" echo 创建通用模板目录... mkdir "%TemplatePath%\通用模板\封面页" mkdir "%TemplatePath%\通用模板\目录结构" mkdir "%TemplatePath%\通用模板\图表模板" echo. echo ✅ 地质模板结构创建完成! echo 请将您的Word报告模板复制到相应目录中 echo. pause ``` - 右键"以管理员身份运行" ### 第九步:创建一键管理系统 1. **创建主启动脚本**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI # 创建主启动脚本 cat > 地质AI工作流系统.sh << 'EOF' #!/bin/bash # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 日志函数 log() { echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1" } error() { echo -e "${RED}[错误]${NC} $1" } warning() { echo -e "${YELLOW}[警告]${NC} $1" } # 主菜单 show_menu() { clear echo -e "${BLUE}==========================================${NC}" echo -e "${BLUE} 地质AI工作流系统管理菜单${NC}" echo -e "${BLUE}==========================================${NC}" echo -e "1. 启动所有服务" echo -e "2. 停止所有服务" echo -e "3. 重启所有服务" echo -e "4. 查看服务状态" echo -e "5. 查看系统日志" echo -e "6. 备份系统数据" echo -e "7. 更新AI模型" echo -e "0. 退出" echo -e "${BLUE}==========================================${NC}" echo -n "请选择操作 [0-7]: " } # 启动所有服务 start_services() { log "启动Ollama AI模型服务..." ollama serve & sleep 10 log "启动RAGFlow知识库系统..." cd /mnt/d/GeologyAI/RAGFlow docker-compose up -d sleep 10 log "启动Dify工作流系统..." cd /mnt/d/GeologyAI/Dify docker-compose up -d sleep 10 log "检查服务状态..." check_status } # 停止所有服务 stop_services() { log "停止RAGFlow服务..." cd /mnt/d/GeologyAI/RAGFlow docker-compose down log "停止Dify服务..." cd /mnt/d/GeologyAI/Dify docker-compose down log "停止Ollama服务..." pkill -f "ollama serve" log "所有服务已停止" } # 重启服务 restart_services() { stop_services sleep 5 start_services } # 检查服务状态 check_status() { log "服务状态检查:" echo -e "\n${YELLOW}Ollama 状态:${NC}" if pgrep -f "ollama serve" > /dev/null; then echo -e "${GREEN}✅ 运行中${NC}" else echo -e "${RED}❌ 未运行${NC}" fi echo -e "\n${YELLOW}RAGFlow 状态:${NC}" cd /mnt/d/GeologyAI/RAGFlow if docker-compose ps | grep -q "Up"; then echo -e "${GREEN}✅ 运行中${NC}" echo -e "访问地址: ${BLUE}http://localhost:9380${NC}" else echo -e "${RED}❌ 未运行${NC}" fi echo -e "\n${YELLOW}Dify 状态:${NC}" cd /mnt/d/GeologyAI/Dify if docker-compose ps | grep -q "Up"; then echo -e "${GREEN}✅ 运行中${NC}" echo -e "访问地址: ${BLUE}http://localhost:5001${NC}" else echo -e "${RED}❌ 未运行${NC}" fi } # 查看日志 show_logs() { echo -e "${YELLOW}选择要查看的日志:${NC}" echo "1. RAGFlow 日志" echo "2. Dify 日志" echo "3. 系统日志" echo "4. 所有日志" echo -n "请选择 [1-4]: " read log_choice case $log_choice in 1) cd /mnt/d/GeologyAI/RAGFlow docker-compose logs -f ;; 2) cd /mnt/d/GeologyAI/Dify docker-compose logs -f ;; 3) tail -f /mnt/d/GeologyAI/日志文件/system.log ;; 4) log "显示所有服务日志..." ;; *) error "无效选择" ;; esac } # 备份数据 backup_data() { log "开始备份系统数据..." BACKUP_DIR="/mnt/d/GeologyAI/数据备份/backup_$(date +%Y%m%d_%H%M%S)" mkdir -p "$BACKUP_DIR" cp -r /mnt/d/GeologyAI/RAGFlow/data "$BACKUP_DIR/" cp -r /mnt/d/GeologyAI/Dify/data "$BACKUP_DIR/" cp -r /mnt/d/GeologyAI/Templates "$BACKUP_DIR/" log "数据备份完成: $BACKUP_DIR" } # 更新模型 update_models() { log "更新AI模型..." ollama pull deepseek-coder:latest ollama pull llama2:latest log "模型更新完成" } # 主循环 while true; do show_menu read choice case $choice in 1) start_services ;; 2) stop_services ;; 3) restart_services ;; 4) check_status ;; 5) show_logs ;; 6) backup_data ;; 7) update_models ;; 0) log "感谢使用地质AI工作流系统!" exit 0 ;; *) error "无效选择,请重新输入" ;; esac echo echo -n "按任意键继续..." read -n 1 done EOF # 设置执行权限 chmod +x 地质AI工作流系统.sh # 创建Windows快捷方式脚本 cat > create_shortcut.bat << 'EOF' @echo off chcp 65001 >nul echo 创建地质AI系统快捷方式... set SCRIPT_PATH="%USERPROFILE%\Desktop\启动地质AI系统.lnk" set TARGET="wsl.exe" set ARGUMENTS="-d Ubuntu-22.04 -e bash /mnt/d/GeologyAI/地质AI工作流系统.sh" echo 创建桌面快捷方式... powershell -Command "$WshShell = New-Object -comObject WScript.Shell; $Shortcut = $WshShell.CreateShortcut(%SCRIPT_PATH%); $Shortcut.TargetPath = %TARGET%; $Shortcut.Arguments = %ARGUMENTS%; $Shortcut.Save()" echo ✅ 快捷方式创建完成! echo 桌面上的"启动地质AI系统"快捷方式已创建 pause EOF # 在Windows中运行快捷方式创建 cmd.exe /c create_shortcut.bat ``` ### 第十步:验证部署 1. **创建验证脚本**: - 在Ubuntu中运行: ```bash cd /mnt/d/GeologyAI # 创建验证脚本 cat > 系统验证.sh << 'EOF' #!/bin/bash echo "开始验证地质AI工作流系统..." echo "1. 检查文件夹结构..." ls -la /mnt/d/GeologyAI/ echo "2. 检查Docker服务..." docker --version docker-compose --version echo "3. 检查Ollama..." ollama --version ollama list echo "4. 检查容器状态..." cd /mnt/d/GeologyAI/RAGFlow && docker-compose ps cd /mnt/d/GeologyAI/Dify && docker-compose ps echo "5. 测试网络访问..." echo "RAGFlow: http://localhost:9380" echo "Dify: http://localhost:5001" echo "✅ 验证完成!" EOF chmod +x 系统验证.sh ./系统验证.sh ``` ## 🎯 使用指南 ### 启动系统: 1. 双击桌面"**启动地质AI系统**"快捷方式 2. 在菜单中选择"1"启动所有服务 3. 等待服务启动完成 ### 访问系统: - **知识库管理**:http://localhost:9380 - **工作流配置**:http://localhost:5001 ### 地质工作流程: 1. **准备知识**:在RAGFlow中上传地质规范、技术标准 2. **配置模板**:在Templates文件夹中放置报告模板 3. **创建工作流**:在Dify中配置报告生成流程 4. **生成报告**:输入勘查数据,自动生成专业报告 ## 🔧 故障排除 ### 常见问题解决: 1. **端口冲突**: ```bash # 修改RAGFlow端口为9381 # 修改Dify端口为5002 ``` 2. **Docker启动失败**: - 检查Docker Desktop是否运行 - 重启Docker服务 3. **模型下载慢**: ```bash # 使用镜像加速 OLLAMA_HOST=0.0.0.0 ollama pull deepseek-coder:6.7b ``` 4. **权限问题**: ```bash sudo chmod -R 777 /mnt/d/GeologyAI/ ``` ## 💾 维护指南 ### 日常维护: - 定期使用菜单选项"6"备份数据 - 使用菜单选项"4"检查服务状态 - 定期使用菜单选项"7"更新AI模型 ### 数据备份: 重要数据位置: - `D:\GeologyAI\RAGFlow\data\` - 知识库数据 - `D:\GeologyAI\Dify\data\` - 工作流配置 - `D:\GeologyAI\Ollama\` - AI模型 - `D:\GeologyAI\Templates\` - 报告模板 分析完善以上部署方案
09-30
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值