跳至主要内容

GPT-5.2 Codex 教程:在 VSCode 中构建数据管道

使用 GPT-5.2 Codex 构建数据工程 MVP。一步步的 VSCode 教程,涵盖代理式编码、Python、DuckDB 和 Streamlit 工作流。
· 9分钟 阅读

使用 AI 探索

在本教程中,我们将学习如何通过 VSCode 扩展使用 GPT-5.2 Codex 创建端到端的数据工程管道。我们不会一次性让模型构建所有内容,而是采用分层方式搭建 MVP,按部就班地引导代理完成设计、实现与测试。

这种方法契合 GPT-5.2 Codex 在实践中的最佳使用方式,也贴近真实世界的数据工程工作流。别忘了查阅我们关于模型新版本 GPT-5.3 Codex 和 OpenAI 全新思维模型 GPT-5.4 的指南。

如果您想进一步了解如何使用 OpenAI 生态,建议查看 Working with the OpenAI API 课程。

What is GPT-5.2 Codex?

GPT 5.2 Codex 是 OpenAI 最新一代的代理式编码模型,为真实的软件工程工作流而构建。它在长上下文理解、大型重构与迁移、稳定的工具调用,以及对 Windows 的原生支持等方面有显著提升。

这些改进让它在 VSCode 等 IDE 中进行长时间、端到端的开发时特别高效。过去几个月里,OpenAI Codex VSCode 扩展显著进步,现在已能与 Claude Code 在复杂、代理驱动的开发中直接竞争。

1. Create the GitHub Repository

首先,我们为数据工程 MVP 创建一个新的 GitHub 仓库。

  1. 访问 https://github.com/new
  2. 输入仓库名称(Repository name)和可选的描述(description)
  3. 将仓库可见性设置为Public
  4. 启用Initialize this repository with a README
  5. 点击Create repository

创建新的 GitHub 仓库

创建完成后,复制仓库 URL。下一步我们将使用该 URL 在本地克隆项目。

2. Install and Configure GPT-5.2 Codex in VSCode

开始之前,请确保已安装 Visual Studio Code,并拥有有效的 ChatGPT Plus 账户。免费和 Go 套餐无法通过 VSCode 扩展访问 Codex 模型。

1. 使用之前复制的 URL 克隆仓库。

2. 进入仓库目录并启动 VSCode。

git clone https://github.com/kingabzpro/data-engineering-analytics-mvp.git
cd data-engineering-analytics-mvp
code .

3. 打开扩展(Ctrl + Shift + X),搜索 OpenAI Codex 并安装。只需几秒钟。

在 VSCode 市场搜索 Codex

4. 点击左侧面板的 OpenAI 图标以启动 Codex 扩展。系统会提示您使用 ChatGPT 账户或 API 账户登录。请选择 ChatGPT 账户,浏览器会打开以请求授权。授权后回到 VSCode,即可开始使用 Codex。

在 VSCode 扩展中选择新的 Codex 模型

3. Build the Data Engineering Project

本项目的范围刻意限定为最小可行产品(MVP)。 目标不是打造生产级数据平台,而是构建一个完整的端到端数据工程切片,演示真实分析系统的结构。

在本 MVP 中,我们将构建一个简单但可信的分析管道,它可以:

  1. 摄取一个包含事件数据的 CSV 文件
  2. 将数据加载到 DuckDB 作为原始数据仓表(raw_events)
  3. 应用基于 SQL 的转换 以生成干净、可用于分析的事实表(fct_events)
  4. 使用 DuckDB SQL 计算三项核心指标
  5. 在本地 Streamlit 仪表盘中展示这些指标

完整流程如下:

CSV file
  ↓
raw_events        (raw ingestion, 1:1 with source)
  ↓
fct_events        (typed, deduplicated, transformed)
  ↓
metrics           (daily count, 7-day rolling avg, top category)
  ↓
Streamlit UI      (local dashboard)

4. Scaffold the Project with GPT-5.2 Codex

本步骤使用 GPT-5.2 Codex 生成项目的初始骨架。目标不是立刻实现功能,而是创建一个干净、可运行的基础,我们将按步骤逐步扩展。

