# synapse-run **Repository Path**: zephyr123_3/synapse-run ## Basic Information - **Project Name**: synapse-run - **Description**: Synapse Run 是一款专为中长跑爱好者打造的智能训练助手系统,基于先进的多智能体协作架构设计。系统通过"论坛式"交互机制,让多个专业AI智能体像大脑神经突触(Synapse)一样协同工作、思维碰撞,为跑者提供专业、个性化的训练指导方案 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2025-12-07 - **Last Updated**: 2025-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Synapse Run Logo # Synapse Run **智能跑步训练助手 | 多智能体协作系统** [![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) [![Python Version](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![Version](https://img.shields.io/badge/version-1.0.1-brightgreen.svg)](https://github.com/zephyr4123/synapse-run) [English](./README-EN.md) | [中文文档](./README.md) | [更新日志](./docs/updateLog.md)
--- ## ⚠️ Linux 部署紧急提醒 **问题**: 在 Linux 环境下使用 Garmin Connect 登录时,可能遇到 `ValueError: duplicate parameter name: 'timestamp_gmt'` 错误。 **原因**: `garminconnect` 底层依赖 `garth` 库存在参数名重复问题,导致 Pydantic 数据类签名生成失败。 **解决方法**: 1. 定位到依赖库文件(根据实际环境路径调整): ```bash nano /lib/python3.11/site-packages/garth/data/weight.py ``` 2. 在文件第17行附近,找到以下代码: ```python datetime_utc: datetime = Field(..., alias="timestamp_gmt") ``` 3. 修改为: ```python datetime_utc: datetime = Field(..., alias="timestamp_gmt_datetime") # 改为不同的别名避免重复 ``` 4. 保存文件后重新运行程序即可正常使用。 > 💡 **提示**: 这是依赖库的已知问题,修复后不影响 Garmin Connect 的正常功能。如遇到权限问题,请使用 `sudo` 或切换到具有写权限的用户。 --- ## 🎉 v1.0.1 更新说明 **发布日期**: 2025年12月16日 ### 🐛 问题修复 **感谢社区贡献者 [@JacobZang](https://github.com/JacobZang) 提交的PR修复!** - **修复Garmin数据同步问题**: 修复了在同步Garmin数据时未能正确优先使用前端传递的`is_cn`参数的问题 - **问题描述**: 系统在同步Garmin数据时,没有优先使用前端传递的地区参数,可能导致不同地区用户访问错误的Garmin服务器 - **修复方案**: 优化参数传递逻辑,确保前端的`is_cn`参数在同步流程中被正确使用 - **影响范围**: 所有使用Garmin数据源的用户 - **贡献者**: [@JacobZang](https://github.com/JacobZang) ### 🙏 特别致谢 感谢 [@JacobZang](https://github.com/JacobZang) 发现并修复了这个影响Garmin用户体验的问题!这是我们项目收到的第一个社区PR,非常感谢您的贡献!🎉 --- ## 🎉 v1.0.0 正式版更新说明 **发布日期**: 2025年12月11日 ### ✨ 重大更新 1. **🏃 扩展佳明(Garmin)数据支持**: 完全兼容Garmin Connect数据源,保持可扩展性,便于后续接入更多运动平台 2. **🎨 可视化配置界面**: 首次使用提供健康检查与可视化配置流程,无需手动编辑config.py,一键配置API密钥与数据库 3. **📊 智能数据源适配**: 根据`TRAINING_DATA_SOURCE`配置动态调整LLM提示词与工具集(Garmin拥有更丰富的生理指标工具) 4. **📈 双数据后台支持**: `/training`监控页面支持Keep与Garmin两种模式 - **Keep模式**: 提供增删改查功能,手动管理训练数据 - **Garmin模式**: 一键同步按钮,自动从Garmin Connect拉取最新数据 ### 🔧 配置优化 - 简化数据导入流程,支持Excel导入(Keep)与邮箱授权同步(Garmin) - 优化健康检查机制,启动时自动检测API与数据库配置 - 增强错误提示,配置失败时提供详细指引 --- ## 📖 项目简介 **Synapse Run** 是一款专为中长跑爱好者打造的智能训练助手系统,基于先进的多智能体协作架构设计。系统通过"论坛式"交互机制,让多个专业AI智能体像大脑神经突触(Synapse)一样协同工作、思维碰撞,为跑者提供专业、个性化的训练指导方案。 ### 🎯 核心优势 - **🧠 多智能体协作架构**: 四个专业Agent通过论坛机制进行深度协作,避免单一模型的思维局限 - **📊 数据驱动训练分析**: 深度挖掘个人训练数据库(支持Keep数据导入),结合互联网专业资源,生成科学训练建议 - **🎨 智能报告生成**: 20+专业报告模板,动态选择最适合的模板,多轮优化生成高质量分析报告 - **🔌 纯Python轻量化设计**: 模块化架构,易于扩展和定制,支持任意OpenAI兼容的LLM接口 ### ⚡ 技术栈 | 类别 | 技术 | |------|------| | **核心语言** | Python 3.9+ | | **Web框架** | Flask (主应用) + Streamlit (调试界面) | | **LLM接口** | OpenAI-compatible APIs (支持Qwen、Kimi、Gemini等) | | **数据库** | MySQL 8.0+ | | **网络工具** | Tavily API, Bocha Web Search | | **前端** | HTML5, JavaScript, Socket.IO | --- ## 📚 前情提要 本项目基于著名开源项目"微舆"(BettaFish)改进而来,向原作者[@666ghj](https://github.com/666ghj)致以崇高敬意! **原项目地址**: [666ghj/BettaFish: 微舆:人人可用的多Agent舆情分析助手](https://github.com/666ghj/BettaFish) ### 🔧 主要改进内容 针对中长跑训练场景进行了深度定制和优化: | 改进类别 | 具体内容 | |---------|---------| | **领域适配** | 移除MindSpider爬虫、情感分析模块,专注训练数据分析 | | **用户体验** | 全面升级UI界面,提供/training路由一键管理训练数据(支持Keep格式导入) | | **搜索优化** | 优化Tavily搜索配置,添加中长跑专业网站白名单,提高搜索精准度 | | **专业模板** | 新增20+中长跑专项报告模板(训练理论、营养补给、损伤康复等) | | **API统一** | 全面更换为Qwen系列API,确保论坛协作响应速度一致性 | | **提示词优化** | 各Agent提示词全面适配中长跑场景,注入动态时间防止LLM幻觉 | | **数据库重构** | 全面调整InsightAgent中的数据库ORM与工具,完美适配中长跑训练数据结构 | | **工具精简** | 简化QueryAgent工具调用,只保留deep_search_news专注学术文献检索,减少冗余 | | **工具脚本** | 提供import_training_data.py(数据导入)、clear_reports.py(清空报告)等实用脚本 | --- ## 🏗️ 系统架构 ### 多智能体协作架构 系统由四个核心Agent组成,每个Agent拥有独立的工具集、提示词模板和处理节点: | Agent | 定位 | 核心工具 | 推荐模型 | 主要职责 | |-------|------|---------|---------|---------| | **Query Agent** | 理论专家 | Tavily API(新闻/网页搜索) | Qwen-Plus-Latest | 中长跑训练理论、学术文献检索、专业知识搜索 | | **Media Agent** | 后勤情报官 | Bocha搜索、结构化数据卡片 | Qwen-Plus-Latest | 比赛报名、天气预报、装备价格、路线坡度等实用情报 | | **Insight Agent** | 数据分析师 | 训练数据库查询工具 | Qwen-Plus-Latest | 历史训练数据挖掘、统计分析、趋势预测 | | **Report Agent** | 报告生成器 | 模板选择引擎、HTML生成器 | Qwen3-Max | 智能选择模板、多轮优化报告、专业内容生成 | ### 🔄 系统架构图 系统的核心创新在于Agent间的"论坛式"协作机制,以下是完整的系统架构:
Synapse Run系统架构图

