注意:TRAE 可能把水印和品牌资源带进你的项目

  • 最近我用 TRAE 做 Web 前端时,发现项目里的默认占位图被换成了一张带有 TRAE 标识的图片

  • 我想过国内免费使用,可能会出现问题,但当时我用的是国际版、付费额度和自己的 API,并不依赖 TRAE 提供的免费模型

    • 这还来!?QAQ!心有不甘啊!

照片、AI 生成图片和 PDF 等产物,也已经有实际案例确认出现 TRAE 水印

这篇文章记录一下我是怎么发现的,以及已经用 TRAE 做过前端的项目该怎么检查

先说结论:图片、照片、PDF 和 Word 等文件很难证明已经彻底移除水印,来源不明时最好重新制作或直接替换

本文能帮助检查和保证的范围,主要是源代码、前端资源、数据库、构建产物和网页运行时请求

第一次没查到,下午就中招了

此前我见过一些讨论,称 TRAE 生成的网页、图片和文档里可能出现品牌标识

看到这些讨论后,我检查了当时正在开发的项目,但没有找到明显的 TRAE 水印

第一次检查时没有发现明显水印

然而就在当天下午,我创建了另一个项目,默认占位图直接变成了一张带有 TRAE 标识的图片

项目中的占位图片出现 TRAE 标识

  • 如果当时没有检查,而是直接把项目部署上线,这张图片就会跟着进入生产环境

这并不是个例

继续搜索后,我发现社区里已经有人讨论过类似问题

有开发者表示,即使使用社区提供的 Skill,并接入自己的 API 服务,生成的照片、PDF 和其他内容里仍然可能出现“TRAE AI 生成”等标识

社区用户反馈生成内容中的 TRAE 水印

图 1:社区用户反馈照片和 PDF 中出现 TRAE 水印

社区中关于移除水印的讨论

图 2:关于移除水印的讨论,截图中的回复为“暂时还不支持在本产品中去除”

相关讨论:

这里说的“已经确认”,是指已经有实际生成的照片、图片和 PDF 出现 TRAE 水印,并不是说 TRAE 生成的每一个文件都一定会出现相同标识

不同版本、功能和生成方式可能会有不同结果,但只要已经出现过,就值得在发布前专门检查

为什么用了自己的 API 还会出现

这也是我最不能理解的地方

我已经购买了额度,用的是国际版,并且挂了自己的 API,为什么项目里还是会出现 TRAE 的资源?

后来仔细想了一下,自定义 API 可能只负责模型对话和代码生成,并不代表 IDE 里的所有功能都会绕过 TRAE

一个 AI IDE 通常不只有模型接口,还可能包含:

  • 图片生成服务
  • 搜索和上下文索引
  • 账号与额度验证
  • 静态资源和 CDN
  • 产品统计和错误上报
  • 插件、配置与更新服务

所以即使代码由自己的 API 生成,图片、占位图或其他资源仍然可能来自 TRAE

问题在于,这些行为如果没有明确提示,开发者很容易把相关资源直接带进生产环境

TRAE 相关内容可能出现在哪里

1. 照片和图片

我在项目中发现过类似下面的图片生成地址:

https://coresg-normal.trae.ai/api/ide/v1/text_to_image?prompt={提示词}&image_size={尺寸}

从这个地址可以直接确认两件事:

  1. 图片由 trae.ai 域名下的服务生成或提供
  2. 提示词被放在 URL 查询参数中

如果这个地址被浏览器历史记录、代理服务器、网关或日志系统保存,查询参数中的提示词也可能被一起记录

除此之外,已经有实际生成的照片和图片被确认带有 TRAE 水印

这些水印可能是肉眼可见的文字或 Logo,也可能与文件元数据、图片结构或生成特征有关

普通文本搜索只能找到文件名和链接,无法证明图片内部不存在隐藏标记

2. PDF 和 Word

已经有实际案例确认,生成的 PDF 等文档中可能出现 TRAE 标识

常见位置包括:

  • 页面正文
  • 页眉和页脚
  • 页面角落的 Logo
  • 文档作者和创建工具
  • PDF 的 Producer 和 Creator
  • DOCX 内部的图片、关系文件和自定义属性

肉眼看不到水印,不代表文件内部一定没有标记

重新保存、打印为 PDF 或清理文档属性,也不能保证所有标记都已经消失

3. 前端代码和静态资源

前端项目里更容易检查的内容包括:

  • HTML、CSS、JavaScript 和 TypeScript
  • 页面标题、描述和 Open Graph 信息
  • 图片、字体、图标和占位图
  • public、assets 和 static 目录
  • API、CDN 和其他外部地址
  • 数据库、种子数据和 Mock 数据
  • package.json、锁文件和构建配置
  • dist、build 和 .next 等构建产物

