综合介绍
code2prompt 是一个开源的命令行工具,由开发者 Mufeed VH 创建并托管在 GitHub 上,旨在帮助用户将整个代码库快速转换为适合大语言模型(LLM)的提示(prompt)。它通过遍历代码目录、生成源代码树结构并整合文件内容,生成格式化的 Markdown 输出,支持用户直接用于代码分析、文档生成或功能改进等任务。该工具支持 Handlebars 模板定制、token 计数统计以及 Git 差异整合,特别适合开发者利用大模型(如 ChatGPT 或 Claude)处理复杂代码库。无论是优化性能、查找漏洞还是生成提交信息,code2prompt 都能大幅提升效率。截至 2025 年 3 月 3 日,该项目已有超过 4500 个星标,显示出其在开发者社区中的广泛认可。
功能列表
- 代码库转换:将指定目录的代码文件整合为单一 LLM 可读的提示。
- 源代码树生成:自动生成代码目录的树状结构,便于理解项目布局。
- 模板定制:通过 Handlebars 模板自定义输出格式,支持多种使用场景。
- Token 计数:统计生成提示的 token 数,确保适配不同模型的上下文限制。
- Git 集成:支持添加 Git diff 和 log,展示代码变更历史。
- 文件过滤:支持 glob 模式过滤文件,忽略无关内容如 .gitignore。
- Markdown 输出:生成结构化的 Markdown 文档,方便直接上传至 LLM。
- 跨平台支持:在 Linux、macOS 和 Windows 上运行稳定。
- 剪贴板支持:自动将生成的提示复制到剪贴板,提升操作效率。
使用帮助
安装流程
code2prompt 是用 Rust 编写的命令行工具,安装过程简单,支持多种方式。以下是详细步骤:
方法 1:通过源码安装
- 前提条件:确保系统中已安装 Rust 和 Cargo(Rust 的包管理器)。可以通过以下命令检查:
rustc --version cargo --version
如果未安装,可访问 Rust 官网 下载并安装。
2. 克隆仓库:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt
- 编译与安装:
cargo build --release
编译完成后,可在
target/release/
目录下找到code2prompt
可执行文件。 - 移动到全局路径(可选):将文件移动到系统路径以便全局调用,例如:
sudo mv target/release/code2prompt /usr/local/bin/
方法 2:通过预编译二进制文件
- 访问 GitHub Releases 页面,下载适合你操作系统的最新版本二进制文件(如
code2prompt-v2.0.0-linux-x86_64
)。 - 解压并赋予执行权限:
chmod +x code2prompt
- 移动到全局路径(可选):
sudo mv code2prompt /usr/local/bin/
方法 3:通过 Nix 安装
如果你使用 Nix 包管理器,可以直接安装:
# 无 flakes
nix-env -iA nixpkgs.code2prompt
# 有 flakes
nix profile install nixpkgs#code2prompt
使用方法
安装完成后即可通过命令行运行 code2prompt
。以下是主要功能的详细操作流程:
1. 基本使用:生成代码库提示
假设你有一个代码目录 /path/to/codebase
,运行以下命令:
code2prompt /path/to/codebase
- 输出将包含源代码树和所有文件内容,默认以 Markdown 格式生成并复制到剪贴板。
- 示例输出:
Source Tree:
dir/
├── file1.rs
└── file2.py`dir/file1.rs`: <文件内容>
2. 自定义模板
code2prompt 提供内置模板(如生成 git 提交信息、文档注释等),位于安装目录的 templates/
文件夹中。你也可以创建自定义模板。例如,使用 document-the-code.hbs
添加文档注释:
code2prompt /path/to/codebase -t templates/document-the-code.hbs
- 自定义模板需遵循 Handlebars 语法,变量包括
absolute_code_path
(代码路径)、source_tree
(源代码树)和files
(文件列表)。
3. Token 计数与编码选择
查看生成的提示 token 数,支持多种分词器:
code2prompt /path/to/codebase --tokens -c cl100k
- 可选分词器:
cl100k
(默认)、p50k
、p50k_edit
、r50k
。
4. Git 集成
添加 Git diff(已暂存文件):
code2prompt /path/to/codebase --diff
比较两个分支的差异:
code2prompt /path/to/codebase --git-diff-branch "main, development"
获取分支间的提交日志:
code2prompt /path/to/codebase --git-log-branch "main, development"
5. 文件过滤
排除特定文件或目录:
code2prompt /path/to/codebase --exclude "*.log" --exclude "tests/*"
仅包含特定文件:
code2prompt /path/to/codebase --include "*.rs" --include "*.py"
6. 保存输出
将结果保存为文件而非仅复制到剪贴板:
code2prompt /path/to/codebase -o output.md
操作示例
假设你想为一个 Python 项目生成性能优化建议:
- 运行命令:
code2prompt /path/to/project -t templates/improve-performance.hbs -o prompt.md
- 将
prompt.md
内容上传至 Claude 或 ChatGPT,输入:“根据这个代码库,提出性能优化建议。” - 获取模型返回的优化方案,如循环优化、内存管理建议等。
注意事项
- 如果剪贴板功能在某些系统(如 Ubuntu 24.04)失效,可输出到终端并手动复制:
code2prompt /path/to/codebase -o /dev/stdout | xclip -selection c
- 检查
.gitignore
文件,确保无关文件被正确忽略(可用--no-ignore
禁用)。
通过以上步骤,你可以快速上手 code2prompt,轻松将代码库转为大模型可用的提示,完成从分析到优化的全流程。