写在前面:这篇不是"AI 能取代程序员吗"的议论文。它是一份你 clone 下来就能跟着敲命令的实操 onboarding ——从"这东西到底是什么"到"让它在一个真实后端项目里跑起来、改代码、跑测试、你 review diff",一站到位。


目录

0. 这篇文章能带你走到哪一步

1. Codex 到底是什么?——先消歧义,再谈安装

1.1 一句话,但说准

1.2 对后端工程师来说,它解决什么痛点

1.3 两条入口:CLI vs 桌面 App

2. 核心特点:后端视角下的"它厉害在哪 / 怕在哪"

2.1 三个设计点,决定了你能不能放心用

2.2 老实说:什么时候它会翻车

3. 准备工作:系统要求 & 先做 3 个检查

3.1 官方基线(2026 最新)

3.2 三行快检(先跑,再装)

4. 安装 Codex CLI(macOS / Linux / WSL2 主力路线)

4.1 安装:三种方式选其一

方式 A:npm(最通用,跨平台,官方推荐)

方式 B:Homebrew(macOS / Linuxbrew 用户偏爱)

方式 C:独立二进制(无 Node 依赖,CI / 干净机器友好)

4.2 首次登录(两种认证,二选一)

4.3 (可选但很香)Shell 自动补全

4.4 目录结构:Codex 把配置放哪

5. 安装 Codex 桌面 App(Windows / macOS GUI 路线)

5.1 Windows:Microsoft Store(官方推荐路径)

5.2 macOS:官方 DMG

5.3 首次启动:登录 + 选 Project

5.4 桌面版设置项(建议过一遍)

6. 认证 & 配置进阶:环境变量 & 团队场景

6.1 最常见的 5 个环境变量

6.2 项目级 .codex/config.toml(可选但推荐)

6.3 写一个靠谱的 AGENTS.md

7. 实战:用 Codex 改一个真实后端项目(含可复制项目骨架)

7.1 先把骨架搭起来(Express + TypeScript,约 5 个文件)

package.json

tsconfig.json

src/index.ts

src/routes/items.ts

先装依赖

写 AGENTS.md(放到项目根目录)

7.2 让 Codex 干活(两种入口,选你装的那个)

路线 A:CLI(Suggest 模式,最安全)

路线 B:桌面 App 等效操作

7.3 第二回合:让它补测试骨架(展示 auto-edit 舒适度)

8. 日常 CLI 工作流:速查 & 后端习惯养成

8.1 最常用命令表格(打出来贴显示器也行)

8.2 一个"后端日常 git-保护模板"

8.3 Prompt 写得越像 ticket,它返工越少

9. 避坑清单(后端踩过一遍整理版)

10. 附录:10 分钟 Workshop 练习卡(直接给团队分享用)

🧪 Codex 10-Min Workshop Card

11. 结语:用 Codex 的正确心态


0. 这篇文章能带你走到哪一步

读完并跟做完,你会得到:

  • ✅ Codex 两条主线都装好(CLI + 桌面App,选你舒服的那条)

  • ✅ 理解 审批模式 / 沙箱 / AGENTS.md​ 这三个保命概念

  • ✅ 一个可运行的示例后端项目骨架(Express + TypeScript 或 Flask + Python,随你选),Codex 会在里面真实地读文件 → 改代码 → 跑命令 → 等你批

  • ✅ 一套适合后端日常的 git-保护工作流

  • ✅ 一张 10 分钟 Workshop 练习卡(你可以用它给团队做分享 demo)


1. Codex 到底是什么?——先消歧义,再谈安装

1.1 一句话,但说准

今天的 OpenAI Codex 是一个"坐在你终端 / 桌面里的编程 Agent"——它能读你的项目目录改文件跑命令(测试 / 编译 / lint),然后把变更 diff 交给你审

它不是老 Codex(code-davinci-002那个退役 API),也不是"给你一段代码片段让你手动复制粘贴"。它是 action-taking​ 的:读 → 写 → 执行 → 再读 → 再改,循环到你满意或它收敛。

