先别依赖Codex,先学会写Prompt

先别依赖Codex,先学会写Prompt

先别依赖Codex,先学会写Prompt

上周我帮一个创业团队做技术评审,他们用Codex已经三个月了。技术负责人打开后台让我看使用数据,三个月,生成了超过一万段代码,但最终合入主分支的比例不到30%。剩下的70%去哪了?大部分被删掉重写,小部分在反复修改后勉强能用,但带着大量技术债。

我问他平时的Prompt怎么写的。他翻了翻聊天记录,给我看了一句典型的话:“帮我写一个用户管理的后台接口。”

问题就出在这里。

一、Codex的能力被你低估了,但你的“表达能力”被你自己高估了

很多人以为Codex用不好是因为模型不够聪明。但过去两年我跟不同水平的开发者协作、观察他们使用Codex的方式之后,有一个判断越来越明确:大部分“烂结果”的根源,不是Codex脑子不行,是你给它的指令根本没法用。

你想想这个场景:一个资深工程师走过来跟你说“帮我写个接口”,你是不是也得追问一句,什么功能?什么框架?权限怎么控制?数据表结构是什么?异常处理逻辑?Codex不问,不是因为AI比人更懂你,而是它默认你不会在这一点上偷懒。结果大多数人真的在这一点上偷了懒。

Codex的产品负责人曾在一次访谈中提到,他们团队内部大多数人的编码方式已经发生了根本性变化,不再从打开IDE开始写第一行代码,而是从构建上下文开始。这个说法被很多文章拿去当“AI替代程序员”的论据,但少有人注意到他话里真正的重点:那些高效使用Codex的人,花在“说清楚要做什么”上的时间,远比花在“写代码”上的时间长。

这句话才是关键。

二、三个你每天都在犯的Prompt错误,每一个都在浪费你的时间

我观察了几十个开发者的Codex使用记录之后,总结出三类最致命的Prompt写法。不是因为它们看起来很蠢,恰恰是因为它们看起来“足够用”,所以才害人不浅。

第一类:“需求模糊型”,“帮我写个登录功能”

这句话你对一个刚入职的新人说了,他甚至还会追着你问七个问题。但你对Codex说了,它直接给你输出了一套完整的代码。你瞟了一眼,觉得运行没问题,上线三小时后发现:密码没加密、没有失败次数限制、Session过期时间写死在代码里、而且完全没有防御SQL注入。

这种Prompt最大的问题是你以为AI会“按照常识”帮你补充细节,但AI的“常识”是基于统计概率的通用模式,不是你的业务场景。它的登录功能可能是从一千个开源项目里学出来的,偏偏你公司的认证体系是那一千零一个。

第二类:“背景缺失型”,“把这段代码优化一下”

你发了三屏的代码过去,什么上下文都没给。Codex不知道你的QPS是100还是100000,不知道你追求的是可读性还是极致性能,不知道你是在做原型验证还是重构生产环境的核心链路。于是它给你的优化方案可能是牺牲可读性换性能的,而你恰恰需要团队里其他三个人也能维护这段代码。

Codex在没有上下文的情况下,会倾向于输出“平均最优解”,而你的业务场景几乎从来不是“平均”的。

第三类:“指令模糊型”,“你帮我检查一下”

检查什么?潜在的空指针异常?并发安全问题?还是命名不规范?算法的时间复杂度?接口的向后兼容性?你眼里的“检查”可能是安全审计,AI眼里的“检查”可能是代码规范,你们在打哑谜,而你每次都要为这个哑谜付出修改成本。

有一组对比数据很说明问题。我让同一个工程师分别用模糊Prompt和结构化Prompt完成同一个任务,统计结果如下:

Prompt类型 平均修改次数 最终可用代码占比 总耗时(含修改)
“帮我写个XX功能” 4.2次 约45% 基准的2.3倍
包含角色+背景+约束+产出格式的结构化Prompt 1.1次 约85% 基准的0.7倍

这不是AI变聪明了,是你变“清楚”了。

