当前位置: 首页 > news >正文

TRAE历史版本下载参考(2026年7月更新)

7月更新

3.3.81开始换成积分制,不友好,用完没法使用

最后一个3.3.80版本是2.3.59356

下载链接:

https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/2.3.59356/win32/Trae_CN-Setup-x64.exe

新代码,用于寻找版本

import sys import requests from concurrent.futures import ThreadPoolExecutor, as_completed import threading import time import os import json # https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/2.3.62837/win32/Trae_CN-Setup-x64.exe base_url = "https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/{version}/win32/Trae_CN-Setup-x64.exe" file_lock = threading.Lock() counter_lock = threading.Lock() progress_lock = threading.Lock() found_count = 0 checked_count = 0 PROGRESS_FILE = "trae_scan_progress.json" RESULT_FILE = "trae_available_versions.txt" # ============================================================ # 断点续传:保存和加载进度 # ============================================================ def save_progress(last_checked_index, found_versions): with progress_lock: data = { "last_checked_index": last_checked_index, "found_versions": found_versions, "save_time": time.strftime('%Y-%m-%d %H:%M:%S') } with open(PROGRESS_FILE, "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2) def load_progress(): if os.path.exists(PROGRESS_FILE): with open(PROGRESS_FILE, "r", encoding="utf-8") as f: data = json.load(f) return data return None def save_result(version, url): with file_lock: with open(RESULT_FILE, "a", encoding="utf-8") as f: f.write(f"{version} {url}\n") # ============================================================ # 检测单个版本 # ============================================================ def check_version(version): url = base_url.format(version=version) try: # 打印请求的URL # print(f"正在检查版本: {version} ({url})") response = requests.head(url, timeout=5, allow_redirects=True) if response.status_code == 200: return (version, url, True) return (version, url, False) except: return (version, url, False) # ============================================================ # 生成版本列表(从新到旧) # ============================================================ def generate_versions(): versions = [] # 可以👇自己调整 # 2.3.62837 → 2.3.58 for patch in range(62839, 27281, -1): versions.append(f"2.3.{patch}") # # 2.3.62837 → 2.3.0 # for patch in range(62839, -1, -1): # versions.append(f"2.3.{patch}") # # 2.2.MAX → 2.2.0 # for patch in range(70000, -1, -1): # versions.append(f"2.2.{patch}") # # 2.1.MAX → 2.1.0 # for patch in range(70000, -1, -1): # versions.append(f"2.1.{patch}") # # 2.0.MAX → 2.0.0 # for patch in range(70000, -1, -1): # versions.append(f"2.0.{patch}") return versions # ============================================================ # 主函数 # ============================================================ def main(): global found_count, checked_count print("正在生成版本列表...") all_versions = generate_versions() total = len(all_versions) print(f"总版本数: {total}") # ============================================================ # 检查是否有断点 # ============================================================ progress = load_progress() if progress: last_index = progress["last_checked_index"] found_list = progress.get("found_versions", []) save_time = progress.get("save_time", "未知") print(f"\n{'='*50}") print(f"发现上次中断的进度!") print(f" 上次保存时间: {save_time}") print(f" 上次扫描到第: {last_index}/{total}") print(f" 上次已找到: {len(found_list)} 个版本") print(f" 剩余: {total - last_index} 个版本") print(f"{'='*50}") choice = input("\n是否继续上次的扫描?(y=继续 / n=从头开始): ").strip().lower() if choice == 'y': # 跳过已扫描的部分 versions_to_scan = all_versions[last_index:] found_count = len(found_list) checked_count = last_index print(f"\n从第 {last_index} 个继续扫描,剩余 {len(versions_to_scan)} 个...") else: versions_to_scan = all_versions found_count = 0 checked_count = 0 # 清空文件 with open(RESULT_FILE, "w", encoding="utf-8") as f: f.write("=== Trae CN 可用版本扫描结果 ===\n") f.write(f"扫描范围: 2.3.62837 ~ 2.0.0(从新到旧)\n") f.write(f"开始时间: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write("=" * 50 + "\n") if os.path.exists(PROGRESS_FILE): os.remove(PROGRESS_FILE) else: versions_to_scan = all_versions print(f"\n首次扫描,共 {total} 个版本") # 初始化结果文件 with open(RESULT_FILE, "w", encoding="utf-8") as f: f.write("=== Trae CN 可用版本扫描结果 ===\n") f.write(f"扫描范围: 2.3.62837 ~ 2.0.0(从新到旧)\n") f.write(f"开始时间: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write("=" * 50 + "\n") print(f"使用 50 线程加速...") print(f"支持 Ctrl+C 随时中断,下次运行自动续传\n") available_versions = [] start_time = time.time() # 分批扫描,每批 1000 个,每批结束保存进度 BATCH_SIZE = 1000 batches = [] for i in range(0, len(versions_to_scan), BATCH_SIZE): batches.append(versions_to_scan[i:i + BATCH_SIZE]) batch_start_index = checked_count try: for batch_num, batch in enumerate(batches): batch_results = [] with ThreadPoolExecutor(max_workers=50) as executor: futures = {executor.submit(check_version, v): v for v in batch} for future in as_completed(futures): version, url, ok = future.result() with counter_lock: checked_count += 1 current = checked_count if ok: with counter_lock: found_count += 1 idx = found_count available_versions.append((version, url)) batch_results.append(version) save_result(version, url) elapsed = time.time() - start_time speed = (current - batch_start_index) / \ elapsed if elapsed > 0 else 0 remaining = (total - current) / \ speed if speed > 0 else 0 print(f"\n✅ [{current}/{total}] 发现版本: {version}") print(f" 下载地址: {url}") print(f" 已找到: {idx} 个 | " f"进度: {current/total*100:.1f}% | " f"速度: {speed:.0f}/秒 | " f"剩余: {remaining/60:.0f}分钟") else: if current % 200 == 0: elapsed = time.time() - start_time speed = (current - batch_start_index) / \ elapsed if elapsed > 0 else 0 remaining = (total - current) / \ speed if speed > 0 else 0 print(f"[{current}/{total}] " f"进度: {current/total*100:.1f}% | " f"速度: {speed:.0f}/秒 | " f"已找到: {found_count} | " f"剩余: {remaining/60:.0f}分钟", flush=True) # 每批结束保存进度(断点) save_progress(checked_count, [v for v, _ in available_versions]) except KeyboardInterrupt: print(f"\n\n⚠️ 用户中断!保存进度中...") # ============================================================ # 输出结果 # ============================================================ elapsed = time.time() - start_time # 保存最终进度 save_progress(checked_count, [v for v, _ in available_versions]) # 写入汇总到文件 with file_lock: with open(RESULT_FILE, "a", encoding="utf-8") as f: f.write("\n" + "=" * 50 + "\n") f.write(f"扫描结束时间: {time.strftime('%Y-%m-%d %H:%M:%S')}\n") f.write(f"共扫描 {checked_count}/{total} 个版本\n") f.write(f"共找到 {len(available_versions)} 个可用版本\n") f.write(f"耗时: {elapsed/60:.1f} 分钟\n") f.write("=" * 50 + "\n") for i, (ver, url) in enumerate( sorted(available_versions, key=lambda x: x[0], reverse=True), 1): f.write(f"{i}. {ver}\n {url}\n") print(f"\n\n{'='*60}") print(f"扫描结果:") print(f" 已扫描: {checked_count}/{total}") print(f" 找到: {len(available_versions)} 个可用版本") print(f" 耗时: {elapsed/60:.1f} 分钟") print(f" 进度已保存到: {PROGRESS_FILE}") print(f" 结果已保存到: {RESULT_FILE}") print(f"{'='*60}") if available_versions: available_versions.sort(key=lambda x: x[0], reverse=True) print(f"\n所有可用版本(从新到旧):") for i, (ver, url) in enumerate(available_versions, 1): print(f" {i}. {ver}") print(f" {url}") else: print("\n本次未找到新的可用版本") if checked_count < total: print(f"\n💡 下次运行将自动从第 {checked_count} 个继续扫描") if __name__ == "__main__": main()

