gitingest 在 Jupyter Notebook 中如何调用 ingest_async 提取代码库?
2026/9/15 21:38:11 网站建设 项目流程

gitingest 在 Jupyter Notebook 中如何调用 ingest_async 提取代码库?

【免费下载链接】gitingestReplace 'hub' with 'ingest' in any GitHub URL to get a prompt-friendly extract of a codebase项目地址: https://gitcode.com/GitHub_Trending/gi/gitingest

如果你需要在 Jupyter Notebook 里把一个 Git 仓库或本地目录转成适合 LLM 消费的文本摘要(而不是走命令行),gitingest 的 Python 包提供了异步入口ingest_async:传入仓库 URL 或本地目录路径,运行后得到summary(仓库统计摘要)、tree(目录结构)、content(各文件内容)三个字符串。使用前提是 Python 3.8+ 环境(README「Requirements」一节),并通过pip安装了 gitingest 包。

准备条件:在 Notebook 环境中安装并确认 gitingest

在 Notebook 对应 kernel 能访问的 Python 环境中安装:

pip install gitingest

文档给出的验证方式(来自 llms.txt「Installation Verification」)是在 shell 中执行:

python -c "from gitingest import ingest; print('GitIngest installed successfully')"

如果在 Notebook 内验证,直接确认导入成功即可:

from gitingest import ingest_async

导入不报错,说明当前 kernel 的 Python 环境里 gitingest 已可用。

在 Notebook 单元格中直接 await ingest_async

gitingest 包同时导出ingest(同步封装)和ingest_async(异步实现),两者见 入口文件。README「Jupyter notebook usage」给出的调用方式是在单元格中直接await

from gitingest import ingest_async # Use await directly in Jupyter summary, tree, content = await ingest_async("path/to/directory")

README 的解释是:Jupyter notebooks are asynchronous by default,所以单元格内可以直接await,不需要像普通脚本那样包一层asyncio.run。作为对照,README「Python package usage」展示普通脚本里的异步用法是:

from gitingest import ingest_async import asyncio result = asyncio.run(ingest_async("path/to/directory"))

source参数既可以是本地目录路径,也可以是仓库 URL,包括指向子目录的 URL 形式:

summary, tree, content = await ingest_async("https://github.com/coderamp-labs/gitingest") summary, tree, content = await ingest_async("https://github.com/coderamp-labs/gitingest/tree/main/src/gitingest/utils")

返回值与结果验证

ingest_async返回(summary, tree, content)元组,三者都是字符串:

  • summary:仓库或目录的统计信息(仓库名、文件数、token 估算);
  • tree:树状的目录结构文本;
  • content:各文件的文本内容,按文件分段。

文档给出的输出结构示例(来自 llms.txt 的 Usage Example,以下为文档示例,不代表你本地一定得到相同数值):

Repository: octocat/hello-world Files analyzed: 1 Estimated tokens: 29
Directory structure: └── octocat-hello-world/ └── README
================================================ FILE: README ================================================ Hello World!

在 Notebook 里验证时,运行单元格后确认三个变量均为字符串即可;需要完整文本时,文档示例的做法是把三段拼起来:

full_context = f"{summary}\n\n{tree}\n\n{content}"

注意 README 说明:Python 包调用默认不会把结果写到文件,只有显式传output参数才写文件(见下节)。

常用参数:私有仓库、分支、过滤与输出

以下参数均定义在 entrypoint.py 的函数签名与 docstring 中,Notebook 单元格里以关键字参数传入:

summary, tree, content = await ingest_async( "https://github.com/username/private-repo", token="github_pat_...", # 私有仓库的 PAT;也可以改用 GITHUB_TOKEN 环境变量 branch="main", # 克隆并分析的分支(默认用仓库默认分支) tag=None, # 指定 tag;tag 与 branch 同时给出时 tag 生效 include_patterns="*.py", # 只包含匹配的文件 exclude_patterns="*.log", # 排除匹配的文件 max_file_size=10 * 1024 * 1024, # 单个文件最大大小,超过则被忽略(默认 10 MB) include_submodules=False, # 是否递归包含 Git 子模块 include_gitignored=False, # 是否包含 .gitignore/.gitingestignore 忽略的文件 output=None, # 结果写文件的路径;"-" 表示写 stdout;None 表示不写文件 )

几个在 Notebook 场景下值得注意的点:

  • 私有仓库:除token参数外,也可以先设置环境变量再调用(README 示例):

    import os os.environ["GITHUB_TOKEN"] = "github_pat_..." summary, tree, content = await ingest_async("https://github.com/username/private-repo")
  • output的三种取值None不写文件(Notebook 内最常用);"-"写到 stdout;其他路径则把treecontent拼接后写入该文件,见 _write_output。

  • 远程仓库的临时克隆source是 URL 时,gitingest 会先克隆仓库、处理完成后删除临时目录(见 _clone_repo_if_remote);本地目录则直接读取,不产生克隆。

  • 默认过滤:不传include_gitignored=True时,.gitignore.gitingestignore列出的文件会被跳过。

可选分支:并行提取多个仓库

llms.txt 的 Python Integration Patterns 中把ingest_async用于批量场景,示例如下(其中的process_repo_dataanalyze_repository等辅助函数是示例代码,需自行实现):

async def batch_analyze_repos(repo_urls: list): tasks = [ingest_async(url) for url in repo_urls] results = await asyncio.gather(*tasks) return [process_repo_data(*result) for result in results]

如果 Notebook 单元格需要跑多个仓库,可以用同样的方式await asyncio.gather(*tasks)拿到每个仓库的(summary, tree, content)

使用边界

  • 文档中的 Jupyter 示例是await ingest_async(...)直接写在单元格顶部语句;这是 README 明确给出的用法("Use await directly in Jupyter")。
  • 超过max_file_size(默认 10 MB)的文件会被忽略,不是报错。
  • 文档没有为 Jupyter 场景额外提供成功判定日志,验证以返回的三个字符串是否符合预期结构为准(可对照上文文档示例输出)。

【免费下载链接】gitingestReplace 'hub' with 'ingest' in any GitHub URL to get a prompt-friendly extract of a codebase项目地址: https://gitcode.com/GitHub_Trending/gi/gitingest

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询