1.2 对后端工程师来说,它解决什么痛点

你日常遇到的

Codex 能替你扛的部分

"这个 3 年前的内部 service,谁写的注释都没有,我想搞清楚结构"

让它只读扫描,输出目录职责地图 + 关键调用链笔记

"给所有 handler 统一加 requestId / 耗时日志 / error wrapper"

让它按规则批量改,你逐 diff 批

"补单元测试骨架 / 补 type hints / 补 OpenAPI schema"

它擅长这种机械但有规范的活

"CI 挂了,报错日志一大坨,我不想去盯"

让它读日志 → 定位 → 提最小修复

它不做、也不能做的:对你的业务正确性做担保;替你拍板安全敏感代码(鉴权/加密/支付);在没有 review 的情况下自动 push 到 main。

1.3 两条入口:CLI vs 桌面 App

OpenAI 同时给了两条路:

┌──────────────────┐     ┌────────────────────────────┐
│  Codex CLI       │     │  Codex 桌面 App              │
│  (终端 / TUI)     │     │  (GUI:文件树 + 对话 + diff)  │
│  开源,Rust 实现   │     │  最省心,Windows 原生友好     │
│  macOS/Linux 一等 │     │  Microsoft Store / DMG       │
│  WSL2 on Windows  │     └────────────────────────────┘
└──────────────────┘

建议:如果你是纯后端服务器环境(SSH 进跳板机那种)或喜欢管道/脚本化 → CLI。如果你在本地开发机、想可视化 diff 和文件树 → 桌面 App。两者底层是同一套 Agent 体系,不冲突,可以共存。


2. 核心特点:后端视角下的"它厉害在哪 / 怕在哪"

2.1 三个设计点,决定了你能不能放心用

(a) 审批模式(Approval Mode)——不是噱头,是生存机制

Codex CLI 的三种权限级别:

模式

标志

它自动做啥

你必须确认啥

什么时候用

suggest(默认)

codex(不额外加参)

读 + 出方案 + 展示 diff

每处文件改动 & 每条命令都等你敲 Enter

第一次用 / 陌生代码库 / prod-facing 服务

auto-edit

--auto-edit

自动写文件

shell 命令仍要你批

日常开发、有 git 兜底、你想省"确认写文件"的点击

full-auto

--full-auto

读/写/执行都自主(默认走沙箱约束)

几乎不需要你管

隔离分支 + 测试完备 + 你知道自己在干嘛

🔑 铁律(记住这句就行)

你可以信任 Codex 的输出质量,但 git 是你真正的回滚按钮。​ 每次开工前 git commit -am "snapshot before codex",出问题 git reset --hard回来。

(b) 它以"当前目录"为工作台

Codex 不是全局爬虫。你在哪个目录敲的 codex,它就以那个目录为项目的上下文边界去读文件、提变更。配合 .gitignore.codex/配置,你可以控制它看什么不看什么。

(c) AGENTS.md —— 给你的项目加"团队规范说明书"

Codex 会读项目根目录下的 AGENTS.md(有些文档也写作项目指令文件),你可以在里面写:

<!-- AGENTS.md -->
# Codex Agent 指令

## 项目性质
- Express + TypeScript 后端,端口 3000
- 所有 handler 在 `src/handlers/`
- 共享中间件在 `src/middleware/`
- 不改 `src/db/raw-queries.ts` 除非明确要求

## 改代码规则
- 每次改动后必须能 `npm run build` 通过
- 不允许引入新 dependencies 除非我写明 "allow new dep"
- import 排序: `prettier-plugin-organize-imports` 风格

这相当于把你们团队的 convention 编译进 prompt,不让 Agent 每次靠猜。

2.2 老实说:什么时候它会翻车

翻车场景

原因

你的对冲手段

复杂分布式事务 / 一致性改写

行为正确性需要全局推理,Agent 看到的是局部 token 窗口

只让它改明确边界内的模块 + 你 review diff

安全敏感路径(authz / token签发 / 加密)

它可能写出"语法对但语义松"的代码

