免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Gopeed 實戰指南:Go + Flutter 打造的高速跨平台下載器(架構解析、MCP 整合與全平台建置)

Gopeed 實戰指南:Go + Flutter 打造的高速跨平台下載器(架構解析、MCP 整合與全平台建置) Gopeed 實戰指南Go Flutter 打造的高速跨平台下載器架構解析、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 全平台。本篇指南以官方 READMEREADME_zh-TW.md為骨架深入專案原始碼帶你掌握其前後端通訊架構、MCP 自然語言整合方式、CLI 與 Web UI 的部署參數以及從零建置各平台二進位檔案的完整流程。專案定位與核心功能Gopeed 不只是一般的下載工具它把「下載管理」做成了一個可擴充、可自動化的開放平台除了日常任務管理還提供瀏覽器整合、JavaScript 擴充、REST API、命令列工具及可自行託管的 Web UI方便進階使用者擴充與自動化下載流程。其核心能力可歸納為以下幾大類高速下載引擎— 多任務並行、HTTP 多連線分段傳輸與 BitTorrent P2P 下載充分利用可用頻寬。多協定支援— 在同一介面管理 HTTP、HTTPS、BitTorrent、磁力連結與 ed2k。完整的 BT 功能— 支援 DHT 節點探索、uTP 傳輸、Web Seed、逐檔選擇、Tracker 管理、Peer/分片統計以及依分享率或時間控制做種。實用任務管理— 暫停、續傳、重試、批次操作、搜尋、狀態篩選、分類及啟動恢復。輕量原生體驗— 主介面使用 Flutter 原生渲染非 Electron、非 WebView 套殼安裝包更輕量、執行開銷更低、操作回應更流暢。跨平台— 支援 Windows、macOS、Linux、Android、iOS、Web、Docker 與 QNAP。個人化主題— 支援跟隨系統、淺色、深色模式及 8 種主題強調色。響應式介面— 任務列表、導覽、設定與詳細資訊會配合手機、平板及可調整大小的桌面視窗自動配置。20 種介面語言— 支援繁體中文、簡體中文、英文、日文、韓文等多種語言。瀏覽器整合— 可接管 Chrome、Edge、Firefox 等相容瀏覽器的下載。JavaScript 擴充— 新增影音網站、AI 模型平台、雲端儲存等下載來源。AI 整合— 提供 MCP 介面可串接相容的 AI Agent以自然語言建立、查詢及管理下載任務。開放介面— 支援 REST API、CLI、認證 Web UI、Webhook 及下載後腳本。實用內建能力— 自訂 Header/User-Agent、Proxy、GitHub 鏡像、通知及自動解壓縮。前後端架構Go 核心與 Flutter 前端的通訊方式Gopeed 分為前端與後端前端使用 Flutter 編寫後端使用 Golang 編寫兩邊透過 HTTP 協定進行通訊在 Unix 系統下使用unix socket在 Windows 系統下則使用tcp協定。前端原始碼位於ui/flutter目錄。這套「本地 HTTP 服務 前端呼叫」的模式讓 REST API 的核心可以同時服務桌面端與 Web 端。核心服務的建置邏輯集中在pkg/rest/server.go在Start流程中會初始化下載核心initializeCore、註冊 API 路由APIService.RouteSpecs()並依設定選擇記憶體或 Bolt 儲存pkg/rest/server.go。監聽方式由Network欄位決定unix或tcppkg/rest/server.go。Web UI 靜態資源透過embed嵌入二進位檔案並以 gzip 中介軟體服務pkg/rest/server.go。2.0 的 FFI 原生通訊架構Gopeed 2.0.0 引入了「透過 FFI 直連 Go 核心的原生通訊架構」桌面與行動用戶端不再依賴獨立的 HTTP 埠而是直接把 Go 核心編譯為共用函式庫DLL / dylib / .so / .aar / .xcframework由 Flutter 端以 FFI 呼叫。以桌面端為例bind/desktop/main.go用//export匯出了一組 C ABI 函式Start/Stop啟動與停止 Go 核心含 REST API 服務啟動時透過 JSON 傳入StartConfigbind/desktop/main.go。Invoke將 HTTP 方法、路徑、Query 與 Body 直接轉交 REST 層處理等同於把整個 API 當作函式呼叫bind/desktop/main.go。SubscribeTaskEvents訂閱任務事件以回呼callback方式把 JSON payload 推送給 Dart 側bind/desktop/main.go。StartConfig中被強制設定ProductionMode true與NativeMode true其中NativeMode會讓核心從儲存的下載器設定中讀取 API 啟用狀態、MCP 開關、網路位址與 Tokenpkg/rest/server.go確保桌面應用每次啟動都沿用使用者偏好。以自然語言管理下載MCP 整合Gopeed 提供 MCPModel Context Protocol端點可串接相容的 AI Agent例如 Claude、Gemini CLI、Cursor、Copilot 等各類 Agent 工具直接以自然語言建立、查詢與管理下載任務。例如直接對 AI Agent 說幫我下載最新的 Gopeed Windows 用戶端Agent 便會依序呼叫 MCP 工具完成「解析 → 建立 → 查詢 → 管理」的完整流程。官方提供以下工具Tool功能說明resolve_task解析下載 URL 或 URI在建立任務前回傳資源資訊及檔案清單。create_task使用已解析的資源 ID 或直接下載請求建立並啟動任務。list_tasks查詢任務清單並可依任務 ID 或狀態篩選。get_task取得單一任務的請求、資源、選項及目前進度等完整資訊。get_task_status取得單一任務的簡要執行狀態及各檔案下載進度。get_task_stats取得協定相關統計資訊包括 HTTP 連線或 BitTorrent Peer 與做種資料。pause_task暫停任務。continue_task繼續已暫停或失敗的任務。delete_task刪除任務並可選擇同時刪除已下載檔案。MCP 端點與工具背後的實作MCP 伺服器的實作位於pkg/mcpserver/server.go採用 Streamable HTTP 傳輸StatelessJSONResponse模式掛載在 REST 伺服器的/mcp路徑下pkg/rest/server.go每個工具的 Input/Output Schema 都由 Go 型別自動產生 JSON Schema讓 Agent 能精準理解參數結構。resolve_task回傳資源 IDRID與base.Resource中繼資料create_task則接受「資源 ID」或「直接下載請求」兩種模式pkg/mcpserver/server.go。list_tasks支援依狀態篩選合法的狀態值與pkg/base/constants.go一致ready、running、pause、wait、error、donepkg/mcpserver/server.go。工具分為唯讀resolve_task、list_tasks、get_task系列與變更型pause_task、continue_task、delete_task兩類並以ReadOnlyHint、DestructiveHint等註解告知 Agent 工具副作用pkg/mcpserver/server.go。伺服器端內建serverInstructions明確指示 Agent當使用者提供可支援的 URL/URI 時使用create_task需要先檢視資源或選擇檔案時先用resolve_task若使用者未提供具體網址應要求其提供而非自行虛構pkg/mcpserver/server.go。如何啟用 MCPMCP 端點預設關閉需在啟動時明確開啟。以自行託管的 Web 伺服器為例使用--mcp-enable旗標即可# 啟動 Web 服務並啟用 MCP 端點 gopeed-web --mcp-enable啟用後MCP 端點位於http://address:port/mcp相容的 MCP ClientAI Agent即可連線使用上述 9 個工具。詳細啟動參數見下方「Web UI 部署」小節。下載與安裝Gopeed 2.0.0 BetaGopeed 2.0.0 目前處於公開 Beta 測試階段引入了全新介面、透過 FFI 直連 Go 核心的原生通訊架構、更一致的跨平台體驗、更完善的任務管理、更靈活的 API以及透過 MCP 串接 AI Agent 的能力。部分功能仍可能不夠完善或穩定歡迎搶先體驗並回報問題。當功能完整度與穩定性達到正式發布標準後官方會發布 Gopeed 2.0.0 正式版已安裝 Beta 版本的使用者可以直接升級至最終正式版現有穩定版使用者則不會被自動切換至 Beta 頻道。正式穩定版正式穩定版可從官方網站下載頁或 GitHub Releases 的 latest 版本取得涵蓋 Windows、macOS、Linux、Android、iOS 等平台安裝包。使用 CLI 安裝除了安裝包也可以直接以go install安裝命令列版本需要 Go 工具鏈go install github.com/GopeedLab/gopeed/cmd/gopeedlatest安裝後即可直接下載各種資源。CLI 的參數定義在cmd/gopeed/flags.go# 基本用法下載到目前目錄 gopeed https://example.com/file.zip # 指定儲存目錄 gopeed -D /path/to/download https://example.com/file.zip # 指定 HTTP 並發連線數預設 16 gopeed -C 32 https://example.com/file.zip # 支援 torrent 與磁力連結 gopeed bt.torrent gopeed magnet:?xturn:btih:...其中-C為並發連線數預設16-D為儲存目錄預設目前工作目錄若缺少 URL 參數程式會提示正確用法並退出cmd/gopeed/flags.go。下載過程中 CLI 會以進度列即時顯示速度與百分比完成或失敗時輸出原因與儲存路徑cmd/gopeed/main.go。Web UI 部署與 REST APIGopeed 提供可自行託管的 Web UI 與 REST API 伺服器適合部署在 NAS、Docker 或雲端主機上。啟動參數定義在cmd/web/flags.go支援「命令列旗標 設定檔 環境變數」三層配置環境變數以GOPEED_前綴對應 JSON 欄位如GOPEED_PORT、GOPEED_ADDRESS。常用參數如下參數短/長預設值說明-A/--address0.0.0.0綁定位址-P/--port9999綁定埠-u/--usernamegopeedWeb 認證使用者名稱-p/--password空Web 認證密碼未設定時不啟用 Web 認證-T/--api-token空API Token啟用 Web 認證時呼叫 HTTP API 必須設定--mcp-enablefalse啟用 MCP 端點-d/--storage-dir執行檔旁storage儲存目錄--white-download-dirs空白名單下載目錄以逗號分隔-c/--config./config.json設定檔路徑例如啟用 Web 認證與 API Token 的部署方式gopeed-web -A 0.0.0.0 -P 9999 -u admin -p your-password -T your-api-token從pkg/rest/server.go可看到其認證機制啟用 Web 認證時登入成功後會建立 session 並寫入gopeed-sessionCookieHttpOnlySameSiteLax有效期 7 天API 呼叫則支援X-Api-Token標頭或Authorization: Bearer token兩種方式並以常數時間比較subtle.ConstantTimeCompare防範計時攻擊pkg/rest/server.go。從原始碼建置開發環境Golang 1.25專案go.mod宣告go 1.25.4Flutter 3.41克隆專案git clone https://gitcode.com/GitHub_Trending/go/gopeed.git桌面端建置桌面端需要先依照 Flutter desktop 官方文件配置開發環境並準備好cgo環境需可用的 C 工具鏈。核心建置流程分兩步先用go build -buildmodec-shared把 Go 核心編譯成對應平台的共用函式庫FFI 通訊用再以flutter build建置前端。Windows產生libgopeed.dllgo 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產生libgopeed.dylibgo 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 macosLinux產生libgopeed.sogo 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注意-tags nosqlite會關閉 SQLite 儲存、改用 Bolt 儲存-ldflags-w -s用於去除除錯資訊以縮小體積。行動裝置建置行動裝置同樣需要cgo環境並安裝gomobilego install golang.org/x/mobile/cmd/gomobilelatest go get golang.org/x/mobile/bind gomobile initAndroid產生libgopeed.aargomobile 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 apkiOS產生Libgopeed.xcframeworkgomobile 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-codesignAndroid 建置時-androidapi 21指定最低 Android API 等級-javapkgcom.gopeed設定 Java 套件名稱iOS 則以--no-codesign跳過簽名便於本機測試。網頁端建置網頁端需先以 Flutter 建置前端再把產物複製到cmd/web/dist最後以webbuild tag 編譯 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建置完成後bin/下的單一二進位檔案即包含完整 Web UI 與 API 服務可直接執行並依前述參數部署。軟體許可該軟體遵循 GPLv3。開發相關的貢獻流程請參考協助指南若有興趣深入原始碼建議從 pkg/rest/server.go核心服務、pkg/download/downloader.go下載引擎、internal/protocol/bt 與 internal/protocol/http協定實作以及 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),仅供参考
返回列表