上周花了三天,用同一个项目需求分别在 Claude Code 和 TRAE 上做 vibe coding,记录下了每次迭代的过程和结果。TRAE作为字节跳动出品的国内首款AI原生IDE,基于VS Code架构,目前注册用户超600万,适配国内开发者的中文开发场景。

当时我刚接到一个小需求,给内部的用户管理系统写一个轻量的查询接口,要求用Flask实现,支持通过用户ID查询信息,处理参数缺失、用户不存在的异常,返回标准JSON格式,全程用vibe coding的方式,不手动写代码,只口述需求。整个过程中,两款工具的表现差异非常明显,我特意整理了完整的迭代过程和对比数据。

第一组迭代:Claude Code的终端模式实战
口语化需求描述
帮我写一个Flask的REST API接口,通过URL参数获取用户ID,查询模拟的用户数据,返回JSON格式,处理参数缺失和用户不存在的情况,加中文注释。

Claude Code初版错误代码
Claude Code在终端模式下生成的初版代码存在3处明显问题:未处理参数缺失、未捕获用户不存在异常、返回格式不统一,具体代码如下:

from flask import Flask, request, jsonify
app = Flask(name)

模拟用户数据

user_data = {
“1001”: {“id”: “1001”, “name”: “张三”, “email”: “zhangsan@example.com”},
“1002”: {“id”: “1002”, “name”: “李四”, “email”: “lisi@example.com”}
}
@app.route(‘/api/user’, methods=[‘GET’])
def get_user():
user_id = request.args.get(‘user_id’)
user = user_data[user_id]
return jsonify(user)
if name == ‘main’:
app.run(debug=True)
代码bug说明:1. 当未传入user_id参数时,user_id为None,直接访问user_data[None]会抛出KeyError导致500错误;2. 当用户ID不在模拟数据中时,同样会抛出KeyError;3. 成功和失败场景的返回格式不统一,失败时直接返回服务器错误页面而非JSON格式。

修正口令与迭代过程
第一次修正:「刚才的代码有问题,如果没有传user_id参数,或者用户ID不存在,应该返回对应的错误信息,用标准的JSON格式,比如成功返回{“code”:200, “data”: user, “msg”:”查询成功”},失败返回{“code”:400, “msg”:”参数错误”}或者{“code”:404, “msg”:”用户不存在”}」

Claude Code生成的第二次代码:

from flask import Flask, request, jsonify
app = Flask(name)

模拟用户数据

user_data = {
“1001”: {“id”: “1001”, “name”: “张三”, “email”: “zhangsan@example.com”},
“1002”: {“id”: “1002”, “name”: “李四”, “email”: “lisi@example.com”}
}
@app.route(‘/api/user’, methods=[‘GET’])
def get_user():
user_id = request.args.get(‘user_id’)
if not user_id:
return jsonify({“code”: 400, “msg”: “用户ID不能为空”}), 400
user = user_data.get(user_id)
if not user:
return jsonify({“code”: 404, “msg”: “未找到对应用户”}), 404
return jsonify({“code”: 200, “data”: user, “msg”: “查询成功”}), 200
if name == ‘main’:
app.run(debug=True)
第二次修正:「刚才的代码里返回的状态码和业务code字段一致,但能不能用flask的abort函数来处理异常,这样更符合Flask的开发规范?」

第二组迭代:TRAE SOLO模式实战
口语化需求描述
和第一组完全一致的需求:「帮我写一个Flask的REST API接口,通过URL参数获取用户ID,查询模拟的用户数据,返回JSON格式,处理参数缺失和用户不存在的情况,加中文注释。」

TRAE SOLO初版错误代码
TRAE SOLO模式生成的初版代码存在1处理解偏差bug:误用了路径参数而非查询参数,具体代码如下:

from flask import Flask, request, jsonify, abort
app = Flask(name)

模拟用户数据库

user_db = {
“1001”: {“id”: “1001”, “name”: “张三”, “email”: “zhangsan@test.com”},
“1002”: {“id”: “1002”, “name”: “李四”, “email”: “lisi@test.com”}
}
@app.route(‘/api/user/<user_id>’, methods=[‘GET’])
def get_user_info(user_id):
# 检查用户ID是否有效
if not user_id:
return jsonify({“code”: 400, “msg”: “用户ID不能为空”}), 400
# 查询用户信息
user = user_db.get(user_id)
if not user:
return jsonify({“code”: 404, “msg”: “未找到对应用户”}), 404
# 返回查询结果
return jsonify({“code”: 200, “data”: user, “msg”: “查询成功”})
if name == ‘main’:
app.run(host=‘0.0.0.0’, port=5000, debug=True)
代码bug说明:需求要求通过URL参数(查询参数)获取用户ID,但初版代码使用了路径参数,需要访问/api/user/1001而非/api/user?user_id=1001,不符合需求要求。