这类文件标进 AGENTS.md 的 "DO NOT TOUCH 除非 explicit"

超大 monorepo,无结构,generated 文件混在一起

噪声淹没信号 → 幻觉式引用

.gitignore先清噪声;给明确 entrypoint 路径约束


3. 准备工作:系统要求 & 先做 3 个检查

3.1 官方基线(2026 最新)

项目

要求

备注

OS

macOS 12+​ / Ubuntu 20.04+​ / Windows 11(CLI 推荐 WSL2;桌面App 原生)

Windows CLI = 实验性,优先桌面或 WSL2

Git

2.23+

几乎都有,确认一下

Node.js

18+(推荐 22+)

仅当你走 CLI 的 npm install -g @openai/codex路线

RAM

4 GB 起步 / 8 GB 舒服

不吃你本地 RAM(模型在云端),但要跑 build/test

网络

HTTPS 出网到 OpenAI

企业代理要走 OPENAI_BASE_URL配置

3.2 三行快检(先跑,再装)

打开终端:

# 1. 操作系统 & 架构
uname -a          # macOS: Darwin ...; Linux: x86_64; Windows: 你应该在 WSL2 里跑这行
# Windows 用户直接确认 WSL2 可用:
wsl --status      # 或 wsl -l -v

# 2. Git
git --version     # 期望 ≥ 2.23

# 3. Node(CLI 路线才需要)
node -v           # 期望 ≥ v18;推荐 v22
npm -v

Windows 用户且还没装 WSL2

# 管理员 PowerShell
wsl --install
# 重启后默认装 Ubuntu;然后进 Ubuntu 终端继续下面的 Linux 流程

不想碰 CLI 的 Windows 后端 → 直接跳 第 5 节(桌面 App 安装),那是最顺畅的路。


4. 安装 Codex CLI(macOS / Linux / WSL2 主力路线)

这一节是给终端党、服务器环境、以及想把 Codex 编进脚本流水线的人。

4.1 安装:三种方式选其一

方式 A:npm(最通用,跨平台,官方推荐)
# Node 22+ 的前提下:
npm install -g @openai/codex

# 验证
codex --version
# 预期输出形如:codex 0.xxx.x

国内网络 npm慢的话,临时切镜像(仅加速下载包本身,不影响 Codex 运行时连 OpenAI):

npm install -g @openai/codex --registry=https://registry.npmmirror.com
方式 B:Homebrew(macOS / Linuxbrew 用户偏爱)
brew install --cask codex
codex --version
方式 C:独立二进制(无 Node 依赖,CI / 干净机器友好)

去 GitHub Releases 页(openai/codex仓库)下载对应平台的 tar.gz:

# 例:Linux x86_64
curl -L -o codex.tar.gz https://github.com/openai/codex/releases/download/v0.xxx.x/codex-x86_64-unknown-linux-musl.tar.gz
tar -xzf codex.tar.gz
sudo mv codex /usr/local/bin/
codex --version

4.2 首次登录(两种认证,二选一)

直接敲:

codex

首次启动会弹出 登录引导

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  Welcome to Codex CLI
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  How would you like to authenticate?
  > Sign in with ChatGPT (OAuth)  ← 推荐:有 Plus/Pro 直接走这
    Or enter an OpenAI API key manually
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

路径

怎么做

适合谁

ChatGPT 账号 OAuth(推荐)

选第一项 → 浏览器弹窗 → 登录/授权 → 自动回调

你有 Plus / Pro / Team / Enterprise,最顺滑,部分 Cloud 线程功能全开

API Key

选第二项 → 粘贴 sk-...→ 回车

走用量计费 / CI 场景 / 你想精细控成本

验证登录状态:

codex auth status

⚠️ API Key 千万别写进代码或提交 git。正确姿势:

# ~/.zshrc 或 ~/.bashrc 里
export OPENAI_API_KEY="sk-你的Key"
# 或者用 direnv / 1Password CLI 注入

4.3 (可选但很香)Shell 自动补全

