最近 Trae 的更新可谓是亮点十足,尤其是新增的 Remote - SSH 支持,给我的开发工作带来了极大的便利,今天就来和大家分享一下我的使用体验。
Remote - SSH:远程开发的福音
对于经常需要在远程服务器上进行开发的人来说,Remote - SSH 功能简直是雪中送炭。以往在 Trae 中连接远程服务器不太方便,而现在,一切都变得简单直接。
在左侧找到远程桌面管理器,点击新建 ssh ,就能轻松建立与远程主机的连接。首次登录时,Trae 会自动安装远程服务器相关组件,这个过程非常流畅,不需要繁琐的手动配置。安装完成后,我就可以像操作本地文件一样,在 Trae 中打开远程服务器上的文件进行修改和调试。
拿我之前负责的一个电商项目来说,项目部署在云服务器上,需要根据实时的销售数据和用户反馈频繁调整商品展示页面的代码。以往,我得在本地修改代码后,通过 FTP 工具上传到服务器,再登录服务器查看运行效果。要是代码有问题,又得重复这个流程,一趟下来,时间都浪费在等待文件传输和频繁切换工具上了。但现在,借助 Trae 的 Remote - SSH,我能在 Trae 界面内直接打开服务器上的项目文件,实时修改并调试。
比如,为了优化商品搜索功能,服务器端使用的是 Python 的 Flask 框架。原本的搜索代码在app.py文件中,大致如下:
ini
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/search', methods=['GET'])
def search_product():
keyword = request.args.get('keyword')
# 这里简化为直接返回一个固定结果,实际是从数据库查询
result = [{"name": "示例商品", "price": 100}]
return jsonify(result)
通过 Trae 的 Remote - SSH 连接到服务器后,我直接在 Trae 中打开app.py文件,将搜索逻辑改为从真正的数据库查询。假设使用的是 SQLite 数据库,安装相关库后,修改后的代码如下:
ini
import sqlite3
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/search', methods=['GET'])
def search_product():
keyword = request.args.get('keyword')
conn = sqlite3.connect('products.db')
cursor = conn.cursor()
cursor.execute("SELECT name, price FROM products WHERE name LIKE?", ('%' + keyword + '%',))
result = cursor.fetchall()
conn.close()
result_list = [{"name": row[0], "price": row[1]} for row in result]
return jsonify(result_list)
修改完保存后,在 Trae 的终端中,通过flask run命令重启服务,马上就能在本地浏览器中访问远程服务器的搜索接口,看到优化后的搜索结果,大大缩短了开发周期,让我们能更快地响应市场变化。而且,在传输数据时,Trae 采用的加密技术让我很放心,不用担心数据安全问题。
自定义模型配置:个性化开发的利器
Trae 这次更新还支持了自定义模型配置,这对有特定需求的开发者来说意义重大。在右下角对话框打开模型选择框,就能看到自定义模型的选项。目前它支持多个模型提供商,包括 Anthropic、DeepSeek、火山、硅基流动、阿里云和腾讯云等 。
点击某个提供商后,Trae 内置了几个常见的模型,但如果我们有其他特殊需求,点击 "使用其他模型",就能进行自定义配置。这意味着我可以根据不同的项目需求,选择最适合的模型。
就像我参与的一个自然语言处理项目,是关于智能客服系统的开发。一开始使用 Trae 的默认模型,对客户咨询的一些专业术语理解不准确,导致回复效果不佳。后来,我利用自定义模型配置,选择了一个更擅长处理客服领域语言的模型。以 Hugging Face 的一些开源模型为例,假设我们选择了distilbert-base-uncased模型进行微调。
首先,准备训练数据,格式为 JSONL,每一行是一个对话样本,如下:
json
{"question": "你们的产品有售后保障吗?", "answer": "是的,我们提供一年的售后保修服务。"}
{"question": "如何退货?", "answer": "您可以在订单页面申请退货,我们会有专人联系您。"}
然后,使用transformers库进行微调,代码如下:
ini
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForQuestionAnswering, TrainingArguments, Trainer
# 加载数据集
dataset = load_dataset('json', data_files='客服数据.jsonl')
# 加载预训练模型和分词器
tokenizer = AutoTokenizer.from_pretrained('distilbert-base-uncased')
model = AutoModelForQuestionAnswering.from_pretrained('distilbert-base-uncased')
# 数据预处理
def preprocess_function(examples):
questions = [q.strip() for q in examples["question"]]
inputs = tokenizer(questions, examples["answer"], truncation=True, padding='max_length')
return inputs
tokenized_datasets = dataset.map(preprocess_function, batched=True)
# 训练参数设置
training_args = TrainingArguments(
output_dir='./results',
num_train_epochs=3,
per_device_train_batch_size=16,
per_device_eval_batch_size=64,
warmup_steps=500,
weight_decay=0.01,
logging_dir='./logs',
logging_steps=10
)
# 训练模型
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["validation"]
)
trainer.train()
经过这样的优化,智能客服对客户咨询的理解准确率大幅提升,从原来的 60% 左右提高到了 85%,大大增强了客户体验,也为企业节省了人力成本。
还有一次,在进行一个图像识别相关的科研项目时,需要对不同类型的细胞图像进行分类。通过 Trae 的自定义模型配置,我能快速调整模型的结构和超参数,让模型更贴合细胞图像的特征。与之前使用通用模型相比,分类准确率从 70% 提升到了 90%,极大地推动了科研项目的进展,节省了大量重新训练模型的时间和计算资源。
其他细节优化
除了这两个重磅功能,Trae 在其他方面也有一些细节优化。比如,代码补全功能似乎更加智能了,它能更好地理解上下文,给出更贴合我意图的代码补全建议。
以前在一些复杂的代码结构中,补全功能可能会出现不准确的情况,现在这种情况明显减少了。在一个 Java 项目中,定义了一个复杂的数据结构类ComplexDataStructure,包含多个内部类和复杂的方法调用。当在另一个类中使用这个数据结构时,比如要获取某个内部类的特定属性,输入ComplexDataStructure.后,Trae 能准确补全出内部类的名称,并且在进一步输入内部类对象名和.后,能准确补全出该内部类的属性和方法,大大提高了编码效率。
还有交互体验上,操作更加流畅,响应速度也有所提升。在将 AI 生成的代码应用到项目中时,过程更加便捷,一键就能将代码应用到多个模块,并且可以随时灵活调整指令,实时预览 AI 生成代码的前端效果,让开发过程更加高效和直观。
总的来说,Trae 这次更新的功能给我带来了非常不错的使用体验,Remote - SSH 和自定义模型配置让它在众多开发工具中更具竞争力,期待 Trae 未来能有更多的惊喜更新。