TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

Luna Lite 把換臉生意的應用層公開在 GitHub 上,但換臉運算在商湯、照片存放在阿里雲 OSS、內容把關也在阿里雲,而且主倉庫沒有附任何授權條款。本文從原始碼與部署文件拆解它的真實邊界,整理台灣開發者會撞上的小程序、演算法開通與法規三道門檻。
用 AI 摘要這篇文章:
GitHub 上打著「開源 AI 換臉」旗號的小程序原始碼不少,Luna Lite 是其中一套星數累積到八十幾的方案。我把它的五個倉庫、部署文件和四份核心 PHP 原始碼從頭到尾讀了一遍之後,得到的結論很直接:這套系統開源的是換臉生意的「外殼」,換臉能力本身一件都不在倉庫裡。運算在商湯的伺服器上,照片從落地那一刻就存放在阿里雲,內容把關也是呼叫阿里雲的審核服務,而且承載全部業務邏輯的主倉庫連一份授權條款都沒有附上。
先講清楚本文的依據,免得期待錯方向:以下的判斷全部來自倉庫裡的原始碼、官方部署文件與官網文案的比對,我沒有實際把它架起來跑,所以換臉效果、出圖速度這類要實跑才知道的事,本文不評。
Luna 家族在 GitHub 上有五個倉庫。luna-lite-server 是伺服器端主倉庫,放會員、模板、點數這些生意邏輯;luna-lite-uniapp 是微信小程序端;luna-lite-admin 是管理後台;另外還有一個已經歸檔的舊版 luna-swapping,和一個做 AI 證件照的周邊前端 luna-headshot。README 裡也說明白了,管理後台是基於 Likeadmin-Laravel 這套現成的全棧開發框架搭建的,所以連這個「外殼」本身,也有一大塊是別人的開源成果。
先看它砍了什麼,更能看出它的定位。舊版 Luna Swapping 是功能齊全的換臉業務系統,合輯模板、多對多關聯、玩法策略、多人合照都做進去了;Lite 版把這些「過度設計」的功能整批拿掉,換上統一的演算法接入層,讓部署者可以接商湯、接其他第三方、或接自己寫的模型。方向上這是把一個產品變成一個框架,問題是框架的法律地基(授權條款)沒有一起搬過來。
版權狀態一攤開就更有意思。小程序端、證件照前端和舊版倉庫都掛了 MIT 授權,但真正值錢的那個主倉庫,我數過全部 806 個檔案,沒有任何一個授權檔案,GitHub 的授權欄位是空的。管理後台倉庫同樣沒有。
「程式碼公開」跟「開源授權」是兩件事。沒有授權條款的程式碼,在著作權法上原則上是作者保留所有權利,下載來研究一般不會有問題,拿去改一改上線做生意,原則上就沒有合法的授權基礎。另外這套後台的底層是 Likeadmin-Laravel 框架,框架自身的授權條款對衍生部分怎麼適用,也要一併向作者確認。所以嚴格說,Luna Lite 主倉庫是「公開原始碼」,不是開源軟體。這件事作者其實自己也很清楚,程式碼裡的兌換碼功能直接寫死成一句話:功能未開通,請聯繫管理員購買高級版授權。免費倉庫與付費高級版的雙軌制,就刻在 API 的實作裡。
這是整套系統最該攤開看的部分,因為它決定了「自架」兩個字實際上兌現多少。
照官方部署文件的說法,把這套系統架起來需要 PHP 8.2、MySQL 8.0、Redis、Nginx,再加上三樣外面買的東西:阿里雲 OSS、商湯的換臉演算法金鑰、微信小程序帳號。文件裡寫得明白,阿里雲 OSS 不是可選項,暫不支援其他雲端儲存,原因是數位分身功能的人臉裁剪直接依賴 OSS 的圖片處理能力。我去翻原始碼驗證這句話,屬實:圖片尺寸讀取和臉部裁剪的程式,是直接在圖片網址後面拼上 OSS 專屬的處理參數去完成的。想換成自家 NAS 或其他物件儲存,人臉裁剪與圖片資訊讀取這層就得重寫。
安裝流程本身倒是做得親切。下載安裝包解壓後,瀏覽器打開網站會進入一個安裝引導頁,環境檢查、資料庫連線、快取連線、管理員帳號、資料導入一路點完就裝好了,不必自己打包前端。不過官方文件全程以寶塔面板當範例,這是中國大陸主機圈慣用的伺服器管理面板,台灣開發者相對陌生,等於照著文件走之前還要先接受它的部署文化。裝完還有一個容易漏的動作:要在伺服器上執行一條 artisan 命令,把內建的範例換臉模板同步到你的 OSS,官方文件警告不同步的話換臉功能可能無法使用。從這條命令也能再看一次依賴的方向,範例資源放在你的伺服器上,但真正能被系統使用的版本必須躺在阿里雲那邊。
照片的旅程是這樣的。用戶在小程序上傳照片,檔案存進阿里雲 OSS,系統拿到的是一個可公開存取的網址。真正換臉之前,系統會先做一次人臉偵測,把照片裡每張臉的位置和編號列出來,數位分身就是靠這一步,用一張正臉照建立起的個人臉部資料,之後用戶可以在自己的帳戶裡管理或刪除。換臉的時候,伺服器端把圖片網址連同臉部編號的對應關係一起交給商湯。這一段我讀的是 FaceSwapService 的原始碼:演算法供應商寫死為商湯,端點是 mhapi.sensetime.com,用申請來的金鑰簽 JWT 呼叫,送出網址之後輪詢等商湯把生成好的圖片算完取件。

