懶人包
- 把 GitHub 網址的
hub換成diagram會得到架構圖,換成ingest會得到可以貼給 AI 的純文字。兩個都是 MIT 開源專案,GitHub 星數約 1.86 萬和 1.6 萬。- 我拿
pallets/click實測。gitdiagram 畫出 18 個元件、23 條連線、分成 4 組,網址後面加.md還能拿到 Mermaid 原始碼給 AI 讀。- gitingest 用 CLI 抓整個 repo 是 171 個檔、約 44.3 萬 token;只抓
src/剩 18 個檔、約 10.3 萬 token。網頁版預設只收 50kB 以下的檔,算出來是 22.0 萬 token。- 排除 tests、docs、examples 之後還有 24.8 萬 token,因為一個
uv.lock就有 25.8 萬字元。再排除 lock 檔和 changelog 就降到 11.0 萬。- 公開 repo 直接用這兩個網站。公司私有程式碼用 gitingest CLI 在本機跑,不要把 token 交給第三方網站。
這是 Instagram/Facebook 創作者 hayder.developer 的一支 Reels,我抓到的時候是 65 萬次觀看。影片只講兩件事:任何一個 GitHub 網址,把 github 改成 gitdiagram,就會變成一張架構圖;改成 gitingest,就會把資料夾結構和所有檔案內容攤成一頁,方便貼給 AI。
改網址這一步很好學。我想知道的是做出來的東西能不能用,以及貼給 AI 之前要先處理什麼。所以拿 Python CLI 套件 pallets/click 從頭跑了一遍。
gitdiagram 和 gitingest 是什麼?
改法只動網域,後面的 <owner>/<repo> 不變:
https://github.com/pallets/click
https://gitdiagram.com/pallets/click
https://gitingest.com/pallets/click
| gitdiagram | gitingest | |
|---|---|---|
| 產出 | 互動式架構圖(Mermaid),元件可點到對應檔案 | 摘要+目錄樹+所有檔案內容的純文字 |
| 原始碼 | GitHub repo,MIT,18,611 星 | GitHub repo,MIT,16,049 星 |
| 本機用法 | 自架需要 Bun、Cloudflare R2、Upstash Redis 和 OpenAI 或 OpenRouter key | pip install gitingest,Python 3.8 以上 |
| 私有 repo | 在網站的 Private Repos 填 GitHub token | CLI 加 -t 或設定 GITHUB_TOKEN |
gitdiagram 畫出來的圖能看嗎?
打開 https://gitdiagram.com/pallets/click,這個 repo 已經有人產生過,頁尾寫著 2026-10-29 生成,所以開頁幾秒就出圖。
圖下面列出 18 個元件、23 條連線,元件分成四組:指令執行、應用程式撰寫、CLI 互動、執行期支援。每個方塊都標了對應的檔名,例如 Commands and contexts [core.py]、Argument parser [parser.py],點下去會跳到 GitHub 上的那個檔案。
它不是單純把 import 關係畫出來。上一輪研究我寫了一支小腳本,用正規表示式掃 click 的 import,把模組之間的依賴畫成 Mermaid。結果是 17 個節點、60 條線:
兩張圖用的是同一個 repo。gitdiagram 讀的是檔案樹、README 和部分原始碼,自架時要填 OpenAI 或 OpenRouter 的 key,圖是 LLM 產生的,所以它會把模組分組並幫連線命名,例如 parses arguments、reports conversion errors。純 import 圖的每一條線都是真的,但讀不出哪一塊在做什麼。
gitdiagram 自己也在頁面上說明這是 AI 產生的概觀。用 .md 版本看得最清楚:
curl -s https://gitdiagram.com/pallets/click.md | head -5
# pallets/click architecture
> Architecture diagram of the GitHub repository pallets/click, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-29). It is an AI-made overview: check details against the source.
「a sample of source files」和「check details against the source」這兩句很重要:它只讀了部分原始碼,細節要回原始碼確認。
把架構圖交給 AI 讀
網址後面加 .md,回傳的是 text/markdown。我抓 click 那份是 10,207 bytes,內容有一段概述,加上整張圖的 Mermaid 原始碼。這份東西比截圖更適合貼進對話,AI 讀得到每個節點和連線的文字。
README 另外列了一個不用登入的 MCP server,位址是 https://gitdiagram.com/mcp,只能查公開 repo。README 給的 Claude Code 指令如下,我這次沒有裝:
claude mcp add --transport http gitdiagram https://gitdiagram.com/mcp
gitingest 抓出來的東西多大?
網頁版打開 https://gitingest.com/pallets/click,摘要寫 166 個檔、預估 22.0 萬 token。
網頁上的「Include files under」滑桿預設是 50kB,超過的檔不收。CLI 預設上限是 10MB(-s 參數,單位 bytes),所以同一個 repo 用 CLI 全抓會比網頁版大很多。
安裝與第一次執行
pip install gitingest
gitingest --help
我用的是 gitingest 0.3.1。--help 列出的參數裡,跟控制大小有關的是這三個:
| 參數 | 作用 |
|---|---|
-i, --include-pattern | 只收符合 pattern 的檔 |
-e, --exclude-pattern | 排除符合 pattern 的檔,可以重複給 |
-s, --max-size | 單檔大小上限(bytes),預設 10485760 |
同一個 repo,四種抓法
下面四組都是對 https://github.com/pallets/click 跑的,commit 是 2247b35:
| 指令參數 | 檔案數 | 預估 token |
|---|---|---|
| 不加參數(全抓) | 171 | 442.8k |
-e "tests/*" -e "docs/*" -e "examples/*" | 38 | 248.4k |
再加 -e "*.lock" -e "CHANGES.md" | 36 | 110.2k |
-i "src/*" | 18 | 103.3k |
| 檔案 | 字元數 |
|---|---|
uv.lock | 258,442 |
src/click/core.py | 157,020 |
CHANGES.md | 73,057 |
src/click/types.py | 47,337 |
uv.lock 一個檔就占了三分之一。lock 檔對理解程式沒有幫助,排除它和 changelog 之後,token 從 248.4k 降到 110.2k,跟只抓 src/ 的 103.3k 差不多,但多保留了 README 和 pyproject.toml。
實際用的指令是這行:
gitingest https://github.com/pallets/click \
-e "tests/*" -e "docs/*" -e "examples/*" -e "*.lock" -e "CHANGES.md" \
-o click-lean.txt
Files analyzed: 36
Estimated tokens: 110.2k
要不要貼給 AI,先看最大的幾個檔是什麼。 全抓的 44.3 萬 token 裡,大部分是測試、文件和 lock 檔。
本機資料夾也能跑
gitingest 的參數 SOURCE 可以是網址,也可以是本機路徑。我拿這個部落格 repo 的 src/lib 試:
gitingest ./src/lib -i "*.ts" -o local-lib.txt
Directory: C:/Users/user/workspace/ai-lecturer-bob-fresh/src/lib
Files analyzed: 11
Estimated tokens: 18.8k
這條路不經過 gitingest.com。公司內部 GitLab 的專案先 git clone 到本機,再對資料夾跑 CLI,程式碼就不會上傳到第三方網站。
私有 repo 要注意什麼?
兩個網站都支援私有 repo,做法都是交出 GitHub token。
- gitdiagram:README 寫「Use private repositories with a GitHub token via Private Repos in the header」。
- gitingest 網頁版:表單上有 Private Repository 勾選框。CLI 版是
-t github_pat_...或GITHUB_TOKEN環境變數,README 產生 token 的連結預設勾的是repo權限。
兩個工具怎麼搭配用?
接手一個陌生的開源專案,我的順序是:
gitdiagram.com/<owner>/<repo>先看全貌,知道核心在哪幾個檔。- 想問 AI 細節時,把
gitdiagram.com/<owner>/<repo>.md的 Mermaid 貼進對話當地圖。 - 用 gitingest CLI 只抓相關的目錄,排除 tests、docs、lock 檔,看 token 數再決定要不要縮小範圍。
- 回答裡提到的檔案和函式,回原始碼確認。
.md 自己就寫「check details against the source」,第 4 步不能省。
我之前測過另外兩種讓 AI 讀懂 codebase 的做法:Graphify 省 token 實測 是把程式碼建成知識圖譜,Archify 是用 Claude Skill 在本機畫架構圖並對回行號。如果要畫的是公司私有專案的架構圖,Archify 那篇的做法不用把程式碼交給第三方網站。
常見問題
gitdiagram 和 gitingest 要錢嗎?
我開 click 這個 repo 時,兩個網站都沒有要求登入或付費。兩個 repo 都是 MIT 授權。gitdiagram 的 README 寫明產生新的解說影片目前是 early access。
gitingest 的 token 數準嗎?
摘要上寫的是「Estimated tokens」,是估算值。拿來比較不同過濾條件的大小很好用,實際消耗以你用的模型計費為準。
為什麼網頁版跟 CLI 抓出來的數字不一樣?
網頁版預設只收 50kB 以下的檔,CLI 預設是 10MB。click 在網頁版是 166 個檔、22.0 萬 token,CLI 全抓是 171 個檔、44.3 萬 token。
公司的 GitLab 專案可以用嗎?
可以用 gitingest CLI 對本機資料夾跑,例如 gitingest ./my-project -e "*.lock"。gitdiagram 是對 GitHub 網址運作,GitLab 專案沒辦法用改網址的方式。