# Zsh 用户
codex completion zsh >> ~/.zshrc
source ~/.zshrc

# Bash 用户
codex completion bash >> ~/.bashrc
source ~/.bashrc

4.4 目录结构:Codex 把配置放哪

~/.codex/
├── config.toml       # 全局配置(模型偏好、默认审批模式等)
├── sessions/          # 会话历史
└── log/               # codex-tui.log 排障用

项目根目录下还可以有:

your-project/
├── .codex/
│   └── config.toml   # 项目级配置(仅受信任项目生效)
└── AGENTS.md          # ← 你写团队规范的地方

5. 安装 Codex 桌面 App(Windows / macOS GUI 路线)

如果你主要在本地机器开发,而且"终端 TUI 不是你的审美",桌面 App 是正确答案。它本质上把 CLI 的能力包了一层原生 GUI:文件树 + 对话面板 + diff 视图 + 审批按钮。

5.1 Windows:Microsoft Store(官方推荐路径)

[截图占位符:Microsoft Store 搜索页]
  ① 开始菜单 → 搜 "Microsoft Store" → 打开
  ② 顶部搜索栏 → 输入 "Codex" 或 "OpenAI Codex"
  ③ 认准发布者:OpenAI
  ④ 点「获取 / 安装」
  ⑤ 安装完点「打开」

或者直接浏览器打开商店页(任一浏览器都行):

https://apps.microsoft.com/detail/9plm9xgg6vks

应用大小约 1.x GB(含运行时),首次打开会初始化一会儿,别强行关,等它到登录画面。

5.2 macOS:官方 DMG

[截图占位符:Applications 文件夹里 Codex.app 图标]
  ① 从 OpenAI 官方渠道下载 .dmg(Apple Silicon / Intel 对应选)
  ② 打开 DMG → 把 Codex 拖进「应用程序」
  ③ 首次打开若弹安全提示:
    系统设置 → 隐私与安全性 → 往下翻 → 「仍要打开」
  ④ 启动 → 登录

Apple Silicon(M 系列)和 Intel 版本别下混——左上角苹果图标 →「关于本机」→ 看「芯片」那行。

5.3 首次启动:登录 + 选 Project

无论平台,流程都是这三步:

Step 1  Login
  ┌────────────────────────────┐
  │  Sign in with ChatGPT  → (浏览器跳转授权)│
  │  OR 输入 API Key            │
  └────────────────────────────┘

Step 2  Select a project folder
  ┌────────────────────────────┐
  │  Ctrl/Cmd + O → 选你的 repo 根目录│
  └────────────────────────────┘

Step 3  First message
  ┌────────────────────────────┐
  │  ▸ "Tell me about this project"│
  │  ▸ 然后切到 Local 模式(让它跑在你机器上,不是云沙箱)│
  └────────────────────────────┘

📌 关键细节:左下角 / 设置里确认它走的是 Local,这样它改的是你磁盘上的真实目录,而不是只在一个远端沙箱里玩。

5.4 桌面版设置项(建议过一遍)

设置项

建议值

为什么

Agent 环境

Windows native(默认)或切 WSL

看你项目存在哪侧文件系统

Preferred editor

VS Code

Open 文件时直接唤你日常编辑器

Integrated terminal

PowerShell / Git Bash / WSL(选你实际用的)

保持一致少踩坑

Sandbox permissions

Default permissions(别一上来开 full access)

目录边界保护


6. 认证 & 配置进阶:环境变量 & 团队场景

6.1 最常见的 5 个环境变量

# 核心
export OPENAI_API_KEY="sk-你的Key"          # 优先级高于 OAuth

# 如果你走企业代理 / 私有网关
export OPENAI_BASE_URL="https://your-proxy.example.com/v1"

# 多账号隔离(高级)
export CODEX_HOME="$PWD/.codex"              # 把 config/session 放项目局部

# 编辑器(Ctrl+G 唤起时用)
export EDITOR="code --wait"                  # 或 vim / nano

6.2 项目级 .codex/config.toml(可选但推荐)

