# pack-my-code：为LLM prompt优化的极简代码打包工具

> 一款轻量级二进制工具，支持智能过滤、多格式输出和剪贴板集成，专为将代码项目打包发送给大语言模型而设计。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-04-28T07:16:18.000Z
- 最近活动: 2026-04-28T07:26:33.050Z
- 热度: 150.8
- 关键词: code packaging, LLM prompt, developer tools, CLI, gitignore, markdown, YAML, clipboard
- 页面链接: https://www.zingnex.cn/forum/thread/pack-my-code-llm-prompt
- Canonical: https://www.zingnex.cn/forum/thread/pack-my-code-llm-prompt
- Markdown 来源: ingested_event

---

## 开发者的新痛点：如何优雅地把代码发给AI\n\n随着ChatGPT、Claude、Gemini等大语言模型在编程辅助领域的普及，开发者们逐渐养成了一个新习惯：把代码片段或整个项目丢给AI，让它帮忙找bug、写文档、做重构或解释逻辑。但这里有一个看似简单却经常被忽视的问题——如何把代码以AI最容易理解的方式组织起来？\n\n直接复制粘贴多个文件？容易遗漏上下文。手动整理成Markdown格式？费时费力。使用传统的压缩包？AI无法直接阅读二进制格式。于是，一个专门为此场景设计的工具应运而生：pack-my-code（简称pmc）。\n\n## 项目简介：pack-my-code是什么\n\npack-my-code是由Water-Run开发的一款极简主义代码打包工具，以单二进制文件形式分发（使用luainstaller打包）。它的设计目标非常明确：帮助开发者快速将项目代码整理成适合发送给大语言模型的格式。\n\n与通用的文件压缩工具不同，pmc深度理解开发者的实际需求。它默认遵循.gitignore规则自动排除依赖目录和构建产物，支持多种输出格式（Markdown代码块、纯文本、YAML结构），还能直接将结果复制到系统剪贴板或写入指定文件。这些特性使得它成为构建LLM提示词（prompt）时的得力助手。\n\n## 核心功能与使用方式\n\n### 基础用法：一键打包当前目录\n\n安装完成后，最简单的用法是进入项目目录，执行`pmc .`命令。工具会自动扫描当前目录下的所有文本文件，将内容按Markdown代码块格式输出到终端。整个过程无需任何配置，开箱即用。\n\n对于更常见的场景——将代码发送给AI，可以使用`pmc . -c`命令，直接将打包结果复制到系统剪贴板。在Windows上，这使用系统内置的`clip`命令；在Linux上，则自动检测并使用`xclip`、`xsel`或`wl-copy`等工具。\n\n### 智能过滤：包含与排除\n\npmc提供了灵活的过滤机制。使用`-m`参数可以指定只包含特定文件或目录，例如`pmc . -m \"src/,*.py\"`只打包src目录下的Python文件。使用`-x`参数则可以排除特定模式，例如`pmc . -x \"*.log,node_modules/\"`会跳过日志文件和node_modules目录。\n\n值得注意的是，`-m`的优先级低于`-x`，即使文件匹配了包含模式，如果同时也匹配了排除模式，仍然会被跳过。这种设计让复杂的过滤规则变得直观可控。\n\n### 多种输出格式与路径显示\n\n工具支持三种内容包装模式（通过`-w`参数指定）：\n\n- **md**（默认）：使用Markdown代码块包装，适合直接粘贴到支持Markdown的AI对话界面\n- **block**：使用自定义"block"格式包装\n- **nil**：不添加任何包装，保持原始内容\n\n路径显示也有三种模式（通过`-p`参数指定）：相对路径（默认）、仅文件名、绝对路径。开发者可以根据AI对文件结构的理解需求灵活选择。\n\n### YAML模式：结构化输出\n\n对于需要更精细控制的场景，pmc提供了YAML模式（`-y`参数）。在这种模式下，输出不再是简单的文本拼接，而是使用YAML的树状层级结构来组织内容。每个文件作为一个节点，包含路径和内容两个字段。\n\nYAML模式特别适合需要后续程序化处理的场景，或者当AI需要明确理解文件之间的层级关系时。需要注意的是，YAML模式下`-t`（树结构）、`-s`（统计信息）、`-w`（包装模式）、`-p`（路径模式）等参数不可用，因为YAML本身已经内置了这些结构信息。\n\n## 技术特性与边界处理\n\n### 自动跳过大文件和二进制文件\n\npmc内置了合理的边界保护机制：大于1MB的文件会被自动跳过，已知的二进制格式文件也会被排除。此外，任何包含空字节的文件都会被视为二进制文件而跳过。这些规则确保了输出结果的可读性和实用性，避免AI被无意义的数据淹没。\n\n### 非Git环境的支持\n\n默认情况下，pmc使用git来读取.gitignore规则。如果项目不在Git仓库中，或者环境中没有安装Git，可以使用`-r`参数启用"原始模式"，直接扫描文件系统而忽略.gitignore。这让工具在非Git项目或CI/CD环境中同样可用。\n\n### 输出重定向与剪贴板集成\n\n`-o`参数允许将结果直接写入指定文件，例如`pmc . -o context.md`。`-c`参数则复制到剪贴板。两者可以组合使用，实现"既保存到文件又复制到剪贴板"的便利操作。当指定了`-o`或`-c`时，标准输出会被静默，避免终端显示冗余内容。\n\n## 典型使用场景示例\n\n### 场景一：快速获取项目概览\n\n假设你想让AI快速了解一个项目的结构，可以执行：`pmc . -t -s`。这会先输出项目的树状目录结构，然后是统计信息（文件数量、总字符数等），最后是各个文件的内容。AI可以据此快速建立对项目整体架构的认知。\n\n### 场景二：聚焦核心源码\n\n当你只想让AI分析核心业务逻辑，排除测试文件和配置文件时，可以执行：`pmc . -m \"src/\" -x \"*_test.py,*.config.js\" -c`。这会只打包src目录下的文件，同时排除测试文件和配置文件，结果直接复制到剪贴板。\n\n### 场景三：生成结构化数据供程序处理\n\n如果你需要将项目代码导入到某个自动化流程或知识库系统中，可以使用YAML模式：`pmc . -y -o project.yaml`。生成的YAML文件可以被Python、JavaScript等语言轻松解析，用于后续的索引、分析或转换操作。\n\n## 与同类工具的对比\n\n市面上已有一些类似的代码打包工具，如`gpt-repository-loader`、`repo2txt`等。相比之下，pack-my-code的优势在于：\n\n1. **单二进制分发**：无需Python、Node.js等运行时环境，单个可执行文件即可运行\n2. **原生剪贴板支持**：跨平台的剪贴板集成，无需手动复制文件内容\n3. **轻量级设计**：功能聚焦，学习成本低，命令行参数直观易懂\n4. **灵活的过滤语法**：支持简单的通配符匹配，满足大多数过滤需求\n\n当然，如果你的需求涉及复杂的代码分析（如提取函数签名、生成调用图），pmc可能显得过于简单。但对于"把代码发给AI"这个核心场景，它的简洁恰恰是一种优势。\n\n## 局限性与注意事项\n\npmc的设计哲学是"简单够用"，因此也存在一些明确的局限：\n\n- **通配符语法有限**：仅支持`*`、`?`和`**`，不支持`{}`或`[]`等高级glob表达式\n- **依赖外部剪贴板工具**：Linux用户需要确保已安装xclip、xsel或wl-clipboard之一\n- **仅支持UTF-8编码**：假设所有文本文件都是UTF-8兼容的\n- **无内置压缩功能**：输出是纯文本，如果需要减小体积，需要配合外部压缩工具\n\n此外，对于非常大的代码库（如数百万行的单体应用），建议结合`-x`参数排除非核心目录，或使用`-m`参数指定特定模块，避免生成过大的输出。\n\n## 结语：小工具解决真问题\n\npack-my-code是一个典型的小而美的开发者工具。它没有试图成为全能的代码分析平台，而是精准聚焦于"将代码项目打包发送给LLM"这一具体场景，提供了恰到好处的功能集合。对于频繁使用AI辅助编程的开发者来说，它能够有效减少重复性的格式整理工作，让注意力回归到真正重要的代码本身。\n\n如果你经常需要把代码片段或项目结构发给ChatGPT、Claude或其他AI助手，不妨给pack-my-code一个尝试。简单的命令，清晰的输出，或许能让你的AI协作流程更加顺畅。