三、写好Prompt不是玄学,是四个可复用的结构化步骤

很多人把“会写Prompt”想象成一种天赋,好像有些人天生就知道怎么跟AI说话。我不认同。过去一年我在三个不同的技术团队里推行同一套方法,发现写好Prompt本质上是一种可以被标准化的沟通结构,跟你写技术文档、做需求评审的底层逻辑完全相通。

我把这套方法拆成四个步骤,每一个步骤解决一个特定问题。

步骤一:设定角色,“你是谁?我是谁?”

在Prompt开头明确AI的角色和你自己的角色。不是为了让对话更有仪式感,而是告诉AI该调用哪一套知识体系。

比如:“你现在是一个有8年经验的Java后端工程师,精通微服务架构和DDD设计模式。我是一个全栈开发者,正在做电商系统的订单模块重构。”

这句话不是废话。你告诉AI的是:你的回答应该以Java生态为基础语言、以微服务为默认架构、以领域驱动设计为方法论。没有这句话,AI的输出会倾向于泛编程语言的通用写法,而你可能根本不用Python和Node.js那一套。

步骤二:交代背景,“我们在哪?之前干了什么?”

用最精炼的语言描述项目和任务的上下文。可以是一句话,可以是一段代码,可以是一个GitHub链接。

比如:“我们的项目是一个基于Spring Boot 3的订单管理系统。现在需要新增一个批量退款的功能,涉及到的表是orders、refund_records、user_account。这是当前order-service下的核心代码结构:[贴代码或链接]。”

这里的逻辑很简单:不要把AI当成一个什么都知道的百科全书,把它当成一个刚加入你项目、需要快速了解上下文的高级工程师。 你会给新同事介绍什么背景,就给AI交代什么背景。

步骤三:拆解任务并加约束,“具体做什么?边界在哪?”

这是最需要花时间的一步,也是大多数人最不愿意花时间的一步。

不要写“帮我实现退款逻辑”,要写:“实现一个批量退款的方法,要求:1)单次最多处理100条退款请求;2)使用数据库事务保证原子性,如果任意一条退款失败则整体回滚;3)调用支付宝和微信支付的退款接口,需要处理第三方接口超时的情况(超时时间设为5秒);4)退款成功后更新orders表和refund_records表;5)并发条件下不能出现重复退款。”

这里的每一条约束,都是在帮AI缩小搜索空间。你给的条件越具体,AI的输出越贴合你的真实需求;你给的条件越模糊,AI就只能输出“所有人都能用的答案”,而这种答案对谁都不够好用。

步骤四:规定产出形式和协作流程,“我要什么格式的结果?你怎么配合我?”

这一步决定了你拿到的是“一段能跑的代码”还是“一个可落地的解决方案”。

比如:“请你先输出一个实现方案的简要计划(包含核心类设计和方法签名),我确认后再开始编写代码。代码符合以下规范:遵循阿里巴巴Java开发手册、为所有public方法写Javadoc注释、为关键逻辑编写单元测试、异常处理需要在日志中记录完整的堆栈信息。”

这个要求的作用不是展示你的强势,而是建立一次对话的协作契约。AI默认会一次性输出,但你让它先给方案再写代码,就给了你一个介入调整的机会,避免了它在错误的方向上一路狂奔。

四、别追新概念,先把你的“表达基本功”练扎实

最近各种文章都在讲Skills工程、Context Engineering、Loop Engineering,让很多人产生了一种焦虑:是不是我又落伍了?是不是我又得学新技术了?

我直说:这些概念都很有价值,是AI工程化的必然方向。但在你连一个结构化的Prompt都写不利索之前,它们对你的帮助极其有限。

Skills的本质是什么?是把你的工程经验封装成可复用的工作流模板,让AI按照你的习惯做事。但如果你连“我的习惯是什么”都说不清楚,你封装出来的Skill只会是一个放大了的错误模板。

