三个词,搞懂 Codex 的工作方式
理解了沙箱,这一节再拆三个概念:会话、上下文、工作目录。它们决定了 Codex「在多大范围、多长的记忆里干活」。搞懂这三个,你就能更好地控制它。
text-tools 功能,都会在同一个工作目录、干净的会话里推进。这三个词管不好,Codex 就会在错误的地方干活、记不清前面做过什么。这是让 text-tools 做大的地基。会话(Session):一次连续的工作
会话是 Codex 的一次「连续对话」:你从启动到结束,属于同一个会话。会话内,它能记得前面聊了什么、做了什么。
- 一个会话 = 一段连续的工作上下文
- 换任务、做完了,可以结束会话重开
类比:一次会议从头到尾是一次会话,中间说的做的都在。
实操提示:给 text-tools 加功能时,尽量在一个会话里把一个功能做完——从「加个统计字数」到「验证它跑通」,一气呵成,它记得过程,不会每步都问你重述。
上下文(Context):它「能看到多少」
上下文是 Codex 在当前能参考的信息范围:你说了什么、它看了哪些文件、做了什么。
- 上下文越大,它记得越多,但也越贵、越慢、越易乱
- 无关的东西塞进上下文,是浪费
管理上下文(别塞无关文件、及时清空)是用的关键——这在进阶课会深入。
一个直接可复制的示例——让 Codex「只看它需要看的」:
codex "在 text-tools 里,只打开 tool.py,不读其他文件,帮我看看统计字数的函数有没有 bug"
明确告诉它「只读哪些、别读哪些」,就是在主动管理上下文,省时省钱。
工作目录(Working Directory):它在哪干活
工作目录是 Codex 执行任务的位置,可以指定。
- 指定对了,它在对的项目里干活
- 指定错了,它可能在错误的地方瞎忙
开始任务前,确认工作目录是你想让 Codex 动的地方。
一个可复制示例——开工前先确认位置:
codex "打印当前工作目录,然后列出里面的文件"
这是每次开工的「定位动作」,快速确认 Codex 是不是在 text-tools 目录里。
三者怎么配合
工作目录(在哪干活)
+ 会话(连续的工作单位)
+ 上下文(它能看到多少)
= Codex 这次任务的状态
管理好这三者:在正确的目录、用干净的会话、喂必要的信息,Codex 就能干得又准又稳。
一个「开工前固定动作」示例:
codex "确认工作目录是 text-tools;基于当前会话,帮我加一个『把文本转成大写』的功能,只改 tool.py"
一次同时锁定了工作目录、复用了会话记忆、界定了上下文。
落地练习:管理好你的 text-tools 会话
在 text-tools 上真实走一遍「三要素齐备」的开工流程:
- 让 Codex 打印当前工作目录,确认在
text-tools里(不在就先cd过去再确认) - 用一个会话,连续做完两件小事:
codex "在 tool.py 里加一个统计字数的函数,然后再加一个转换大小写的函数"——别分两个新会话做 - 最后让它列出当前会话里改过哪些文件
怎么判断做对了?——第 2 步在同一个会话里,Codex 记得第一个函数,接着加了第二个,没有让你重述需求。第 3 步能列出
tool.py,说明它在正确的目录、正确的会话里推进。
卡住了怎么办? 它在错误目录建了文件?先 codex "打印当前工作目录",再用 codex "cd 到 text-tools 再干活" 纠正。它好像「忘了」之前做的事?多半是会话被重开了,把需求补齐再继续。目录里有一堆无关文件?让它只读必要的,别读整个项目。
常见坑:在每个会话里重复造轮子
新手容易「开一个会话问一句」,导致 Codex 每次都像是「新来的」,什么都不记得,你得反复重述需求、反复交代背景——又慢又乱。
正确做法:一个任务线,一个会话。给 text-tools 加某个功能,就把相关的前因后果、已写的代码,都放在同一个会话里连续推进。真要换方向,也先想清楚再新开会话,而不是随手重开。会话是你的「工作记忆」,别随手清空。
一个实践建议
每次开任务前,花十秒确认:
- [ ] 工作目录是不是目标项目?
- [ ] 是一个干净的会话吗?(还是旧会话残留了一堆)
- [ ] 我接下来要喂它的,都是必要信息吗?
小结
- 会话 = 一次连续的工作单位,会话内能记住
- 上下文 = 它能看到多少,别塞无关信息
- 工作目录 = 它在哪干活,要指定对
- 三者管好,Codex 又准又稳
- 给 text-tools 加功能,坚持「正确目录 + 一个会话 + 必要上下文」
下一节,讲模型选择与使用模式。