跳转到内容

Glob模式过滤器的工作原理

Code2Prompt 使用 glob 模式来包含或排除文件和目录,工作方式类似于 tree 或 grep 等工具。它允许您传递两个独立的 glob 模式列表

  • 包含列表 (--include-i) - “这些模式允许文件”
  • 排除列表 (--exclude-e) - “这些模式禁止文件”

Code2prompt 必须为项目中的每个文件决定是保留还是丢弃。本页面解释了规则以及背后的设计选择。


在整个解释过程中,我们使用通常的集合符号

符号含义
匹配至少一个包含模式的文件集合
匹配至少一个排除模式的文件集合
整个项目树(全集
匹配两个列表的文件(重叠
不匹配任何列表的文件

包含列表排除列表保留的文件
A = ∅B = ∅Ω
A = ∅B ≠ ∅¬B
A ≠ ∅B = ∅A
A ≠ ∅B ≠ ∅A \ B
  1. 没有包含列表,没有排除列表

    如果没有指定模式,则保留所有文件 (Ω)。

  2. 仅排除列表

    在这种情况下,Code2Prompt 充当黑名单,删除匹配排除模式的文件 ( Ω \ B = ¬B)。

  3. 仅包含列表

    如果仅指定包含列表,Code2Prompt 充当白名单,仅保留匹配包含模式的文件 (A)。

  4. 包含排除列表

    如果同时指定了两个列表,Code2Prompt 保留匹配包含模式的文件,但删除匹配排除模式的文件 (A \ B)。


当两个列表都存在时 (A ≠ ∅, B ≠ ∅),对于重叠 C 和其余部分 D, 您有四种逻辑可能性。

需要 C需要 D合理吗?
默认行为 (A \ B)
与情况 3 相同的行为 (A)
令人惊讶(“丢弃我请求的 C,保留我没有请求的”)
与情况 1 相同的行为 (Ω)

正是由于这个原因,--include-priority 选项被删除了。因为这将与只有包含列表(情况 3)的结果相同。

想要保留…使用
一切-i,无 -e
除某些模式之外的一切-e
匹配模式的内容-i
匹配 -i 的内容,减去匹配 -e 的内容-i -e

这种设计保持了心理模型的简单性:

  • 包含列表一旦存在就是白名单。
  • 排除列表是叠加在上面的黑名单。
  • 重叠部分默认被丢弃