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

GitIngest 是開源、MIT 授權的 GitHub 儲存庫轉文字工具,網頁版貼上網址幾秒就能產出目錄樹加全文的 LLM 摘要;實測發現每份摘要都會存到不需登入的公開 CDN 網址,私有儲存庫依原始碼也走同一條路,私有或敏感程式碼建議改用本機 CLI,限制更寬、零遙測、程式碼不出門。
用 AI 摘要這篇文章:
把一個 GitHub 儲存庫貼進 gitingest.com,幾秒內就有一份 460 個檔案、估計 385.6k tokens 的純文字摘要,目錄樹和每個檔案的完整內容都在裡面,直接就能塞進 Claude 或 ChatGPT 的上下文。這是 GitIngest 做的事,開源、MIT 授權,網頁版免登入。不過在實測的過程裡,有個行為比「快」更值得先講:這份摘要不只給你看,它還會被放到一個不需要登入的公開網址上,而且依原始碼的寫法,這條路對私有儲存庫沒有例外。
先說工具本身。GitIngest 在 2024 年 11 月由法國開發者 Romain Courtois 開源,專案描述一句話講完:把 GitHub 網址裡的 hub 換成 ingest,就能拿到整個程式碼庫的提示友善文字檔(prompt-friendly extract)。星光不算小,GitHub 上有超過 15,000 顆星、1,100 多個 fork。它有三個使用表面:gitingest.com 網頁版、pip 裝的命令列工具,以及 Chrome、Firefox 兩家商店都上架的瀏覽器擴充。三個表面共用同一套 Python 引擎,體驗與邊界卻差很多。

網頁版的使用方式沒有門檻:首頁貼上儲存庫網址,按 Ingest,等結果。我拿 tom-draper/api-analytics 這個中等規模的專案實測,從送出到 API 傳完整摘要,3.2 秒;這次命中站方快取,冷提取會更久。
產出的格式是給 LLM 設計的,結構固定三層。開頭是統計摘要,列出儲存庫名稱、commit 編號、分析的檔案數、估計 token 數;接著是目錄樹,純文字的樹狀圖把整個專案結構攤開,讀模型一眼就能對照檔案之間的相對位置;最後逐檔輸出,每個檔案用一條分隔線標明檔名,後面接完整內容。餵給聊天機器人的時候不需要再整理,貼上就通。

