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/gopeedGopeed全称 Go Speed即够快下载器是一个用 Go 和 Flutter 编写的开源下载器把 HTTP/HTTPS、BitTorrent、磁力链接和 ed2k 收进同一个任务列表覆盖桌面、移动与 Web 端。对工程师来说它更像一个可嵌入的下载内核一行go install得到命令行下载器一个 Docker 镜像得到自托管下载服务一个开关让 AI Agent 用自然语言管理下载。读完本文你会拿到最快的上手路径、多协议内核的工作方式以及从自托管到三端构建的完整落地步骤。 一条命令上手 Gopeed 命令行下载最快的体验方式是把它装成 CLI。只要本机有 Go 环境一行命令即可go install github.com/GopeedLab/gopeed/cmd/gopeedlatest之后任何一条都能直接跑gopeed https://example.com/file.zip gopeed bt.torrent gopeed magnet:?xturn:btih:... gopeed -C 32 -D /data/downloads https://example.com/file.zipCLI 只暴露两个开关-C控制 HTTP 并发连接数默认 16-D指定保存目录默认当前工作目录位置参数则接收 URL、本地.torrent文件或磁力链接。下载过程中终端会渲染出块状进度条结束时报出保存路径或失败原因。入口逻辑不复杂参数解析就集中在 cmd/gopeed/flags.go想读懂整条下载链路可以从 cmd/gopeed/main.go 读起。图形客户端方面2.0.0 目前处于公开 Beta带来了全新界面、通过 FFI 直连 Go 核心的通信架构和 MCP 能力Beta 用户可以原地升级到正式版稳定版用户不会被自动切走。多协议内核如何把带宽吃满先说现象下一个大文件时Gopeed 会把它切成 N 段、开 N 条连接同时拉取把可用带宽尽量吃满。原理上HTTP 内核先和服务端协商Accept-Ranges确认支持分段后用Range请求把文件切成多个区间并发下载最后按偏移拼接落盘。CLI 里的-C 32就是把这个 N 调到 32。除速度外HTTP 任务还内置了不少实用项自定义 Header 与 User-Agent、代理、下载.torrent文件后自动转成 BT 任务autoTorrent、压缩包自动解压autoExtract支持密码这些选项在 MCP 层以结构化参数暴露方便程序化调用。BitTorrent 是另一条完整链路基于anacrolix/torrent库DHT 节点发现、uTP 传输、Web Seed、按文件选择下载、Tracker 管理一个不少做种也支持按分享率或时长控制。ed2k 则基于goed2k实现。三条协议线统一挂在 internal/fetcher 的注册与抽象之下具体实现分别位于 internal/protocol/ 的http、bt、ed2k子包配置与统计各自独立互不干扰。任务本身的状态机很直观ready已创建未开始、running、pause、wait排队等待、error、done定义在 pkg/base/constants.go。请求与解析结果的数据结构URL、代理、标签、文件大小、是否支持 Range、文件列表集中在 pkg/base/model.go是理解整个任务模型的关键文件。跨平台原生体验与任务管理Gopeed 的主界面是 Flutter 原生渲染不是 Electron也不是 WebView 套壳所以安装包更轻、运行开销更低。界面做了响应式布局任务列表、导航、设置和详情视图会在手机、平板和可缩放的桌面窗口之间自动切换主题支持跟随系统/浅色/深色三种模式加 8 种强调色界面语言超过 20 种语言资源放在 ui/flutter/lib/l10n/。任务管理层面暂停、续传、重试、批量操作、搜索、状态筛选、下载分类、启动恢复都是现成的——也就是说程序被杀掉或电脑重启后任务能接着之前的进度继续。值得讲的是 2.0 的通信架构变化。早期版本里 Flutter 前端与 Go 后端通过 HTTP 通讯Unix 系统走 unix socketWindows 走 TCP2.0 改成了 FFI 直连桌面端用cgo把 Go 核心编译成动态库Windows 的.dll、macOS 的.dylib、Linux 的.so导出Start、Stop、Invoke、SubscribeTaskEvents、FreeCString等 C 函数Flutter 侧通过dart:ffi直接调用bind/desktop/main.go 与 ui/flutter/lib/core/ffi/。移动端则用gomobile bind生成 Android AAR 和 iOS XCFramework入口在 bind/mobile/main.go。JavaScript 扩展运行时仍保留了一套基于 webview 的实现internal/webview 与 pkg/download/engine/webview/用于执行扩展脚本。浏览器接管与 JavaScript 扩展日常使用中最顺手的功能之一是浏览器接管装上 Gopeed 的浏览器扩展后Chrome、Edge、Firefox 里的下载任务可以直接发给 Gopeed 完成。宿主逻辑在 UI 侧的 ui/flutter/lib/util/browser_extension_host/扩展本体由官方单独的 browser-extension 仓库提供。另一条扩展路径是 JavaScript 扩展内核基于 goja 引擎执行扩展脚本pkg/download/extension_engine.go扩展负责把某个网页变成可下载资源这一步——视频网站、AI 模型站、网盘等没有直链的站点都可以靠扩展接入。测试数据里的十几个示例扩展pkg/download/testdata/extensions/也展示了扩展能做的事拦截请求、改写下载、监听任务生命周期事件等。自动化出口还有两个Webhook 和下载后脚本实现在 pkg/download/webhook.go 与 pkg/download/script.go任务完成后可以回调你的服务或执行本地脚本。REST API 层则位于 pkg/rest/路由定义在 pkg/api/routes.go。让 AI 管理下载Gopeed 的 MCP 接口Gopeed 2.0 内置了 MCPModel Context Protocol服务器把创建、查询、控制下载任务暴露为一组 AI 可调用的工具。把它接入 AI Agent 后你直接说帮我下载最新的 Gopeed Windows 客户端就行。实现位于 pkg/mcpserver/server.go以无状态 Streamable HTTP Handler 对外服务工具注册时附带 JSON Schema 校验。这里有个值得一提的设计细节协议相关的extra字段用 oneOf 联合结构区分 HTTP 与 BitTorrent 两种参数避免某些 MCP 客户端把any类型误读成字符串。可用工具如下Tool功能说明resolve_task解析下载 URL 或 URI创建任务前返回资源信息与文件列表create_task用已解析的资源 IDrid或直接下载请求req创建并启动任务list_tasks查询任务列表支持按 ID、状态含notStatus筛选get_task获取单个任务的请求、资源、选项及完整进度信息get_task_status获取轻量运行状态和各文件下载进度get_task_stats获取协议统计HTTP 连接数或 BT 的 Peer 与做种数据pause_task暂停任务continue_task继续已暂停或失败的任务delete_task删除任务force为 true 时同时删除已下载文件启用方式见下一节--mcp-enable参数或环境变量GOPEED_MCPENABLEtrue。自托管 Gopeed Web 服务 5 分钟配好自托管形态是一个单二进制构建时把 Flutter 的 Web 产物复制进cmd/web/dist用//go:embed打进 Go 二进制ProductionMode开启、底层用 bbolt 存储无需任何外部依赖。官方 Dockerfile 用golang:1.25.4-alpine3.22构建、alpine:3.23运行暴露 9999 端口entrypoint.sh 支持PUID/PGID/UMASK控制容器内运行身份与文件权限。最简启动仓库 docker-compose.yml 用的就是liwei2633/gopeed镜像docker run -d \ -p 9999:9999 \ -v ~/gopeed/downloads:/app/Downloads \ -e PUID1000 -e PGID1000 -e UMASK022 \ liwei2633/gopeed浏览器访问http://host:9999即可使用。核心启动参数来自 cmd/web/flags.go短参数长参数默认值说明-A--address0.0.0.0绑定地址-P--port9999绑定端口-u--usernamegopeedWeb 认证用户名-p--password空Web 认证密码不设置则不启用认证-T--api-token空API Token启用认证后调用 HTTP API 必须配置-d--storage-dir可执行文件目录下storage存储目录—--white-download-dirs空下载目录白名单逗号分隔—--mcp-enablefalse启用 MCP 端点-c--config./config.json配置文件路径配置来源的优先级是命令行参数 环境变量GOPEED_前缀如GOPEED_MCPENABLE 配置文件 默认值。开启认证的典型组合gopeed --address 0.0.0.0 --port 9999 \ --username admin --password your-password \ --api-token your-token --mcp-enable \ --storage-dir /data/gopeed/storage构建 Gopeed 桌面端、移动端与 Web 端环境要求Golang 1.25仓库go.mod声明 1.25.4、Flutter 3.41并准备好cgo环境。克隆仓库git clone https://gitcode.com/GitHub_Trending/go/gopeed桌面端的思路是先用cgo把 Go 核心编成动态库-buildmodec-shared再让 Flutter 打包时链接进去。nosqlite标签用于在桌面端关闭 sqlite 依赖。三个平台对应命令# 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 windows # macOS go 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 macos # Linux go 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移动端多一步先安装gomobilego install golang.org/x/mobile/cmd/gomobilelatest gomobile init再分别绑定# Android生成 AAR gomobile 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 # iOS生成 XCFramework gomobile 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-codesignWeb 端则走前面说的 embed 链路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/webDocker 镜像的构建正是这条nosqlite,web链路另外通过-ldflags注入版本号和容器标识。想深入了解贡献流程可参考 CONTRIBUTING_zh-CN.md。Gopeed 适合谁如何开始如果你只是想要一个比系统自带下载器更强的工具多协议统一、断点续传、原生轻量直接装桌面/移动客户端即可如果你需要无头下载go install一行命令的 CLI 足够如果你的下载流量集中在服务器或 NAS 上Docker 起一个带认证的 Web 服务再挂个--mcp-enable就能让 AI Agent 替你管任务。项目基于 GPLv3 协议开源代码结构清晰——内核在pkg/与internal/前端在 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),仅供参考
返回列表