没装 AI IDE 的开发者隔三差五就会切回 ChatGPT tab——它在”一次性写代码”这件事上确实好用,前提是别让它重构整个 codebase。这篇讲不靠 IDE 的工作流:怎么收窄请求、粘合适的上下文、5 分钟内验证答案,而不是三天后在线上发现 bug。
这篇讲什么
在对话里写代码——正则、单文件脚本、SQL、shell、胶水代码、debug 报错。没 IDE 集成的情况下 ChatGPT 擅长什么、什么时候该切到 Cursor 或 Claude Code。
本文涉及的工具 / 概念:
- ChatGPT: OpenAI 的对话式 AI 助手,最早把 GPT 系列模型带给普通用户的产品。
- 上下文窗口: 模型一次能看多少代码。一次性任务里”小而聚焦”胜过”整库倒进去”。
- 推理模型: 慢得多,但非琐碎代码的正确性强很多。超过一行的任务都该用它。
这篇适合谁看
没装 / 不想装 IDE AI 的开发者;IDE 插件对你用的语言支持很烂的人;以及只想浏览器里快速拿到一次性答案的人。
什么时候适合用
自包含脚本(Python / bash / JS 小活)、记不清的正则、SQL 单句、shell pipeline、debug 报错、解释没用过的库、写小 CLI 工具。
什么时候不建议用
跨文件重构、需要看整个 codebase 的事、要 AI 读你测试套件的工作、需要 AI 直接编辑文件的任务——这些场景用 Cursor、Claude Code、Aider。
开始前准备
- 剪贴板里准备好原代码文本,不要截图。ChatGPT 读粘贴文字比读代码 OCR 强得多。
- 准备好确切报错和前后 3 行上下文。“跑不通”只会换回一个泛答案。
- 想清楚你要的是”解释”还是”修”。先解释再修,比直接要 patch 的效果好。
具体步骤
- 一句话写目标,再粘代码(不超过 300 行)。
- 把约束讲明白。“TypeScript strict”、“不引入新依赖”、“必须在 Node 18 跑”、“输出形状必须等于这个”。
- 有报错就完整粘报错,加上你跑的命令。
- 要 fix + 一句话解释 bug 为什么发生。不要解释你自己就抓不到下一个同类 bug。
- 在自己环境里跑过再用。跑真单测或复现 case。
- 第一版错了别重新粘整段。回新报错让对话累积上下文。
跑得通的 prompt 示例
1. "修这个 Python 函数让它正确处理嵌套 dict。
当前代码 <粘>。失败测试 <粘>。约束:不引新 import。"
2. "写一个 bash 单行:找 ./src 下近 24h 改动过、>1MB 的文件。
Mac,不是 Linux——find 的 flag 不同。"
3. "逐字符解释这个正则:<粘>。它在 unicode 上哪会失效?"
4. "把这段 SQL 从 MySQL 转 Postgres 语法。<粘>。
标出行为差异。"
第一次实操怎么跑
- 选一个近 48 小时让你烦的真编码小事——眼瞅过的正则、Google 了两次的 bash 命令。
- 用紧凑 prompt 发出去,附约束和样例输入。
- 跑答案。第一次就通?没通的话发新报错回去,别从头开始。
- 跑通的 prompt 格式存 snippet——未来的你还会再用。
完成后检查
- 你真的跑了代码,不只是读了吗?“看着对”是粘贴-broken bug 的第一来源。
- 有没有看起来”瞎编”的 import / 语法 / API?不眼熟就 Google 一下。
- SQL 输出的行数跟你预期一致吗?
- 正则有没有用 3 类输入测过——match、边界、不该 match?
怎么复用这套流程
- 维护
chatgpt-snippets.md:跑出好代码的 prompt。每次只换输入。 - 做一个 Custom GPT 叫”Coding helper”,Instructions 写:“永远附约束、永远跑假设测试、永远用一句话解释 bug。”
- 长期写 bash / SQL 的人,把这点写进 Custom Instructions——省得每次重述约束。
建议的操作流程
代码 + 目标 + 约束 + (报错) → 答案 + 一行解释 → 本地跑 → 用新报错或成功状态迭代。一个对话留 2-3 轮 follow-up,之后开新的——上下文堆多了反而干扰。
容易踩的坑
- 粘超大文件。超过 300 行模型注意力散。粘相关函数 + 它的调用者就行。
- 不附报错。fix 就在报错里——没报错模型只能猜。
- 不跑就用。尤其是正则和 SQL——看着对,静默骗你。
- 让 ChatGPT “review my code” 不说你要什么。拿到一堆样式吐槽。
- 非琐碎逻辑用快模型。超过 20 行用推理模型,多等的那点时间值得。
- 粘代码截图。永远粘文本——OCR 会引入静默的字符替换。
FAQ
- 写代码该用推理模型吗?: 超过一行就用。多等几秒换正确性很值。
- 能整个 codebase 都粘进去吗?: 不行,即使装得下,模型注意力也散。粘相关函数 + 它的直接依赖。
- ChatGPT 会从我代码学吗?: 在 Settings 里关数据共享就不会。默认行为按 plan 不同。
- 为啥它有时推荐过时 API?: 训练数据有截止。变化快的库,把当前文档粘进 prompt 里。