十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Gopeed 多协议下载器完整指南:一条命令下载、自托管并接入 AI

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/gopeed如果你受够了浏览器下的慢、BT 下的乱、服务器上没人管GopeedGo Speed够快下载器是一个值得放进工具栏的开源下载器它用 Go 写核心、Flutter 写界面一个程序同时管 HTTP、HTTPS、磁力链接和 ed2k 四类下载还能挂到服务器上、甚至让 AI 帮你管任务。项目遵循 GPL-3.0 协议开源本文按日常使用 → 放到服务器 → 接入自动化 → 自己构建四步展开帮你把它的每个能力落到具体操作里。版本提示Gopeed 2.0 目前处于公开 Beta 阶段引入了全新界面与通过 FFI 直连 Go 核心的原生通信架构。已安装 Beta 的用户可直接升级到正式版稳定版用户不会被自动切换渠道。它替你解决了什么问题传统下载工具往往只擅长一件事浏览器插件快但管不了 P2PBT 客户端强但界面重命令行灵活却只能本机跑。Gopeed 的解法是把四种协议放进同一个任务模型里让你用一套界面、一套接口管理所有下载。对使用者它意味着HTTP 大文件用多连接分段并发把文件切成多段、开多条连接同时拉把带宽吃满磁力链接这种只有一串哈希、先广播再找邻居的 P2P 协议也内置了 DHT 节点发现、uTP 传输和 Web Seeded2k 走 eDonkey 网络。任务支持暂停、续传、重试、按状态筛选和启动恢复下载完还能自动解压压缩包。对运维者它意味着一个带认证的 Web UI 加 REST API 加 Webhook对 AI 玩家它开放了 MCP 接口Model Context Protocol可以理解为给大模型装手的标准协议让 Agent 用自然语言直接操作下载。一条命令跑起来CLI 与最小示例最快的上手方式是把 Gopeed 当命令行工具用前提是装了 Go 环境go install github.com/GopeedLab/gopeed/cmd/gopeedlatest之后任何下载地址直接喂给它即可参数定义在 cmd/gopeed/flags.gogopeed https://example.com/file.zip gopeed bt.torrent gopeed magnet:?xturn:btih:... gopeed -C 32 -D /data/downloads https://example.com/file.zip参数默认值作用-C16HTTP 并发连接数-D当前目录文件保存目录位置参数无URL、.torrent文件或磁力链接运行后终端会实时渲染■/□进度条完成时打印保存路径失败时打印原因。想在代码里集成下载能力_examples/basic/main.go 是一个不到 40 行的最小示例download.Boot().URL(...).Listener(...).Create(...)创建任务监听EventKeyFinally事件拿结果选项里通过http.OptsExtra{Connections: 8}控制并发连接数。一个下载请求在系统里如何流动把视角切到源码一条请求的旅程大致是入口桌面 FFI、Web API 或 CLI调用downloader.Create任务进入 pkg/download/ 的任务管理器管理器按 URL 前缀http/magnet/ed2k 等从注册表挑出对应的 Fetcher 实现协议代码在 internal/protocol/ 下按目录分家http、bt、ed2k。所有协议实现同一套接口定义在 internal/fetcher/fetcher.goResolve先解析出文件名、大小、文件列表Start开始传输Pause/Close控制生命周期Stats和Progress上报数据。任务管理器不关心协议细节只把 Fetcher 当作黑盒驱动这就是同一界面管四种协议的底气。几个值得留意的数据结构Request含 URL、标签、代理、跳过证书校验与Resource解析结果含是否支持 Range 断点、文件列表、哈希都在 pkg/base/model.go任务状态枚举ready、running、pause、wait、error、done在 pkg/base/constants.go。HTTP 侧支持 Range 分段、自定义 Header 与 User-Agent、代理BT 基于github.com/anacrolix/torrent库支持 DHT、uTP、Web Seed、Tracker 管理和按分享率/时间控制做种配置项见 internal/protocol/bt/config.goed2k 基于github.com/monkeyWie/goed2k。前端则完全独立桌面端通过 cgo 把 Go 核心编译成动态库libgopeed.dll/.dylib/.sobind/desktop/main.go 导出Start、Stop、Invoke、SubscribeTaskEvents、FreeCString等 C 函数Flutter 用dart:ffi直接调用不走套壳 WebView移动端则用gomobile bind打包成 AAR 与 XCFramework入口在 bind/mobile/main.go。一条命令把下载服务挂到服务器上 ️自托管由 cmd/web 提供把 Flutter 构建产物通过//go:embed dist/*打进二进制一个可执行文件就是完整服务数据用 bbolt 存储。配置有三个来源命令行参数、配置文件默认./config.json、GOPEED_前缀环境变量优先级为命令行非默认值 配置文件 环境变量加载逻辑见 cmd/web/flags.go。日常你真正要改的只有这几项参数默认值说明-A/--address0.0.0.0绑定地址-P/--port9999绑定端口-u/--usernamegopeedWeb 认证用户名-p/--password空不设置则不开启认证-T/--api-token空开启认证后调用 REST API 必须携带-d/--storage-dir可执行文件目录下 storage存储目录--white-download-dirs空允许的下载目录白名单逗号分隔--mcp-enablefalse是否开启 MCP 端点见下节最典型的启动组合gopeed --address 0.0.0.0 --port 9999 \ --username admin --password your-password \ --api-token your-token \ --mcp-enable \ --storage-dir /data/gopeed/storage容器化部署直接跑仓库自带的 Dockerfile构建阶段用golang:1.25.4-alpine3.22以CGO_ENABLED0 go build -tags nosqlite,web编译运行阶段是alpine:3.23暴露 9999 端口、存储卷挂/app/storageentrypoint.sh 通过PUID、PGID、UMASK环境变量控制容器内运行身份与文件权限外部参数透传给./gopeed。除 REST API路由在 pkg/api/routes.go服务端在 pkg/rest/外还有 Webhook 与下载后脚本两个钩子分别在 pkg/download/webhook.go 和 pkg/download/script.go配合自托管实例就能做下完自动通知/自动处理。接入 AI AgentMCP 接口与自动化MCP 是 Gopeed 2.0 的新能力服务端基于github.com/modelcontextprotocol/go-sdk以无状态 Streamable HTTP 方式暴露工具注册和输入校验都在 pkg/mcpserver/server.go。启用方式很简单——自托管命令里加上--mcp-enable或设环境变量GOPEED_MCPENABLEtrue。接入 AI Agent 后你对着它说帮我下载最新的 Gopeed Windows 客户端Agent 会按下面的工具表自己选路工具干什么resolve_task先解析 URL/URI返回资源信息和文件列表适合下载前预览选文件create_task用资源 IDrid或直传请求req创建并启动任务list_tasks按 ID、状态、排除状态筛选任务列表get_task取单个任务的完整信息请求、资源、选项、进度get_task_status轻量版运行状态 各文件进度get_task_stats协议统计HTTP 看连接数BT 看 Peer 与做种数据pause_task/continue_task暂停 / 恢复任务delete_task删除任务forcetrue时连已下载文件一起删两个细节体现工程用心一是create_task的两条路径在源码里分得很清楚rid走downloader.Createreq走downloader.CreateDirect二是协议相关参数HTTP 的连接数、自动解压、压缩包密码BT 的 trackers用 oneOf 联合 Schema 区分避免 MCP 客户端把结构误读成字符串。再往外走JS 扩展与浏览器接管下载源不够用Gopeed 内置 JavaScript 扩展引擎基于 goja 在 Go 进程里直接跑扩展脚本实现见 pkg/download/extension_engine.go配套的事件总线在 internal/controller/。仓库里 pkg/download/testdata/extensions/ 下有一组官方测试扩展基础脚本、Blob 下载、存储、设置项、报错处理等照着manifest.jsonindex.js的结构就能写出从视频网站抓取直链之类的扩展。另外 UI 侧还实现了浏览器扩展宿主ui/flutter/lib/util/browser_extension_host/让 Chrome、Edge、Firefox 等浏览器把下载直接接管给 Gopeed。自己构建三端桌面、移动、Web 构建环境要求Go 1.25 以上当前 go.mod 声明go 1.25.4、Flutter 3.41 以上桌面和移动端均需 cgo 环境。克隆命令git clone https://gitcode.com/GitHub_Trending/go/gopeed桌面端的关键是先把 Go 核心编成动态库nosqlite标签用于去掉 sqlite 依赖再交给 Flutter 打包以 Windows 为例go 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 windowsmacOS 产物放到ui/flutter/macos/Frameworks/libgopeed.dylibLinux 放到ui/flutter/linux/bundle/lib/libgopeed.so其余同理。移动端先装gomobilego install golang.org/x/mobile/cmd/gomobilelatest gomobile initAndroid 用gomobile bind -tags nosqlite ... -o ui/flutter/android/app/libs/libgopeed.aar生成 AAR 再flutter build apkiOS 生成 XCFramework 后flutter build ios --no-codesign。Web 端最省事两条链路先flutter build web把ui/flutter/build/web拷到cmd/web/dist再go build -tags nosqlite,web -o bin/ github.com/GopeedLab/gopeed/cmd/web。仓库 Dockerfile 走的就是这条链路并额外用-X注入版本号与InDocker标识。收个尾把 Gopeed 放进你的工作流其实只有三条路个人用go install一条命令拿到 CLI或去官网、Releases 下桌面端团队用自托管一个带认证和目录白名单的 Web 服务配好 Webhook 与脚本钩子进阶用开一个--mcp-enable让 AI Agent 成为下载管家。源码侧的读法也顺势清晰pkg/是对外契约internal/是协议与调度实现bind/是各端入口ui/flutter/是全部界面。想深入哪一层从这几个目录切进去即可。【免费下载链接】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),仅供参考
返回列表