浏览 AI使用教程
Codex首次任务:完成小改动、验证与回滚
第一次让 Codex 改已有项目,先别急着让它动手。把目标文件、不能碰的改动、验证命令和撤销办法说清楚,一个小改动才适合作为起点。
沿完整工作流推进
前一阶段的可检查结果,是下一阶段的输入;中间证据不足时停在当前阶段。
第一次交给 Codex 的任务,最好小到半小时内能验收
教学任务:在一个练习仓库里,将搜索空状态从“暂无数据”改为“没有找到结果”,并补上断言。另一个文件 src/pay.mjs 有未提交改动,本次必须原样保留。
本页是可复现的教学练习,不是客户运行记录。安装不在本文重复,先完成本站 Codex 安装页;Node.js 仅用于本练习的测试,不代表所有 Codex 任务都需要 Node。
- 改动前后 `git status` 已保存
- diff 只包含授权文件
- 验证命令与回滚路径可执行
先确认这次任务的起点、边界和交付
| 需要确认 | 本例内容 |
|---|---|
| 现有材料 | Windows PowerShell、Git、Node.js 20+;Codex 已可启动并完成登录。本页下方给出可手建的文件;只修改 src/search/empty.mjs 与 tests/empty.test.mjs。 |
| 不能越过的边界 | 不碰已有支付改动,不安装新依赖,不提交和部署;修改前记录版本与状态,测试失败就保留现场。 |
| 要交付的结果 | 版本记录、小改动 diff、测试与回滚证据 |
从“创建独立练习仓库”走到“只撤销练习改动”
| 当前阶段 | 实际处理 |
|---|---|
| 创建独立练习仓库 | 新建一个未使用的目录,按下方文件建立 src/search、tests。运行 git init,再仅提交本例三个文件作为练习基线;不要在已有业务仓库执行这些初始化步骤。 |
| 制造并记录无关改动 | 提交基线后,把 src/pay.mjs 中 demo-1 改成 demo-2。保存 git diff -- src/pay.mjs 的输出;本轮 Codex 任务禁止修改这个文件。 |
| 给出窄任务 | 使用下方任务卡,只改文案与对应断言。先让 Codex 阅读文件、规则和 Git 状态,再动手。 |
| 验证并比较 | 运行 node --test tests/empty.test.mjs;查看 git diff -- src/search/empty.mjs tests/empty.test.mjs,并与动手前的 pay.mjs 差异比较。退出码零只覆盖这两项断言。 |
| 只撤销练习改动 | 确认两个允许文件在基线提交后没有其他人的改动,再执行 git restore --worktree -- src/search/empty.mjs tests/empty.test.mjs。不要运行全仓 restore;再次测试并检查 pay.mjs 的差异仍保留。 |
先保存这三个完整文件
src/search/empty.mjs
待改文案
export function emptyLabel(count) {
return count === 0 ? '暂无数据' : `找到 ${count} 条结果`;
}
tests/empty.test.mjs
基线测试
import test from 'node:test';
import assert from 'node:assert/strict';
import { emptyLabel } from '../src/search/empty.mjs';
test('空结果', () => assert.equal(emptyLabel(0), '暂无数据'));
test('非空结果不变', () => assert.equal(emptyLabel(2), '找到 2 条结果'));
src/pay.mjs
模拟别人的改动
export const paymentLabel = 'demo-1';
在独立练习目录运行 git add -- src/search/empty.mjs tests/empty.test.mjs src/pay.mjs 与 git commit -m "lesson baseline";若 Git 身份未配置,按本机规则设置或改用目录副本,不临时修改全局身份。
文案与断言必须同步,别人的文件必须保留
任务卡
首次修改
当前练习仓库已有 src/pay.mjs 的未提交改动,禁止修改它。 只允许修改 src/search/empty.mjs 和 tests/empty.test.mjs。 把 count === 0 的提示改为“没有找到结果”,同步空结果断言;非空结果保持原样。 先报告当前 Git 状态和预计 diff。完成后运行 node --test tests/empty.test.mjs,展示命令、退出码和 diff。不安装依赖,不提交、不部署。 如果文件路径与本文不一致或基线测试失败,先说明差异,不猜测后继续。
两个测试通过只证明这次字符串改动
| 检查 | 预期 | 不符合时 |
|---|---|---|
| emptyLabel(0) | 没有找到结果 | 检查修改的是源模块而非测试里的预期值单独变化 |
| emptyLabel(2) | 找到 2 条结果 | 恢复非空分支 |
| src/pay.mjs | 动手前后的 diff 相同 | 停止交付,恢复本轮误改而保留已有改动 |
| 局部撤销后 | 空结果恢复暂无数据;基线测试通过 | 核对恢复的文件及当前目录 |
第一次给 Codex 派活,可以直接使用这份任务说明
先把目标文件、现有脏改动和验证命令写清楚,再允许Agent动手。
可复制使用
第一次给 Codex 派活,可以直接使用这份任务说明
请先把下面这项小任务变成一份可执行、可撤销的 Codex 任务卡;这一轮只读,不修改文件。 项目目录/当前分支【】;git status【】;想修复的具体行为与复现方式【】;允许修改范围【】;禁止操作【】;已知测试命令【】。 任务卡要明确:目标行为、允许读取/修改的路径、已有脏改动如何保护、验收测试和停止条件。仓库规则或路径未确认时列问题,不要猜。完成后列出预期触及文件与回滚边界,等我检查任务卡再动手。
使用范围:先把目标文件、现有脏改动和验证命令写清楚,再允许Agent动手。不要覆盖工作区已有改动,不升级依赖,不修改任务外文件。
完成后的版本记录、小改动 diff、测试与回滚证据
预期:修改后 node --test tests/empty.test.mjs 的两项断言通过;git diff 只新增搜索文案和断言的改动,src/pay.mjs 的既有差异与动手前完全一致。随后仅恢复这两个练习文件,再跑基线测试。这里没有声称已在你的仓库执行。
为什么“小改动完成了,工作区却多出无关格式化”还不能交付
小改动完成了,工作区却多出无关格式化
- 原因
- Agent 运行了全仓格式化或改动范围没有锁定
- 怎么改
- 对照修改前后的状态和 diff,只保留任务文件并重新运行定向测试