为让 Codex 聚焦,我们使用一个名为Codex Harness 的小型控制块。将其粘贴在每个提示的顶部,以确保 Codex 遵循 MVP 范围、输出一致,并提交干净、可审阅的变更。

Codex Harness(粘贴到每个任务中):

You are GPT-5.2 Codex working in my GitHub repository.

MVP ONLY:
CSV → raw table → transform → 3 metrics → Streamlit dashboard.

SCOPE RULES:
- Implement ONLY what this task asks.
- No auth, schedulers, cloud services, or extra pages.

OUTPUT:
- Be descriptive.
- After changes include:
  1) What changed
  2) Files touched
  3) How to run locally
  4) Quick verification step
- Commit after each major step with a clear message.

在编写代码前,明确指示 Codex 使用网络搜索来验证所有依赖的最新版,并确保兼容 Python 3.11。这样可避免安装过时或不兼容的包。

IMPORTANT: USE WEB SEARCH FIRST
TASK 1 (SCAFFOLD):
Use Python 3.11 + uv + DuckDB + Streamlit + Pydantic + pytest.

Create repo structure:
- backend/
  - db.py
  - ingest.py
  - pipeline.py
  - models.py
  - sql/
- app/
  - app.py
- data/
  - sample.csv
- tests/

Add:
1) data/sample.csv (~50 rows) with columns:
   event_time, user_id, event_name, category, amount
2) DuckDB schema for raw_events
3) a command to ingest sample.csv and print row count
4) pyproject.toml for uv
5) README with exact local run steps

Stop after scaffolding. Commit.

脚手架任务将创建:

  • 清晰的文件夹结构,包括后端逻辑、SQL 转换、UI、数据与测试
  • 一个小型 sample.csv 数据集
  • DuckDB 的 raw_events 表模式
  • 一个可运行的摄取命令,打印行数
  • 可用的 pyproject.toml 与 README

粘贴提示后,将模型切换为 Agent(Full Access),并确认已选择 GPT-5.2 Codex(默认为此)。

输入初始提示,并选择 Agent Full Access 模型

任务完成后,您会看到所有文件夹和文件已自动创建。

通过 Codex 扩展在 VSCode 中创建的文件与文件夹

为验证脚手架,请让 Codex 在本地执行安装与验证步骤。

安装 Python 包并测试脚本

您应能看到所有依赖成功安装,且快速验证脚本确认从示例数据集中摄取了 50 行。

此阶段示例数据刻意较小。后续步骤我们会替换为更大、更贴近真实的数据集。

项目设置的输出摘要

最后,若您查看 https://chatgpt.com/codex/settings/usage,会发现大部分使用配额依然可用,这意味着您可以从容地继续构建和迭代本项目,必要时将其扩展为更接近生产的管道。

Codex 模型在网页控制台的用量

5. Implement Idempotent Data Ingestion

本步骤确保摄取过程具备幂等性,即可安全地重复运行而不会产生重复数据。这是数据工程中的基本要求,因为摄取作业常需要重试或重新执行。

TASK 2 (IDEMPOTENT INGEST):
Make CSV ingestion idempotent.
- Rerunning ingest must not duplicate rows
- Validate required columns
- Validate event_time parseable and amount numeric

Add pytest:
- ingest twice → row count unchanged

Update README verification section.
Commit.

本步骤达成的目标:

  • 当同一 CSV 被多次摄取时,摄取逻辑将防止重复行产生
  • 在摄取阶段实施基础数据校验
  • 通过 pytest 测试两次摄取并检查行数不变,从而确认幂等性

任务完成后,您可以在 VSCode 中查看 Git 历史,看到 AI 代理在重要更新后自动提交变更,形成干净、可追溯的开发历史。

VSCode 中的 Git 提交历史

我们让 GPT-5.2 Codex 在本任务中运行测试套件。结果显示测试成功执行,所有检查均通过。

测试成功运行

6. Add the Transformation Layer (DuckDB SQL)

本步骤为管道加入转换层。转换使用 DuckDB SQL 实现,将原始摄取数据转换为干净、可用于分析的事实表。

