应用说明
纯AI智能体开发,本人只负责监督、试用和反馈
期间尝试了codex、claude、deepseek harness,以及多智能体编排(多智能体编排,参照: 多agent协作开发实例-CSDN博客 和 Harness engineering 第一课-CSDN博客)
项目地址: Uni-lovenix/data-migration2
可直接安装使用的release版本:https://github.com/Uni-lovenix/data-migration2/releases
目前已支持 mac/windows
======================
以下正式介绍此应用(工具)
DataMigrator v0.1.0
DataMigrator 的整体架构采用「Electron 桌面壳 + React UI + Go 迁移引擎 + SQLite 状态存储」的分层设计。用户通过 React 界面发起迁移请求,经 Electron 主进程的安全 IPC 转发给 Go 引擎执行,引擎将任务进度与状态写入 SQLite 持久化,整体调用关系如下图所示:
各模块职责如下:
- Electron 桌面壳:负责应用生命周期、窗口管理与安全 IPC 通信,是 React UI 与 Go 引擎之间的桥梁,同时承载多数据库连接配置的本地持久化。
- React UI:提供连接管理、迁移发起、任务中心、模板管理、智能体对话与 Token-In 控制台等交互界面,将用户操作转换为具体的迁移指令。
- esmigrator:面向 Elasticsearch 的迁移引擎,负责索引数据的导出、导入与端到端直传。
- pgmigrator:面向 PostgreSQL 的迁移引擎,负责表数据的导出、导入与端到端直传。
- dispatcher:并行调度器,负责任务分发、进度上报、取消与断点续传,是保证大文件流式传输稳定性的核心。
- SQLite 状态存储:持久化任务队列、断点信息、迁移模板与会话数据,保证应用重启后任务状态可恢复。
首个公开版本:PostgreSQL / Elasticsearch 数据导出与导入的跨平台桌面工具,
内置 Go 迁移引擎,支持大文件流式传输、断点续传与多任务并行调度。
⚡ 一句话摘要
- ✅ PostgreSQL & Elasticsearch 7.10.2+ 的导出 / 导入 / 端到端直传
- ✅ Go 引擎:
esmigrator(ES)+pgmigrator(PG)+dispatcher(并行调度) - ✅ 任务队列、进度上报、取消、断点续传、SQLite 状态持久化
- ✅ 迁移模板:保存常用配置,一键批量执行
- ✅ LLM 配置(Ollama / Anthropic / OpenAI)+ 智能体对话(AIIP 风格 function calling)
- ✅ Token-In 控制台:通过 API Token 在远程机器以 curl / 简化 UI 触发迁移
- ✅ macOS dmg / zip、Windows NSIS 安装包,绿色版可执行文件
🚀 快速开始
Windows
:: 双击安装或在 cmd 中: DataMigrator-0.1.0-win-x64.exe :: 或者直接运行绿色版: release\win-unpacked\DataMigrator.exe启动后默认进入总览页。首次使用:
- 「连接」→ 新增 PostgreSQL / Elasticsearch 连接(连接信息持久化在 userData)。
- 「迁移」→ 选择源/目标、索引或表、批量参数,发起任务。
- 「任务中心」→ 查看进度、取消、续传。
- 「模板」→ 把常用迁移保存为模板,下次一键批量执行。
- 「智能体」→ 用自然语言发起迁移(AIIP 风格 function calling)。
- 「Token-In」→ 生成 API Token,在远程用 curl 调用。
- 「LLM 配置」→ 配置 Ollama / Anthropic / OpenAI,启用智能体与日志路由。
macOS
后续补充
桌面与 UI
- 桌面壳:Electron 33 + React 19 + TypeScript 5,安全 IPC,多数据库连接配置 CRUD 与本地持久化。
- 迁移模板:TemplatesPage 提供模板 CRUD UI、多选 checkbox、ExecuteModal 单模板执行、BatchExecuteModal 并行多模板执行;变量占位符(
{DATE}/{NOW}/{TIMESTAMP}+ 自定义变量)。 - Agentic 智能体:参考 AIIP 项目,11 个工具 schema(list_connections / list_templates / execute_template / list_tasks / cancel_task / run_postgres_export / run_postgres_import / run_elasticsearch_export / run_elasticsearch_import / list_llm_configs),3 种 Provider 序列化器,会话 + 消息历史持久化到
agent_sessions.db。 - Token-In 控制台:独立 tab,token 验证后展示连接列表 / 模板列表 / 任务列表,「执行」按钮调用 REST API;主进程通过
restApi:callIPC 转发请求避免 CORS。 - API Token 管理:在 LLM 配置页底部创建 / 列表 / 复制 / 吊销 API Token;格式
dtm_<48位十六进制>,吊销后立即生效无需重启。
打包与交付
- macOS:
npm run package:mac→release/DataMigrator-0.1.0-mac-<arch>.{dmg,zip}。 - Windows:
npm run package:win→release/DataMigrator-0.1.0-win-x64.exe(NSIS)+release/win-unpacked/(绿色版)。 - NSIS 安装时用户可选安装目录,并自动生成桌面 / 开始菜单快捷方式。
✅ 验收清单(构建期已通过)
- [x]
npm run check通过(typecheck + 单元测试 + Go 单元测试) - [x]
npm run build通过(electron-vite 产出out/) - [x]
npm run build:go:win通过(Go 引擎 Windows x64 交叉编译) - [x]
npx electron-builder --win通过(NSIS 安装包 + win-unpacked 绿色版) - [x] Docker PostgreSQL 16 集成测试通过
- [x] Docker Elasticsearch 7.10.2 / 9.5.0 集成测试通过
- [x] 打包后
esmigrator.exe --help烟测通过
⚠️ 已知问题
- 任务队列当前为单并发顺序执行;并行迁移能力已在 Go 引擎层就绪(
--parallel N),UI 层入口计划在下一迭代补齐。 - 断点续传以批量边界为粒度,批量写入中途取消可能产生重复或缺失。
- 连接密码尚未加密存储,建议发布前接入系统钥匙串或 Electron
safeStorage(LLM 配置已使用 safeStorage,连接密码暂未)。 - Windows NSIS 安装包需在 Windows 环境或 CI 构建;本地 macOS 无法直接验证 NSIS 安装流程。
electron-builder默认publish通道指向本仓库(Uni-lovenix/data-migration2),如不发布到 GitHub Releases 可在package.json中设置"publish": null。
🛠️ 从源码构建
需要 Node.js ≥ 18、Go ≥ 1.22。
git clone https://github.com/Uni-lovenix/data-migration2.git cd data-migration2 npm install npm run check # 类型检查 + 单元测试 + Go 单元测试 npm run dev # 开发模式启动 Electron # 打包当前平台 npm run package:mac # macOS dmg / zip npm run package:win # Windows NSIS(需在 Windows 或交叉编译环境)启动脚本start.cmd(Windows)和start.sh(macOS / Linux)会自动检测 Go 是否在 PATH、探测常见安装目录,并在缺失依赖时执行npm install。
📚 文档
- README.md
- docs/release.md — 发布说明与产物清单
- docs/PROCESS.md — RUP 过程协议
- docs/architecture.md — 架构说明
- progress.md — 当前会话进度
🙏 致谢
- AIIP — 智能体对话 / function calling 模式参考
- Electron、React、Vite、sql.js、pg、pg-query-stream、go-elasticsearch、lib/pq 等开源依赖
/p>
/p>