# MoeKoeMusic-Plugins 設計理念
起初在構建 MoeKoe Music 插件生態時,還沒有線上插件市場這個功能 後來在社區的建議下便有了這個插件市場 增加官方/社區插件倉庫以擴展產品功能 插件可以由社區開發,那插件市場應該怎麼管? 最直接的做法當然是把所有插件源碼都收進一個大倉庫裡。但這個方案越想越彆扭。每個插件都有自己的作者、自己的發佈節奏、自己的構建方式。把它們全塞進官方倉庫,不僅維護成本高,也會把責任邊界搞得很模糊。 所以這個倉庫最後沒有被設計成「插件源碼倉庫」,而是變成了一個「插件登記與索引倉庫」。它只做幾件事: 接收插件上架、更新、下架和舉報申請 自動做一輪基礎校驗和靜態識別 把人工審核通過時的插件快照記錄下來 維護客戶端可以讀取的 plugins.json 順手把 README 裡的插件列表更新出來,方便人看 一個可追溯的登記簿:誰提交的、審核的是哪個版本、下載地址是什麼、是否有網絡或文件權限,都落在一份清楚的數據裡。 市場索引,而不是源碼倉庫 倉庫根目錄最重要的文件是 plugins.json。它就是插件市場真正消費的數據源。 { "id": "custom-app-background", "name": "自定義背景圖", "description": "為MoeKoe Music提供自定義背景圖能力,支持透明度調節。", "iconUrl": "...", "version": "1.0.0", "minversion": "1.6.1", "...":"....", "buildRequired": false, "networkAccess": false, "fileAccess": false, "binaryContent": false, "snapshot": { "iconUrl": "...", "repository": "MoeKoeMusic/custom-app-background-plugin", "commitSha": "dbf72d38c8cf6b1d1cefdf8ce15798d565678995", "downloadUrl": "hxx.zip", "release": null } } 我不想讓市場記錄永遠指向插件倉庫「當前最新代碼」。因為作者今天提交的代碼,和審核那天看到的代碼,可能已經不是同一份東西了。插件市場真正應該承認的是:審核通過時的那個版本。 所以這個專案裡面有一個核心原則: 上架的不是一個會漂移的倉庫地址,而是一個已經鎖定的快照。 對於不需要編譯的插件,快照鎖到默認分支當時的 commit。對於需要編譯的插件,快照鎖到對應的 Release tag 和發行附件。這樣後面真出了問題,也能回頭知道當時到底審核了什麼。 Action 先跑,人最後拍板 用戶提交 Issue 時,需要選擇: ...