首頁所有文章關於本站
cover image
發佈 Mar 1, 2025 更新 Apr 29, 2025

Gitingest:把整個專案變成 Prompt

先說結論

如果你平常已經使用 AI 輔助工具進行程式開發(Github Copilot,Cursor,Cline 等),推薦你這個工具,Gitingest 可以將你的整個專案轉換為 AI 友善的 Prompt Context,你可以用這個:

  • 產生專案文件:讓 AI 直接從完整的程式碼內容生成 README、API 文件,甚至是技術規格書。
  • 生成測試程式:AI 可以根據完整的程式碼結構幫你寫測試程式,聽了TDD(測試驅動開發)N年,終於在今年開始寫測試了(淚)。
  • 生成開發計劃:讓 AI 根據上面步驟生成的專案文件和程式碼,再幫我寫開發計劃,終於可以用嘴寫程式了(淚again)。
  • 測試文件驅動開發(TDDD?):結合測試驅動開發(TDD)與文件驅動開發(DDD),讓 AI 先根據開發計劃寫測試,寫完測試寫程式,寫完程式再測試,舒服。

Gitingest能幹麻?

Gitingest 官網:https://gitingest.com/

Gitingest Github:https://github.com/cyclotruc/gitingest

輸出的專案結構長這樣
輸出的專案結構長這樣
輸出的程式碼長這樣
輸出的程式碼長這樣

Gitingest 怎麼用?

Gitingest 官網提供了分析公開 Git Repository 的功能,但我們的專案通常是私有的,無法直接使用這個線上服務。

因此,我們需要安裝他的 Command Line 工具,就能在電腦本地執行 Gitingest 來分析專案內容,這樣就能安全地轉換專案 Context,也不用怕網路服務會不會偷你的程式碼。

你可以透過簡單的指令讓 gitingest 生成專案的 Context,細節你可以看 Gitingest Github 內說明:

gitingest . -o codebase.txt

這個指令會將當前專案的所有程式碼轉換成 codebase.txt,之後就能將這個 Context 提供給 AI 來提升開發體驗。

指令說明

參數說明
.分析當前專案目錄
-i指定要包含的檔案或目錄
-e指定要排除的檔案或目錄
-o gitingest_output.txt分析結果輸出到 gitingest_output.txt

範例指令

  1. 分析專案但排除 node_modules

    gitingest . -e "**/node_modules/**" -o output.txt
  2. 僅分析特定類型的檔案(如 Vue 檔案)

    gitingest . -i "**/*.vue" -o vue_files.txt
  3. 排除測試與構建產物,只保留業務程式碼

    gitingest . -e "**/tests/**" -e "**/dist/**" -o clean_codebase.txt

Gitingest 的實際應用

有了完整的專案 Context 之後,我們可以來做很多事情:

  • 生成 README 文件
    • 讓 AI 根據完整的程式碼內容寫 README。
  • 產生 API 文件
    • 提供後端專案的 Context 給 AI,讓它寫 API 文件。
  • 寫測試
    • 不要再說沒空寫測試了,但我也沒寫過測試,反而是花了一些時間去了解測試程式結構、原理、目的。
  • 測試驅動開發(TDD)
    • 不知道請 Google。
  • 文件驅動開發(DDD)
    • 我找到這份簡報講 DDD ,我有一個大膽的想法:DDD + AI,好像很酷,經過我的實測,「酷到爆!」
    • 懶人如我現在都用嘴巴寫程式,用DDD架構:先跟 AI 聊需求,然後整個專案程式碼 context 丟給他,用那些號稱聰明到爆的 O1、deepseek、sonnet 3.7 都行,叫他去好好想一想,規劃一下後寫個開發計劃,再叫另一個 AI 根據這個開發計劃實作功能

自動化 Gitingest 執行

程式碼會不斷更新,因此 Context 也需要同步更新。如果每次都手動執行 gitingest 來更新 Context,會非常麻煩。因此,我將這個流程寫成一個 Bash 指令,讓它自動執行:

#!/bin/bash
# 定義專案路徑

PROJECT_PATH="你的專案路徑"

# 切換到專案目錄

cd "$PROJECT_PATH"

echo "開始匯出專案程式碼..."

# 執行 gitingest 並輸出到 docs/codebase.txt

gitingest . \\\\
  -i "**/pages/**/*.vue" \\\\
  -i "**/components/**/*.vue" \\\\
  -i "**/layouts/**/*.vue" \\\\
  -i "**/store/**/*.js" \\\\
  -i "**/composables/**/*.js" \\\\
  -i "**/server/**/*.js" \\\\
  -o docs/codebase.txt

echo "專案程式碼匯出完成,檔案已存至 docs/codebase.txt"

這樣,每次git commit後,順便執行這個指令,就能同步專案 Context 是最新的。可以讓它跟git commit一起自動執行更棒

專案產生的內容太大怎辦?

正常專案如果完整匯出的話,內容會非常多,所以匯出指令需要針對你的專案做優化,一些無用的檔案就排除,或是指定特定檔案就好

即使我已經挑重要的檔案了,我剛剛跑的最新結果

整個專案預估 token 數量 300K

現在一般模型的 context window 好像都是 128K,這明顯超過了,我用 cursor、cline 或 Github Copilot 引用整個檔案,是沒問題的,看起來他們應該有再做壓縮或是 RAG 處理,所以就看狀況,我的心得是:

  1. 寫功能、問問題用加法:把檔案直接加入引用參考
  2. 寫文件、跨功能、跨模組、或是要引用很多檔案用減法:直接輸出專案 context

更新:VS Code 外掛,免安裝不要下指令

今天發現一個vscode外掛叫做 Repomix 星星數比 Gitingest 還多 XD
https://github.com/yamadashy/repomix

跟 Gitingest 一樣功能,但他整合到 vscode 內,不用使用指令,也挺方便的,懶得安裝的可以看看,點連結看他操作影片,真香
https://marketplace.visualstudio.com/items?itemName=DorianMassoulier.repomix-runner
 

如果你有什麼想法歡迎與我交流

文章目錄
首頁所有文章關於本站

© 2024 Jackle Chen. All rights reserved.