Synapse Run多智能体协作架构 - 通过ForumEngine实现Agent间的思维碰撞与协同决策

**核心工作机制**: 1. **用户提问** → Flask主应用接收训练问题 2. **并行启动** → 三个Agent(Query/Media/Insight)同时开始工作 3. **论坛协作** → 各Agent将分析结果写入`logs/forum.log` 4. **智能协调** → ForumEngine监控模块实时提取关键信息 5. **主持引导** → LLM主持人生成总结并引导下一步讨论方向 6. **交流融合** → 各Agent通过forum_reader工具读取论坛内容 7. **迭代优化** → 循环协作直到达成共识或任务完成 8. **报告生成** → Report Agent整合所有成果,生成专业训练报告 ### 📊 完整工作流程 | 步骤 | 阶段名称 | 主要操作 | 参与组件 | 循环特性 | |------|----------|----------|----------|----------| | **1** | 用户提问 | 用户在Web界面输入训练问题 | Flask主应用 | - | | **2** | 并行启动 | 三个Agent同时开始工作 | Query/Media/Insight Agent | - | | **3** | 初步分析 | 各Agent使用专属工具进行概览搜索 | 各Agent + 专属工具集 | - | | **4** | 策略制定 | 基于初步结果制定分块研究策略 | 各Agent内部决策模块 | - | | **5-N** | **论坛协作循环** | **深度研究 + 论坛交流 + 方向调整** | **ForumEngine + 所有Agent** | **多轮循环** | | **5.1** | 深度研究 | 各Agent基于论坛引导进行专项搜索 | 各Agent + 反思机制 | 每轮循环 | | **5.2** | 论坛协作 | ForumEngine监控发言并生成主持人总结 | ForumEngine + LLM主持人 | 每轮循环 | | **5.3** | 交流融合 | 各Agent根据讨论调整研究方向 | 各Agent + forum_reader工具 | 每轮循环 | | **N+1** | 结果整合 | Report Agent收集所有分析结果和论坛内容 | Report Agent | - | | **N+2** | 报告生成 | 动态选择模板,多轮优化生成最终报告 | Report Agent + 模板引擎 | - | ### 🧩 统一Agent架构模式 所有Agent遵循相同的模块化架构设计: ``` / ├── agent.py # Agent主类,实现完整workflow ├── llms/base.py # 统一的OpenAI兼容LLM客户端 ├── nodes/ # 处理节点 │ ├── base_node.py # 基础节点类 │ ├── search_node.py # 搜索节点 │ ├── summary_node.py # 总结节点 │ └── formatting_node.py # 格式化节点 ├── tools/ # 专属工具集 ├── state/state.py # Agent状态管理 ├── prompts/prompts.py # 提示词模板 └── utils/config.py # 配置管理 ``` --- ## 🚀 快速开始 ### 前置准备 在开始使用Synapse Run之前,请确保完成以下准备工作: #### 【1】环境配置 | 环境 | 要求 | 安装教程 | |------|------|---------| | **VSCode** | 最新稳定版 | [安装教程](https://blog.csdn.net/qq_52102933/article/details/120387246) | | **MySQL** | 8.0+ | [安装教程](https://blog.csdn.net/2509_94228395/article/details/155399232) | | **Git** | 最新版(可选) | [安装教程](https://blog.csdn.net/mukes/article/details/115693833) | | **Python** | 3.9+ | 推荐使用Conda环境管理 | #### 【2】申请API密钥 | API服务 | 用途 | 申请地址 | |---------|------|---------| | **阿里云大模型API** | 核心LLM服务 | https://dashscope.aliyun.com/ | | **Tavily搜索API** | 学术文献与理论检索 | https://www.tavily.com/ | | **Bocha爬虫API** | 实用情报收集(需购买ai_search版本) | https://open.bochaai.com/ | ⚠️ **注意**: Bocha API必须购买**ai_search版本**,web_search版本不适用于本系统 #### 【3】数据准备 根据您使用的运动追踪设备选择对应的数据准备方式: **📱 Keep用户**: 1. 打开Keep App 2. 进入 `设置` → `个人收集清单` → `个人信息下载` 3. 填写接收邮箱 4. 等待约10分钟,完整Excel表格将发送到您的邮箱
Keep数据导出邮件