# .codex/config.toml
default_approval_mode = "suggest"   # 强制新队友默认走 suggest
model = "gpt-5-codex"               # 或你账号可用的模型标识

6.3 写一个靠谱的 AGENTS.md

这是性价比最高的投入——写一次,每次 Codex 启动自动读,效果等同于"你每次口头叮嘱它规矩"。

# AGENTS.md — Codex 行为规范

## 不许碰
- `src/db/migrations/` — 数据库 migration 文件只允许手工审
- `.*\.env.*` — 任何 secrets 文件

## 必须做
- 每轮改动后尝试 `npm run build 2>&1 | head -50` 确认无新增语法错误
- import 追加在文件头部,按字母序排列

## 沟通风格
- 改动超过 3 个文件时,先给 CHANGELOG 条目让我看影响面
- 不确定时提问,不要猜依赖版本

7. 实战:用 Codex 改一个真实后端项目(含可复制项目骨架)

这一部分是你读这篇文章的核心价值点——不是 helloworld,是一个有结构、有依赖、能跑、能测的小后端。

7.1 先把骨架搭起来(Express + TypeScript,约 5 个文件)

📁 你可以直接新建目录 codex-demo-api/,逐文件复制粘贴。

mkdir -p codex-demo-api/src/{routes,middleware,utils}
cd codex-demo-api
git init
package.json
{
  "name": "codex-demo-api",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "build": "tsc",
    "dev": "ts-node-dev --respawn --transpile-only src/index.ts",
    "start": "node dist/index.js",
    "test": "jest --verbose"
  },
  "dependencies": {
    "express": "^4.18.2",
    "dotenv": "^16.3.1",
    "uuid": "^9.0.0"
  },
  "devDependencies": {
    "@types/express": "^4.17.21",
    "@types/node": "^20.10.0",
    "@types/uuid": "^9.0.7",
    "ts-node-dev": "^2.0.0",
    "typescript": "^5.3.3",
    "jest": "^29.7.0",
    "@types/jest": "^29.5.12",
    "ts-jest": "^29.1.1"
  }
}
tsconfig.json
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "commonjs",
    "lib": ["ES2020"],
    "outDir": "dist",
    "rootDir": "src",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}
src/index.ts
import express from "express";
import dotenv from "dotenv";
import { itemsRouter } from "./routes/items";

dotenv.config();

const app = express();
app.use(express.json());

// ---- 健康检查(已有)
app.get("/health", (_req, res) => {
  res.json({ ok: true, uptime: process.uptime() });
});

// ★ items 路由(已有桩,但缺少 404 包装 / 错误中间件)
app.use("/items", itemsRouter);

// ---- 简易错误中间件(占位,后面让 Codex 完善)
app.use((err: any, _req: any, res: any, _next: any) => {
  console.error(err);
  res.status(500).json({ error: "Internal Server Error" });
});

const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`[api] listening on :${port}`);
});
src/routes/items.ts
import { Router } from "express";

export const itemsRouter = Router();

// 内存存储(demo 用)
const store: Record<string, { name: string }> = {};

itemsRouter.get("/", (_req, res) => {
  res.json(Object.entries(store).map(([id, v]) => ({ id, ...v })));
});

itemsRouter.post("/", (req, res) => {
  const { name } = req.body;
  // BUG: 没有校验 name;没生成 id;没返回 201
  (store as any).push({ name }); // ← 故意留一个"低级 bug"让 Codex 发现
  res.json({ ok: true });
});

itemsRouter.get("/:id", (_req, res) => {
  res.json({ todo: "implement get by id" });
});
先装依赖
cd codex-demo-api
npm install

确认它能跑起来(哪怕功能不全):

npx ts-node-dev --transpile-only src/index.ts &
curl http://localhost:3000/health
# {"ok":true,"uptime":...}

停掉后台进程后继续。

写 AGENTS.md(放到项目根目录)
# AGENTS.md

## 项目
- Express + TypeScript demo API
- 所有路由在 src/routes/
- 内存 store 仅用于 demo(不用加 real DB)