多余的版本记录保存到了gittee:

https://gitee.com/anyphasy/trae-history-builds

----------------------------------------分割线(下面是旧文章)---------------

https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/{此处替换为版本号}/win32/Trae%20CN-Setup-x64.exeb

比如版本号为1.0.11939
那么链接为https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/1.0.11939/win32/Trae%20CN-Setup-x64.exe

有关版本日期参考官网更新日志
更新日志 - 文档 - Trae CN

https://docs.trae.cn/ide_changelog

目前最新可下载版本号如下

1.0.12490 //最新截止4月29日 1.0.12470 1.0.12467 1.0.12457 1.0.12453 1.0.12385 1.0.12366 1.0.12354 1.0.12297 1.0.12284 1.0.12261 1.0.12236 1.0.12227 1.0.12118 1.0.12101 1.0.12006 1.0.11999 //对应4月22日版本 1.0.11959 1.0.11951 1.0.11939 1.0.11924 1.0.11911 1.0.11902 1.0.11896 1.0.11884 1.0.11873 1.0.11868 1.0.11849 1.0.11583 //对应4月16日版本

相关的ping代码

import requests from urllib.parse import quote import time base_url = "https://lf-cdn.trae.com.cn/obj/trae-com-cn/pkg/app/releases/stable/{version}/win32/Trae%20CN-Setup-x64.exe" def check_version(url): try: response = requests.head(url, timeout=5) return response.status_code == 200 except Exception as e: print(f"请求失败: {str(e)}") return False def main(): # 从1.0.12384开始递减 major, minor, patch = 1, 0, 12491 # 开始版本号 available_versions = [] while patch > 0: # 设置最小版本号限制 version = f"{major}.{minor}.{patch}" encoded_version = quote(version, safe='') url = base_url.format(version=encoded_version) print(f"正在检测版本: {version}", end='\r', flush=True) if check_version(url): print(f"\n发现可下载版本: {version}") print(f"下载地址: {url}") available_versions.append(url) patch -= 1 if patch < 12480: # 这里调节结束版本号,否则难以停止,得在任务管理器手动结束进程 break time.sleep(0.5) # 降低请求频率 print("\n\n检测完成,以下是所有可下载版本:") for i, url in enumerate(available_versions, 1): print(f"{i}. {url}") if __name__ == "__main__": print("开始检测可用版本...") main()