Keep数据导出邮件示例

**⌚ Garmin用户**: - 准备好您的Garmin Connect账号邮箱与密码 - 无需额外准备,系统将自动同步数据 --- ### 📦 部署流程 #### 1️⃣ 克隆项目 ```bash # 从GitHub克隆(推荐) git clone https://github.com/zephyr4123/synapse-run.git cd synapse-run # 或从Gitee克隆(国内镜像) git clone https://gitee.com/zephyr123_3/synapse-run.git cd synapse-run # 或直接下载压缩包解压 ``` #### 2️⃣ 安装依赖 ```bash # 如果使用Conda环境(推荐) conda create -n synapse_run python=3.11 conda activate synapse_run pip install -r requirements.txt # 或使用系统Python pip install -r requirements.txt ``` #### 3️⃣ 启动系统 ```bash # 激活环境(如使用Conda) conda activate synapse_run # 启动主应用 python app.py ``` 启动后,浏览器会自动打开 **http://localhost:5000** --- ### 🎯 初次使用配置 #### 【1】健康检查 首次启动时,系统会自动进行健康检查。如果检测到配置缺失或错误,会自动跳转到配置界面:
系统健康检查

系统健康检查 - 自动检测API与数据库配置

#### 【2】可视化配置 **配置API密钥**:
API配置界面

