作者:互联网 时间: 2026-10-02 09:00:02
实际看csv-quality-gate,先要确认它的用途:csv-quality-gate 是一个命令行数据质量门,运行 CSV 预检验证,在 ML 或 LLM 管道摄取损坏、不完整、重复或垃圾输入之前快速失败。数据与知识处理里,数据结构、更新策略和可追溯性会决定结果是否可信。我会用一份规模可控且答案已知的数据集试跑,检查模式兼容、增量更新、查询结果和来源追踪。它适合需要保留数据来路与变更记录的使用者;采用前仍要看维护状态和试跑结果。

它对 CSV 运行批量质量检查,并在昂贵的管道步骤因错误输入而浪费时间之前返回 pass、warn 或 fail(具有匹配的退出代码)。它会检查是否缺少必需的列、空文件、空的关键单元格、重复的行,以及在 outreach 配置文件下的可疑公司名称模式。团队可以在小型 TOML/JSON 配置中声明自己的列、阈值和模式,每个问题都指向受影响的行号(绝不是单元格值),并且相同的门作为预提交挂钩或 GitHub 操作运行。它仅是 stdlib:没有第三方运行时依赖项。
它的构建目的是解决以下问题:
email和order_id,而不是company。”快速入门(60 秒)
pip install csv-quality-gate
python -c "from importlib.metadata import version; print(version('csv-quality-gate'))" # confirm the installed release
csv-quality-gate check leads.csv --profile outreach
具有缺失列和临界重复率的 CSV 的示例输出:
csv-quality-gate: FAIL
file: leads.csv
profile: outreach
rows: 125
ERROR: missing required column: person_name
WARNING: duplicate rate 12% exceeds warning threshold 10%
evidence: column=company affected=15 rows at line(s) 4, 9, 15, 22, 31 (+10 more)
该进程在通过时退出 0,仅在出现警告时退出 1,在失败时退出 2,因此您可以将其直接连接到 shell 脚本、预提交挂钩或 CI 步骤。
使用附带的装置尝试一下
您可以在将门连接到您自己的管道之前验证该门。来自一个 签出,安装包并运行包含的干净和损坏的输入:
git clone https://github.com/hermes-labs-ai/csv-quality-gate.git
cd csv-quality-gate
python -m pip install .
csv-quality-gate check examples/clean.csv
csv-quality-gate check examples/promptfoo-dataset/tests-broken.csv
--config examples/promptfoo-dataset/csv-quality-gate.toml
--profile promptfoo
第一条命令退出 0 为 PASS;第二个退出 2 有界
断行的行号证据。这提供了首次使用检查,无需
创建示例 CSV 或猜测要选择哪个配置文件和配置。
开发安装
对于日常使用,请按照上面的 快速入门 进行操作。对于一个 源签出、可编辑安装和 lint/test 命令,请参阅 开发如下。
作为特工技能(Claude Code、Codex CLI、Gemini CLI)
存储库根是一个便携式 代理插件
(plugin.json) 运送一项技能 skills/csv-quality-gate/SKILL.md。它
教代理在您命名的 CSV 文件上运行此门并报告
状态和行号证据,无需夸大其词。
| 主持人 | 安装 | 回读 |
|---|---|---|
| 克劳德·科德 | claude plugin marketplace add hermes-labs-ai/csv-quality-gate |
|
claude plugin install csv-quality-gate@csv-quality-gate |
claude plugin list |
|
| OpenAI 法典 CLI | codex plugin marketplace add hermes-labs-ai/csv-quality-gate |
|
codex plugin add csv-quality-gate@csv-quality-gate |
codex plugin list |
|
| 双子座 CLI | gemini extensions install https://github.com/hermes-labs-ai/csv-quality-gate --ref main |
gemini skills list |
| skills.sh | npx skills add https://github.com/hermes-labs-ai/csv-quality-gate --skill csv-quality-gate |
npx skills list |
每位主持人读到的内容:
.claude-plugin/marketplace.json (来源 .)并且
.claude-plugin/plugin.json..agents/plugins/marketplace.json(来源
./,根)和便携式 plugin.json。gemini-extension.json 并发现下面的技能
skills/。保留 --ref main:没有参考,Gemini CLI 安装最新版本
GitHub 发布存档,并发布至 v0.3.0 之前
gemini-extension.json.安装技能不会安装Python包。该技能使用一个
安装 csv-quality-gate 或运行固定版本
uvx csv-quality-gate==0.3.1.
用途
csv-quality-gate check leads.csv
csv-quality-gate check leads.csv --profile outreach
csv-quality-gate check leads.csv --profile generic --json
csv-quality-gate check leads.csv --config csv-quality-gate.toml --profile leads
csv-quality-gate check leads.csv --max-examples 20
csv-quality-gate check data/*.csv
check 的选项:
--profile NAME — 内置配置文件(generic、outreach)或在 --config 中声明的配置文件。--config FILE — 具有项目特定配置文件的 TOML 或 JSON 文件(请参阅 自定义配置文件)。--max-examples N — 每个问题列出了多少受影响的行号(默认 5;0 仅保留计数)。--json — 机器可读的输出。一次调用可以检查多条路径。文本模式每个文件打印一个块, JSON 模式发出一个数组(单个路径保留普通对象),然后退出 code 是文件中最差的状态。
退出代码:
0通行证1 仅警告2 失败(或 2,当文件不存在、不是 UTF-8、配置文件未知或配置无效时)型材
内置配置文件:
generic
company 列、空 company 单元格、重复的 company 值和空文件outreach
company 和 person_name,具有更高的空率容差,并为 GTM/contact 管道添加可疑公司名称启发式每个配置文件的阈值在 src/csv_quality_gate/profiles.py 中定义。
定制配置文件
在 TOML (Python 3.11+) 或 JSON 文件中声明您自己的配置文件并传递它
与 --config。一个可复制的例子位于
examples/csv-quality-gate.toml.
[profiles.leads]
extends = "outreach" # optional: inherit a built-in's columns, patterns, and rates
required_columns = ["email", "company", "person_name"]
critical_columns = ["email", "person_name"]
duplicate_column = "email"
empty_warning_rate = 0.05
empty_fail_rate = 0.20
duplicate_warning_rate = 0.02
duplicate_fail_rate = 0.10
suspicious_column = "email"
suspicious_patterns = ['^[^@]+$'] # case-insensitive regular expressions
suspicious_warning_rate = 0.20
suspicious_fail_rate = 0.50
csv-quality-gate check data/leads.csv --config csv-quality-gate.toml --profile leads
规则:
extends,配置文件开始时没有列,
无模式,以及 generic 阈值。0.0 的比率表示“任何发生”:没有受影响行的检查从不
引发了一个问题,所以干净的文件仍然可以通过。0 和 1 之间的比率以及正则表达式
字符串。未知的密钥、超出范围的比率、高于其失败率的警告率、
无效的正则表达式会被拒绝并带有精确的消息,并且 CLI 返回
正常的 fail 收据(退出 2)而不是回溯。输出
文本模式(默认):
csv-quality-gate: FAIL
file: leads.csv
profile: outreach
rows: 125
ERROR: missing required column: person_name
WARNING: duplicate rate 12% exceeds warning threshold 10%
evidence: column=company affected=15 rows at line(s) 4, 9, 15, 22, 31 (+10 more)
每个空率、重复率和可疑值问题的影响都是有界的
证据:受影响的列、受影响的行总数以及最多
--max-examples 物理行号(标题为第 1 行;引用记录
跨越几行报告其最后一行)。单元格值永远不会被打印,
因此收据可以安全地附加到 CI 日志或票据上。重复的证据点
在第二次和以后出现时,所以这些是要删除的行。
JSON 模式(--json)发出一个带有 path、profile、rows、status 的对象,
issues[]和(当使用--config时)config。每期都有severity
和 message;由行支持的问题添加 evidence 对象:
csv-quality-gate check leads.csv --json
{
"path": "leads.csv",
"profile": "outreach",
"rows": 125,
"status": "fail",
"issues": [
{"severity": "error", "message": "missing required column: person_name"},
{
"severity": "warning",
"message": "duplicate rate 12% exceeds warning threshold 10%",
"evidence": {"column": "company", "total": 15, "rows": [4, 9, 15, 22, 31]}
}
]
}
限制/它不做什么
company 值是否真实,只能判断它们是否存在、唯一,而不是明显的垃圾。outreach 配置文件是固执己见的。其可疑名称模式和阈值是为 GTM 联系人列表选择的,不应被视为普遍事实。company和person_name;使用配置文件做其他事情。何时使用它
何时不使用它
预提交
在提交之前,在暂存的 CSV 文件上运行相同的门。将其添加到
您的 .pre-commit-config.yaml (完整示例位于
examples/pre-commit-config.yaml):
repos:
- repo: https://github.com/hermes-labs-ai/csv-quality-gate
rev: v0.3.1
hooks:
- id: csv-quality-gate
args: [--profile, outreach]
# or: args: [--config, csv-quality-gate.toml, --profile, leads]
该钩子接收每个暂存的 .csv 文件,为每个文件打印一个报告块,
并阻止 warn 或 fail 上的提交,匹配 CLI 退出代码。窄
如果只有一些 CSVs 应该被门控,则它具有预提交的 files: 模式,并且
通过配置文件调整阈值而不是跳过挂钩。
要在固定版本之前尝试从本地结帐挂钩,请指向 结账路径上的配置和提交:
repos:
- repo: /path/to/csv-quality-gate
rev: <commit sha>
hooks:
- id: csv-quality-gate
args: [--profile, outreach]
pre-commit run --config that-file.yaml csv-quality-gate --files data/leads.csv
pre-commit try-repo . csv-quality-gate --files data/leads.csv 也适用于
默认的 generic 配置文件(try-repo 无法通过 hook args)。
CI / GitHub 操作
直接使用此存储库作为复合操作。它安装打包的CLI,
运行选定的配置文件,并始终在以下位置写入 JSON 收据
$GITHUB_WORKSPACE/csv-quality-gate-receipt.json。 status 和 receipt
即使操作因警告或失败而退出,输出仍然可用。
- id: csv_gate
uses: hermes-labs-ai/csv-quality-gate@0b7bf4635b2db468620855e577cd0d9f09f09ec7 # hardened current main; annotations + batch
with:
csv-path: data/leads.csv
profile: leads
config: csv-quality-gate.toml # optional; omit to use built-in profiles
annotate: true # optional; defaults to false
- run: echo "${{ steps.csv_gate.outputs.status }}"
对于一批,请使用 csv-paths,每行一个路径。准确设置其中之一
csv-path 和 csv-paths;该操作故意不接受自由格式的命令
或 shell 参数。
- id: csv_gate_batch
uses: hermes-labs-ai/csv-quality-gate@0b7bf4635b2db468620855e577cd0d9f09f09ec7 # hardened current main; batch support
with:
csv-paths: |
data/leads.csv
data/customers.csv
profile: generic
单文件收据仍然是 JSON 对象。批量收据是一个 JSON 数组
与 csv-paths 的顺序相同,其状态和退出代码反映了最差的情况
文件。行动
返回与 CLI 相同的退出代码:0 表示通过,1 表示警告,2 表示
失败。收据包含与--json相同的有界证据,因此是安全的
作为工作流程工件上传。
如果您的工作流程需要检查,请在调用步骤上使用 continue-on-error: true
在决定如何继续之前输出警告或失败。
设置 summary: true 以将紧凑结果写入 GitHub 操作作业摘要。
它仅包含状态、配置文件、行数和问题数;它从不包括
CSV 路径或单元格值。证据列标签将被省略,除非您还
设置summary-columns: true;仅当这些标签适合时才启用
工作总结。加法 tool-version 和 summary-written 输出
识别已安装的软件包版本以及此调用是否呈现
总结; JSON 收据不变。
每个工作区的收据路径都是固定的,因此不要在其中运行多个实例 在同一工作空间中并行。该操作验证包的现有 CSV 仅启发式;它不添加模式推断、语义验证或 任意 CLI 选项。
设置 annotate: true 以在以下位置添加最多 50 个 GitHub 操作警告或错误
收据支持的 CSV 文件和物理行。注释使用门的现有
仅有界证据并省略单元格值、问题消息和列名称。
签出工作区之外的路径和没有行证据的问题不会
已注释。大于 1 MiB 的收据将被跳过,而不更改门的
状态。这是一个咨询定位辅助工具,而不是安全或 SARIF 报告。
准备复制、提交固定的复合操作工作流程也存在于
examples/github-action.yml.
GitHub 商城
action.yml 携带市场列表所需的元数据(名称、
描述、作者、品牌)。列出是维护者在 GitHub 上采取的步骤
发布形式,而不是存储库自己做的事情;步骤在
正在释放。您是否通过以下方式到达行动
Marketplace 或此存储库,在 uses: 行中使用完整提交 SHA。
食谱
简短的、可复制的设置将门置于特定工具的前面。各用 自定义配置文件,并附带一个可以运行的通过和一个失败的夹具 从结账处:
dbt seed 之前的门 seeds/*.csv。promptfoo eval之前。发展
pip install -e ".[dev]"
ruff check .
python3 -m pytest -q
pre-commit try-repo . csv-quality-gate --files tests/fixtures/clean.csv # optional hook smoke test
适合的地方
csv-quality-gate 保护进入管道的数据;它是代理级和提示级可靠性工具的补充,而不是替代。
更多来自爱马仕实验室
浏览 开源目录 或联系 [email protected]。