一個跑了好幾年的 Spring Boot 後台,業務單位開口:能不能在裡面加一點圖像辨識,或是簡單的預測?團隊沒人寫 Python,部署清單已經夠長,沒人想再多養一台模型服務。

這個處境是我假設的,不是哪個真實專案。但我讀 easyAi 的時候,腦子裡放的就是這個人。

我讀過的範圍是這些:我讀了 GitHub 上的倉庫資料、Maven Central 的 maven-metadata.xml、pom.xml、README,加上我自己的一份原始碼目錄筆記。沒有 clone,沒有編譯,沒有跑過任何訓練或推論,也沒有任何效能或準確率數字。下面每一句「跑起來怎樣」,答案都是我不知道。

這個人的第一步多半是搜 Maven。easyAi 在 Maven Central 的座標長這樣:

1
2
3
4
5
<dependency>
<groupId>org.dromara.easyai</groupId>
<artifactId>easyAi</artifactId>
<version>1.7.3</version>
</dependency>

maven-metadata.xml 寫 latest 與 release 都是 1.7.3,lastUpdated 是 20261015064317,也就是 2026-10-15。版本歷史裡最早看得到的是 1.2.9。

座標找到了,接下來要問的是那句最誘人的話。倉庫描述寫「easyAi是一款純用java實現的機器學習的框架」,README 寫「EasyAi無任何依賴,它是一個原生Java人工智能算法框架」。對一個不想再多一個執行環境的後台來說,這就是全部賣點。

所以我去翻 pom。整份 pom 我 grep 不到任何 <dependency> 或 <dependencies>,跟 README 的說法一致;編譯的 source 與 target 都是 1.8(pom 第 48 到 49 行)。

這兩條的涵蓋範圍很窄。pom 沒宣告依賴,證明的是宣告面乾淨;它沒證明專案能在你的 JDK 上乾淨編譯,也沒證明你的 Spring Boot 版本不會跟它的 Java 8 目標打架。最高支援到哪個 JDK,我讀不出來,只知道 target 是 1.8。

pom 裡還有一個讓我多看兩眼的地方:url 與 scm 都指向 gitee.com/dromara/easyAi(第 14 行與第 41 到 45 行)。所以 GitHub 這邊很可能是 Gitee 專案的鏡像,但這只是我從 pom 推論的,倉庫本身沒這樣寫,Gitee 那邊我也沒看過。這代表,我在 GitHub 上讀到的冷清,未必就是真實的冷清。

605 比 5

GitHub 的貢獻者共 6 人,查詢日 2026-11-04:thenk008 605 次,aoshiguchen 與 xiaoshuai125 各 5 次,fushoujiang 4 次,lifejwang11 2 次,yysxjz 1 次。

要注意的是,605 次的帳號是 thenk008,不是倉庫 owner lifejwang11,兩個帳號是不是同一個人,我不知道。可以確定的只有:這份提交紀錄裡,一個帳號的量是第二名的 121 倍。

這個 121 倍只是 605 除以 5,口徑是「GitHub 這邊的貢獻次數」。Gitee 那邊的提交紀錄我沒看過。

我把其他讀到的倉庫資料收進一張表,每個數字都綁著查詢日 2026-11-04:

項目 讀到的值 它能說明什麼 它說明不了什麼
星數/fork 122/25 有人收藏過 有多少人在正式環境用
open issues 0 GitHub 上沒有待處理的 issue 專案沒問題,或問題都在 Gitee
Releases 0 筆,只有 tag v1.7.3、v1.7.2、v1.7.1 版本是用 tag 標的 每版改了什麼,沒有 release notes 可對
最後 push 2026-10-16 查詢日 19 天前還有動靜 之後會不會持續
授權/狀態 Apache-2.0,未封存 商用條款是常見的那種 專案接下來的路線
.java 檔數 253 個(預設分支 test) 程式碼量不算少 品質、測試覆蓋

預設分支叫 test,別因為名字像測試用的分支就略過它。建立日是 2024-03-21。

筆記裡的目錄,和我讀不出來的

README 自己把定位比成:「EasyAi對於Java的用處,等同於在JavaWeb領域spring的意義一樣」。我不同意這個比法。Spring 是把物件接起來的容器,easyAi 照 README 列的內容,是一個演算法工具箱,兩者解的不是同一種問題。這是我的比喻判斷,不是 README 說的。

README 列出的功能是圖像目標檢測與人工智能客服兩個模組,另有深度學習、機器學習、強化學習、啟發式學習、矩陣運算這些底層工具。圖像部分的示例是自動販賣機視覺結算與圖像摳圖;人臉識別與智能客服,則是指向外部倉庫(seeFace、easy-ai-face、sayOrder)。所以那個後台如果想要的是人臉識別或客服,那一塊在別的倉庫,不在這個 repo 裡。

至於 253 個 .java 檔裡面有什麼,下面是我筆記整理的套件目錄,我只重驗了檔案總數與 pom 這兩項,其餘沒有逐項重驗:nerveCenter、nerveEntity、batchNerve、conv、resnet(含 FPN)、unet、yolo(FastYolo)、naturalLanguage、transFormer、rnnNerveCenter、recommend(GNN)、td、gameRobot、pso、matrixTools,以及 NMS、SoftNMS(1.7.3 新增)與 Watershed。

筆記裡還有幾條是讀簽名與原始碼判讀出來的,全部沒跑過:神經元是 Java 物件,靠 eventId 傳訊(SensoryNerve.postMessage);NerveManager 的建構子有十餘個參數;CudaMatrix 是介面,用 ServiceLoader 載入,筆記判讀這個倉庫裡沒有實作,找不到時退回 CPU。這幾條我當閱讀線索看,不當事實。尤其最後一條,退回 CPU 的行為我沒執行過,更不知道速度差多少。

README 還把入門資料指向 B 站影片、官網 myeasyai.cn 與 Gitee 上的 demo 倉庫,這三處我都沒讀。它另外寫入門與實戰教程「將於2027年春由清華大學出版社出版」,這是 README 的自述,出版社那端我沒查證。

回到那個後台

那個團隊今天的選項,我自己會這樣排:先不排進工期。

我的立場是,easyAi 現在最有價值的身分是一份可以讀的 Java 原始碼,而不是一個能放進交付清單的元件。理由很具體:貢獻次數集中在一個帳號,GitHub 上沒有 release notes,我沒有任何一個準確率或速度的數字,也沒看到任何能在自己資料上重現的結果。這四件事只要缺一件,我就不敢替一個真實後台背書。

會讓我改變想法的條件也很具體:有人拿自己的資料在隔離的小專案裡,把 demo 倉庫的範例跑出可重現的結果並公開;或是我在 Gitee 那邊看到 issue 有被回應的紀錄(我沒看過)。兩者出現任一,我就會把它從「讀」升級成「試」。

如果非要動手,我會拿一張真實的圖或一份真實的表,在獨立的 Maven 專案裡跑一次,跑不出來就停,連同 JDK 與 Spring Boot 版本一起記下來。這是我的計畫,我還沒做。

pom 裡沒有 dependency,只能證明它沒宣告。那個後台真正缺的,是有人替它跑過一次。