AI编程:从代码编写到提示词工程,程序员如何应对范式转移?
近期,我与律师行业就人工智能的应用进行了一次深入的交流。


这次交流让我发现一个有趣的现象。以医师、教师、律师、工程师和分析师为代表的传统中产专业人士,对于AI技术的接纳度和学习能力普遍较高。他们不仅学习意愿强烈,而且已经能够将AI工具有效地应用于实际工作流程中。具体表现包括利用Coze等平台构建工作流自动化工具,更有甚者已经开始实践AI辅助编程,并取得了一定成果。
值得特别关注的是AI编程的应用。与我交流的这批律师本身并不具备代码基础,这恰恰从侧面印证了一个趋势:编程的技术门槛正在急剧降低。近期随着Gemini 3.0等模型的发布,业界关于“前端已死”的讨论也反映了这一变化。
因此,我们可以得出一个初步结论:AI编程至关重要,它正在对程序员行业产生深远影响。然而,断言AI将完全取代程序员则为时过早。更准确地说,AI编码(AI Coding)的发展预示着我们将进入一个自然语言编程的新时代。
基于我近两年的实践经验,在参与多个公司复杂AI项目时观察到一个普遍模式:核心功能代码可能仅有一万行左右,但用于驱动AI的提示词(Prompt)却可能多达数十万行。
这提示我们,编写提示词本身就是一种自然语言编程。因此,AI不会消灭程序员这个职业,但它会深刻改变职业内涵。被替代的将是那些仅仅停留在“工具使用”层面、机械编写代码的工作,或许可以称之为“代码搬运工”。
对于每一位程序员而言,关键在于清晰地认识到:软件开发范式正在发生根本性转移。未来,程序员可能需要与产品经理、医生、律师等“非专业”开发人员共同竞争提示词编写的工作量。你准备好了吗?
鉴于AI编程如此重要,本文将简要梳理其核心脉络,帮助读者快速建立认知。
实践是最好的老师
AI行业发展日新月异,如果仅仅以学习具体工具或技巧为目标,很容易陷入“学完即过时”的困境。因此,若想有效学习AI编程,需要注意两个要点:
- 以解决实际问题为导向。最好的学习方式是“以战练兵”,带着明确的目标和项目去学习,效率最高。
- 夯实基础知识。“以战养战”虽然高效,但也可能因缺乏系统认知而导致基础不牢。因此,在具备初步实践后,仍需进行系统性学习,构建扎实的AI技术理论基础,其重要性远超对单一工具的精通。
对于零基础的初学者,掌握AI编程通常需要跨越以下三个基础阶段:
- 提示词工程:学会如何与AI有效沟通。
- 理解工作流:把握AI融入开发流程的整体框架。
- 案例实践:通过具体项目将知识融会贯通。
首先,需要掌握提示词工程的基本原理与方法。其次,要理解如何将AI工具整合到完整的开发工作流中。最后,便是今天重点探讨的案例实践环节。我们将先阐述方法论,再进行实操演示。
AI编程方法论详解
本次案例实践将假设你是一名毫无技术背景的产品经理,因此部分描述会尽可能详尽,已有技术背景的读者可选择性略过。
一个完整的AI辅助开发流程通常包括:需求拆解、架构设计、提示工程、代码生成、多轮迭代、前后端集成以及部署测试等步骤。
AI编程的核心思路在于:让AI参与到开发的每一个阶段,充当你的智能助手或“结对编程”伙伴。本质上,你扮演产品经理的角色,负责定义和设计;AI则扮演程序员的角色,负责实现具体的“代码搬运”工作。
在实际操作中,不同阶段需要注意的要点各有不同。
一、需求拆解
对于任何开发工作,明确的需求都是前提,与AI协作也不例外。无论AI多么智能,它都需要清晰、具体的指令才能发挥作用。
因此,第一步是将模糊的业务需求梳理成清晰的功能模块和技术组件。假设我们需要开发一个简单的用户反馈收集工具,允许用户提交反馈,管理员可以查看和导出。这个需求可以拆解为:
- 一个包含反馈表单的前端页面。
- 一个接收提交的后端API接口,用于将反馈数据保存至数据库。
- 一个管理后台页面(或至少具备导出功能)用于查看反馈列表。
- ……
一种低效的做法是直接告诉AI:“帮我做个收集反馈的工具。” 当然,如果你对互联网项目的技术构成确实不了解,这也没有关系,可以直接启用AI进行协助。常见的提问方式包括:
- “要实现XX功能,需要哪些技术组件?”
- “我要开发一个用户反馈收集网页,应该选用什么前后端技术栈?”
模型通常会给出包含技术选型在内的详细建议。在这一阶段向AI提问时,应尽可能提供充足的上下文和限制条件,例如用户规模、数据类型等。例如,可以使用如下提示词:
我需要一个Web应用来收集用户反馈。
每天约有100条反馈,需存储文本和用户联系方式。
我希望有一个简单后台查看所有反馈。
请问我应该选择怎样的前端、后端框架和数据库?需要哪些主要模块?
明确需求细节和非功能需求(如规模)后,AI将能够给出更具定制化的技术方案建议。
二、架构设计
明确需求后,下一步是进行架构设计。这包括确定应用需要哪些页面、后端服务、数据存储方案,以及它们之间的交互方式。在AI的辅助下,这部分工作的复杂度已大大降低。
一、拆解前后端任务
你可以这样描述:
我们需要一个前端页面让用户填写反馈;
一个后端接口接收提交;
可能还有一个前端页面供管理员查看反馈或一个接口导出数据。
将每个模块的职责简要描述出来,然后可以请AI检查是否全面。
在这个过程中,AI可能会提醒你增加诸如表单验证、错误提示等细节模块。这种与AI讨论架构的过程,类似于和经验丰富的工程师进行方案评审。
二、生成项目结构
任务拆解完成后,可以要求AI(例如使用Cursor等工具)生成一个简单的代码组织结构,例如:
前端:index.html, feedback.js...;
后端:app.py 或 server.js...;
数据库:schema.sql 或使用SQLite文件...
这些输出可以作为后续实施的具体指引。需要注意的是,AI建议的项目结构通常是通用型的,你应当结合实际需求进行调整(例如,是否需要将前后端完全分离)。但总体而言,在规划阶段AI就能提供一个相当可行的项目骨架。
对于有一定技术背景的产品经理,还可以让AI给出更详细的设计,例如数据库实体关系图、API接口设计规范等:
请设计反馈接口的API,包括请求方法、URL、请求参数和返回格式
这样的提示会让AI产出类似Swagger风格的描述。例如:
POST /api/feedback - Body: {user, contact, message}
Response: 201 Created or error code
这些细节设计输出能够显著加快后续的实现速度,并减少反复修改的次数。
三、提示词编写
至此,之前学习的提示词工程技巧就该派上用场了。用清晰的语言**“告诉”**AI你期望的功能和行为,是整个AI编程过程中最核心的环节。
为了更直观,我们来看一个简化版的提示词及其生成的代码结构示例:
**用户提示:**
请使用Python Flask创建一个简单的待办事项(Task)管理API,包括:
- 列出任务的接口 (GET `/tasks`)
- 新增任务的接口 (POST `/tasks`)
- 删除任务的接口 (DELETE `/tasks/<id>`)
每个任务包含 `id`, `title`, `done` 三个字段。请给出完整的Flask后端代码。
当我们提供如此明确的提示后,AI将产出相应的代码。生成的后端代码可能如下所示:
from flask import Flask, request, jsonify
app = Flask(__name__)
tasks = [] # 用于存储任务的简易内存数据库
@app.route('/tasks', methods=['GET'])
def get_tasks():
return jsonify(tasks)
@app.route('/tasks', methods=['POST'])
def create_task():
data = request.get_json()
task = {
"id": len(tasks) + 1,
"title": data.get("title", ""),
"done": False
}
tasks.append(task)
return jsonify(task), 201
@app.route('/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
global tasks
tasks = [t for t in tasks if t["id"] != task_id]
return'', 204
if __name__ == '__main__':
app.run()
注:以上代码为AI生成的示例,省略了部分错误处理和完整性检查。
通过清晰地让AI了解需要实现哪些接口以及数据结构,它可以直接生成可工作的代码雏形。接下来,你可以进一步要求AI生成与此后端交互的HTML/JS前端代码,从而实现一个完整的待办事项列表管理界面。
四、迭代开发
在实际工作中,期望单轮对话就获得完美代码是不现实的。通常需要经过不断追问、澄清和追加要求的多轮迭代过程。例如,如果AI生成的代码缺少错误处理,可以继续提示:
请在新增任务接口中添加当请求body缺少title时的错误处理,并返回400错误。
AI会根据这个要求修改代码。如果前端页面样式简陋,可以要求:
请使用Bootstrap美化页面。
这种多轮迭代本身就是提示词工程的一部分:通过逐步细化和纠正,引导AI的输出不断逼近预期目标。
在迭代过程中,建议不要一次性提出过多修改点,最好分开逐条提出,让AI逐一处理。这样做可以避免模型遗漏某些要求,也便于观察每次修改的效果。
迭代是AI编程的常态。 你需要同时扮演“产品经理”和“测试员”的角色,在每一轮AI输出后进行验证,再决定下一步的修改或优化方向。一个完整的迭代流程如下:
一、生成初版代码: 让AI产出第一个版本的代码。得到代码后,尝试运行它(可以在本地环境或在线工具中),观察基本功能是否实现。
二、分析问题与反馈给AI: 初版代码大概率会存在一些问题或不足,例如功能未按预期工作、存在Bug、缺少输入验证、UI不美观等。 记录下具体问题,例如:“删除任务功能没有生效”或“提交表单后缺少成功提示”。 在对话中将这些具体问题反馈给AI。由于AI拥有对话的上下文,它能够理解代码含义并尝试定位问题。
这一过程类似于调试对话:AI同时扮演了解释器和修复者的角色。
三、引导AI修复: 针对发现的问题,要求AI修改代码。例如:
请修复删除任务后任务列表未更新的Bug。
AI可能会定位到问题所在并给出修正后的代码。仔细检查AI的改动,有助于理解它是如何分析和解决问题的。 许多非技术背景的产品经理通过这种方式,逐步掌握了简单的调试技能,因为AI常常会解释“问题在于X,因此我将代码Y修改为Z”。
除了修复Bug,还可以让AI逐步完善功能,例如:
请增加任务完成标记的功能 (将 done 字段置为True)。
每提出一个新需求,AI都会在现有代码基础上进行增量修改。
四、反复测试: 每次AI给出新的代码后,都应该再次运行和检查。 对于Web应用,可以在浏览器中进行多轮操作,模拟用户行为,观察是否还有遗漏的问题。 例如,提交空内容时会怎样?并发提交有没有问题?将这些测试中发现的新问题,再次交给AI处理。
经过几轮迭代后,应该能得到一个基本满足需求的版本。此时如果时间允许,最好对代码进行一次走查。对于产品而言,只要你想优化,就总存在可以优化的空间。
插曲:调试技巧分享
这里有一些实践经验可供参考:
- 保持每次修改的单一性: 如前所述,一次只让AI修改或增加一处功能。这样更容易定位新引入的问题。如果一次性提出十项修改,AI可能顾此失彼,生成的代码也不便于验证。
- 勇于推翻重来: 有时经过多轮修补,代码可能变得混乱。AI毕竟不是经验丰富的工程师,可能会引入冗余或绕路的实现。如果感觉代码质量下降,可以考虑从头再生成一次。AI“推倒重来”的成本几乎为零。而且由于此时你对需求的描述已经更加清晰,第二遍生成的代码往往比第一版思路更清晰。
- 保存每个阶段的代码: 养成及时保存AI输出代码的习惯,以便在需要时回退或比较不同版本的差异。
- ……
五、集成
前后端代码分别完成后,需要开始进行集成工作。
如果之前是分别让AI生成了后端API和前端页面,需要确保两者在接口路径、数据格式上保持一致。例如,后端定义了 POST /api/feedback 接口,前端提交时的URL和JSON字段名必须与之匹配。
AI在不同对话中生成代码时,容易出现不一致的情况。因此,最好在同一个上下文对话中让AI了解前后端需要配合。可以先生成后端,然后对同一个AI说:
下面生成前端代码,请调用刚才定义的API接口。
如果前后端是在不同模型或工具中生成的,整合时发现不对应,也可以将后端的接口规范提供给前端生成的AI,让它修改代码以对齐。例如:
后端要求POST请求JSON里字段名为message,请修改前端fetch代码按此格式发送。
前后端集成时,跨域问题(CORS) 是一个常见障碍。对于非技术背景的PM,调试此类问题有一定难度。 如果出现CORS错误,可以把错误信息粘贴给AI,它会告诉你需要在后端添加CORS支持并给出相应代码(例如使用Flask-CORS库或在Express中设置响应头)。如果数据格式不符,也可以把前端发送的数据示例和后端期望的格式告诉AI,请它找出差异。
最后,集成之后,前端的用户体验往往需要进一步打磨,此时再次进入迭代优化环节即可。
六、部署
在本地运行良好后,便进入部署测试阶段。
对于原型项目,部署环境可以很简单:例如将前端静态文件托管在GitHub Pages、Netlify等服务上,将后端部署到Railway、Heroku等提供免费方案的云平台。
这里最大的挑战往往是对部署流程不熟悉。这同样可以借助AI的指导来完成:
一、环境搭建: 询问AI需要怎样的运行环境。例如:
如何将Flask应用部署到云服务器?
AI会给出安装Python、设置虚拟环境、安装依赖、启动应用等一系列步骤。
二、云服务平台: 不必被云服务吓倒,现在很多云平台提供一键部署功能,主要难点在于编写配置文件。 在内部部署好原型后,可以邀请小范围用户试用。收集到的新需求或问题,再反馈给AI进行持续的改进和迭代。
以上是AI编程中偏重方法论的部分,接下来我们将通过一个具体案例进行实操演示。
案例实操
为了更适应国内多数同学的使用环境,本次实操选用的AI编程工具是TRAE,其网址为:https://www.trae.ai/
可以使用海外版本的TRAE,因为国内版本限制了一些基座大模型的调用。在工作过程中,可以同步使用ChatGPT进行协助,它可以提供许多初始信息和指导。

目前来看,ChatGPT在这方面的能力相当强(主要因为笔者一直是付费用户):

一、编码前准备
我们先从后端项目开始操作。让ChatGPT为我们生成一个独立的后端项目结构,然后将得到的文本内容一键复制到TRAE中。ChatGPT为我们梳理好的项目结构如下:
feedback_app/
│
├── app.py # Flask 入口
├── config.py # 配置文件
├── extensions.py # 数据库、JWT、CORS 等扩展初始化
│
├── models/
│ └── feedback.py # Feedback 模型
│
├── routes/
│ ├── feedback_api.py # 用户反馈接口
│ └── admin_api.py # 后台管理接口
│
├── services/
│ ├── feedback_service.py # 反馈业务逻辑
│ └── admin_service.py # 管理员业务逻辑
│
├── utils/
│ ├── auth.py # JWT / Token 工具
│ ├── validators.py # 参数校验
│ └── pagination.py # 分页工具
│
└── requirements.txt
将得到的文本内容复制粘贴到TRAE编辑器中:

在TRAE中选择你的基座大模型。通常我们倾向于使用Claude系列模型,但前段时间Claude被下架了。目前代码能力较好的有GPT-4或Gemini模型,但如果你使用的是国内版本的TRAE,可能无法找到这些模型。
由于基本的项目结构我们已经放入了TRAE,现在只需要编写简单的提示词即可。你可以直接将这个文件拖入对话框中,TRAE编辑器会自动识别文件内的信息,读取刚刚填写的项目结构。
需要说明的是,将文件放入对话框时,最好每次放置单个文件,或几个关键文件。也可以选择部分代码区域给到对话框。一般不建议将整个文件夹一次性给到对话框,否则token消耗极快,编辑器反应也会非常缓慢。

在正式编写代码之前,我们先做一个小结:

接下来进入代码环节。
二、后端开发
现在我们已经将项目结构交给了TRAE。但如果我们不知道如何给AI编辑器定义要求,可以像之前让ChatGPT分析需求一样,让ChatGPT为我们生成一段给AI编辑器的指令:
怎么编写要求,让AI编辑器更好的跟着项目结构来编写代码?

虽然ChatGPT给的是针对Cursor编辑器的建议,但AI编辑器的原理是通用的:

在编写代码之前,需要将项目内置的智能体选择为Builder模型,这样编辑器才有权限将文件写入你的电脑:

现在就可以等待几分钟,AI编辑器TRAE会调用其集成的模型(如ChatGPT),分析项目结构并开始编写代码:

TRAE在编写过程中可能会主动请求运行命令行,只需点击“运行”即可。你也可以将命令行添加到白名单中,这样TRAE就不会每次发起请求,而是直接运行。
这里给一个建议:不要添加任何命令行到白名单中。 因为有时候TRAE可能会“抽风”,错误地删除或修改部分文件。在项目代码较多、依赖关系复杂的情况下,TRAE误删的文件反而会增加代码审查和修复的工作量。

TRAE运行完成后,我们可以看到左侧的资源管理器中多了很多文件:

编写完成后,先启动项目看看是否报错:

我们可以看到下图中,项目运行在以下地址:
Running on http://127.0.0.1:5000
这说明项目启动成功了。出现的警告信息可以暂时忽略,它只是在提醒我们当前处于开发环境,如果要在线上使用,需要更换服务器配置。

现在代码已正常启动,但还不确定接口是否可以正常请求。可以使用Postman、Apifox等工具进行接口测试,或者直接生成前端页面进行前后端联调,这样更直观。
找到controller层,可以看到有 /login 这样的路径。把这个文件给到对话框,让AI帮我们整理出接口文档:

让编辑器帮我们整理接口文档,并写入到对应的文件中。
这里说明一下:代码文件的命名一般使用英文格式,多个单词之间使用下划线“_”连接。我这里为了方便观看,在描述中使用了中文文件名,但实际文件应为英文。

后端部分结束后,接下来是前端代码。
三、前端开发
现在我们重新打开一个TRAE窗口,用于编写前端代码:

然后,再次去ChatGPT生成对应的前端项目结构提示词,并将刚才后端生成的接口文档复制到新项目中。
操作和上面类似:将项目结构描述放入对话框,让编辑器生成对应的前端代码框架。这里我没有提供额外的要求,当然你也可以限制要求,比如安装特定的依赖库。

框架搭建好以后,TRAE会自动请求运行项目。项目运行后发现能正常启动,说明我们的前端基础环境也搭建好了。现在界面可能不太美观,但没关系,先检查是否能正常连接到后端:

将后端生成的接口文档交给编辑器,编辑器会阅读文档,并根据文档来对接后端的接口:

点击提交后,如果显示“提交成功”,则说明前端与后端的连接是贯通的:

如何查看我们刚刚填写的数据呢?
- 配置本地SQL服务,例如连接到本地的MySQL服务。

- 由于我们之前的提示词是让数据直接保存到SQLite文件中,因此需要提前安装SQLite数据库的查看插件才能正常访问这个.db文件。

数据正常返回,说明从前端请求到后端,后端保存到数据库,这个基本的业务逻辑是通的。剩下的工作就是优化代码。

四、调试与迭代
在优化之前,需要先梳理出需要优化的问题,例如:
- 页面太丑,缺乏美观性。
- 我们有登录的逻辑,但页面启动后没有登录页面,直接进入了反馈填写界面。
先解决登录问题:


登录问题解决后,现在解决页面美化问题。当然,美化的提示词也可以让ChatGPT来生成:
你现在是一个资深前端架构师 + UI/UX 设计师,我正在开发一个 Vue 项目(Vue3 + Vite 或 Vue2,请自动识别现有代码)。
请基于我当前的 Vue 项目结构,对页面进行全面的 UI 美化与渲染优化,要求如下:
# 🎨 设计风格要求
- 风格现代、简洁、响应式
- 使用流畅的过渡动画(如淡入、滑动)
- 色彩清爽,有统一主题(如浅色主题 + 主色调)
- 布局精致:合理的间距、卡片式布局、阴影、圆角
- 支持移动端友好展示
# 🧩 技术要求
- 保留我的业务逻辑,不影响功能
- 可以引入 UI 框架(如 Element Plus / Ant Design Vue / Vuetify / TailwindCSS),根据代码习惯自动选择最匹配的方案
- 样式统一使用:CSS / SCSS / Tailwind(根据我项目自动判断)
- 添加合理的组件拆分、复用结构
- 提供优化后的 `<template>`、`<script>`、`<style>` 完整代码
# ✨ 页面效果要求
请为页面加入以下美化处理:
- 统一的整体布局(容器 + 页头 + 页面内容)
- 卡片布局(圆角、柔和阴影)
- 按钮与输入框采用现代 UI 风格
- 加入加载动画/空状态界面(loading、empty state)
- 添加 Hover/激活态效果提高交互性
- 如界面中存在表格/列表,请改成更美观的展示样式
# 📦 输出要求
请输出:
1. 优化后的完整组件代码(template/script/style)
2. 若使用 UI 框架,请给出安装命令
3. 如需全局样式(如主题颜色),请给我对应的代码
4. 如需公共布局组件,请自动帮我创建
请直接在理解我现有代码后给出最优方案。
将生成好的提示词写入项目文件中。现在利用的基座大模型是Gemini-2.5-pro,它在美化前端页面代码方面,比其他基座大模型效果更好,所以切换为Gemini-2.5-pro。当然,你也可以使用现在很火的Gemini-3-pro,只不过TRAE目前没有提供,后续应该会上架。

优化完成后,编辑器会请求启动项目。这时项目启动报错,因为是编辑器启动的项目,所以在识别到报错信息后,它会自动分析错误并进行修正:

再次启动项目后,发现页面的确美观了很多,但访问后直接进入了反馈填写页面,而不是登录页,所以还需要继续调整:

经过几次修改后,页面就可以正常返回数据了:

现在开始添加新功能,例如“待办事项”模块。

新功能添加成功后,调试的方法还是和前面一样:进行前后端联调,根据报错信息一步步调整。最后一步是给项目添加日志功能。

至此,基本开发流程就差不多了:

五、一些建议
事实上,我们平时使用更多的是Cursor,因为它的效果通常会更好一点。Claude Code虽然优秀,但在国内使用不便,不过未来工具的同质化可能会很严重。优化后的页面展示如下:

然后,将代码提交到远程仓库:
✔ Step 1:进入你的项目目录
cd 你的项目路径
如果没有项目目录,先创建再进入:
mkdir my-project
cd my-project
✔ Step 2:初始化 Git 仓库
git init
创建一个 .git 文件夹作为版本库。
✔ Step 3:检查当前文件状态
git status
✔ Step 4:添加所有文件到暂存区
git add .
✔ Step 5:提交为一次 commit
git commit -m "Initial commit"
✔ Step 6:在 GitHub 创建一个远程仓库
例如创建:
https://github.com/<你的用户名>/<仓库名>.git
复制这个地址备用。
✔ Step 7:设置远程地址 origin
git remote add origin https://github.com/你的用户名/仓库名.git
✔ Step 8:确认远程地址是否设置成功
git remote -v
当然,也可以使用可视化工具(如JetBrains系列IDE内置的Git功能)进行代码提交,这里不再扩展。
六、后端部署
利用第三方云平台进行部署。部署到第三方平台通常需要对部分配置文件进行修改,可以直接在编辑器中让AI帮你修改项目中需要更改的配置文件。

因为是教程,部署顺序无所谓。我们先部署后端,再部署前端。后端经过几次调试后,可以部署到Railway上:

图中的健康检查(Health Check)要求,也是编辑器在识别报错信息后自动添加的。
在对Railway平台不了解时,建议把Railway的官方文档地址或报错信息给到编辑器,让AI去读取对接文档。识别报错信息后,AI可以根据文档进一步修改代码,以达到部署的要求。


七、前端部署
前端使用Netlify进行部署。

将部署过程中出现的报错信息交给ChatGPT进行分析。最好把Netlify的网站地址也给到ChatGPT,让它结合实际情况修改对应的部署步骤。
部署项目中出现的问题,除了交给AI分析,也可以查看官方开发文档来寻求解决方案。等待部署成功后:

至此,这个演示项目就被成功部署到线上了。整体流程回顾:

本次简单的实操教程到此结束。从逻辑上看,即使是小白用户也能依此流程进行操作。接下来,我们探讨一下AI编程工具的选择问题。
AI编程工具选择
当前,各大基础模型几乎都在“卷”编程模块。除了争夺程序员工作台的入口之外,编程这件事本身就很接近“造物主”的行为,基座模型在这方面的能力强弱,直接关系到后续Agent工具调用的能力以及模型的自我进化速度。因此,AI编程工具领域的竞争也异常激烈。
从微软的GitHub Copilot到字节跳动的Trae,从OpenAI的ChatGPT到腾讯的CodeBuddy,选择哪款工具也是各位技术负责人关心的问题。
我们在这个案例中使用的是Trae,主要是考虑到各位的入手门槛。事实上,真正在体验和效果上备受好评的还是Cursor、Claude Code等国外工具,只不过国内的工具跟进速度也很快。
想要评价一款AI编程工具是否好用,可以从可用性、代码生成质量、稳定性、语言支持、集成能力、安全与隐私、适用场景、用户类型适配性等多个维度出发。但其实也不必过于纠结,因为同质化确实比较严重。
可用性
衡量一款AI编程工具的可用性,需考虑其上手的难易程度和用户体验,这一点怎么强调都不过分。
大部分代码补全类工具以插件形式集成到主流IDE中,上手门槛较低。例如GitHub Copilot可以无缝接入VS Code、JetBrains等常用编辑器,Amazon CodeWhisperer则深度融入AWS开发套件,对于已经熟悉这些生态的开发者来说几乎是零学习成本。
腾讯的CodeBuddy同样提供插件,支持IntelliJ IDEA、VS Code等IDE以及CLI模式,安装配置简便就意味着使用便捷。
相比之下,Cursor属于基于VS Code改造的独立编辑器,需要下载单独的客户端;但由于其界面与操作习惯与VS Code高度相似,VS Code用户可以快速上手。
Replit则是一个在线IDE平台,新用户需要适应其云端开发界面,好在其学习曲线相对平缓,界面简洁直观,很多学生和初学者都能很快掌握。
另一方面,许多非专业开发者(如产品经理、业务人员)也喜欢使用Cursor这类IDE,因为它可以帮助他们直接读取和操作文件,有些人甚至将其当作智能体(Agent)来使用。事实上,从Coding IDE演变为Agent的模式会非常顺滑!
代码质量
解决门槛问题后,首要关注点就是生成代码的质量,包括正确性、智能程度、上下文理解能力等。不同产品背后所依托的模型能力不同,导致代码输出质量有高有低:
现阶段公认较强的编程模型是OpenAI的GPT系列和Anthropic的Claude系列,近期Google的Gemini也表现强势。 ChatGPT的代码理解和生成能力极强,在复杂算法和边缘案例上往往能给出接近最佳的解答。Claude的上下文窗口巨大,可以一次性分析长达数十万token的代码,对超长文本/代码的处理独具优势。而Gemini 3.0近期的宣传重点便是其在前端代码生成方面的突破。具体下来,这几款模型各有侧重,都能使用,但最终同质化会非常严重。
许多编程工具都是围绕上述顶尖模型构建功能的,它们的逻辑很清晰:你的基础能力是60分,我只需要做到70分,再结合好的产品体验就能胜出。其中的代表就是Cursor,现在有些智能体如Mentat也遵循这个思路。
其次,场景化(本地化)体验比较关键。比如Trae针对中文编程场景做了优化,对中文注释、变量名等内容的处理更加友好。
具体而言,Trae对中文需求的理解和支持大概率是超过Cursor和Claude Code的。
总而言之,代码质量属于“是否合格”的问题。只要这块表现不达标,工具就很难被开发者选中。
稳定性
稳定性包含两个层面:一是工具本身性能和服务的稳定可靠,二是所生成代码的一致性和可控性。
以Claude Code为例,这类针对性强的工具,国内用户几乎很难稳定使用。
在这方面,可以描述的不多。一个简单的原则是:优先选择背后有大型科技公司支持的工具,这样不必担心其突然停止服务或倒闭。
集成能力
集成能力指AI工具与开发者现有工作流、开发环境以及其它工具链的结合程度。这部分与之前提到的“门槛”部分有些类似。
总的来说,Copilot一类的插件式工具集成范围最广,几乎“即插即用”;Cursor/Trae一类的IDE型工具内聚能力强,但局限于自身环境;而像CodeBuddy这样支持多端(IDE插件+CLI+Web)的工具则在灵活性上独树一帜。
企业在选型时,应仔细盘点团队现有的开发环境和工具链。
……
最后附上一个简单的对比表格以供参考:

AI编程的局限性
尽管AI编程展现出惊人的威力,但目前仍有明显的局限和边界需要我们理性看待。例如在芯片设计、硬件驱动、特定领域DSL等小众编程领域,现有的AI模型并不擅长,甚至完全无法胜任。
因此,理解AI编程存在哪些短板,以及这些短板为何存在,对于深度掌握AI编程具有重要意义。
首先是AI不擅长的小众或高度专业化领域。当前AI对芯片编程(如VHDL/Verilog)、硬件驱动开发、并行计算底层优化、工业控制系统编程等领域仍然显得力不从心。
以芯片设计领域为例,我身边恰好有几位朋友从事相关工作。他们在成都的现状是:公司给出百万年薪,却依然难以找到合适的人才,因为精通此道的人实在太少!
现在最大的问题是什么呢?由于相关训练数据极其稀少,主流大模型对这些领域的掌握非常有限。甚至由于公开代码和资料的匮乏,模型很可能连基本的语法规则都不了解。
并且,因为模型没有针对这些领域进行微调训练,即使你提供少量样例,模型也容易出错或遗忘规则。例如,要求AI用Zig语言编写一段程序,模型可能完全答不上来。
这种情况在企业内部自定义代码库上也有类似体现:如果你的公司有一套自研的领域特定语言(DSL),拿通用的开源模型来编写代码,结果肯定是一问三不知。
那么,怎么办呢?唯一的途径是进行专门的微调(Fine-tuning)。这也提醒我们:AI能够有效协助的范围,与其训练数据所覆盖的范围密切相关。一旦超出这个范围,就变成了“无米之炊”,很难期望模型发挥出正常水平。
这里还遗留了一个问题:为什么大模型公司不去训练这些小众领域呢?答案在于投资回报率(ROI)过低。
模型的训练任务依旧遵循二八原则。它们现在只要解决好20%最常用的增删查改、网页设计(包括小程序)等场景,就已经能够解决市场上80%的编程需求了。因此,基础模型开发商也没有足够的动力投入巨大资源去解决那些长尾问题。
而且,当前的大语言模型存在本质上的缺陷。换句话说,当前模型虽然看上去很聪明,但其生成逻辑本质上仍然是基于概率的统计和组合。即便引入了思维链(CoT)等技术,效果也有限。其生成模式导致一旦在复杂逻辑中走错一步,就可能引发连锁错误,很难自行完全纠正。
所以,当前AI编程在前端等领域表现出来的强力效果,其实是基础模型投入海量资源针对性训练的结果。如果连这些主流场景都做不好,那么之前投入的那么多资源也就白费了。
关于如何解决小众领域的AI编程问题,我们也正在进行实践探索。完整的方案和结果尚未出炉,只能说这个方向是可行的,但困难重重。后续有具体成果时,再向大家汇报。
除了微调,也有人尝试用精心设计的提示词(Prompt)来“训练”模型掌握特定领域知识。这种方法不能说完全没效果,但意义有限。因为模型可能连该领域的基本语法都没学会,而且当前模型的上下文长度也不支持你将一整本领域手册传进去进行“灌输”。
总结与展望
小众领域AI编程能力的提升,是一个典型的工程技术 + 领域知识(Know-How) 相结合的过程。
一方面,需要通过微调、提示词工程等技术手段教会AI专业的领域知识;另一方面,必须有领域专家的深度参与和验证闭环,让AI在不断的迭代中变得更可靠。
而如何借助AI获得强大的工程技术(或工具使用)能力,再运用我们独有的领域Know-How去解决实际场景中的复杂问题,这正是AI编程时代真正的核心竞争力所在。
AI编程并不难,很多人都能学会并使用。AI编程也并非一定会淘汰谁,它只是将深刻理解业务逻辑和领域知识这一点,提升到了一个前所未有的重要位置。