實際輸出長什麼樣,拿測試裡的一段來看最有感覺。目錄樹部分長這樣:
Directory structure:
└── tom-draper-api-analytics/
├── README.md
├── CONTRIBUTING.md
├── LICENSE
├── analytics/
│ ├── csharp/
│ ├── go/
│ └── python/
逐檔內容則是每個檔案前掛一條等號分隔線加檔名,模型讀到的邊界非常清楚,不會把兩個檔案的程式碼黏在一起解讀。
token 估計這個數字比看起來有用。餵素材給模型的第一個現實問題永遠是上下文長度預算:同樣一個專案,摘要告訴你 385.6k tokens,你就知道一次塞不進多數模型的免費上下文額度,該用篩選砍掉文件與測試資料,或者只取子目錄再分批問。摘要頁本身就是個預算表,先看數字再決定怎麼餵,比貼了才發現被截斷省事得多。子目錄提取是現成功能,GitHub 網址列到 /tree/分支/路徑 再貼進來,就只處理那個子目錄,命令列吃同樣格式的網址,儲存庫很大但你只關心一個模組時特別好用。
首頁也內建幾個好用的篩選。Exclude 欄位可以排除特定副檔名或目錄,例如把文件檔跟測試資料剔掉只留程式碼;反向的 Include 也行。檔案大小滑桿預設在 50kB,超過的檔案不會進摘要。這個預設值有個小陷阱:伺服器端的備援預設其實是 5MB,命令列版又是 10MB,三個表面三種預設,遇到大檔案被靜默略過時,記得先檢查這個欄位。
有個更快的入口是網址替換。在任何 GitHub 儲存庫頁面把網址裡的 github.com 換成 gitingest.com,直接就是該儲存庫的摘要頁,少一次貼上。實測這條路也通。首頁也內建 FastAPI、Flask、Excalidraw 等範例儲存庫,一鍵填入網址。錯誤處理相當透明,我餵了一個不存在的儲存庫,得到的錯誤訊息是 git 指令的原始輸出,連 stdin 讀不到帳號這種細節都如實奉送,除錯時不用猜。
它也不是只繞著 GitHub 轉。解析器認得 gitlab.com、bitbucket.org 這些常見的 Git 平台,連自建的 git.example.com、企業版 github.company.com 這類子網域都有對應的判斷規則;公司程式碼放在自架 GitLab 上的團隊,用 CLI 直連內部網址一樣能提取,這也再次指向同一個結論:內部程式碼走本機,別往別人的伺服器送。
接下來是整個實測裡最該知道的一件事。
完成提取後,頁面上的 Download 按鈕指向的不是 gitingest.com 自己,而是一個 CloudFront 網址,路徑開頭是 d66xu0hf46sfg.cloudfront.net。我把這個網址在乾淨的連線環境裡直接抓,HTTP 200,完整的 1.36MB 摘要全文,不需要任何登入或憑證。路徑格式是 ingest/網域/擁有者/儲存庫/commit 編號/篩選條件雜湊/檔名.txt,同時還有一份把 .txt 換成 .json 的詮釋資料檔,同樣公開,同樣拿得到。
更有意思的是時間戳。我在 9 月底做的這次提取,拿到的檔案上次修改時間卻是 4 月 19 日,比我早五個多月,由先前某次相同條件的提取產生。也就是說這個快取是跨使用者共享的:任何人先提取過,後面的人都直接命中同一個檔案,我的請求根本沒有觸發重新 clone。實際的留存政策對外沒有文件,我能確認的下限是至少五個月,而且沒有看到任何清理機制的蹤跡。
對公開儲存庫來說,這只是快取策略,內容本來就是公開的,還順帶省了重複 clone 的成本,工程上完全合理。問題出在它對所有提取一視同仁。
網頁版支援私有儲存庫,只要在表單裡填 GitHub 個人存取權杖(PAT)。輸入框旁邊列了四個承諾:權杖不會存在後端、只用於 clone 一次、用完即從記憶體丟棄、不做瀏覽器快取、clone 下來的儲存庫處理完就刪。逐條算下來宣稱是四點,條列其實塞了五個保證,這個細節本身就值得玩味。
這些承諾在原始碼裡都成立:清理函式在處理成功與失敗兩條路徑上都會執行 shutil.rmtree,把暫存目錄整個移除;權杖也沒有落地寫入任何儲存。權杖的風險在另一層:clone 失敗時的錯誤訊息會把含憑證的完整 git clone 指令原樣包進去,指令裡的 Authorization 標頭可以還原出權杖;而透過 GET 端點呼叫時權杖是放在查詢字串裡的,這兩個位置都會進伺服器日誌。這不是理論推演,2026 年 9 月初有人開 issue 實名檢舉這件事,編號 #605,至今沒有任何維護者留言,也沒有修復。
真正沒被承諾涵蓋的,是輸出那一側。在原始碼 query_processor.py 的 _store_digest_content 函式裡,決定要不要把摘要上傳到公開 S3 的判斷只有一條:快取功能是否開啟。沒有「這是私有儲存庫所以不上傳」的例外分支。而前面的實測已經確認,線上的 gitingest.com 這個功能是開著的。兩件事放在一起,結論就是:拿 PAT 在網頁版提取私有儲存庫,產出的摘要依程式碼的路徑會落在同一個不需登入的公開網址上。網址裡有 commit 編號與兩段十六進位雜湊,不知道的人難以猜出完整路徑,但只要網址曾經出現在你的瀏覽紀錄、公司內部文件或任何日誌裡,拿到的任何人都能直接下載整包程式碼,沒有第二道鎖。這一條是程式碼層面的推論;站方有沒有在部署層另外設限,從外部看不到。
承諾沒有說謊,它們只答了「你的權杖安不安全」,而使用者該問的是「我的程式碼摘要最後存在哪」。這兩個問題的答案,一個在輸入側,一個在輸出側,隔著整條處理管線。
命令列版才是這個專案的本體。pip install gitingest 一行裝好,MIT 授權,Python 3.8 以上都能跑,整個提取過程在自己的機器上完成,不經過任何人的伺服器。官方甚至給 AI 代理寫了一份 llms.txt 整合指南,開頭就明講:網頁版是給人用的,自動化請走 CLI 或 Python 套件。
我在本機做了三輪實測,各有各的用途。拿本地目錄測的那輪:15 個 Python 檔案的資料夾,3.45 秒產出 51,476 bytes 的 digest.txt,估計 11.6k tokens。命令列可以直接吃本地路徑,這是網頁版做不到的。吃遠端儲存庫的那輪拿 GitIngest 自己的原始碼,4.78 秒,423,066 bytes,99.4k tokens。測篩選的那輪加上 -i “*.py” 只收 Python 檔,目錄樹立刻乾淨下來。
功能面上命令列版也更寬。單檔上限預設 10MB,是網頁版滑桿預設的兩百倍;.gitignore 裡的檔案預設略過,另有 –include-gitignored 與 –include-submodules 兩個開關;輸出可以用 -o – 直接進 stdout,接著管線丟給別的工具;私有儲存庫用環境變數 GITHUB_TOKEN 或 -t 參數帶權杖,權杖不出本機。它同時是個 Python 套件,from gitingest import ingest 一行就能在自己的腳本或 Jupyter 筆記本裡呼叫,拿到摘要、目錄樹、全文三個字串自行處理。
隱私面的差異同樣明確:命令列路徑沒有任何遙測,而網頁前端載了 PostHog 產品分析,資料送到歐盟的收集端點。前者適合任何程式碼,後者適合你不在意公開的內容。團隊想要網頁版的介面又不想讓程式碼出門,repo 附了 Dockerfile 可以自架在自己機房,自架版的 Sentry 錯誤追蹤預設關閉,要開才開。
想把素材變成 LLM 讀得懂的文字再餵進模型,這個工作流程跟先前介紹過的 Bili2text 把影片變逐字稿、Bili-Hardcore 把一百題測驗交給 LLM 去考,是同一種思路:先解決「模型看不到素材」這一層,再談問答品質。
| 使用表面 | 適合 | 限制 |
|---|---|---|
| gitingest.com 網頁版 | 公開儲存庫的快速取用、不想裝任何東西 | 摘要落在公開 CDN;API 每分鐘 10 次速率限制;頁面顯示裁切在 30 萬字元 |
| 命令列 pip 版 | 私有或敏感程式碼、批次處理、要管線接其他工具 | 要有 Python 環境;單檔上限 10MB、一萬檔、輸出 500MB 的引擎上限 |
| 瀏覽器擴充 | 在 GitHub 頁面上一鍵跳摘要頁 | 第三方維護;功能等同網頁版的入口 |
表裡幾個限制都值得展開一句。速率限制寫在 API 端點的裝飾器上,每分鐘 10 次,大量批次很快就會撞牆。瀏覽器顯示層的裁切是 30 萬字元,超過的部分要下載完整檔案才看得到,付費模型上下文再長也得先下載再貼。擴充功能在 Chrome 商店有 8,000 位使用者、4.9 顆星評價,不過它的原始碼在另一個第三方維護者的儲存庫裡,跟主專案不是同一個作者,安裝前值得知道自己裝的是誰的程式碼。
最後是維護狀態,這裡的落差不小。
GitHub 上 main 分支的最後一個 commit 停在 2025 年 8 月 16 日,而且只是個機器人更新相依套件的提交;PyPI 上最新版 0.3.1 發佈於 2025 年 7 月 31 日,至今十四個月沒有新版本。原作者 cyclotruc 本人的最後一個 commit 是 2025 年 7 月 30 日,前後正好是專案從個人帳號搬進 coderamp-labs 組織的時間點(GitHub 會自動把舊網址轉到新位置,網路上的舊連結不會死),搬遷之後實質開發就停了。儲存庫頁面連的組織網站 coderamp.io 現在是一張沒有網站設定的 404 頁。十四個開著的 pull request 從 2025 年 8 月一路排到 2026 年 8 月,多為相依套件機器人更新,沒有一個被併入;2026 年 6 月到 9 月新開的 issue,包括前面講的權杖外洩,以及分支選擇參數失效這種功能級 bug,都沒有人處理。
但另一側的門面全部活著:gitingest.com 每天照常服務,我的每輪實測都通過,瀏覽器擴充照常在商店上架,README 翻成八種語言、Discord 社群連結也掛著。這種引擎凍結、服務續跑的狀態對使用者是雙面的:既有功能穩定可用,短期內沒有倒站風險的跡象,但也別期待 bug 獲得修復,用到分支選擇這類已知壞掉的功能時只會得到靜默的錯誤行為。
對開發者的實際建議可以收斂成一句話:公開的別人 repo,用網頁版最快;自己的、公司的、任何不想出現在公開網址上的程式碼,花一分鐘 pip 裝命令列版,同一套引擎,限制更寬,程式碼不出本機。日常用途其實比想像中廣:接手陌生專案前先攤平看全貌、請模型審一段自己不熟的模組、幫舊專案補文件與測試,GitIngest 負責的永遠是「把儲存庫變成模型讀得到的一疊文字」這一段。如果這類開源 AI 工具是你的工作日常,先前介紹過的開源 AI 資源清單裡還有同類專案可以對照;想拿它做自動化研究管線的話,搭配 Company Researcher 這類餵網址生報告的工具,位置剛剛好。