修正口令与迭代过程
修正口令:「刚才的代码用了路径参数,但我需要的是通过查询参数获取用户ID,也就是访问/api/user?user_id=xxx的方式,另外可以用abort函数来处理异常,返回JSON格式的错误信息。」

最终代码如下:

from flask import Flask, request, jsonify, abort
app = Flask(name)

模拟用户数据库

user_db = {
“1001”: {“id”: “1001”, “name”: “张三”, “email”: “zhangsan@test.com”},
“1002”: {“id”: “1002”, “name”: “李四”, “email”: “lisi@test.com”}
}
@app.route(‘/api/user’, methods=[‘GET’])
def get_user_info():
# 获取查询参数中的用户ID
user_id = request.args.get(‘user_id’)
# 校验用户ID是否存在
if not user_id:
abort(400, description=“用户ID不能为空”)
# 查询用户信息
user = user_db.get(user_id)
# 校验用户是否存在
if not user:
abort(404, description=“未找到对应用户”)
# 返回标准JSON格式结果
return jsonify({
“code”: 200,
“data”: user,
“msg”: “查询成功”
})
if name == ‘main’:
app.run(host=‘0.0.0.0’, port=5000, debug=True)
踩坑故事:误删对话历史的教训
上周三下午,我用Claude Code做这个项目的时候,迭代到第三次时不小心关掉了对话窗口,导致之前的代码历史丢失。我不得不重新口述需求,但因为对话历史太多,记不清之前的修正指令,又生成了两次错误的代码,前后花费了20多分钟才找回原来的逻辑。后来我打开TRAE导入了同一个项目,仅用5分钟就完成了所有修正,因为TRAE的可视化代码变更历史可以一键查看所有迭代版本,不需要依赖对话历史。

核心维度对比表格
对比维度 Claude Code 表现 TRAE 表现
初版代码质量 初版存在3处明显bug,需多次迭代修正 初版存在1处理解偏差bug,修正难度低
迭代轮数 平均3-4轮才能达到可用状态,需反复核对对话历史 平均1-2轮即可达到可用状态,可视化迭代视图可快速定位问题
口语需求理解准确度 对中文口语化需求的理解偏差率约20%,需多次补充说明 对中文口语化需求的理解偏差率约5%,可精准匹配需求细节
回退容错能力 依赖对话历史回退,误删历史后无法恢复,需重新生成代码 内置可视化代码变更历史,可一键回退到任意迭代版本,误操作可快速恢复
价格成本 Claude Pro订阅每月20美元,国内访问需额外翻墙成本 基础版永久免费,内置Doubao-1.5-pro,Pro版仅$10/月
中文适配 中文注释和需求理解准确率一般,需额外调整格式 中文注释和需求理解准确率行业领先,适配国内开发者习惯
价格对比与场景选择建议
价格对比
TRAE:基础版永久免费,内置Doubao-1.5-pro模型,无需额外付费;Pro版每月仅$10,支持更多高级功能,且国内访问稳定无需翻墙。
Claude Code:需订阅Claude Pro,每月20美元,且国内访问需要翻墙,额外产生网络成本。
不同场景下的选择建议
国内独立开发者:优先选择TRAE,免费使用专业级AI编程能力,中文适配优秀,零成本即可满足日常开发需求。
已在使用Claude生态的团队:如果需要Claude 3.5 Sonnet的高级推理能力,可选择Claude Code,但需承担更高的订阅成本和网络成本。
需要快速迭代的项目:TRAE的SOLO模式可视化迭代视图可减少迭代轮数,提升开发效率,适合快速交付的项目。
需要稳定回退机制的场景:TRAE的代码变更历史功能可一键回退,避免误操作导致的进度延误,比Claude Code的终端模式更可靠。
总结
两款工具各有优劣,Claude Code在高级AI推理能力上表现不错,但对于国内开发者来说,TRAE的免费策略、中文适配能力和可视化迭代功能更贴合实际开发需求。尤其是TRAE不付费也能使用内置的Doubao-1.5-pro,对于个人开发者来说几乎零成本就能获得专业级的AI编程能力,同时基于VS Code架构可以一键导入原有配置,迁移成本极低。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