## 规则
- 不引入新 npm 包除非明确说 allow new dep
- POST /items 必须:校验 name 非空 string → 生成 uuid → 201 + Location header
- GET /items/:id 必须:找不到返回 404({error:"not_found"})
- 改动后至少确认 `npx tsc --noEmit` 不报新错

7.2 让 Codex 干活(两种入口,选你装的那个)

路线 A:CLI(Suggest 模式,最安全)
cd codex-demo-api
git add -A && git commit -m "snapshot: before codex session"
codex

TUI 里输入:

修 src/routes/items.ts:
1) POST /items 加 name 校验(400 如果 missing 或 not string);
   用 uuid v4 生成 id,存进 store,返回 201 且 body={id,name};
2) GET /items/:id 改为按 id 查 store,命中返回 json,未命中 404;
3) 不要动 index.ts 以外的文件;不要引新包。

你会看到类似流程:

[Codex] Reading: src/routes/items.ts ...
[Codex] Proposed changes to: src/routes/items.ts
─────────────────────────────────────────────────
  - (store as any).push({ name })
  + const id = uuidv4()
  + store[id] = { name }
  + res.status(201).location(`/items/${id}`).json({ id, name })
─────────────────────────────────────────────────
Approve? [y]es / [e]dit / [s]kip / [q]uit ›

审一眼 → 敲 y→ 它写入。然后你验证:

npx tsc --noEmit          # 应 0 errors
curl -s -X POST http://localhost:3000/items \
  -H 'Content-Type: application/json' \
  -d '{}'
# 期望 400 {"error":"name required"}
路线 B:桌面 App 等效操作
[截图占位符:桌面 App 主界面]
  左侧文件树:codex-demo-api/
  底部输入框:贴同一段任务描述 → Enter
  右侧 diff panel:逐条 Approve / Reject
  顶栏模式指示器:确保显示 Suggest(锁图标)

7.3 第二回合:让它补测试骨架(展示 auto-edit 舒适度)

# 切分支
git checkout -b feat/codex-tests

# auto-edit:自动写文件,但命令仍要你批(适合"我知道它改的文件范围可控")
codex --auto-edit

输入:

给 items 路由补 jest 测试骨架:
- __tests__/items.test.ts
- supertest + express 的 app 实例
- 覆盖:GET /health 200、POST /items 400 missing name、POST /items 201 + GET /items/:id 404
- 不要求跑通 DB(内存 store 就行),但文件结构要干净

这次它会在写文件上自主,但 npm install/ npx jest这类命令仍亮红灯等你批——刚好。


8. 日常 CLI 工作流:速查 & 后端习惯养成

8.1 最常用命令表格(打出来贴显示器也行)

命令

什么时候用

codex