一键配置所有API密钥

**配置MySQL数据库**:
数据库配置界面

可视化配置MySQL连接信息

⚠️ **重要**: - 配置完成后务必点击 **"保存配置"** 按钮 - 如需手动调整配置或修改高级参数,请直接编辑项目根目录的 `config.py` 文件 #### 【3】选择数据源并导入 配置保存后,系统会在3秒内自动跳转回健康检查页面。如果检查通过,点击 **"导入训练数据"** 按钮:
跳转导入数据

健康检查通过后的导入入口

**选择您的数据源类型**:
选择数据源

支持Keep与Garmin两种数据源

**Keep用户导入流程**: 1. 选择 "Keep" 数据源 2. 上传从邮箱下载的Excel表格 3. 等待导入完成
Keep导入成功

Keep数据导入成功提示

**Garmin用户导入流程**: 1. 选择 "Garmin" 数据源 2. 输入Garmin Connect邮箱与密码 3. 系统自动同步历史训练数据
Garmin导入成功

Garmin数据同步成功提示

导入完成后,即可进入系统开始使用! --- ### 📊 训练数据后台管理 在主界面右上角,或直接访问 **http://localhost:5000/training** 进入数据监控后台。 **Garmin用户后台** (简洁模式):
Garmin数据后台

Garmin数据后台 - 一键同步最新训练数据

- 点击右上角 **"同步Garmin数据"** 按钮即可实时同步最新训练记录 - 无需手动添加或管理数据 **Keep用户后台** (完整CRUD):
Keep数据后台

Keep数据后台 - 支持增删改查操作

