Gopeed 下载器:4 协议 + AI MCP,一份 Go 下载工具吃下桌面、移动与 Web 三端 Gopeed 下载器4 协议 AI MCP一份 Go 下载工具吃下桌面、移动与 Web 三端【免费下载链接】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浏览器里同时挂着 20 个下载、带宽却只跑了一半——这时候你需要的不是再多开一个标签页而是一个真正的下载器。GopeedGo Speed是一个用 Go 内核构建的跨平台开源下载器覆盖 HTTP、BT、磁力链接与 ed2k 四类协议。接下来十分钟你会装好它、自托管它并让 AI 替你下单。它凭什么快多协议下载内核与任务状态机快来自三件事并发、分段、P2P。HTTP 下载靠分段——同一个文件被切成多段开多个连接并行拉取默认 16 条并发连接CLI 里可以用-C调到 32 甚至更高配合 Range 请求让断点续传天然成立。BT 靠P2P——不止从一台服务器拿数据而是从全网 peer 手里凑分片。任务调度靠并发——多个任务、多条连接由 Go 的协程模型统一编排。各协议的能力与依赖可以一表看尽协议能做什么背后依赖HTTP/HTTPS多连接分段、Range 续传、自定义 Header/UA、代理、GitHub 镜像Go 标准库 内部分段调度BT/磁力链接DHT 节点发现、uTP 传输、Web Seed、按文件选择、Tracker 管理、按分享率或时间控制做种github.com/anacrolix/torrented2keDonkey 网络直连下载github.com/monkeyWie/goed2k协议实现集中在 internal/protocol/ 下注册与抽象在internal/fetcher。至于边界HTTP 协议选项里有autoTorrent遇到 torrent 文件自动转入 BT 流程和autoExtract下载完自动解压但这些是可选开关不是所有资源都支持分段——服务端不认 Range 头时会自动退化为单连接。任务从创建到结束会经过六个状态ready已创建未开始、running、wait排队等待、pause、error、done。完整枚举定义在 pkg/base/ 的constants.go也是后面 REST API 和 MCP 筛选任务的通用语言。装完它你多半会问一句那具体怎么下东西往下看。五分钟上手三种安装方式与首次下载任选一条命令一分钟内能下出第一个文件。# 方式一一条命令装 Go CLI go install github.com/GopeedLab/gopeed/cmd/gopeedlatest # 方式二Docker 拉取自托管镜像 docker pull gopeed/gopeed # 方式三从官网下载桌面/移动客户端Windows/macOS/Linux/Android/iOSCLI 就是给个地址这么简单三种协议各一条命令gopeed https://example.com/file.zip # 直链 URL gopeed movie.torrent # 本地 .torrent 文件 gopeed -C 32 -D /data/downloads magnet:?xturn:btih:... # 磁力链接32 并发它会在终端用■/□字符画进度条完成后打印保存路径。如果你想在自己的 Go 程序里内嵌这个下载器最小代码只有 12 行完整示例见_examples/basic/main.go// 依赖: pkg/base, pkg/download, pkg/protocol/http _, err : download.Boot(). URL(https://example.com/file.zip). Listener(func(event *download.Event) { if event.Key download.EventKeyFinally { // Err 为 nil 即成功否则为失败原因 } }). Create(base.Options{ Extra: http.OptsExtra{Connections: 8}, }) _ errBoot()启动全局下载引擎Listener订阅生命周期事件Create提交任务。整个下载内核就是这样一次链式调用的事。如何启用 MCPAI Agent 自然语言下载实战一条命令开启 MCP 端点AI Agent 就能接管整个下载队列gopeed --mcp-enable --address 0.0.0.0 --port 9999或设环境变量GOPEED_MCPENABLEtrue。想象你对 AI 说一句帮我下载最新的 Gopeed Windows 客户端。Agent 会按 resolve → create → query → 控制 的顺序调用 pkg/mcpserver/ 里注册的工具工具一句话resolve_task先解析 URL/磁力链接拿到资源信息与文件列表不创建任务create_task用解析出的rid或直接下载请求创建并启动任务list_tasks任务列表可按 ID 或状态running/pause/done 等筛选get_task/get_task_status完整任务信息或只取轻量进度get_task_stats协议统计HTTP 连接数BT 的 Peer 与做种数据pause_task/continue_task暂停 / 恢复任务delete_task删除任务forcetrue时连已下载文件一起删这个先 resolve 再 create的设计是关键Agent 能在真正下载前把这是个多大的文件、里面有哪些文件报给你确认而不是拿到链接就莽。所有工具入参都带 JSON Schema 校验协议相关的extra字段用 oneOf 区分 HTTP 与 BT 参数避免客户端误传。Docker 一行自托管Web 服务、REST API 与 Webhook一个容器或一条命令就能把 Gopeed 变成带认证的自托管下载服务。Docker 方式端口固定 9999存储卷挂载/app/storagedocker run -d -p 9999:9999 -v /path/to/storage:/app/storage \ -e PUID1000 -e PGID1000 \ gopeed/gopeed --address 0.0.0.0 --port 9999PUID/PGID控制容器内运行身份避免下载文件权限混乱。不用 Docker 时直接跑二进制开启认证、API Token 和 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最关键的五个参数--address默认0.0.0.0、--port默认 9999、--username/--password不填密码则不启用认证、--api-token启用认证后调 REST API 必须携带、--storage-dir存储目录。其余还有下载目录白名单--white-download-dirs、配置文件-c等完整清单在 cmd/web/。配置加载顺序是命令行 → 配置文件 →GOPEED_前缀环境变量非默认命令行参数最后覆盖容器化部署时很好用。Web 端启动后即自带 REST API路由见pkg/api/routes.go任务事件、Webhook 通知与下载后脚本由 pkg/download/ 中的webhook.go与script.go驱动——下载完成自动发通知、跑解压脚本、推送到你的自动化流程都是这个层面的事。镜像构建链路见 Dockerfilenosqlite,web双 tagWeb 前端编译期直接嵌入二进制单文件即全部。浏览器接管与 JavaScript 扩展扩展下载来源浏览器只负责递链接活儿全由本地 Gopeed 干。浏览器接管Gopeed 内置一个本地宿主服务UI 侧的browser_extension_hostChrome、Edge、Firefox 装的官方扩展把下载任务劫持过来直接发给本机或自托管的 Gopeed 实例——浏览器里点下载实际落盘的是 Gopeed还能自动识别 torrent、转磁力。JavaScript 扩展解决的是这个站点怎么下视频网站、AI 模型站、网盘这类资源直链往往藏在页面里。扩展引擎基于 goja 沙箱执行扩展脚本配合 webview 运行时暴露出 fetch、XHR、Blob、Stream 等能力见pkg/download/engine/相当于用几行 JS 把一个网页变成可下载的源。仓库pkg/download/testdata/extensions/里有一批示例扩展从下载完触发事件到存储数据都有最小实现照着抄即可。从源码到二进制cgo Flutter FFI 的三端构建链路一个 Go 内核编译出三种形态喂饱三端客户端。为什么不用 Electron 或 WebView 套壳Gopeed 2.0 的做法是用 cgo 把 Go 核心编成动态库桌面端导出Start/Stop/Invoke/SubscribeTaskEvents/FreeCString等 C 函数见 bind/desktop/Flutter 通过dart:ffi直接调用任务事件走 C 回调推给 Dart移动端则用gomobile bind生成 Android AAR 与 iOS XCFramework入口bind/mobile/main.go。这样前端不用起 HTTP 服务绕一圈调用延迟更低安装包也更轻——这就是非 Electron、非 WebView 套壳的含义。早期版本前后端走 unix socketUnix 系或 TCPWindows通信现在 FFI 是主路径。先克隆源码git clone https://gitcode.com/GitHub_Trending/go/gopeed需要 Golang 1.25 与 Flutter 3.41。平台关键构建命令Windows 桌面go build -tags nosqlite -buildmodec-shared -o ui/flutter/windows/libgopeed.dll .../bind/desktop再flutter build windowsmacOS 桌面同上产物换为libgopeed.dylib再flutter build macosLinux 桌面同上产物换为libgopeed.so再flutter build linuxAndroidgomobile bind -targetandroid -javapkgcom.gopeed .../bind/mobile生成 AAR再flutter build apkiOSgomobile bind -targetios .../bind/mobile生成 XCFramework再flutter build iosWebflutter build web→ 产物拷入cmd/web/dist→go build -tags nosqlite,web嵌入二进制以 Linux 桌面为例核心就两步go build -tags nosqlite -buildmodec-shared -o ui/flutter/linux/bundle/lib/libgopeed.so github.com/GopeedLab/gopeed/bind/desktop cd ui/flutter flutter build linuxnosqlite标签在桌面端裁掉 sqlite 依赖Web 端则是把 ui/flutter/ 的构建产物在编译期go:embed进二进制与 Dockerfile 的构建链路完全一致。其余平台的细节命令看仓库的CONTRIBUTING_zh-CN.md即可。它适合谁如果你是重度下载用户BT 下载 磁力链接是日常一个界面管完所有协议按文件选下载、按分享率控制做种、多连接分段跑满带宽比浏览器插件和老旧客户端省心。如果你是自托管/自动化玩家Docker 一行起服务REST API Webhook 下载后脚本接入自己的流程--white-download-dirs白名单还管得住目录边界。如果你是AI 折腾党开启 MCP 后自然语言就是下载命令——帮我下 xxx这句话背后是 resolve、create、stats 一整条工具链接上 Agent 即可。三条路源码都在仓库里摊开了从装用到改源码看 CONTRIBUTING_zh-CN.md 就能继续往下走。【免费下载链接】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),仅供参考