交互式 TUI(默认 suggest

codex "一句话任务"

快速任务,少交互

codex --auto-edit

你审过它能改的文件范围后,省确认

codex --full-auto

只在​ feature branch + 可丢弃环境

codex auth status

查登录态

codex auth logout

换号 / 清凭证

codex --version

验版本

codex --upgradenpm i -g @openai/codex@latest

更新

8.2 一个"后端日常 git-保护模板"

# ~/.zshrc 或写个 alias
alias codex-safe='git add -A && git commit -m "snapshot: before codex" && codex'

# 用法
cd your-service
codex-safe
# 翻车了?
git reset --hard HEAD~1

8.3 Prompt 写得越像 ticket,它返工越少

❌ 太模糊

✅ 像 ticket

"优化 items 路由"

"POST /items 加 name 非空 string 校验 → 400;用 uuid v4;返回 201;不动其他文件"

"加日志"

"给 routes/items.ts 的每个 handler 入口加 console.log('[items]', req.method, req.path, {body:req.body}),用 JSON.stringify 截断 200 字符;不引新包"

"修 bug"

"跑 npm test 2>&1 \| tail -40,把失败输出给我,只修导致失败的断言/mock,不改无关逻辑"


9. 避坑清单(后端踩过一遍整理版)

#

症状

解法

1

Windows 原生跑 CLI

报各种 spawn / permission 怪错

WSL2​ 或用桌面 App

2

API Key 写进 .bashrc然后提交到 git

密钥泄露

.env+ .gitignore+ export;团队用 direnv

3

没 git 就 --full-auto

改乱了没法回滚

git init+ commit,这是底线

4

让 Codex 在 monorepo root 自由跑

改了 build / 改了不相关包

子包目录启动,或用 AGENTS.md 白名单路径

5

认为"它在沙箱里所以我不管"

沙箱默认可能是 workspace-write,不是 zero-trust

重要项目保持 suggest,看完 diff 再回车

6

网络不通 / 代理拦 HTTPS

fetch failed/ 401

OPENAI_BASE_URL或走 OAuth 登录绕开 key 问题


10. 附录:10 分钟 Workshop 练习卡(直接给团队分享用)

打印这张卡 / 投屏,每个人跟着做,10 分钟后他们自己就会想"明天能不能让 Codex 帮我把那坨 handler 标准化了"。


🧪 Codex 10-Min Workshop Card

前置(2 min):每人确认已安装 CLI codex --version或已登录桌面 App;有一个能 npm test/ pytest -q通过的小项目目录。


Step 1 — 造安全区(30 s)

cd your-project
git add -A && git commit -m "workshop: snapshot"

Step 2 — 只读侦察(1 min)

codex
> 不要改文件。只读本项目:
> 1) 画出顶级目录职责(每层一行)
> 2) 列出所有 public 接口入口(路由 / controller / cli 入口)
> 3) 告诉我哪三个文件最可能要加错误处理

👉 观察点:看它怎么读、读哪些文件、输出格式是否清晰。

👉 体验:它没有改你的代码——这就是 suggest 模式的安全感。

Step 3 — 小范围写改(4 min)

> 只改 src/utils/logger.ts(如不存在就新建 src/utils/logger.ts):
> 导出一个 function log(tag:string, msg:any) 用 JSON.stringify 截断 300 字符
> 然后给 src/routes/health.ts 的 handler 入口加一行 log('health','hit')
> 不改其他文件

👉 关键动作:逐 diff 看 → Approve。之后 git diff一起过一遍。

Step 4 — 跑验证(2 min)

npm run build     # 或 tsc --noEmit / pytest -q
git diff --stat   # 确认影响面符合预期

Step 5 — 回滚演示(30 s)

git reset --hard HEAD~1
echo "✅ 证明:最坏情况 = 一条命令回家"

Takeaway 写在白板上

Codex 的价值 = 它把『描述需求』变成『审阅 diff』,而你永远保留撤销权。


11. 结语:用 Codex 的正确心态

对后端工程师来说,Codex 不是一个"写代码更快"的玩具,而是一个把低认知负载但高机械成本的代码工作(样板、规约化改写、测试骨架、代码库导航笔记)外包出去的杠杆。

真正让它有价值的不是模型多聪明,而是你建的三件事:

  1. git 工作流(snapshot → diff → verify → commit)

  2. AGENTS.md(把团队 convention 写成它读得懂的文字)

  3. 审批纪律(默认 suggest → 逐步放开,不跳步)

做到这三条,它就会从"新鲜感工具"变成你栈里稳定的成员。


下一步读什么(如果你想继续扩成系列):

  • 《Codex + Jest / Pytest 闭环:让 Agent 自己跑失败 → 修 → 再跑》

  • 《AGENTS.md 编写规范:从"我口头说的"到"团队可继承的"》

  • 《后端场景下 Codex 的安全边界:沙箱 / 审批 / 文件白itelist 实战》

如果你希望我把这份稿件再出一版 带真实截图包装(含 macOS + Windows 安装过程分步截图标注 & 标注图层文字)​ 的发布就绪版(Hexo/Hugo/Markdown 都可以),告诉我你的博客引擎和截图偏好(macOS 暗色终端 / 明亮 App 截图 / 两者都要),我可以把截图占位符全替换成带标注的说明图批次。

更多推荐