TASK 3 (TRANSFORM SQL):
Create backend/sql/010_fct_events.sql:
- typed columns
- deterministic dedupe

Execute transform from backend/pipeline.py.
Add sanity checks to README:
- raw_events count
- fct_events count

Commit.

本步骤达成的目标:

  • 基于 SQL 的转换,将 raw_events 转换为 fct_events
  • 显式类型转换,确保模式一致
  • 确定性的去重,防止分析记录重复
  • 在 README 中记录清晰的验证步骤,对比原始与转换后的行数

使用 Codex 添加转换层

7. Build the Metrics Layer with Pydantic

本步骤添加指标层,负责从转换后的数据中计算分析结果。指标通过 DuckDB SQL 生成,并以带类型的 Python 接口对外提供。

TASK 4 (METRICS):
Create backend/sql/020_metrics.sql.
Expose metrics via a Python function returning a Pydantic model.

Add pytest validating:
- keys exist
- types correct

Commit.

本步骤达成的目标:

  • 一个专用 SQL 文件定义核心分析指标
  • 一个 Python 函数,作为数据层与 UI 之间清晰的契约
  • 使用 Pydantic 对指标输出进行强类型约束
  • 自动化测试同时确认指标的结构与正确性

使用 Codex 添加指标层

8. Visualize with a Streamlit Dashboard

本步骤使用 Streamlit 构建本地分析仪表盘。仪表盘仅负责可视化,不计算指标、不做数据转换。所有数值均来自上一步创建的指标层。

TASK 5 (STREAMLIT UI):
Build app/app.py:
- 3 KPI cards
- line chart for daily_count
- UI calls backend metrics function

Add a minimal smoke test.
Commit.

任务完成后,Codex 会提供重建 DuckDB 数据库并运行完整数据管道的指引。此步骤我们使用一个由更大数据集填充的新数据库。

python backend\ingest.py --csv data\sample.csv
python backend\pipeline.py

运行摄取后,输出会确认加载到 DuckDB 的原始事件数量:

raw_events row count: 3738

管道完成后,启动 Streamlit 应用:

streamlit run app\app.py

在浏览器中打开 http://localhost:8501 即可访问仪表盘。

You can now view your Streamlit app in your browser.

  Local URL: http://localhost:8501
  Network URL: http://192.168.18.10:8501

若仪表盘首次加载时出现错误,这在早期迭代中是正常的。复制错误信息并提供给 GPT-5.2 Codex。

在浏览器运行 Streamlit 应用时出现与项目文件相关的错误

Codex 会定位问题并应用必要修复。修正后,应用可成功运行并显示:

  • 事件总数
  • 唯一用户数
  • 交易总金额
  • 展示多年每日事件计数的折线图

Streamlit 仪表盘显示关键指标与图表

此时,端到端的 MVP 管道已构建完成且完全可用。

9. Testing and Confidence

最后一步专注于验证与可靠性。目标是提供一个能从摄取到指标与测试,全方位证明整个管道正确运行的单一命令。

TASK 6 (VERIFY):
Add a verify command that:
- rebuilds DB from scratch
- ingests sample.csv
- runs transforms
- runs pytest

Document as "Local Demo" and "Verify" in README.
Commit.

本步骤达成的目标:

  • 一个验证端到端管道的单一命令
  • 自动按正确顺序执行摄取、转换与测试
  • 清晰文档,便于任何人本地复现结果

最终验证与测试脚本已就绪

我们让 Codex 更新 README、提交所有变更,并推送到 GitHub 远程仓库。

将变更推送到 GitHub 远程服务器

最终得到的是一个完整、结构良好的 GitHub 仓库,包含所有脚本、测试、后端逻辑及清晰的运行与验证说明。

GitHub 仓库:kingabzpro/data-engineering-analytics-mvp

来源: kingabzpro/data-engineering-analytics-mvp

Final Thoughts 

过去我偶尔会通过 CLI 和 VSCode 使用 Codex,但伴随GPT-5.2 Codex 的近期更新,体验有了显著提升。该模型在构建完整系统、调试问题,以及与 MCP 和内部工具协作方面更胜一筹。它对既有代码库的理解也更强,使迭代开发高效许多。

