让 ChatGPT “写个函数”,对一次性的 snippet 很好用,可一旦指向真实代码库就立刻崩。区别不在模型——GPT-5.5 写代码确实强——而在你围着它搭的那套流程。ChatGPT 不能像 Claude Code 那样的 Agent 一样改你的文件、跑你的测试、看到你装的依赖版本。这篇就是我用来照样靠一个聊天窗口交付真功能的可复用流程。
一句话总结
- ChatGPT(GPT-5.5,自 2026 年 4 月 23 日起为默认模型)是聊天式编程搭档,不是会改文件的 Agent。它只读你粘进去的内容,看不到你的仓库。
- 用 Projects 把参考文件、自定义指令、相关对话集中到一个工作区。Plus 每个 Project 可传 25 个文件,Free 5 个,Pro 40 个(截至 2026 年 6 月)。
- 选对模型档位:Instant 做快速改动,Thinking 做需要推理的设计和 debug,Pro(200 美元档)对付最难啃的问题。
- 小块小块地写、写代码前先要计划、结果一定本地跑过。ChatGPT 写出来的代码看着合理,却常在它看不到的细节上挂掉。
这篇适合谁看
把 ChatGPT 当主力 AI 编程助手的人(没订 Cursor 或 Claude Code),或者在主力 Agent 不擅长的语言 / 框架上拿它兜底的人。用 Free 或 8 美元 Go 档、想要一套有章法的流程而不是靠运气抽奖式 prompt 的人,也适用。
ChatGPT 写代码能做和不能做什么(2026 年 6 月)
GPT-5.5 自 2026 年 4 月 23 日成为 ChatGPT 默认模型,通过三档选择器暴露:Instant(快,默认)、Thinking(深度推理)、Pro(仅 200 美元 Pro 档和企业版可用)。基准上 GPT-5.5 在 Terminal-Bench 2.0 拿到 82.7%,在 SWE-bench Pro 拿到 58.6%——与 Claude Opus 4.7、Gemini 3.1 Pro 同档,强到模型本身很少成为瓶颈。
瓶颈在上下文和执行。浏览器里的 ChatGPT 不是 Agent:它打不开你的文件、不能原地改、也无法用你的依赖跑测试。截至 2026 年 6 月,几个值得记住的点:
| 能力 | ChatGPT 给你的 | 代价 |
|---|---|---|
| 改代码 | 对话里的代码块(GPT-5.5 Instant/Thinking 已把 Canvas 并入内联代码块) | 你手动复制进出,它从不碰你的仓库 |
| 跑代码 | Python 可在浏览器沙箱里通过 code interpreter 运行 | 接触不到你的依赖、服务和环境变量 |
| 文件上下文 | Projects 存上传的参考文件;每个 Project Plus 25 / Free 5 / Pro 40 | 只看你粘的内容,不会去翻你的目录树 |
| 上下文窗口 | Instant 在 Plus 约 32K,Thinking 手动选时 256K | 应用内完整 1M 上下文只在 200 美元 Pro 档 |
如果你要的是对着活仓库做真正的跨文件改动,那是 Agent 的活——用 Cursor 或 Claude Code(详见 Cursor vs Claude Code)。
什么时候用 ChatGPT,什么时候别用
适合: 新项目原型、小工具脚本、学新库、隔离函数的 debug、生成并讲解测试、把一个函数在语言间翻译、以及在打开编辑器前先把设计聊顺。
不该用: 跨多文件重构、大型遗留代码库、任何要在目录树里读写文件的场景,以及复制粘贴上下文的成本超过收益的任务。这些请交给 Agent。
先建一个 Project
发第一条 prompt 之前,花两分钟做准备,一个 session 内就能回本。
- 建一个 Project(左侧栏)。Project 把相关对话、上传文件和一条共享的自定义指令放在一起,让模型不跑题。
- 上传参考文件——你正在改的模块、相关的类型定义、一份示例测试。截至 2026 年 6 月,Plus 每个 Project 可传 25 个文件,对大多数单功能开发够用。
- 把指令设在 Project 级别一次,省得每个对话重打。比如:
默认用 TypeScript 严格模式和 React 函数组件。
写代码前先说明你的假设。一次只写一个函数。
不要编造库的 API——拿不准某个方法就直说。
设在 Project 上的自定义指令对里面每个对话都生效,这是治”它又忘了我的技术栈”最有效的一招。
具体步骤
- 一个任务一个对话,不是一个项目一个对话。 话题混杂的长对话会快速劣化,旧上下文会挤掉新的。每个功能开新对话。
- 先粘已有代码,再说目标。 顺序很关键——ChatGPT 锚定在它先看到的东西上,所以先把它必须尊重的代码放出来。
- 明确写约束: 语言和版本、框架和版本、能用或禁用的依赖、确切的测试命令。写死版本,才能拦住它给你塞 React class 组件或 Python 2 语法。
- 写代码前先要计划: “先列出你打算改哪些文件、为什么,别写代码。“设计含量高的活,这一步把选择器切到 Thinking。
- 小块出代码——一个函数、一个组件——别整个文件。小 diff 好审、好改。
- 逐块压测: “这段没处理哪些边界情况?“再让它补。这一个问题揪出的 bug 比任何别的招都多。
- 本地跑过再接受。 失败就把完整报错和堆栈粘回去,要最小化的修法,别让它整段重写。
一个真实例子:宽松日期解析器
假设你要一个 parseLooseDate(input),能接受 2026-06-05、06/05/2026 和 June 5, 2026,返回 Date 或 null。
- 在 Project 对话里,粘上现有的
utils/date.ts和它当前的测试。 - Prompt:“新增
parseLooseDate(input: string): Date | null,处理 ISO、美式MM/DD/YYYY和长格式Month D, YYYY。不加新依赖。先列计划。” - 确认计划,再让它只给函数。
- 追问:“哪些输入会让它挂?歧义的
01/02/2026、两位年份、首尾空格?“让它把函数加固。 - 让它写表驱动测试,然后本地跑。ChatGPT 写的测试经常断言根本不存在的 API,绿灯通过才是唯一算数的证据。
容易踩的坑
- 丢一份 2000 行文件上去问”找 bug”。 那么多文本,ChatGPT 只会模式匹配,不会真的追踪执行。把范围收到可疑函数加报错上。
- 跳过”计划”那一步直接出代码,再反复 prompt 去修一开始就设计错的东西。
- 不写框架版本, 然后跟 hooks 还是 class 组件、跟过时语法死磕。
- 相信它自己写的测试。 它经常在你的库上幻觉出方法。每一条都要跑。
- 把上下文当成无限的。 Plus 上 Instant 约 32K token,一大段粘贴会悄悄把你前面的指令挤出窗口。改用 Project 文件,别反复粘。
进阶技巧
- 碰到不熟的库,把真实的 README 或 API 页粘进去(或上传到 Project)。这是治幻觉 API 最可靠的办法,因为模型不再猜版本。
- debug 时把完整报错和堆栈都附上, 绝不要转述。行号和帧名都是信号。
- 设计用 Thinking,敲代码用 Instant。 架构和棘手 bug 把选择器切到 Thinking,机械改动切回 Instant,省时间也省额度。
- 在沙箱里跑 Python 给纯逻辑做体检(解析、数学、正则),再接进你的应用。它够不到你的服务,但能证明算法本身对。
可直接复制的 Prompt
语言:[lang] [version]
框架:[framework] [version]
文件上下文:[粘上改动所在的文件]
目标:[一句话]
约束:[允许 / 禁用的库、性能、风格]
先列出你打算做的修改和原因。
等我确认再写任何代码。
FAQ
写代码用 ChatGPT 还是 Claude? 聊天写代码两个都强;Claude Opus 4.7 在长上下文可靠性上领先,在 SWE-bench Verified 上更高(87.6%,而 GPT-5.5 在 Terminal-Bench 2.0 领先,达 82.7%)。要 Agent 直接改文件,哪个聊天窗口都不是答案——用 Cursor 或 Claude Code。
为什么它老编 API? 它看不到你装的依赖版本,只能猜最常见的签名。在 prompt 里写死版本,或者把相关文档粘进 / 上传到 Project。
ChatGPT 能直接改我的文件吗? 不能。浏览器里它返回代码块,你手动复制进出,它从不碰你的仓库。GPT-5.5 已把 Canvas 并入内联代码块。要在仓库里改动,需要 Cursor 或 Claude Code 这类 Agent。
我能粘多大的文件? Plus 上 Instant 约容纳 32K token 上下文,几百行还安全,整个大模块就不行。更大的活切到 Thinking(256K),或者把文件上传到 Project,让它留在范围内而不吃聊天窗口。
该选哪个模型档位? 快速改动和 snippet 用 Instant,设计和推理密集的 debug 用 Thinking,最难的问题用 Pro(200 美元档)。Instant 是默认,能扛住绝大多数日常编程。