使用说明
上下文快照
一个强大的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必修的。
安装
由于这是一个没有外部依赖关系的独立脚本,安装就像克隆存储库一样简单。
-
克隆存储库:
git clone https://github.com/Akhil-Chaturvedi/Context-Snapshot.git -
导航到以下目录:
cd Context-Snapshot
就是这样!你准备好了。
用法
- 从终端运行脚本:
python context_snapshot.py - 脚本将提示您输入要映射的项目文件夹的完整路径。
--- Context Snapshot Generator --- Enter the full path of the folder to map: C:\Users\YourUser\Projects\my-cool-project - 如果出现以下情况,请按照屏幕提示配置排除
.contextignore找不到文件。 - 一旦完成,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。请参阅 许可证 文件以获取详细信息。