
在 AI 大模型快速迭代的这段时间里很多开发者其实都有过类似的经历刚接触 AI 编程工具时信心满满结果生成的代码报错连篇想用 AI 做自动化脚本却因为上下文理解偏差反复返工甚至有人一度陷入自我怀疑担心自己的技术积累会被 AI 瞬间抹平。但真正走过这个阶段后你会发现AI 并没有让谁彻底倒下它只是换了一种方式逼你重新思考什么才是开发者不可替代的能力。这篇文章就围绕这个主题展开我会从 AI 编程的核心概念讲起再到环境搭建、提示词技巧、一个完整的实战案例以及最常见的踩坑排查和工程化建议希望能帮助正在经历挫败期的你把 AI 真正变成自己成长的杠杆。先说一个比较扎心的场景你打开电脑准备用 AI 辅助完成一个需求输入提示词之后AI 用不到十秒就给出了一大段代码。你把它粘贴进项目运行然后迎接你的是满屏的红色报错。你试着让 AI 重新生成它换了一种写法结果报错变成了另一个报错。循环几次之后你的耐心耗尽最终只能自己手动改代码。这个场景我相信很多开发者都遇到过它带来的挫败感非常真实。 但我想说的是这种挫败不是 AI 没用的证据而是我们还没掌握与 AI 协作的正确方法。AI 是一个强大的生成器但它不是你的项目经理也不是你的测试工程师。它不会主动确认需求边界不会检查运行环境更不会保证生成代码和你的业务代码风格一致。所有这些约束都需要由你通过提示词、上下文管理、代码审查和测试验证来主动补充。当你把这些环节补齐之后AI 生成代码的效率才会真正释放出来。 本文不会讨论“AI 会替代谁”这种大而空的话题而是聚焦在一个更具体的问题上一个被 AI 生成的烂代码折磨过的开发者如何通过一套系统的方法让 AI 变成自己的高效辅助工具。2.1 先理解 AI 辅助编程的三种形态很多初学者会把“AI 编程”理解成单一一件事但实际上它可以分成三种不同形态理解它们的区别非常关键因为这会直接影响你的期望值第一种是对话式生成。你打开 ChatGPT、Claude、文心一言、Kimi 或其他对话类产品以问答形式让 AI 生成代码片段、解释报错、补全接口逻辑。这种形态最通用适合前期的需求拆分、代码样例设计也适合当你对某个库不熟悉时快速了解用法。它的缺点是上下文有限AI 无法感知你整个项目的细节。第二种是 IDE 插件式辅助。这类工具以 GitHub Copilot、Cursor、Fitten Code 等为代表它们在编辑器中直接提供代码补全、行内修改、自动生成单元测试、代码解释、重构建议甚至自动修复报错的能力。IDE 插件能读取你当前打开的文件甚至在授权后扫描项目源码因此生成内容与项目的关联性比对话式更强。这种形态适合日常编码场景能让“写代码”这个动作本身变得更快。第三种是 Agent 式自动化。Agent 与普通对话的核心区别在于它可以规划任务、调用外部工具、执行命令并观察结果再根据结果调整下一步动作。一个简单的例子是你丢给 Agent 一个任务“帮我实现一个数据库备份脚本”Agent 会先了解你的环境选择合适的库生成脚本运行测试然后汇报结果。这种形态适合自动化任务但也意味着你需要给它更严格的权限边界因为它真的会在你的机器上执行命令。这三个形态不是互相替代的关系而是层层递进。刚开始使用 AI 辅助编程时建议从第一种和第二种入手等积累足够的提示词经验和对 AI 输出结果的判断力之后再尝试 Agent 模式。核心概念先看一段最小示例体验一下 AI 返回结果的基本格式。# 模拟调用 AI 接口时的请求结构用于理解后续真实调用的姿势 { model: deepseek-chat, messages: [ {role: system, content: 你是一名资深Python工程师回答问题时给出代码示例。}, {role: user, content: 如何用Python获取当前目录下所有文件名} ], temperature: 0.3 }上面这个结构是当前主流大模型对话接口的通用请求格式可以在理解 API 调用时作为参考。为什么要理解这个结构因为大模型本身是无状态的它不知道你是谁、不知道你的项目背景它只能根据messages里提供的对话历史进行续写。你在用任何带界面的 AI 产品时产品方帮你把历史消息拼接好了但如果你是直接调用 API 或者使用 Agent就需要自己管理这些上下文。很多 AI 代码质量不稳定的问题根源其实不在模型本身而在于上下文信息太稀疏。2.2 大模型、RAG、Agent、微调这些名词到底在说什么另一个让开发者感到挫败的点是技术名词太多。AI 领域每隔一段时间就会冒出新的术语这容易让人觉得自己落伍了。实际上日常开发中真正高频用到的概念并不多这里梳理三个最核心的。大模型LLM本身是一个文本续写器。它根据你输入的历史文本逐字预测下一个 token 最可能是什么。它没有“理解”业务也没有真的记忆它只是通过海量语料学习到了文本之间的统计规律。所以它生成的代码“看起来合理”但未必能在你的环境中运行——因为你的环境信息比如 Python 版本、依赖冲突、操作系统路径规则它都不知道。RAG 在中文学术文档里常被翻译成“检索增强生成”。它的思路是当模型回答问题之前先从外部知识库中检索相关的片段把这些片段拼到上下文里再让模型基于这些片段生成答案。这样做的好处是模型不再依赖训练时学到的过时知识而是可以使用你提供的最新资料或私有文档。Agent 是最近被讨论得越来越多的概念。它本质上是一个让大模型循环工作的框架模型生成一个计划执行工具调用观察返回值修正计划再继续执行。Agent 的价值在于它能完成多步骤任务但也因此需要更明确的工具权限和终止条件。否则你可能看到 Agent 在服务器上跑了一大堆命令最后却没有产出你要的结果。这三个概念对应了三种能力大模型代表生成能力RAG 代表知识补充能力Agent 代表任务执行能力。对普通开发者来说最值得优先学习的是提示词基本功和 API 调用能力RAG 和 Agent 可以在项目需要时再深入。2.3 AI 生成代码与 AI 重构代码是两个层次还有一个容易混淆的地方AI“生成”代码和 AI“重构”代码对开发者的意义完全不同。生成代码是我们平时接触最多的场景。给 AI 一个问题它给你一段代码。这段代码的质量取决于它见过的相似模式以及你能提供多少约束。生成代码适合从零开始搭建模块、写一次性脚本、生成测试用例、尝试陌生 API 的用法。重构代码则难度更高因为它要求 AI 理解现有代码的结构、调用关系、业务意图。这通常需要把相关文件的内容都提供给 AI长篇文件还需要切片处理。重构代码更适合用 IDE 插件或支持项目索引的 Agent 来操作普通对话式产品很难只凭一个文件就给出完美的重构建议。理解了这两层区别之后你会少很多挫败感。因为你会明白让 AI 直接写一个大型业务模块是不可控的而让 AI 先帮你写一个小函数、生成一组测试数据、解释一段陌生代码却是可靠且高效的。在实际操作之前先说一句关于版本的提醒本文涉及的代码以通用环境为准版本需要根据你的项目实际情况调整重点演示配置思路。不要盲目照抄版本号遇到兼容性报错时优先查看官方文档。 ### 3.1 准备一个可调用的 AI 接口 推荐的路径是先准备一个带 API 的模型服务因为无论你用哪种上层工具最终都需要一个模型来提供生成能力。 如果你的网络环境和账户条件允许可以使用在国内可正常访问的模型服务例如 DeepSeek、通义千问、Kimi 等平台都有自己的开放平台。它们的 API 调用方式大多是 OpenAI 兼容格式也就是说你只需要修改 base_url 和 api_key代码就能直接跑通。 python # 文件路径test_ai_api.py # 演示如何调用一个兼容 OpenAI 接口的模型服务 from openai import OpenAI client OpenAI( api_key你的API密钥, base_urlhttps://你的服务商提供的接口地址 ) response client.chat.completions.create( modeldeepseek-chat, messages[ {role: system, content: 你是一个Python开发助手回答简洁且可执行。}, {role: user, content: 用Python写一个函数读取CSV文件并打印前5行。} ], temperature0.2 ) print(response.choices[0].message.content)这段代码里需要注意三个地方api_key不要硬编码在代码中更不要提交到 Git 仓库建议放到环境变量中base_url要填服务商提供给你的接口地址不同平台不一样temperature控制随机性写代码场景建议调低到 0.1 到 0.3这样输出结果更加稳健。# 使用环境变量的版本 import os from openai import OpenAI client OpenAI( api_keyos.environ.get(LLM_API_KEY), base_urlos.environ.get(LLM_BASE_URL) )很多新手遇到“API 调用报错”后就直接放弃其实大部分报错原因就三类密钥配置不对、接口地址写错、账户余额不足。按这个顺序排查很快能定位。3.2 考虑本地模型部署方案如果你对数据隐私要求比较高或者想避免 API 调用费用可以考虑本地部署开源模型。常见的方式是通过 Ollama 这类工具一键运行模型。# 安装并启动 Ollama 后拉取一个适合代码生成的模型 ollama pull qwen2.5-coder# 直接通过 HTTP 请求调用本地 Ollama 服务 import requests response requests.post( http://localhost:11434/api/chat, json{ model: qwen2.5-coder, messages: [ {role: user, content: 用Java写一个读取配置文件的方法} ], stream: False } ) print(response.json()[message][content])本地部署的好处是请求不出内网适合敏感数据场景。缺点是模型参数量受你机器显存和内存限制小参数模型的代码质量通常弱于商业大模型 API。实际使用中可以两者结合一般性代码用本地模型复杂算法设计或项目级重构用云端大模型。3.3 安装 IDE 插件日常开发中IDE 插件带来的效率提升非常直接。以 VS Code 为例你可以在扩展市场搜索 Fitten Code、Continue 等工具安装。这些插件多数让你自己配置模型来源既可以使用云端 API也可以连接本地 Ollama 服务。// VS Code 中某类 AI 插件的模型配置文件示例具体字段以你选择的插件文档为准 { provider: openai-compatible, base_url: http://localhost:11434/v1, model: qwen2.5-coder, api_key: ollama }配置好之后你在编辑器中输入注释或在代码行末按快捷键就能获得补全建议。注意插件生成的代码同样不可盲从它的上下文来源可能只是当前文件的一部分不包含完整的项目依赖关系。提示词Prompt是调用大模型时最重要的输入变量。很多开发者抱怨 AI 代码质量差但回溯一下对话历史就会发现自己的提示词本身就非常模糊。比如“帮我写一个爬虫”“用 Python 处理这个 Excel”这类提示词没有给出输入格式、输出要求、异常处理和运行环境AI 只能靠猜。 ### 4.1 提示词的基本结构 一个有效的代码生成提示词通常包含以下五个要素任务目标、输入样例、输出要求、约束条件、完整上下文。 先看一个反面示例帮我写一个函数读取Excel数据并做处理。这种提示词的问题非常明显没有说明 Excel 文件的路径来源没有说明“处理”的具体逻辑没有说明函数入参和返回类型没有说明依赖库是 pandas 还是 openpyxl。 再看一个改进后的版本我需要一个Python函数输入参数是Excel文件路径file_path。 函数功能读取该Excel文件的第一个工作表将其中“金额”列转换为数字类型过滤掉空值返回处理后的DataFrame。 依赖库pandas。 如果文件不存在抛出FileNotFoundError并给出中文提示。 请给出完整代码和调用示例。两个提示词对比之后你会发现后者给 AI 提供了足够的信息去生成可用代码。提示词的本质就是一种需求沟通AI 看不到你的业务背景所以你在提示词里补充的细节越多它生成的代码就越贴近实际。 这里有一个小的技巧在提示词中明确要求 AI“给出完整调用示例”。因为 AI 经常会只给函数片段不给调用方式导致你在使用时不知道参数怎么传。 ### 4.2 让 AI 生成可运行代码的三个实战技巧 第一个技巧是“分步骤要求”。不要试图让 AI 一口气完成一个完整系统而是拆成多个小块任务。先让它写工具函数再写调用逻辑最后写测试。每完成一块你人工审查一块确认无误后再让 AI 继续写下一块。 第二个技巧是“要求 AI 标注环境依赖”。如果你让 AI 生成代码可以在提示词末尾加上一句请说明运行这段代码需要安装哪些第三方库并给出安装命令。这样能减少后续安装依赖的试错成本。 第三个技巧是“把报错信息原样喂给 AI”。当代码运行报错时AI 能根据报错内容反推代码问题。这是一个被很多人忽略的用法。你只需要把完整报错堆栈粘贴到对话中同时告诉 AI 你的代码想实现什么它往往能精准定位问题。报错信息示例 Traceback (most recent call last): File test.py, line 12, in df[金额].astype(float) File pandas/_libs/lib.pyx, line 2410, in astype TypeError: could not convert string to float: 1,234当我把这个报错原样交给 AI并补充说明“金额列包含千分位逗号希望先清理再转换”AI 会给出类似下面这样的修复思路 python df[金额] df[金额].str.replace(,, , regexTrue).astype(float)这个过程中最关键的步骤不是让 AI 去猜而是你手工补充了“千分位逗号”这个环境信息。AI 能高效修复问题是因为你提供了足够的根因线索。4.3 代码审查与纠错循环把 AI 生成的代码接入项目之前一定要经过一个“审查-测试-修复”的循环。这个循环不能省。即使是经验丰富的开发者直接信任 AI 代码也有可能引入隐蔽的逻辑错误。审查时重点关注四点第一边界条件。AI 经常忽略空值、空列表、重复数据等边界场景。比如它生成了一个读取列表元素的函数但没考虑列表为空的情况你需要在审查时主动补充异常处理。第二安全风险。如果 AI 生成的代码涉及 SQL 拼接、命令执行、文件上传必须重点检查是否包含注入漏洞。不要让 AI 直接生成带参数的拼接 SQL应该要求它使用参数化查询。第三依赖合规。AI 有时会引用一些小众库来实现某个简单功能实际上标准库或者你们项目已有的工具类就能解决要警惕无谓的依赖引入。第四性能隐患。AI 生成的数据处理代码有时候会用多层 for 循环在数据量小的情况下没问题但放到生产环境会非常慢。如果 AI 生成的代码复杂度明显偏高建议你手工优化或者把性能需求写进提示词让它生成更优解法。如果只是聊概念收获终究有限。下面我们用一个完整的 “命令行待办事项工具” 作为案例走一遍从需求设计到 AI 辅助落地的流程。这个小项目不依赖复杂框架却能把提示词、人工审查、测试验证这些环节串起来。 ### 5.1 需求与设计 在让 AI 写代码之前先把需求拆分清楚。我们要实现的工具功能如下 - 在命令行中以 python todo.py add 任务内容 的格式添加待办事项。 - 以 python todo.py list 列出所有未完成事项。 - 以 python todo.py done 1 将编号为 1 的待办事项标记为完成。 - 数据持久化到本地 JSON 文件 todo.json。 这个拆解过程非常重要因为一旦你先把需求说清楚AI 才可能生成符合预期的代码。没有这一步AI 很容易生成一个控制台程序但无法满足存储和命令交互需求。 ### 5.2 通过对话生成核心代码 把需求描述之后我再把运行约束补充进去请实现一个Python命令行工具。 使用系统内置的argparse解析命令参数。不要使用第三方库。 数据保存到本地todo.json文件中。 命令格式 python todo.py add 任务内容 python todo.py list python todo.py done 1 请用面向过程的写法保持代码简洁并给出完整的程序。正常情况下AI 会生成类似下面的代码。这里给出我基于 AI 结果整理后的完整版本文件路径放在项目根目录下。 python # 文件路径todo.py import argparse import json import sys from pathlib import Path TODO_FILE Path(__file__).parent / todo.json def load_todos(): if not TODO_FILE.exists(): return [] with open(TODO_FILE, r, encodingutf-8) as f: return json.load(f) def save_todos(todos): with open(TODO_FILE, w, encodingutf-8) as f: json.dump(todos, f, ensure_asciiFalse, indent2) def add_todo(content): todos load_todos() todos.append({id: len(todos) 1, content: content, done: False}) save_todos(todos) print(f已添加待办事项{content}) def list_todos(): todos load_todos() unfinished [t for t in todos if not t[done]] if not unfinished: print(当前没有未完成的待办事项。) return for t in unfinished: print(f{t[id]}. {t[content]}) def mark_done(todo_id): todos load_todos() for t in todos: if t[id] todo_id: t[done] True save_todos(todos) print(f已完成{t[content]}) return print(f未找到编号为 {todo_id} 的待办事项。) def main(): parser argparse.ArgumentParser(description命令行待办事项工具) subparsers parser.add_subparsers(destcommand) add_parser subparsers.add_parser(add, help添加待办事项) add_parser.add_argument(content, help任务内容) subparsers.add_parser(list, help列出待办事项) done_parser subparsers.add_parser(done, help标记完成) done_parser.add_argument(id, typeint, help待办事项编号) args parser.parse_args() if args.command add: add_todo(args.content) elif args.command list: list_todos() elif args.command done: mark_done(args.id) else: parser.print_help() sys.exit(1) if __name__ __main__: main()这段代码的生成过程中AI 最值得吸收的设计点是保存 ID 的方式用了“当前列表长度加一”这在删除场景下会出现 ID 复用问题但作为命令行个人小工具是可以接受的。如果你希望 ID 不重复后续可以引入自增序号字段这就是人工审查需要发现的问题。5.3 人工审查与补全上面的代码有一个明显的问题mark_done会把已经完成的任务留在 JSON 中list命令只展示未完成任务。从功能上说没问题但假设你执行两次add、一次done 1、再一次add第二个新任务的 id 是 3而不是 2。这不会导致程序崩溃但会让用户困惑。如果你希望 id 始终连续就需要在add_todo函数中动态计算当前最大 id 再加一。这个细节 AI 没有处理需要人工审查发现。我们把add_todo修改一下def add_todo(content): todos load_todos() next_id max((t[id] for t in todos), default0) 1 todos.append({id: next_id, content: content, done: False}) save_todos(todos) print(f已添加待办事项{content})这个例子很好地说明了一个观点AI 负责生成可运行的骨架代码而真正的工程细节兜底仍然需要你。5.4 运行与验证将代码保存后依次执行下面的一组命令python todo.py add 学习Python python todo.py add 阅读Spring文档 python todo.py list python todo.py done 1 python todo.py list预期输出大致如下已添加待办事项学习Python 已添加待办事项阅读Spring文档 1. 学习Python 2. 阅读Spring文档 已完成学习Python 当前没有未完成继续查看 1. 阅读Spring文档实际运行时第一次执行list会输出两条第二次list会只输出未完成的那条。这就是一个完整的人机协作闭环AI 生成主体代码人工修正 ID 策略最后通过命令验证行为。5.5 用 AI 生成测试用例代码跑通之后别忘了测试。这一步也适合让 AI 辅助完成。你可以这样要求 AI请针对上面的todo.py编写pytest测试用例。 测试时使用临时目录下的todo.json不污染真实数据。 覆盖add、list、done三种行为。AI 给出的测试用例会是类似下面的结构。这里保留核心部分作为示例# 文件路径test_todo.py import json import sys from pathlib import Path import pytest sys.path.append(str(Path(__file__).parent)) pytest.fixture def temp_todo_file(tmp_path, monkeypatch): import todo test_file tmp_path / todo.json monkeypatch.setattr(todo, TODO_FILE, test_file) return test_file def test_add_todo(temp_todo_file): import todo todo.add_todo(写周报) todos todo.load_todos() assert len(todos) 1 assert todos[0][content] 写周报 assert todos[0][done] is False def test_mark_done(temp_todo_file): import todo todo.add_todo(写周报) todo.mark_done(1) todos todo.load_todos() assert todos[0][done] is True测试代码的价值在于当后续功能扩展时你可以让 AI 增量生成测试再基于测试结果判断修改是否影响旧功能。这也是 AI 辅助编程中一个非常重要的工程实践方向。在真实项目的开发过程中AI 代码带来的问题五花八门。这里把最高频的几类整理成一个排查清单你遇到问题的时候可以逐行对照。 | 问题现象 | 常见原因 | 解决思路 | | --- | --- | --- | | AI 生成的代码看起来正确运行却报错 | 漏看运行环境缺少依赖或版本不兼容 | 把完整报错信息交给 AI并补充环境版本信息 | | AI 编造了不存在的 API | 训练数据截止时间较早或模型幻觉 | 提示词中要求 AI 给出官方文档链接或以官方文档为准 | | 长文件处理时 AI 丢失前文信息 | 上下文窗口限制 | 拆分文件按函数、模块分别让 AI 查看或使用支持项目索引的工具 | | AI 生成的 SQL 存在拼接风险 | 没有显式要求参数化 | 在提示词中强制要求使用 PreparedStatement / 参数化查询 | | 生成的代码风格与项目不一致 | 没有提供项目代码风格规范 | 提供项目代码片段作为风格参考 | | AI 反复修改但问题依旧 | 缺少根因信息 | 停止反复生成先人工定位或补充日志再让 AI 分析 | | Agent 执行了多余命令 | 工具权限和任务边界不清晰 | 限定 Agent 可用命令范围并在沙箱环境测试 | 这里再展开说一下几个容易踩的深坑。 第一个坑是幻觉 API。AI 有时会生成一个看起来像官方库的调用方式但实际上那个方法根本不存在。避免方法是在提示词中写上“请只使用 Python 3.x 标准库”或“请只使用 pandas 官方文档中存在的 API”并让 AI 标注版本适应范围。 第二个坑是上下文污染。当你在一个对话中不断让 AI 修改代码对话历史会累积。早期生成的错误片段可能会影响后面的修改方向。建议每次有重大需求变更时开启新对话重新粘贴必要的上下文避免 AI 被前面的错误思路带偏。 第三个坑是权限风险。使用 Agent 模式时要留意 AI 执行的命令是否在合理范围内。例如不要给 Agent 配置对外开放的数据库连接信息不要在未备份的环境下让 AI 直接执行删除语句。生产环境操作不可自动化兜底必须有人工审批。聊完了案例和排查最后落到工程实践上。如何把 AI 真正融入开发流程让大家在长期任务中获得稳定收益下面这些建议值得参考。7.1 建立人机结对的工作流把 AI 当作结对编程中的助理而不是决策者。合理的分工方式是人负责需求分析、方案设计、代码审查、上线决策AI 负责初稿生成、样板代码、测试数据、文档注释、报错初步定位。一个推荐的日常循环是先写注释或伪代码让 AI 填充实现然后人工阅读生成的代码重点检查边界条件最后让 AI 补充单测和调用示例再重复一轮人工审查。这样AI 的高产出与人的判断力各司其职。7.2 明确哪些任务适合交给 AI从经验来看以下四类任务交给 AI 的性价比最高第一重复性样板代码例如 DTO 转换、配置文件解析、简单的 CRUD 接口第二测试用例生成只需清晰描述函数行为即可第三陌生库的快速理解让 AI 给出使用示例第四报错信息归因把异常堆栈交给 AI 往往能节省大量搜索时间。而以下任务则不适合直接交给 AI核心交易链路的设计、基础设施权限变更、安全相关逻辑、以及需要深度理解既有业务背景的重构。在这些场景中AI 可以辅助生成但最终确认必须依赖人。7.3 用工程化手段约束 AI 的输出不要依赖 AI 自己生成规范代码而要把规范固化在提示词和工具链中。比如你可以准备一组团队级提示词模板把代码风格、异常处理方式、注释语言、依赖要求提前写入。每次让 AI 生成代码时复制模板并追加具体需求。对内容安全要求高的项目还可以在 CI 阶段加入代码扫描配合人工 code review 共同把关。代码写入仓库之前至少要人工跑一遍测试。AI 生成代码后不要直接推送到主干分支应该走正常的 MR/PR 流程。这不仅是规范问题也是对 AI 输出质量的有效缓冲。7.4 关注生产环境的 AI 应用风险如果你正在开发基于大模型的应用系统还需要额外考虑几个问题。第一提示词注入用户输入可能改变系统提示词导致模型输出越权内容。第二上下文隐私不要将敏感数据直接拼接在提示词中。第三输出的稳定性生产级系统应当对模型结果做二次校验而不是直接把模型返回内容展示给用户。第四成本控制长上下文的请求费用会明显上升需要设计合理的缓存和降级方案。7.5 持续学习建议如果看到这里你已经对 AI 辅助编程有了比较完整的认识下一步可以根据自己的实际项目选择进阶方向。如果你更关心日常提效建议深入练习提示词工程把常用业务场景整理成提示词模板。如果你更关心系统架构建议学习 RAG 的应用方式和企业知识库接入。如果你对自动化流程感兴趣值得研究 Agent 的任务拆分、工具调用和异常恢复机制。如果你参与部署工作可以关注模型本地部署、推理服务优化和模型评测方法。无论选哪个方向核心原则都是一样的让 AI 参与事用人做决策。每一次把 AI 生成的代码变为可运行、可交付的代码都是你能力增长的一步。被 AI 打乱节奏的挫败期是必经的但只要掌握方法它真的会推着你走向更扎实的技术阶段。而如果你也正处于那种“被 AI 生成的代码反复折磨”的阶段不妨按本文的流程重新试一次先拆需求再写提示词人工审代码最后补测试。你会发现AI 并没有让你倒下它只是在等你学会怎么骑车罢了。