Context Engineering的本质是什么?是让AI在开始工作之前就理解你的项目结构、技术选型、编码规范。但如果你在交代背景这一步就偷懒,再高级的上下文管理工具也帮不了你。

Loop Engineering听起来很酷,让AI自己规划、执行、验证、修正,人类只做决策。但你要知道,Loop的起点就是你的Prompt,如果你的方向指令是偏的,让它在闭环里自我优化只会让偏差越跑越大

所以我的观点非常明确:Codex的更新日志你可以不看,Skills的框架你可以晚点学,但如果你不花时间练好“结构化表达”这个基本功,你在AI编程这件事上永远都是在碰运气。

五、下一步:把你的“表达资本”沉淀下来

写完这篇文章,大概率会有三种反应:

第一种人看完觉得有道理,然后继续用老方法跟Codex交互,直到下一次被一个改了三天的bug唤醒这段记忆。这很常见。

第二种人会开始有意识地按照四个步骤去写Prompt,但每写一次都觉得麻烦,慢慢地又缩回了原来的习惯。这也很常见。

第三种人会做一件事:把今天读到的这四个步骤,写成一个属于自己的Prompt模板,存在笔记软件里。 每次打开Codex之前,先把这个模板调出来,按照“角色-背景-任务约束-产出格式”填一遍。

如果你选择做第三种人,你会发现一个有趣的现象:用模板写的Prompt,第一次调试就接近可用的概率远高于你随口说的那句“帮我写一下”。这时候你才算真正建立起了对Codex的“驾驭感”,而不是被它牵着鼻子走。

最后送你一句话,这句话是我踩了足够多的坑之后才真正理解的:在AI时代,编码可能是被自动化的,但“说清楚你到底要什么”这件事,永远不会。

下一步,打开你的笔记软件,新建一个页面,把下面这个骨架复制进去,开始积累你自己的Prompt模板库。这才是你作为一个开发者在AI时代真正的护城河。

【Codex Prompt 模板】
角色设定:

AI的角色:

我的角色:

项目背景:

技术栈:

相关模块/代码:

当前状态:

任务描述:

具体需求:

约束条件(性能/安全/兼容性):

边界情况:

产出要求:

格式:

代码规范:

协作流程(先方案后代码?直接输出?):

常见问题解答(FAQ)

1. 为什么我用Codex生成的代码总是需要大量手动修改?

“每次我让Codex帮我写一个功能模块,出来的代码要么逻辑错误要么风格不符合项目规范,改来改去比我自己写还累。是Codex本身能力不够,还是我哪里没做对?”

2. 那些Skills、Loop Engineering我到底要不要跟风学?

“现在到处都在吹Skills工作流和Loop Engineering,感觉不学会就被淘汰了。但我连最基础的Prompt都写不好,直接学这些高阶概念会不会更乱?我该从哪里开始?”

3. 怎么判断我写的Prompt是‘好’还是‘烂’?有没有具体的检查标准?

“我写Prompt全凭感觉,有时候能出好结果有时候完全不能用。我想知道有没有一套可执行的规则或清单,让我写完Prompt后自己就能判断质量,而不是等Codex跑完才发现是废的。”

4. 写Prompt时到底要拆到多细才算够?举个例子对比一下。

“我经常在‘写详细点’和‘写简洁点’之间纠结。写得太细怕Codex发挥受限,写得太宽又怕它跑偏。你能拿同一个任务展示一下‘太粗’和‘刚刚好’两种Prompt的产出差别吗?”

核心关键词

读者评论

程远

这篇文章真是点醒了我。之前一直抱怨Codex生成的代码不能用,每次都要大改,但从来没反思过自己的Prompt写得有多敷衍。文中那三个错误类型我全中过,尤其是那种“你帮我检查一下”的模糊指令,其实就是把思考责任都甩给AI了。确实,自己的需求都理不清,凭什么要求AI一次就给出完美答案?结构化表达才是硬道理。

许念

