将 Git 仓库转化为 LLM 友好的文本摘要 CLI 工具,支持 Web 访问和浏览器扩展,用于代码审查与 LLM 辅助开发场景。
项目概述#
Gitingest 是一个开源工具,旨在解决大语言模型(LLM)在处理代码任务时缺乏完整代码库上下文的问题。它能够解析本地目录或 GitHub 仓库,生成包含目录树和代码内容的单一文本文件,并自动估算 Token 数量。
项目信息:
- 维护者:Filip Christiansen (cyclotruc)
- 组织:coderamp-labs
- 最新版本:v0.3.1 (2025年7月)
- 开发状态:Alpha (3)
- 贡献者:59+
核心能力#
输入源支持#
- 本地目录:直接解析本地文件系统路径
- GitHub URL:支持仓库地址、特定分支、Tag、Commit 或子目录 URL
- 私有仓库:通过 GitHub Personal Access Token (
--token) 授权访问 - Git 子模块:通过
--include-submodules选项包含子模块内容
输出特性#
- 结构化摘要:包含项目统计(文件数、大小)和目录树结构
- Prompt 优化:输出格式专为 LLM 上下文窗口设计,减少冗余信息
- Token 估算:使用
tiktoken预估内容的 Token 消耗 - 灵活输出:默认输出到
digest.txt,支持自定义文件名或 STDOUT
使用方式#
命令行 (CLI)#
# 安装
pip install gitingest
# 或推荐使用 pipx
pipx install gitingest
# 基础用法
gitingest /path/to/directory
gitingest https://github.com/coderamp-labs/gitingest
# 输出到控制台
gitingest https://github.com/username/repo -o -
# 访问私有仓库
gitingest https://github.com/username/private-repo --token ghp_xxxx
Python SDK#
from gitingest import ingest, ingest_async
# 同步调用
summary, tree, content = ingest("path/to/dir")
# 异步调用
result = await ingest_async("path/to/directory")
Web 界面#
- 直接访问
https://gitingest.com/owner/repo - URL 技巧:将任意 GitHub URL 中的
hub替换为ingest即可获得对应的文本摘要
部署选项#
Docker#
docker build -t gitingest .
docker run -d -p 8000:8000 gitingest
# 或使用 Docker Compose
docker compose --profile prod up -d
服务器依赖#
pip install gitingest[server]
环境变量配置#
基础配置:
GITHUB_TOKEN:GitHub Personal Access TokenALLOWED_HOSTS:允许的主机名列表
监控与日志:
GITINGEST_METRICS_ENABLED:启用 Prometheus 指标服务器GITINGEST_METRICS_HOST/GITINGEST_METRICS_PORT:指标服务器配置GITINGEST_SENTRY_ENABLED/GITINGEST_SENTRY_DSN:Sentry 错误追踪
S3 存储:
S3_ENDPOINT、S3_ACCESS_KEY、S3_SECRET_KEY、S3_BUCKET_NAME、S3_REGION
技术实现#
- 语言:Python (81.4%), Jinja (10.0%), JavaScript (7.3%)
- Web 框架:FastAPI
- 前端:Tailwind CSS, Jinja2 模板
- Git 交互:GitPython
- Token 计算:tiktoken
浏览器扩展#
- Chrome:提供官方扩展,一键在 GitHub 页面生成摘要
- Firefox:提供官方扩展支持
适用场景#
- LLM 辅助编程:快速为 ChatGPT、Claude 等提供整个项目的上下文
- 代码审查:生成项目的轻量级文本快照,便于存档或审查
- 知识库构建:将代码库转换为文本,作为 RAG 系统的数据源
- 代码迁移分析:分析源代码库结构,辅助迁移决策