尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Gopeed 下载器全解析:多协议下载内核、MCP 自然语言接入与三端构建实战

Gopeed 下载器全解析:多协议下载内核、MCP 自然语言接入与三端构建实战 Gopeed 下载器全解析多协议下载内核、MCP 自然语言接入与三端构建实战【免费下载链接】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、磁力链接与 ed2k 下载覆盖桌面、移动与 Web 全平台并通过 MCP 接口把下载任务交给 AI 管理。为什么选 Gopeed把分散的下载场景收进一个工具如果你的下载习惯是HTTP 链接用浏览器、磁力用 qBittorrent、ed2k 再翻出一个老工具那管理成本会随协议数量线性上涨。Gopeed 的思路是把这三种协议放进同一个任务列表里统一调度你只面对一套界面、一套设置。它值得放进工具箱的理由多连接并发加速HTTP 任务按分段并发拉取带宽利用率明显优于单连接下载。完整的 BitTorrent 能力DHT、uTP、Web Seed、按文件选择、做种策略一应俱全不是能下磁力的缩水版。原生渲染而非套壳界面由 Flutter 直接渲染没有 Electron 或 WebView 外壳带来的额外内存与体积。任务管理实用向暂停、续传、批量操作、搜索、状态筛选、下载分类启动后可恢复未完成任务。主题与多语言跟随系统/浅色/深色三种模式界面翻译覆盖 20 多种语言资源集中在 ui/flutter/lib/l10n。全平台落地Windows、macOS、Linux、Android、iOS、Web 都有正式构建还附带 Docker 镜像。内核层它是怎么把文件下下来的协议实现集中在 internal/protocol/通过 internal/fetcher/ 完成注册与抽象。三种协议各自的设计取向如下。HTTP/HTTPS分段并发吃满带宽HTTP 实现支持把一个文件切成多段、用多个并发连接同时传输连接数通过OptsExtra.Connections控制配合 Range 请求头实现断点续传。自定义 Header、User-Agent 与代理均可在任务级别指定遇到跳过证书校验的需求也有独立开关。MCP 层把这些选项暴露为httpTaskExtra连接数、压缩包自动解压、autoTorrent 等都能从外部直接传入。BitTorrent 与磁力一套接近完整的 DHT 客户端BT 部分基于 anacrolix/torrent 构建DHT 节点发现保证无 Tracker 时也能找到 PeeruTP 缓解高延迟网络下的拥塞Web Seed 允许从普通 HTTP 源拉取数据。磁力链接解析后进入同一任务模型支持按文件选择下载。做种行为可以按分享率或时间两种策略自动停止Tracker 列表可动态增删。ed2k 与 JS 扩展协议之外还能接更多源ed2k 协议由专门的 fetcher 实现与 HTTP、BT 共用同一套任务事件体系。更关键的是扩展机制pkg/download/extension_engine.go 用 goja 在进程内执行 JavaScript 扩展脚本把视频网站、网盘、AI 模型站这类下载源变成可插拔的扩展无需改内核代码。任务生命周期由六种状态描述ready、running、pause、wait、error、done枚举见 pkg/base/constants.go代理则提供follow跟随全局设置、none、custom任务级自定义三种模式。从命令行到自然语言三层接入生态交互复杂度从低到高排列CLI、开放接口、MCP。快速上手 Gopeed CLI一行命令装进 GOPATHgo install github.com/GopeedLab/gopeed/cmd/gopeedlatest三个参数足够日常使用参数默认值说明-C16HTTP 并发连接数-D当前目录下载存储目录位置参数必填URL、.torrent 文件或磁力链接gopeed https://example.com/file.zip gopeed bt.torrent gopeed -C 32 -D /data/downloads magnet:?xturn:btih:...运行期间终端会实时渲染进度结束后打印保存路径或失败原因。开放接口REST API、Webhook 与浏览器接管REST 路由定义在 pkg/api/routes.goWebhook 与下载完成后的本地脚本钩子分别落在 pkg/download/ 中脚本可以拿到任务元数据做归档、通知等后处理。浏览器扩展则把 Chrome、Edge、Firefox 里的下载请求直接转发给本地或自托管实例。注意一个细节一旦启用了 Web 认证HTTP API 调用必须携带--api-token配置的 Token否则会被拦截。快速启用 MCP 自然语言下载想象一下对 AI Agent 说帮我下载最新的 Gopeed Windows 客户端Agent 会通过 MCP 协议替你完成创建、查询与清理。服务端实现在 pkg/mcpserver/以无状态 Streamable HTTP 方式暴露共 9 个工具工具功能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为 true 时连带删除已下载文件启用方式只有两条路径Web 服务启动时加--mcp-enable或设置环境变量GOPEED_MCPENABLEtrue。自托管部署带认证的下载服务仓库自带的 Dockerfile 用 alpine 构建镜像暴露 9999 端口数据落在挂载卷里docker run -d -p 9999:9999 \ -v /path/to/storage:/app/storage \ -e PUID1000 -e PGID1000 \ gopeed/gopeed --address 0.0.0.0 --port 9999服务入口在 cmd/web/配置支持命令行、JSON 文件-c指定与环境变量三源合并最终由非默认命令行参数覆盖。核心参数短参数长参数默认值说明-A--address0.0.0.0监听地址-P--port9999监听端口-u--usernamegopeedWeb 认证用户名-p--password空不设置则关闭 Web 认证-T--api-token空启用认证后 API 调用必填-d--storage-dir二进制旁 storage存储目录--white-download-dirs空下载目录白名单逗号分隔-c--config./config.json配置文件路径--mcp-enablefalse开启 MCP 端点实现上Web 前端构建产物经go:embed打进二进制任务数据用 bbolt 单文件存储——部署就是一台机器一个可执行文件没有外部依赖。一套代码三端跑跨平台构建实战架构上Go 核心通过 cgo 编译成 C 动态库Windows 为 dll、macOS 为 dylib、Linux 为 so导出Start、Stop、Invoke、SubscribeTaskEvents、FreeCString等接口Flutter 侧用dart:ffi直接调用见 bind/desktop/移动端则走 gomobile 生成 Android AAR 与 iOS XCFramework。这就是 2.0 原生的进程内通信方案目前处于 Beta 阶段。桌面端三步走macOS/Linux 仅输出文件名不同libgopeed.dylib放ui/flutter/macos/Frameworks/libgopeed.so放ui/flutter/linux/bundle/lib/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移动端同样先 bind 再 flutter buildiOS 把-target换成 ios、输出 XCFramework再flutter build iosgomobile bind -tags nosqlite \ -o ui/flutter/android/app/libs/libgopeed.aar \ -targetandroid -androidapi 21 -javapkgcom.gopeed github.com/GopeedLab/gopeed/bind/mobile cd ui/flutter flutter build apkWeb 端把前端产物复制进 Go 工程再编译嵌入cd ui/flutter flutter build web 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三条链路共用同一份内核代码nosqlite标签统一裁剪移动端不需要的 sqlite 依赖。选型建议日常下载选它当主力客户端一个工具管完所有协议团队共用下载机就自托管带认证加白名单的 Web 服务想给 AI Agent 加下载能力--mcp-enable打开端点即可接入。【免费下载链接】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),仅供参考
返回列表