从头到尾,完成这个 MVP 的脚手架、调试并端到端运行,我花了不到三十分钟。Codex 基本无需手动干预,就处理了仓库设置、依赖管理、数据摄取、SQL 转换、测试以及 Streamlit 仪表盘。开发闭环紧凑而可预期,正是快速构建时所需要的。

本项目刻意保持为 MVP。要达到生产级仍需进一步打磨。但其核心结构非常贴近真实数据工程系统的设计,是一个扎实的可扩展基础。

如果您希望将本项目延展为更面向生产的数据平台,以下组件是自然的后续方向,但为聚焦范围,本文有意未纳入:

  • 工作流编排工具,如 Airflow、Prefect 或 Dagster
  • 云数据仓库,如 Snowflake、BigQuery、Redshift 或 Databricks
  • dbt 作为独立的转换框架(本文直接在 DuckDB 中编写 SQL 模型)
  • 流式与实时摄取平台,如 Kafka、Pulsar、Kinesis 或 Flink
  • 语义层与指标存储,如 Looker、Cube、Druid 或 Pinot
  • 认证、授权与多租户
  • 云基础设施、CI/CD 管道与基础设施即代码,使用 Terraform 或 GitHub Actions
  • 高级性能调优与大规模优化
  • 数据治理与可观测性工具,包括血缘、目录与数据质量平台

这些工具在生产系统中很常见,但在此排除有助于保持项目简单、本地化、易于理解,同时仍能反映真实的数据工程模式。

GPT-5.2 Codex 常见问答

GPT-5.2 Codex 是否包含在 VSCode 免费版中?

不包含。VSCode 中访问代理式编码模型需要有效的 ChatGPT Plus、Team 或 Enterprise 订阅。免费用户仍可使用 VSCode 的标准功能,但无法使用代理式的“Checkpoints”或 Codex 扩展提供的深度上下文理解。

GPT-5.2 Codex 与 Claude Code 相比如何?

两者都是一流的代理式编码工具,但擅长的工作流不同。Claude Code 常被青睐于大规模架构规划与多仓库推理;而 GPT-5.2 Codex 通常在“外科式”修改、调试,以及与 VSCode 原生环境的紧密集成(尤其在 Windows 上)方面更胜一筹。

GPT-5.2 Codex 的上下文窗口是多少?

GPT-5.2 Codex 具备 128k 输出 Token 上限 和 200k 上下文窗口,并通过“Native Compaction”优化。这让模型在长时间的开发会话中(例如构建完整的 MVP 管道)依然能保持相关上下文,不会遗忘早期的文件变更或指令。

GPT-5.2 Codex 真的能从零构建完整应用吗?

可以,但迭代式效果最佳。正如本教程所示,一次性请求“巨型重构”有时会导致幻觉或文件不完整。最有效的工作流是 Agentic Layering(代理分层):先让 Codex 搭建脚手架,再按层实现逻辑(如摄取 → 转换 → UI)。

使用 Codex VSCode 扩展时,我的代码安全吗?

OpenAI 表示,通过 Enterprise 和 Team 方案处理的数据不会用于训练模型。但对于个人 ChatGPT Plus 用户,如希望选择不用于训练,需要在 OpenAI 隐私设置中手动配置数据控制。对于敏感的企业数据,请始终使用 API 或 Enterprise 等级。

Abid Ali Awan

作者

Abid Ali Awan

作为一名持证的数据科学家,我热衷于利用前沿技术打造创新的机器学习应用。凭借在语音识别、数据分析与报告、MLOps、对话式人工智能以及自然语言处理方面的扎实背景,我不断打磨构建智能系统的能力,力求带来切实影响。除技术专长外,我也擅长沟通,能够将复杂概念提炼为清晰、简明的表述。因此,我成为数据科学领域备受关注的博主,与不断壮大的数据专业人士社区分享洞见与实践经验。目前,我专注于内容创作与编辑,借助大语言模型打造有力且吸引人的内容,帮助企业与个人更好地发挥数据价值。

主题