- 提供完整的增删改查功能 - 由于Keep生态封闭,需手动同步数据(无法频繁导出Excel) - 支持单条记录的添加、编辑、删除操作 --- ### 🛠️ 单Agent调试模式 (开发者选项) 如需单独调试某个Agent,可使用Streamlit调试界面: ```bash # 启动Query Agent (理论专家) streamlit run SingleEngineApp/query_engine_streamlit_app.py --server.port 8503 # 启动Media Agent (后勤情报官) streamlit run SingleEngineApp/media_engine_streamlit_app.py --server.port 8502 # 启动Insight Agent (数据分析师) streamlit run SingleEngineApp/insight_engine_streamlit_app.py --server.port 8501 ``` --- ## 📂 项目结构 ``` Synapse_Run/ ├── QueryEngine/ # 理论专家Agent │ ├── agent.py # Agent主逻辑 │ ├── llms/base.py # LLM接口封装 │ ├── nodes/ # 处理节点(搜索/总结/格式化) │ ├── tools/ # Tavily搜索工具 │ ├── prompts/prompts.py # 提示词模板 │ ├── state/state.py # 状态管理 │ └── utils/config.py # 配置管理 │ ├── MediaEngine/ # 后勤情报官Agent │ ├── agent.py # Agent主逻辑 │ ├── llms/base.py # LLM接口 │ ├── nodes/ # 处理节点 │ ├── tools/ # Bocha搜索工具 │ ├── prompts/prompts.py # 提示词模板 │ ├── state/state.py # 状态管理 │ └── utils/config.py # 配置管理 │ ├── InsightEngine/ # 数据分析师Agent │ ├── agent.py # Agent主逻辑 │ ├── llms/base.py # LLM接口封装 │ ├── nodes/ # 处理节点 │ ├── tools/ # 数据库查询工具(Keep/Garmin) │ ├── prompts/ # 提示词模板与工具描述 │ ├── state/state.py # 状态管理 │ └── utils/config.py # 配置管理 │ ├── ReportEngine/ # 报告生成器Agent │ ├── agent.py # Agent主逻辑 │ ├── llms/base.py # LLM接口 │ ├── nodes/ # 报告生成节点 │ ├── report_template/ # 20+专业报告模板 │ │ ├── 训练理论与流派对比报告模板.md │ │ ├── 营养补给与饮食策略报告模板.md │ │ ├── 跑步损伤机制与康复报告模板.md │ │ └── ... (共20+个专业模板) │ ├── prompts/prompts.py # 提示词模板 │ ├── state/state.py # 状态管理 │ └── utils/config.py # 配置管理 │ ├── ForumEngine/ # 论坛引擎 │ ├── monitor.py # 日志监控和论坛管理 │ └── llm_host.py # LLM主持人模块 │ ├── routes/ # Flask路由模块 │ ├── routes/ # 子路由目录 │ ├── utils/ # 路由工具函数 │ ├── setup.py # 设置页面路由 │ └── training_data.py # 训练数据管理路由 │ ├── SingleEngineApp/ # 单Agent调试界面 │ ├── query_engine_streamlit_app.py # Query Agent调试 │ ├── media_engine_streamlit_app.py # Media Agent调试 │ └── insight_engine_streamlit_app.py # Insight Agent调试 │ ├── scripts/ # 实用工具脚本 │ ├── training_data_importer.py # 训练数据导入器 │ ├── training_tables.sql # 数据库表结构 │ └── clear_reports.sh # 清空报告脚本 │ ├── templates/ # Flask前端模板 │ ├── index.html # 主界面 │ ├── setup.html # 配置页面 │ ├── training_data.html # Keep数据后台 │ └── training_data_garmin.html # Garmin数据后台 │ ├── static/ # 静态资源 │ ├── image/ # 图片资源 │ │ ├── logo.png # 项目Logo │ │ ├── finalResult.png # 最终报告示例 │ │ ├── forumResult.png # 论坛协作示例 │ │ ├── healthCheck.png # 健康检查界面 │ │ ├── apiSetting.png # API配置界面 │ │ ├── databaseSetting.png # 数据库配置界面 │ │ └── ... (更多截图) │ └── js/ # JavaScript文件 │ ├── utils/ # 通用工具模块 │ ├── forum_reader.py # Agent读取论坛工具 │ ├── retry_helper.py # 网络请求重试机制 │ ├── time_helper.py # 时间处理工具 │ ├── health_check.py # 系统健康检查 │ └── config_reloader.py # 配置热重载 │ ├── logs/ # 运行日志目录 │ └── forum.log # 论坛交流日志 │ ├── reports/ # Web生成的报告文件 ├── final_reports/ # 最终报告存储目录 ├── *_streamlit_reports/ # Streamlit调试报告目录 ├── data/ # 临时数据目录 ├── docs/ # 文档目录 ├── models/ # 训练记录ORM模型 │ ├── app.py # Flask主应用入口 ├── config.py # 全局配置文件 ├── requirements.txt # Python依赖清单 ├── README.md # 中文说明文档 ├── README-EN.md # 英文说明文档 └── .gitignore # Git忽略配置 ``` **注意**: - `logs/`、`reports/`、`data/` 目录下的文件不会被Git追踪(已在.gitignore中配置) - `*_streamlit_reports/` 为Streamlit调试模式生成的临时报告目录 --- ## ⚙️ 自我适配指南 ### 1. 调整MediaAgent地理位置提示词 编辑 `MediaEngine/prompts/prompts.py`,根据您的常用训练地点修改地理位置相关提示词: ```python # 示例:将默认地理位置从"海口"改为"北京" LOCATION_PROMPT = """ 你是一位专业的跑步后勤情报官,主要服务于北京地区的跑者。 在搜索天气、路线、比赛等信息时,优先考虑北京及周边地区的资源。 """ ``` ### 2. 切换数据源 系统支持Keep与Garmin两种数据源,可在 `config.py` 中配置: ```python # 训练数据源配置 TRAINING_DATA_SOURCE = "garmin" # 可选: "keep" 或 "garmin" ``` **数据源对比**: | 特性 | Keep | Garmin | |------|------|--------| | **数据导入** | 手动上传Excel | 自动同步(邮箱授权) | | **数据更新** | 手动添加 | 一键同步 | | **数据丰富度** | 基础训练指标 | 高级生理指标(心率变异性、训练负荷等) | | **后台管理** | 完整CRUD | 只读+同步按钮 | ### 3. 自定义报告模板 在 `ReportEngine/report_template/` 目录下创建您自己的Markdown模板: ```markdown # {title} - 自定义报告模板 ## 训练概况 {training_overview} ## 数据分析 {data_analysis} ## 专家建议 {expert_advice} ## 下一步行动计划 {action_plan} ``` 模板变量说明: - `{title}`: 报告标题 - `{training_overview}`: 训练概况 - `{data_analysis}`: 数据分析结果 - `{expert_advice}`: 专家建议 - `{action_plan}`: 行动计划 --- ## 🔌 API使用指南 ### LLM响应速度的重要性 **⚠️ 关键提示**: 论坛协作机制对各LLM响应速度极其敏感! **问题**: 如果某个Agent的LLM响应过慢,会导致论坛的BrainStorm变成响应快的LLM一枝独秀,失去多智能体协作的优势。 **推荐配置**: | Agent | 推荐模型 | 原因 | |-------|---------|------| | **Query Agent** | Qwen-Plus-Latest | 高速推理,保证搜索响应迅速 | | **Media Agent** | Qwen-Plus-Latest | 高速推理,保证情报收集迅速 | | **Insight Agent** | Qwen-Plus-Latest | 高速推理,保证数据分析迅速 | | **Forum Host** | Qwen-Plus-Latest | 高速推理,保证论坛协调迅速 | | **Report Agent** | Qwen3-Max / Kimi-K2 / GLM-4 | 可以慢一点,但需要强编码能力生成HTML报告 | **原则**: - 除了Report Agent,**统一使用高速推理的LLM** (推荐Qwen系列) - 确保各Agent发言迅速,维持论坛活跃度 - Report Agent不受响应速度约束,可使用编码能力强的模型 ### 支持的LLM厂商 只要兼容OpenAI调用格式的LLM都可以使用: | 厂商 | 推荐模型 | 申请地址 | |------|---------|---------| | **阿里云DashScope** | Qwen-Plus-Latest, Qwen3-Max | https://dashscope.aliyun.com/ | | **Moonshot AI** | Kimi-K2 | https://platform.moonshot.cn/ | | **Google Gemini** | Gemini-2.0-Flash-Exp | https://ai.google.dev/ | | **智谱AI** | GLM-4, GLM-4-Plus | https://open.bigmodel.cn/ | | **DeepSeek** | DeepSeek-Chat | https://platform.deepseek.com/ | --- ## 📸 效果展示 ### 论坛协作过程
论坛协作示例