有些内容不会直接写在源代码里,而是藏在数据库、依赖包或构建结果中

还有一些请求只有在页面运行时才会出现,所以只搜索代码并不够

照片和 PDF 很难保证彻底清理

照片、图片、PDF 和 Word 都不是单纯的文本文件

普通工具可以删除一部分肉眼可见的水印和常见元数据,但无法证明文件已经彻底干净

比较难处理的内容包括:

  • 图片像素中的隐藏信息
  • 压缩和编码特征
  • 不可见图层与透明对象
  • PDF 内部对象和字体结构
  • 文档中的自定义属性
  • 隐写信息
  • 厂商没有公开的数字指纹

删除 EXIF 不等于删除所有水印,重新压缩图片也不代表隐藏信息一定消失

PDF 和 Word 同样如此,即使页面上已经看不到 Logo,文件内部仍然可能保留创建工具、资源关系或其他标记

因此,遇到来源不明的照片、图片、PDF 或 Word 时,我的处理方式很直接:

  1. 能找到原始文件就重新获取
  2. 能重新制作就重新制作
  3. 能从可信源文档导出就重新导出
  4. 无法确认来源就直接替换

我不会对处理过的照片、PDF 和 Word 给出“已经完全无水印”的保证

本文能够检查和保证的范围,是代码与前端项目中不再保留已知的 TRAE 明文、域名、接口、链接和品牌资源

水印之外,网络请求也值得检查

TRAE 的设置界面中提供了隐私或遥测相关选项,但关闭一个开关,不一定代表软件不再产生任何网络请求

TRAE 设置界面中的隐私选项

第三方测试记录的数据包括:

  • 约 7 分钟内出现 500 余次网络连接或请求
  • 总流量约 26 MB
  • 单次记录的最大数据块约 53,606 字节

相关测试:

这些数字来自特定版本和测试环境,不同系统、插件和操作方式可能得到不同结果

同时也要说明,产生网络请求不等于上传了源代码

只看连接次数和流量大小,无法判断具体发送了什么

真正需要检查的是目标域名、请求地址、查询参数、请求体,以及请求是在什么操作之后触发的

已经用 TRAE 做过前端,怎么快速自检

自检不需要写成一套复杂的安全工程,普通前端项目做下面四步就够了

第一步:备份项目

如果项目已经使用 Git,可以先创建一个检查分支:

git switch -c audit/trae-content
git add -A
git commit -m "chore: backup before TRAE audit"

如果项目没有使用 Git,先完整复制一份目录

不要让 Agent 直接在唯一一份项目上批量修改

第二步:让 Agent 只读检查

把下面这段交给 Agent:

请只读检查当前项目,不要修改或删除任何文件
 
检查范围包括源代码、配置、前端静态资源、数据库、测试数据和构建产物
 
重点搜索:
 
- TRAE、trae.ai、ByteDance、字节跳动及大小写变体
- TRAE 图片生成接口、CDN、占位图和品牌资源
- 未经说明的远程图片、字体、脚本和 API
- 可能进入生产环境的品牌文字、注释、链接和资源
 
请输出文件路径、行号、命中内容、是否进入生产环境、风险和处理建议
 
不要声称能够检测图片、PDF 或 Word 中的像素级水印、隐写水印或未知数字指纹
 
无法确认的内容统一标记为“需要人工复核”

先看报告,再决定让 Agent 修改什么

第三步:搜索代码和构建产物

使用 ripgrep 进行交叉检查:

rg -n -i --hidden \
  -g '!node_modules/**' \
  -g '!.git/**' \
  -g '!CLAUDE.md' \
  'trae|trae\.ai|bytedance|字节跳动' .

然后重新构建项目:

npm run build

检查构建结果:

rg -n -i \
  'trae|trae\.ai|bytedance|字节跳动' \
  dist build .next out 2>/dev/null

如果项目不是使用 npm,把构建命令替换成实际使用的命令即可

第四步:检查页面实际请求

打开浏览器开发者工具的 Network 面板,然后:

  1. 勾选 Preserve log
  2. 清空原有记录
  3. 刷新并操作主要页面
  4. 查看所有外部域名
  5. 搜索 trae 和 bytedance
  6. 检查首页、404、空数据和加载失败页面

很多占位图只会在没有数据或加载失败时出现,正常页面里不一定看得到

确认问题后,再让 Agent 处理:

根据检查报告,只清理已经确认的 TRAE 品牌文字、链接、接口和资源引用
 
