這是 週末挑戰:熱情特輯 的投稿

我做了什麼

Python 化身是一款桌面應用程式,能分析任何 GitHub 使用者的 Python 程式碼,並顯示出他們身為開發者的特質。只要輸入使用者名稱,它就會抓取其儲存庫、下載 Python 檔案,並顯示其使用的框架、套件、功能與程式碼模式。每個資料點都會連結到 GitHub 上確切的檔案與行數,讓你能直接研究真實的程式碼。

我還加入了 AI 學習路徑功能。當你發現想學習的主題時,只要點擊它,應用程式就會建立反向依賴圖,從該主題逐步回溯到基礎,再一步步教你。這源於我對 ChatGPT 和 Grok 的不滿。它們會以自己認為合適的程度回答,但常常因為我的基礎不夠扎實,導致無法理解答案。這款應用程式先教授先備知識,解決了這個問題。

此應用程式也會將每次分析結果儲存在 Snowflake 中,並將你的程式碼與所有分析過的使用者進行比較。你可以看到自己缺少哪些套件、哪些功能從未使用過,以及接下來應該研究哪些頂尖開發者的儲存庫。

Image

示範

程式碼

🐍 Python 化身

別再猜測該學什麼。開始研究真實的程式碼。

為什麼有這款應用程式

Python 化身是一款桌面應用程式,能分析任何 GitHub 使用者的 Python 程式碼,並顯示出他們身為開發者的特質。只要輸入使用者名稱,它就會抓取其儲存庫、下載 Python 檔案,並顯示其使用的框架、套件、功能與程式碼模式。每個資料點都會連結到 GitHub 上確切的檔案與行數,讓你能直接研究真實的程式碼。

我還加入了 AI 學習路徑功能。當你發現想學習的主題時,只要點擊它,應用程式就會建立反向依賴圖,從該主題逐步回溯到基礎,再一步步教你。這源於我對 ChatGPT 和 Grok 的不滿。它們會以自己認為合適的程度回答,但常常因為我的基礎不夠扎實,導致無法理解答案。

製作方式

架構

此應用程式使用 Electron 建立桌面使用者介面,並以 Python 作為後端。當你輸入使用者名稱時,Electron 會啟動 Python 子程序,從 GitHub API 抓取儲存庫、下載 Python 原始檔,再用 Python 的 ast 模組進行解析。AST 分析器可偵測 15 種以上的 Python 功能,例如情境管理器、非同步函式、資料類別、型別提示、產生器、match 陳述式與海象運算子。針對每個功能,它都會記錄檔案與行號,讓報告能直接連結到 GitHub。

AI 學習路徑使用了 Google AI Studio(Gemini 2.0 Flash)。提示要求 AI 從使用者的主題反向推導,並遞迴找出所有先備知識。輸出為結構化 JSON,包含 4 到 8 個步驟,每個步驟都有摘錄、難度等級、學習時間、常見誤解與精選資源。AI 會挑選真實的標準 URL 而非搜尋連結。若沒有 Google AI 金鑰,則會啟用本地備援機制,為 async、generators、decorators、context managers 等常見主題產生深入的學習鏈。

關於 Snowflake,每次分析都會儲存在使用者自己的資料庫中。應用程式會在首次使用時自動建立資料庫與資料表。「比較自己」功能會查詢所有已儲存的個人檔案,並顯示出其他人使用的套件中你缺少哪些、你從未使用過哪些功能,以及接下來應該研究哪些前五名 Pythonista 的儲存庫。比較結果會快取在 Snowflake 中,避免重複抓取相同資料。快取會記錄你是否使用 GitHub API token,因此之後若新增 token,會以更完整的資料重新抓取。

我還使用了 GitHub API 取得個人資料、儲存庫清單、語言偵測、檔案內容與提交歷史。dev.to API 則會抓取他們標記為 Python 的文章,讓你能從他們撰寫的內容而非只是程式碼中學習。

應用程式也具備一對一比較功能。在任何報告中點擊「與我的個人檔案比較」,即可並排顯示兩個個人檔案。你可以看到自己已熟悉的套件、需要練習的主題,以及值得探索的新概念。比較中的每個主題都可以點擊,並啟動 AI 學習路徑。

獎項類別

  • 最佳使用 Snowflake:每次分析都會儲存在 Snowflake 中。「比較自己」功能會彙總所有已儲存的個人檔案,並將你的程式碼與所有人進行比較。比較結果會快取並附上來源追蹤,因此當你的 API token 狀態改變時,結果會自動更新。

  • 最佳使用 Google AI:AI 摘要、吐槽與學習路徑皆由 Google AI Studio(Gemini 2.0 Flash)提供支援。反向依賴圖提示能產生包含精選資源的結構化 JSON 學習路徑。本地備援機制確保即使沒有 API 金鑰,此功能仍可正常運作。