多个Agent通过论坛机制进行思维碰撞与协作

### 理论专家Agent工作示例
理论专家工作示例

Query Agent搜索中长跑训练理论与学术文献

### 后勤情报官Agent工作示例
情报官工作示例

Media Agent收集比赛、天气、装备等实用情报

### 数据分析师Agent工作示例
数据分析示例

Insight Agent深度挖掘历史训练数据

### 最终智能报告
最终报告示例

Report Agent生成的专业训练分析报告

--- ## 🔧 扩展建议 ### InsightAgent数据源扩展 **✅ 已支持数据源**: Keep、Garmin Connect **🚀 可扩展数据源**: 系统采用模块化设计,易于接入更多运动平台数据: | 数据源 | 集成难度 | API支持 | 推荐度 | |--------|---------|---------|--------| | **Strava** | ⭐⭐ | 官方API完善 | ⭐⭐⭐⭐⭐ | | **Nike Run Club** | ⭐⭐⭐⭐ | 需逆向工程 | ⭐⭐⭐ | | **悦跑圈** | ⭐⭐⭐ | 数据导出支持 | ⭐⭐⭐ | | **咕咚运动** | ⭐⭐⭐ | 数据导出支持 | ⭐⭐⭐ | | **Apple Health** | ⭐⭐ | 导出XML格式 | ⭐⭐⭐⭐ | **扩展步骤**: 1. **数据源适配器开发** (`InsightEngine/tools/`): ```python class StravaDataAdapter: def fetch_activities(self, access_token): # 调用Strava API获取训练数据 pass def convert_to_schema(self, strava_data): # 转换为系统数据库Schema pass ``` 2. **配置文件更新** (`config.py`): ```python TRAINING_DATA_SOURCE = "strava" # 新增数据源选项 STRAVA_CLIENT_ID = "your_client_id" STRAVA_CLIENT_SECRET = "your_client_secret" ``` 3. **后台界面扩展** (`routes/training_data.py`): - 添加Strava授权按钮 - 实现数据同步接口 **欢迎社区贡献**: 如果您成功集成了新的数据源,欢迎提交PR分享给社区! --- ## 🙏 致谢 本项目的诞生离不开开源社区的支持,特别要向 **BettaFish(微舆)** 项目及其作者 [@666ghj](https://github.com/666ghj) 表达崇高的敬意! **为什么致敬BettaFish?** BettaFish项目展示了多智能体协作架构在舆情分析领域的强大潜力,其创新的"论坛式"Agent交互机制、模块化的系统设计、以及对代码质量的极致追求,为我们提供了宝贵的参考范例。作者在项目中展现的工程实践水平和开源精神,令人钦佩! **Synapse Run = BettaFish的中长跑领域适配版本** 我们基于BettaFish的核心架构,针对中长跑训练场景进行了深度定制,希望能将这种先进的多智能体协作理念带到更多垂直领域,让AI真正成为每个人的智能助手。 **再次感谢BettaFish项目的开源贡献!** 🎉 --- ## 📄 许可证 本项目采用 **GPL-2.0 许可证** 开源。 这意味着: - ✅ 您可以自由使用、修改和分发本项目 - ✅ 您可以将本项目用于商业目的 - ⚠️ 如果您分发修改后的版本,必须同样以GPL-2.0许可证开源 - ⚠️ 您必须在修改后的代码中保留原始版权声明 详细信息请参阅 [LICENSE](LICENSE) 文件。 --- ## 📧 联系方式 如有任何问题、建议或合作意向,欢迎通过以下方式联系我们: - **📮 邮箱**: huangsuxiang5@gmail.com - **💬 微信**: 13976457218 - **🐧 QQ**: 1736672988 **我们期待与您交流!** 💬 ---
### 让AI成为你的智能跑步教练 🏃‍♂️ **Made with ❤️ by Synapse Run Team** ⭐ 如果这个项目对你有帮助,请给我们一个Star! ⭐