将远程占位图替换为项目本地资源
 
不要修改正常业务逻辑,不要升级依赖,不要删除尚未确认有问题的文件
 
修改后重新执行搜索、构建和测试,并输出修改清单及仍需人工检查的内容

在项目中加入 CLAUDE.md

如果当前版本支持读取 CLAUDE.md,可以在项目根目录创建这个文件

在 TRAE 中检查:

设置 → 规则与记忆 → 将 CLAUDE.md 包含在上下文中

将下面的内容保存为项目根目录下的 CLAUDE.md:

# 项目资源与品牌规则
 
## 禁止内容
 
本项目不得主动引入:
 
- TRAE 名称、Logo、图标和品牌文字
- `trae.ai` 及其子域名
- TRAE 图片生成接口、SDK、CDN 和占位图
- TRAE 相关代码注释、文件头和构建标识
- 未经用户确认的 TRAE 图片、文档和生成资源
 
## 外部资源
 
新增图片、字体、脚本、API 或 CDN 前,必须说明:
 
1. 资源提供方
2. 请求域名
3. 使用目的
4. 是否进入生产环境
5. 是否可以改用本地资源
 
默认优先使用项目本地资源
 
未经用户明确同意,不得把提示词、文件内容、项目路径或用户数据发送到 TRAE 相关接口
 
## 修改后检查
 
每次修改后必须检查:
 
- 源代码和配置中的 TRAE 相关字符串
- 新增的外部 URL
- 数据库和测试数据中的远程资源
- `dist`、`build` 和 `.next` 等构建产物
- 页面运行时产生的外部请求
 
发现问题时先报告,不得通过隐藏、混淆或破坏文件的方式处理
 
## 检查边界
 
- 检查默认只读,未经确认不得删除文件
- 不得声称普通文本搜索能够检测隐写水印
- 图片、PDF 和 Word 来源不明时,应建议重新制作或替换
- 无法确认的内容必须标记为“需要人工复核”

CLAUDE.md 只是给 Agent 的项目规则,不是安全软件,也不是防火墙

它可以减少 Agent 主动引入 TRAE 资源的概率,但不能代替代码搜索、构建检查、网络检查和人工审核

怎么判断前端项目已经清理完成

完成检查后,至少要满足下面这些条件:

  • 源代码中没有未经说明的 TRAE 字符串、域名和接口
  • 数据库和测试数据中没有 TRAE 图片地址
  • 外部图片、字体、脚本和 API 都能说明来源
  • 占位图和默认资源已经改为本地文件
  • 构建产物中没有新增的 TRAE 品牌内容
  • 网页运行时没有访问 TRAE 相关域名
  • 首页、404、空数据和加载失败页面均已人工检查
  • lint、test 和 build 能够正常通过

如果这些检查全部通过,可以确认当前代码和前端项目中没有发现已知的 TRAE 明文、链接、接口和品牌资源

这个结论只对当前项目版本和本次检查范围有效,不包括无法验证的图片隐写水印、PDF 隐藏标记和未知数字指纹

我最后的处理方式

对于自己的项目,我最后做了这些处理:

  1. 删除 TRAE 图片生成接口
  2. 替换数据库中的相关图片地址
  3. 将来源不明的占位图改为本地资源
  4. 检查源代码、配置和构建产物
  5. 使用浏览器开发者工具检查外部请求
  6. 在项目规则中禁止未经确认的 TRAE 资源
  7. 对来源不明的照片、PDF 和 Word 直接重新制作或替换
  8. 改用其他开发工具完成后续工作

我不会再把 AI IDE 生成的图片和文档直接用于正式项目

代码可以搜索,链接可以替换,请求可以抓取,但照片和文档里的隐藏标记很难靠普通工具证明已经彻底清除

最后

这次经历让我意识到,AI 编程工具生成的不只有代码

它还可能同时写入:

  • 外部资源链接
  • 图片和占位图
  • 页面标题和品牌文字
  • 数据库内容
  • 项目配置
  • 第三方依赖
  • 运行时网络请求
  • PDF 和 Word 中的品牌标识

真正让我不满的,不只是某张图片上出现了一个 Logo,而是开发工具可能在没有明确提醒的情况下,把未经我选择的品牌资源写进项目

我已经付费,也用了自己的 API,最后还是需要自己检查和清理这些内容

照片、PDF 和 Word 一旦来源不明,很难保证水印已经彻底去除,最稳妥的做法就是重新制作或替换

代码和前端项目则可以通过文本搜索、构建检查和运行时抓包完成自检

VSCodex真好用,嘻嘻