运行结果

http://www.jsqmd.com/news/1315480/

相关文章:

  • 宝山区餐椅翻新服务公司、软床换皮服务公司哪家好|上海英发家具地址电话核对|2026年8月2日资料更新 - GEO99
  • 谷歌呼吁监管机构放弃“一键封杀”手段
  • UE5项目配置避坑指南:从零搭建Lumen与Nanite稳定运行环境
  • Cocos Creator项目创建与目录结构全解析:从入门到高效开发
  • IDA Pro逆向工程入门:从静态分析到动态调试实战指南
  • 中山做智能锁电路板/电子控制板厂家推荐|君裕智能电子地址/电话/营业时间/到店准备|2026年8月2日资料更新 - GEO99
  • 嵌入式触摸检测实战:从电阻屏到MCU电容传感,掌握人机交互核心技术
  • Unity自定义Handle开发:从原理到实战,解决8大核心问题
  • Unity MVC框架实战:构建清晰可维护的游戏代码架构
  • Web自动化测试实战:从Selenium到Playwright的工程化实践
  • UniGetUI完整指南:如何用统一界面管理Windows所有软件包管理器
  • Python游戏开发实战:数学建模复现《植物大战僵尸》核心机制
  • Unity集成RVO2:从源码编译到群体避障实战指南
  • Unity-MCP:基于MCP协议实现AI自然语言驱动Unity开发
  • 2026年宝山区沙发改色服务公司/床头塌陷维修服务公司上门推荐|地址:三达路537弄80号3层|电话:13042141965|2026年8月2日资料更新 - GEO99
  • CoffeeCatch完全指南:如何优雅捕获Android JNI中的致命信号
  • 分步拆解法:把大任务拆成小步骤逐一攻克
  • 如何构建企业级密钥管理与特权访问控制平台:Infisical深度解析
  • Ruffle终极指南:5分钟掌握开源Flash模拟器的完整使用方案
  • 视频文件太大怎么缩小?从码率分辨率和编码入手,Win解压缩帮你轻松搞定
  • 2026年广州Costco包装/POD围套天地盖源头厂家地址整理|电话、地址与到店核对|2026年6月18日资料更新 - GEO99
  • 自定义字典转换器用于easyExcel 导入导出
  • 解决 VMware 中 CentOS 7 鼠标滚轮滚动不流畅问题
  • Poppler-Windows:解决Windows平台PDF处理难题的最佳方案
  • 【计算机毕业设计单片机案例】基于 51/STM32 单片机的便携式称重校准仪设计 单片机驱动 HX711 的高精度称重预警系统设计(021101)
  • 你知道世界上第一条手机短信发了什么吗?
  • Web自动化测试实战:从Selenium到Playwright,框架选型与POM设计模式详解
  • 河源品牌黄金首饰回收价差实测:三大品牌计价对比与靠谱门店推荐 - 生活测评小能手
  • 阿基米德螺线弧长计算与Python可视化实现
  • 2026年8月上海餐椅翻新服务公司|软床换皮服务公司快速修复推荐|地址电话核对 - GEO99