換句話說,你的伺服器從頭到尾沒有碰過換臉運算,也沒有保管過照片本體。它跑的是會員、模板、點數、頁面裝修這些應用層。照片一落地就在阿里雲上,運算時又送到商湯的機器上。如果吸引你的是「資料都在自己伺服器」這個想像,這套系統給不了。順帶一提,README 把多人合照換臉列在待辦清單,但程式裡其實已經留了臉部對應的資料結構,目標圖的臉編 T 幾對上用戶的臉編 U 幾,介面都在,只是功能沒做完。這種半拆狀態也提醒你,這套程式碼正處在舊版瘦身到一半的階段。
後台的換臉紀錄頁還提醒了另一件部署者容易忘的事:每筆生成任務都列檔在資料庫裡,誰換過什麼、用哪張照片,看得到也查得到。系統給了管理介面,但沒有給留存政策,照片留多久、怎麼刪、誰有權限看,倉庫裡找不到任何對應的設定或文件。這在台灣就不只是工程問題,而是個資法問題:臉部影像屬於能直接識別特定人的個人資料,蒐集目的、保存期間、當事人行使權利的方式都得交代。接手的人最好在第一天就把這題想清楚,而不是等資料庫長大之後再面對。
真的想要照片不出門的換臉方案,開源圈有本機引擎可以選,例如 FaceFusion,或是 MagicMirror 這類本機桌面工具,照片離開你機器的次數是零,兩者的取捨剛好和這套雲端架構相反。
README 的常見問題寫得很規矩:不允許上傳涉黃、涉政、明星、公眾人物等內容,用戶也不能自己上傳換臉的目標底圖,模板一律由管理員在後台上架管理。
模板制這一條是真的,而且設計得合理。目標底圖由營運方控制,換臉能換成誰,取決於後台上架了哪些模板,等於把「拿任意照片換任意人的臉」這個最大風險入口收窄到營運方自己身上,這比放開用戶上傳的產品懂事。後台的模板管理也做得完整,底圖、排序、頁面裝修都有對應的介面。

