Gopeed 下载管理器全解析:多协议支持、AI 集成与跨平台构建指南

发布时间:2026/9/11 17:09:01
Gopeed 下载管理器全解析:多协议支持、AI 集成与跨平台构建指南 Gopeed 下载管理器全解析多协议支持、AI 集成与跨平台构建指南【免费下载链接】gopeedA fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter.项目地址: https://gitcode.com/GitHub_Trending/go/gopeedGopeedGo Speed 的缩写是一个用 Go 与 Flutter 构建的开源、免费、现代化的高速下载管理器同时支持 HTTP、HTTPS、BitTorrent、Magnet 与 ed2k 协议覆盖桌面、移动端与 Web 平台。本文以 README_vi-VN.md 为核心结合仓库源码深入讲解其核心特性、命令行工具用法、AI Agent 集成MCP、开发环境搭建以及 Desktop / Mobile / Web 三种形态的完整构建流程帮助读者从使用到二次开发全面掌握 Gopeed。 项目概览与定位Gopeed 的名称取自Go Speed寓意以 Go 语言为核心实现高速下载。除了日常下载管理外Gopeed 还提供浏览器集成、JavaScript 扩展、REST API、CLI 以及可自托管的 Web UI用于扩展和自动化下载工作流。从源码结构看仓库采用前后端分离的组织方式Go 后端负责下载引擎、协议解析与 API 服务核心代码位于 pkg/download、pkg/protocol 与 pkg/restFlutter 前端位于 ui/flutter通过 FFIcgo/gomobile直接调用 Go 内核绑定层bind/desktop 与 bind/mobile 负责把 Go 内核编译为 C 共享库 / 移动端 Framework 供 Flutter 调用。项目遵循 GPLv3 协议见 LICENSE当前开发环境要求 Golang 1.25 与 Flutter 3.41见 go.mod 中go 1.25.4。✨ 核心特性详解⚡ 高速下载能力多任务并发同时运行多个下载任务充分利用带宽HTTP 分段传输同一 HTTP 资源通过多个连接分段并行下载连接数可通过 CLI 的-C参数控制默认为 16BitTorrent P2P利用 P2P 网络加速下载最大化带宽利用率。在命令行实现中-C参数对应 HTTP 协议的并发连接数cmd/gopeed/main.go将http.OptsExtra{Connections: *args.connections}注入任务创建选项从而控制分段并发强度。 多协议支持Gopeed 在一个界面中统一管理五种资源协议协议说明HTTP / HTTPS常规网页与文件下载支持分段并发、自定义 Header、代理等BitTorrent支持.torrent文件与种子任务Magnet磁力链接通过 DHT 网络发现 Peered2keMule 链接通过 goed2k 库实现对应协议实现分别位于 internal/protocol/http、internal/protocol/bt 与 internal/protocol/ed2k。 完整的 BT 工具集BitTorrent 功能是 Gopeed 的亮点之一支持DHT Peer 发现无需 Tracker 也能找到其他下载者uTP 传输基于 UDP 的拥塞控制传输协议Web Seed从 HTTP 服务器直接拉取分片文件选择多文件种子可按需勾选下载Tracker 管理可增删 Tracker 列表Peer / 分片查看实时观察连接状态与分片进度做种控制支持按比例ratio或时间time控制做种时长。MCP 层的btRequestExtra见 pkg/mcpserver/server.go还允许在创建 BT 任务时附加trackers数组为任务额外注入 Tracker 地址。 任务管理能力暂停、继续、重试、批量操作、搜索、过滤、分类启动恢复重启后自动恢复未完成任务。 轻量原生体验主界面由 Flutter 原生渲染没有 Electron、没有 WebView 壳体积更小、资源占用更低、响应更快。 多平台覆盖支持 Windows、macOS、Linux、Android、iOS、Web、Docker 与 QNAP。 界面自定义与自适应跟随系统 / 浅色 / 深色三种模式8 种强调色可选任务列表、导航、设置与详情页针对手机、平板和可缩放桌面窗口自动适配。️ 多语言支持内置超过 20 种界面语言包括越南语、英语、简体中文、繁体中文、日语、韩语等。语言资源文件位于 ui/flutter/lib/l10napp_*.arb。 浏览器集成支持从 Chrome、Edge、Firefox 及兼容浏览器把下载任务发送到 Gopeed相关宿主实现位于 ui/flutter/lib/util/browser_extension_host。 JavaScript 扩展通过 JS 扩展可从视频平台、AI 模型仓库、云存储等站点提取下载源。扩展引擎实现位于 pkg/download/extension_engine.go其 JS 运行时基于goja见 go.mod并提供 fetch、blob、xhr 等注入模块见 pkg/download/engine/inject。 开放式接口REST API完整 HTTP 接口支持 API Token 鉴权CLI命令行下载工具Web UI可自托管、可配置用户名密码认证的网页界面Webhook任务事件回调通知下载后脚本任务完成后自动执行自定义脚本。️ 集成工具自定义 Header / User-Agent代理Proxy配置GitHub 镜像加速系统通知自动解压支持 zip、7z、rar 等见 pkg/download/extract_zip.go、extract_7z.go、extract_rar.go。 AI Agent 集成MCPGopeed 2.0 提供Model Context ProtocolMCP接口AI Agent 可以通过自然语言直接创建、查看和管理下载任务。例如对 Agent 说请下载最新版本的 Gopeed Windows 版Gopeed 的 MCP 服务端实现位于 pkg/mcpserver/server.go基于官方modelcontextprotocol/go-sdk见 go.mod构建通过 Streamable HTTP 方式暴露。服务端内置了系统指令serverInstructions引导 Agent 在用户给出具体 URL 时调用create_task在需要资源元数据或选择文件时先调用resolve_task。MCP 工具一览工具说明resolve_task解析下载 URL/URI返回资源信息与文件列表用于创建任务前预览create_task基于解析后的资源 ID 或直接请求创建并启动任务list_tasks列出任务可按 ID 或状态过滤get_task获取任务的请求、资源、选项与当前进度get_task_status获取任务精简运行状态及每个文件的进度get_task_stats获取按协议统计的数据如 HTTP 连接数、BT Peer 数与做种数据pause_task暂停任务continue_task继续已暂停或出错的任务delete_task删除任务可同时删除已下载文件force参数从源码看list_tasks支持按statuses过滤取值ready、running、pause、wait、error、donedelete_task默认保留已下载文件仅当forcetrue时才会删除磁盘文件。启用 MCPWeb 服务端通过-mcp-enable参数开启 MCP 端点也可以在运行配置中设置mcpEnable: true见 pkg/rest/model/server.go 中StartConfig.MCPEnable。启用后兼容 MCP 的 AI Agent如各类编码助手、智能体客户端即可连接 Gopeed 的 MCP 端点用自然语言指挥下载任务。⬇️ 下载与安装 Gopeed 2.0.0 BetaGopeed 2.0.0 目前处于公开 Beta 阶段主要变化包括全新设计的界面原生通信架构通过 FFI 将桌面 / 移动端应用直接连接到 Go 内核更一致的多平台体验更完善的任务管理能力更灵活的 API通过 MCP 支持 AI Agent 集成。注意部分功能可能尚未完善或不够稳定Beta 用户可在此后直接升级到正式版而稳定版用户不会自动切换到 Beta 通道。稳定版安装从官方网站下载对应平台安装包或从项目 Releases 页面获取最新版本。️ 命令行工具安装使用go install一键安装 CLIgo install github.com/GopeedLab/gopeed/cmd/gopeedlatest安装后即可用gopeed命令直接下载资源支持 URL、.torrent文件与 magnet 链接。CLI 的启动参数在 cmd/gopeed/flags.go 中定义参数默认值说明-C16HTTP 并发连接数-D当前目录存储目录gopeed https://www.google.com gopeed bt.torrent gopeed magnet:?xturn:btih:...CLI 会在终端实时渲染进度条cmd/gopeed/main.go 中的printProgress任务完成或失败时输出保存路径或失败原因。未提供 URL 参数时会提示用法并退出。自托管 Web 服务可选Gopeed 还提供了可自托管的 Web 服务端cmd/web支持 REST API 与带认证的 Web UI。常用参数见 cmd/web/flags.go参数默认值说明-A/--address0.0.0.0监听地址-P/--port9999监听端口-u/--usernamegopeedWeb 认证用户名-p/--password空Web 认证密码为空则关闭认证-T/--api-token空API Token开启 Web 认证后调用 HTTP API 必须配置-mcp-enablefalse开启 MCP 端点-d/--storage-dir空存储目录默认为可执行文件旁的storage-white-download-dirs空允许的下载目录白名单逗号分隔-c/--config./config.json配置文件路径配置优先级为命令行参数 环境变量GOPEED_前缀 配置文件 默认值见 cmd/web/flags.go 的parse流程。仓库还提供了 Dockerfile 与 docker-compose.yml可通过容器快速部署自托管实例。‍ 开发环境与架构架构总览Gopeed 分为两部分前端使用Flutter后端使用Golang双方通过 HTTP 协议通信Unix 系统使用unix socketWindows 系统使用tcp协议。前端代码位于 ui/flutter。在 2.0 的新架构中桌面与移动端通过 FFIcgo/gomobile直接调用 Go 内核见 bind/desktop/main.go 与 bind/mobile/main.goFlutter 侧对应的 FFI 封装在 ui/flutter/lib/core/ffi。环境要求Golang 1.25Flutter 3.41克隆仓库git clone gitgithub.com:GopeedLab/gopeed.git贡献指南请参考 CONTRIBUTING_vi-VN.md。️ 构建指南构建前置说明桌面端构建前需按 Flutter 官方桌面支持文档配置对应平台环境并确保cgo 环境正确配置移动端构建需要准备 cgo 环境并安装gomobilego install golang.org/x/mobile/cmd/gomobilelatest go get golang.org/x/mobile/bind gomobile init构建命令统一使用-tags nosqlite不使用内置 sqlite 存储-ldflags-w -s用于去除调试信息、减小体积。️ 桌面端构建构建产物为 Go 侧导出的 C 共享库Windows 为libgopeed.dllmacOS 为libgopeed.dylibLinux 为libgopeed.so再交给 Flutter 编译桌面应用。Windowsgo build -tags nosqlite -ldflags-w -s -buildmodec-shared -o ui/flutter/windows/libgopeed.dll github.com/GopeedLab/gopeed/bind/desktop cd ui/flutter flutter build windowsmacOSgo build -tags nosqlite -ldflags-w -s -buildmodec-shared -o ui/flutter/macos/Frameworks/libgopeed.dylib github.com/GopeedLab/gopeed/bind/desktop cd ui/flutter flutter build macosLinuxgo build -tags nosqlite -ldflags-w -s -buildmodec-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop cd ui/flutter flutter build linux 移动端构建使用gomobile bind把 Go 内核编译为移动端库Androidgomobile bind -tags nosqlite -ldflags-w -s -checklinkname0 -o ui/flutter/android/app/libs/libgopeed.aar -targetandroid -androidapi 21 -javapkgcom.gopeed github.com/GopeedLab/gopeed/bind/mobile cd ui/flutter flutter build apk-androidapi 21指定最低 Android API 级别为 21-javapkgcom.gopeed指定生成的 Java 包名产物为.aar库。iOSgomobile bind -tags nosqlite -ldflags-w -s -o ui/flutter/ios/Frameworks/Libgopeed.xcframework -targetios github.com/GopeedLab/gopeed/bind/mobile cd ui/flutter flutter build ios --no-codesign--no-codesign表示不进行代码签名产物为.xcframework。 Web 端构建Web 端流程为先构建 Flutter Web 前端再将其静态资源嵌入 Go 二进制cmd/web/main.go通过//go:embed dist/*内嵌前端产物cd ui/flutter flutter build web cd ../../ rm -rf cmd/web/dist cp -r ui/flutter/build/web cmd/web/dist go build -tags nosqlite,web -ldflags-s -w -o bin/ github.com/GopeedLab/gopeed/cmd/web注意Web 构建需要同时指定nosqlite与web两个构建标签。构建完成后bin/目录下即为包含完整前端资源的单文件 Web 服务端。 Docker 部署仓库自带 Dockerfile采用多阶段构建先在golang:1.25.4-alpine中编译带nosqlite,web标签的 Web 服务端再将二进制放入精简的alpine运行镜像默认暴露9999端口存储目录为/app/storage声明为 VOLUME。也提供了 docker-compose.yml 便于一键部署。源码级原理补充任务创建与事件监听CLI 与 API 层都基于 pkg/download 的Downloader构建。以 CLI 为例cmd/gopeed/main.go调用download.Boot()初始化下载器通过URL()传入待下载资源通过Listener()监听进度EventKeyProgress与结束EventKeyFinally事件调用Create(base.Options{...})创建任务。MCP 与 REST 的统一调用链MCP 层的每个工具最终都映射到Downloader的方法resolve_task→Resolve、create_task→Create/CreateDirect、list_tasks→GetTasksByFilter、pause_task/continue_task→Pause/Continue、delete_task→Delete见 pkg/mcpserver/server.go 的registerTools。这意味着 AI Agent 的能力与 REST API 完全对齐只是换了一套面向 Agent 的协议外壳。存储与配置服务端默认使用bboltStorageBolt持久化任务与配置见 pkg/rest/model/server.go也支持内存模式StorageMem首次启动时若配置中未指定下载目录服务端会自动设置为系统用户目录下的DownloadsDocker 环境下则为存储目录旁的Downloads见 cmd/server.go。总结Gopeed 是一个以 Go 为核心、Flutter 为壳的现代下载管理器协议覆盖广HTTP/HTTPS/BT/Magnet/ed2k、扩展能力强JS 扩展 REST API CLI Web UI Webhook、并率先通过 MCP 把下载能力开放给 AI Agent。无论是日常使用、自托管部署还是基于 FFI 架构进行二次开发本文给出的特性说明、CLI 参数、构建命令与源码路径都可以作为直接参考。本文所有命令与配置均以当前仓库README_vi-VN.md、go.mod、cmd、bind、pkg/mcpserver 等实际内容为准。【免费下载链接】gopeedA fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter.项目地址: https://gitcode.com/GitHub_Trending/go/gopeed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考