项目上下文快照工具

一个强大的CLI工具,用于生成项目的完整快照,包括目录树和所有文件内容,以便为AI提供上下文。

  • by Akhil-Chaturvedi
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Akhil-Chaturvedi/Context-Snapshot

使用说明

上下文快照

一个强大的CLI工具,可以将项目的完整快照(包括目录树和所有文件内容)生成到一个用于AI上下文的文件中。

为什么使用上下文快照?

在人工智能辅助开发的时代,为ChatGPT、Gemini或Claude等大型语言模型(LLM)提供项目的完整上下文对于获得准确、相关的响应至关重要。手动复制和粘贴单个文件对于大型项目来说是缓慢、不完整和不可持续的。

上下文快照 弥合这一差距。它遍历您的整个项目,智能地将所有相关的源代码捆绑到一个格式良好的文本文件中,并准备将其轻松粘贴到任何AI聊天界面中。

主要特点

  • 完整项目快照: 生成一个详细的目录树,后面是每个包含文件的完整内容。
  • 智能文件排除:
    • 使用 .contextignore 文件(语法与 .gitignore)用于精确控制排除的内容。
    • 如果不 .contextignore 如果找到,请从Python、Node.js和Android项目的内置预设中进行选择。
  • 智能内容处理:
    • 自动检测并跳过二进制文件(图像、可执行文件等)。
    • 整合包含以下内容的目录 仅 将二进制文件转换为输出中一条干净的“跳过”消息。
  • 跨平台: 它是用标准Python编写的,可以在Windows、macOS和Linux上完美运行。
  • .gitignore 集成: 可以自动添加自己生成的文件(project_context.txt, .contextignore)到你的项目 .gitignore 保持存储库的干净。
  • 零依赖性: 使用标准Python安装即可开箱即用。不 pip install 必修的。

安装

由于这是一个没有外部依赖关系的独立脚本,安装就像克隆存储库一样简单。

  1. 克隆存储库:

    git clone https://github.com/Akhil-Chaturvedi/Context-Snapshot.git
    
  2. 导航到以下目录:

    cd Context-Snapshot
    

就是这样!你准备好了。

用法

  1. 从终端运行脚本:
    python context_snapshot.py
    
  2. 脚本将提示您输入要映射的项目文件夹的完整路径。
    --- Context Snapshot Generator ---
    Enter the full path of the folder to map: C:\Users\YourUser\Projects\my-cool-project
    
  3. 如果出现以下情况,请按照屏幕提示配置排除 .contextignore 找不到文件。
  4. 一旦完成,a project_context.txt 文件将在目标文件夹的根目录中创建。现在,您可以打开此文件,复制其全部内容,并将其粘贴到AI助手的提示中。

配置: .contextignore 文件

控制输出的最佳方法是创建 .contextignore 您正在分析的项目根目录中的文件。语法与 .gitignore.

  • 每一行代表一个要忽略的模式。
  • 以开头的行 # 是评论。
  • 使用 * 作为通配符。
  • 以结束模式 / 指定目录。

示例 .contextignore

# Ignore IDE and OS-specific files
.idea/
.vscode/
*.DS_Store
Thumbs.db

# Ignore dependency folders
node_modules/
venv/
.venv/

# Ignore build artifacts
dist/
build/
*.pyc

# Ignore specific files by name
local_secrets.json

# Ignore all log files in a specific directory
logs/*.log

# Exclude a specific file
app/src/main/res/raw/some_asset.xml
C:\Users\YourUser\Projects\my-android-project\app\src\main\res\raw\some_asset.xml

输出示例

给定一个简单的项目结构 project_context.txt 文件看起来像这样:

# Context Snapshot Version: 1.0

PROJECT FILE MAP:
=================
Root: /path/to/my-cool-project
├─ .contextignore [skipped]
├─ data/
│   └─ user_data.dat
├─ main.py
├─ project_context.txt [skipped]
└─ venv/ [skipped]
==============
FILE CONTENTS:
-------
FILE: data/user_data.dat
-------
[Binary file skipped]
-------
FILE: main.py
-------
# main.py
def hello_world():
    print("Hello from Context-Snapshot!")

if __name__ == "__main__":
    hello_world()

贡献

欢迎投稿、问题和功能请求!请随时查看 问题页面.

许可证

该项目根据 GNU通用公共许可证v3.0。请参阅 许可证 文件以获取详细信息。