但圖片審核這一條,程式碼說了不一樣的故事。審核是呼叫阿里雲的圖片審核服務,這本身沒問題,問題出在三個細節上。審核開關是後台的一個配置項,關掉之後所有照片直接放行,這是最要緊的一個。審核結果的判斷也寬鬆,風險標籤的信心度要超過 85 才會攔截,不到門檻的記一筆 log 就放走。而當審核服務有回應、結果卻是空值的時候,程式的行為是直接放行,log 訊息就寫著響應異常直接放行;服務明確報錯的時候則會丟出例外中斷流程。
這種設計對營運連續性是好事,但對內容安全來說是反方向的選擇,開關關閉、低信心、空結果這三條路徑都通向放行。整道防線的厚度,完全取決於部署的人把開關設在哪、有沒有盯著 log。系統本身不強制任何東西。接手之前要知道防線在哪、有多薄。
另一個值得記下來的矛盾,發生在官網和倉庫之間。
撰稿當下(2026 年 10 月)專案官網仍然掛著這樣的宣傳:Luna 自研演算法、行業前三、出圖以假亂真,技術架構寫的是 ThinkPHP6。但主倉庫的 README 已經把話講白了:因為營運成本太高,官方提供的演算法能力暫時下線了,替代方式是商湯的演算法模型。框架也在輕量化重構時整個換掉,舊版才是 ThinkPHP6,Lite 版用的是 Laravel 11。
兩份都是官方自己的材料,講的卻是兩個時代的產品。官網是舊版時代的行銷頁,倉庫才是現況。任何人只看官網做評估,會以為演算法是自研的、下載就有,實際上得到商湯那裡拿。順帶一提,人氣其實也還留在舊版,歸檔的 luna-swapping 有三百多顆星,Lite 主倉庫只有八十幾顆。評估這類專案,一律以倉庫為準,官網只能當歷史文件看。
商湯這條路也不好走。部署文件的指引是先到商湯的日日新平台註冊帳號、建立應用拿到金鑰,然後官方文件原話寫著目前不支援自主購買,要加入他們的微信群,找商務人員一對一開通服務。這是商務流程不是技術流程,卡關的點從程式變成人。
把時間線排出來看會更清楚。主倉庫建於 2024 年 12 月 30 日,唯一的正式安裝包 v1.0.0 發布在 2025 年 1 月 2 日,最後一波提交集中在 2025 年 1 月 30 日,內容是儲值套餐、支付通知處理、兌換碼提醒這些商業功能。翻提交記錄還能看到幾個耐人尋味的細節:新註冊用戶贈送作圖次數、用戶錢包餘額的預設用途被改成作圖餘額並補上退款邏輯。也就是說,這個專案的最後一天,工程師做的幾乎全是錢的事情,點數經濟的骨架搭完了,然後人就散了。三個倉庫同一天之後完全靜止,到今天已經超過二十個月,沒有新的發布版。
README 裡提供的線上示範後台,我測的時候已經連不上了。功能清單上,微信小程序支付和多人換臉都還掛在待辦,付費能力的程式骨架寫進去了,收款流程沒有收尾。
這意味著接手的人要扛幾筆隱性成本。依賴凍結:Laravel 11 和整套 composer 依賴鎖在 2025 年 1 月,之後 PHP 生態的資安修補一概要自己來。功能補完:支付、多人換臉這些 README 承諾過的東西,等於你自己寫。營運風險:萬一阿里雲或商湯的介面改版,沒有上游幫你修,二十個月沒動的整合程式碼就是你的維護責任。
公開倉庫停更超過一年半不一定是死刑,開源圈很多專案是慢火節奏。差別在於這套系統的本體是一堆對外部服務的整合程式碼,外部一動它就爛,而它自己不動。
前面講的都是架構和維護,這一節講更現實的問題:這套系統預設的營運環境是中國大陸,搬到台灣來跑,每一環都有摩擦。
最早上出現的是小程序本身。微信小程序對海外主體的限制相當嚴,依微信公開的規則,以個人身份註冊的海外開發者能選的類目非常有限,大致只有工具類,而且不能開通微信支付,開支付需要營業執照之類的主體資質。而這套系統的商業設計核心恰恰是點數儲值加微信支付,收款這一環在海外個人主體身上從第一天就走不通。
演算法開通是下一道。前面說過,商湯的服務要加微信群找商務人員開通,沒有微信、不在中國商務圈裡的開發者,在拿到金鑰這一步就結束了。
最容易低估的則是法規這一筆。中國自 2023 年 1 月 10 日施行的深度合成管理規定,要求換臉這類可能造成公眾混淆的生成內容加上顯著標識,具有輿論屬性或社會動員能力的服務提供者還有備案義務。我把主倉庫的檔案樹整個搜過一遍,找不到任何為生成圖片加浮水印或標識的實作。這代表標識、備案、內容治理這整套合規工程,全部留給部署者自己補。台灣這邊也有自己的紅線:刑法已經有妨害性隱私及不實性影像罪,散布深偽性影像可處五年以下有期徒刑,意圖營利最重可到七年。換臉工具本身是中性的,但拿它做什麼,法律後果差距很大。
講了這麼多門檻,不是說這套專案一無是處。把它放對位置,它有明確的價值。
如果你的目標是研究中國 AI 換臉小程序的生意長什麼樣,它是現成的解剖標本:會員體系、模板管理、點數錢包、頁面裝修、統一的演算法接入層,應用層該有的骨架都在,Laravel 11 加 uni-app 的工程結構也算乾淨,拿來當二次開發的起點,對熟悉 Laravel 的團隊可以省下可觀的起步時間。當拋棄式原型來驗證商業想法,負擔也輕。
如果看完這些還是想動手,順序上建議先把行政事項跑完再寫第一行程式。向作者確認授權與高級版的價目,這一步談不攏,後面全部白做;到商湯日日新平台把帳號與金鑰申請起來,商務對接要走多久先探清楚;主機與域名的技術準備放在最後。把它當採購案而不是下載案,三朵雲的依賴與二十個月的停更都會在成本表上現形,值不值得,算完就會有答案。
但如果你要的是打開就能用的換臉能力,或者你在意照片隱私,或者你打算長期營運,這幾種情況它都不合格。想要本機運算的換臉,走 FaceFusion 那條路;想理解微信生態工具的登入與資料落點,可以看看 Reditor 這類小紅書編輯器的拆解;想長期扛一套商業系統,二十個月靜止的倉庫不是好地基。
一句話收束:把 Luna Lite 當範本來讀,它是有料的;把它當產品來用,它的芯全部不在你手裡。開源兩個字在這裡覆蓋的範圍,比字面小得多。