四个步骤的模板已经存到笔记里了,直接用了一次,效果立竿见影。之前让AI写个批处理任务,总是漏掉边界处理和回滚逻辑,这次按模板把约束条件一条条列清楚,它连并发控制和异常恢复的代码都一并写好了。感觉以前不是在跟AI合作,而是在赌运气,现在才真正有了掌控感。

叶宁

非常赞同最后那句“说清楚你到底要什么这件事,永远不会被自动化”。现在各种新技术名词满天飞,很容易让人焦虑,但这篇文章把底裤扒了:无论工具怎么进化,清晰定义问题的能力才是开发者最底层的护城河。Skills和Loop都是放大器,如果输入是模糊的,它们只会放大你的错误。

文章版权归“万象方舟”www.vientianeark.cn所有。发布者:程, 沐沐,转载请注明出处:https://www.vientianeark.cn/p/596580/

温馨提示:文章由AI大模型生成,如有侵权,联系 mumuerchuan@gmail.com 删除。
(0)
上一篇 1小时前
下一篇 1小时前

相关推荐

  • 从手动写函数到Codex自动补全复盘

    工作到第三年的某个下午,我写了一个函数,十七行,处理用户权限判断。 写完就在想,这十七行代码里,真正算得上“我思考过”的,大概只有三行。其余十四行是拿来即用的:判空、遍历、字段映射、异常兜底。你可以说这是工程规范,但那一刻我突然意识到一个问题,这几年代码打字速度越来越快,可真正让我觉得自己在“解决问题”的时刻,反倒越来越稀薄了。 差不多就是在那个时间点,我开始用 Codex,开始让它补全那些我懒得…

    1小时前
    000
  • Codex在代码审查中的真实搭法

    我真正开始信任 Codex 做代码审查,是在它指出一个我用了一下午才定位到的并发边界条件之后,那是一个我确信“绝对不可能有人能一眼看出来的”Bug。 在此之前,我和大多数开发者一样:把它当成一个“看起来很美,但关键时候不敢用”的吉祥物。问题不是它“能不能审”,而是我压根不知道怎么让它审得可信。 这篇文章,围绕“怎么搭”展开,不讲百科,不谈未来,只说你明天就能用上的真实落法。 一、核心结论:Code…

    1小时前
    000
  • Codex生成的正则表达式为何总错?

    你给 Codex 一句“匹配所有有效邮箱地址”,它毫秒级吐出一个正则出来: /^[\w\.=-]+@[\w\.-]+\.\w{2,3}$/ 语法没问题,符号没写错,任何一个入门正则教程都可以给这个写法打满分。 但这个看似完美的表达式,会把 a@b.co.uk 拒之门外,会认为 user@domain.c 一定合法,而且完全不考虑国际域名里那些非 ASCII 字符。 十次里可能有七次,Codex 生…

    1小时前
    000
  • 我们如何用Codex辅助重构旧项目

    我们如何用Codex辅助重构旧项目 去年年底,我所在的技术团队接手了一个维护了四年多的旧项目。这个项目代码库膨胀到300多个TypeScript文件,依赖了47个npm包,其中11个已经停止维护超过一年。当我第一次在团队会议上提出“让Codex来帮忙重构”时,技术总监看了我一眼,说了句让我记到现在的话:“AI写的代码,到时候出了问题谁负责?” 三个月后,还是他,在复盘会上对所有人说:以后新项目能不…

    1小时前
    000
  • 用Codex处理重复CRUD的实战效率

    用Codex处理重复CRUD的实战效率 凌晨两点,你已经为第7个后台管理模块写完了同样的分页查询、同样的字段校验、同样的增删改接口。唯一不同的是表名从 t_user 换成了 t_role,DTO里的几个字段换了名字。我经历过这种时刻,不是因为不熟练,而是因为这种工作压根就不该由人一行行手敲。后来我尝试用 Codex 把这类重复CRUD彻底重构了一遍,结果让我意识到:过去对AI编码的想象,可能都太保…

    1小时前
    100
站长微信
站长微信
分享本页
返回顶部