2026 · 09 · 19 11:16

ZCode 上传整个项目是怎么回事

智谱 ZCode 被发现把整个项目文件夹打成加密包上传云端,包里 .git 历史占 86.6%,源码只占 13.4%;两个设置开关都关不掉,加密私钥只在服务端、用户自己解不开。这期把包里的清单、触发时机和官方回应摆清楚。

同期发布在

这期讲了什么

文字稿

清磁盘清出一个加密包

智谱的 ZCode 出事了。九月十八号,有人发现自己电脑里的项目文件,被 ZCode 悄悄打了个包,往云端传。ZCode 是智谱官方的 AI 编程工具。你装软件的时候,是不是也进过设置,把那个改善用户体验的开关关掉,然后觉得自己就安全了。我自己就是这么干的,关完那天还挺踏实。

发现这件事的是一位开发者,他本来只想清清磁盘,结果翻出一个三百多兆的加密包,就躺在自己硬盘上。他把这段经历写成了长文,原文、截图、文件清单全都公开挂着,我一条条对过。最怪的是,那个几百兆的加密包,为什么连他自己都打不开?

这十分钟,我把这件事给你拆干净:这个包里到底装了什么,它是怎么在你眼皮底下传出去的,官方又是怎么回应的,一件一件摆给你看。最后说说,为什么我自己更倾向用开源的 AI 编程工具。

先交代下,AI 编程工具就是给程序员配的 AI 助手,装在电脑上帮人写代码。出事的是一位开发者,他电脑上的项目不小,总共十个 G,去掉自动生成的部分,剩下的三百四十五兆,用他的原话,几乎全是核心资产。

他清磁盘的时候发现,ZCode 在自己电脑里占的地方不对劲,一个隐藏目录吃了七百多兆。往深处翻,翻出一个三百一十三兆的加密文件,旁边一份状态文件写得明白:这是一份基线快照,工作区三百四十五兆,加密后三百一十三兆。工作区就是他在 ZCode 里打开的那个项目文件夹。快照你可以理解成把整个项目文件夹压成一个包。

状态文件里还有一行小字,失败计数五百六十四次。这个数你先记住,它只代表最近一次重试没传上去,不等于一次都没传成。

真正让人坐不住的是另一份文件,一份明文清单,就存在本地,谁都能打开看。清单上列了四万两千四百一十一个文件,这就是那个包里装的东西。你猜大头是什么?不是代码,点 git 目录占了百分之八十六点六。

点 git 是什么?你写 Word 文档有个修订历史,能看到每一版改了什么。程序员的项目里也有一个,叫点 git。它存的不是今天这份文件,是从第一天到今天,每一版、每一次改动、谁改的,全在里头。平时你看不见它,它就躲在项目文件夹里。

清单拆开看更清楚:点 git 里的大文件存了一百九十六点一兆,历史版本对象一百零二点二兆;真正的源码和文档,只有四十六点二兆,百分之十三点四。看明白了吧,这个包里的大头不是代码,是历史。

那 ZCode 什么时候打这个包?博主把客户端拆开,还原出里面的代码,触发点有两个:一个是每次你向它提问之前,先抓一次;另一个是生成仓库百科的时候再抓,仓库百科就是给你的项目自动写一份说明书。日志里数过,一个会话最多被抓了六十二次。

博主想弄明白包里到底装了什么,就去解这个包,结果解不开。他把自己手上能试的办法全试了一遍,全失败。一个躺在你自己硬盘上的文件,你自己打不开,做它的 ZCode 也打不开。他当时也不知道为什么。

为什么关不掉,为什么他自己打不开

先看开关。ZCode 里有两个相关开关,一个叫优化体验,一个叫仓库快照索引。博主两个都关了,打包照跑。拆开代码才看明白,一个只管要不要拿数据训练模型,另一个只管服务端拿到包后建不建索引,索引就是给内容编的目录。本地打包上传这一步,两个开关一个都管不着。

更底下还有一层。负责打包上传的后台程序,跟着 ZCode 启动就无条件干活,代码里没有一句检查你设置的话,唯一门槛是登录状态。说人话,只要你登录了账号,这套上传流程就是常开的,想关都没地方关。

还没完。博主嫌膈应,手动把那个等着上传的包删了。半小时不到,一个新的三百一十三兆的包又回来了,失败计数从五百六十四蹦到五百六十五。再说一次,这个失败计数只代表最近一次没传上去,不等于之前没传成过。

那为什么他自己打不开?答案藏在加密方式里。这个包在你电脑上上了一把锁,锁本身没问题,问题在钥匙。博主把自己电脑上的钥匙全试了一遍,没有一把打得开。还原出代码才看明白,锁是服务端配的,私钥从头到尾只在云端,只有服务端能解开。

你品一下这个设计,真要是给你做的备份,钥匙应该在你手里。一把只有对方能开的锁,博主的原话是,这摆明了不是备份,更像采集。这是他的判断,不是定论,但能解开这个包的只有智谱服务端,这是事实。

有人会说,AI 编程工具不都要看代码吗,至于吗。至于。你平时用 AI 写代码,是你挑一段贴给它,发多少你说了算。这回是整个工作区四万多个文件打成一个包,大头还是历史,后台自动抓,没有弹窗,关都关不掉。

那别家怎么干的?四家的官方条款都挂在公开页面上,谁都能查。Claude Code 写明,个人版开了那个开关才拿数据训练,商业版默认不训练。Copilot 写明,今年四月二十四号起,个人版默认可以拿去训练,你能在设置里退出,企业版不训练。OpenAI 写明,消费版默认可能训练,可以退出,走接口调用的默认不训练。Cursor 那条最对得上今天这个题,它写明搜索索引在你本机建,不上传你的代码。

这四家不一定更干净,但传什么、存多久、能不能关,白纸黑字写在公开条款里。ZCode 的问题不在上传本身,在默认开着,在关不掉,在没提前告诉你,在钥匙只在厂商手里。

点 git 里还藏着什么

你可能想问,不就是个项目文件夹吗,至于紧张。点 git 里存着工作区看不到的东西:提交过又删掉的密钥密码,全文都在;没推送过的分支名,常有客户名;每个提交者的姓名和邮箱。

还有一件事得说准。ZCode 自己的配置文件里,存着你填进去的各家 AI 服务密钥,明文放着,就在同一个目录底下。快照会把全局配置算成一串哈希搭车传走,哈希不等于文件内容,所以别听成密钥被传上去了。真正该在意的是,你最敏感的那几串东西,就堆在这个反复被打包的目录旁边。

这事也不是孤例。Windows 上另一位用户独立复现了,三十二个工作区被抓过快照,最大的包一百零七兆,十四个工作区没有失败记录,很可能已经传上去了。而官方八月刚宣布,ZCode 用户破了百万。

官方怎么回应,为什么我推荐开源工具

事发当天下午,ZCode 用户反馈群里,官方账号发了致歉。原话是,今日社区中的相关讨论我们高度重视,第一时间完成自查,先向受影响的用户道歉。问题源于代码库索引功能,上线初期默认开启,目前已经修复。

官方还说,Repo Wiki,就是前面说的仓库百科,生成页面时可能触发仓库数据上传,页面在云端生成后,相关上传数据会立即销毁,不会保存。同时承诺近期开源代码库,邀请第三方审查,再发一次周额度重置。注意,这段话发在微信群,官网和隐私政策页都没有同等内容。

官方的说法,和技术分析有三处对不上。官方说生成 Wiki 时才可能触发,技术分析说每次提问前都会抓。官方说这是上线初期默认开启的功能,技术分析说那两个开关根本关不掉它。官方说云端立即销毁,可钥匙只在服务端,销毁没销毁,用户手里没有任何办法验证。两边对不上,我没法说谁撒谎。

还有两份公开文件。更新日志在曝光前一天刚发过新版本,修复清单里没有一条跟快照上传有关。隐私政策六月那版只写了收集你对话里提交的文本、文件和代码,整个工作区连同历史打包上传,一个字没提。

说到这,讲讲我为什么更倾向开源的 AI 编程工具。先声明,开源不等于安全,开源工具一样能读你的文件、拿你的凭据。差别在两件事:能不能被检查,有没有提前告诉你。

DeepSeek 官方有个开源项目叫 DeepSeek Harness,二十二万九千多颗星。它的中文安全声明挂在仓库里,我念两句原文:它尚未接受安全审计,不得视为安全或可用于生产环境的软件;除非你接受相关风险,否则不要向其暴露敏感凭据或数据。可能泄露数据这种话,人家印在自己门口。

还有一个叫 Pi 的开源编程助手,十万七千多颗星,MIT 协议,就是谁都能免费用、随便改。它的首页写明,Pi 不带内置权限限制,默认用启动它的账号的权限跑。安全声明更直接:Pi 故意不做沙箱,看管它是用户自己的责任。沙箱你可以理解成一个隔离的笼子。

开源的厂商也要做生意,也会动收集数据的念头,区别在于动作发生在明处。音频软件 Audacity 当年想加数据收集,代码还挂在公开仓库里没合并,就被一千多条评论当场拦停,最后彻底放弃。反过来,字节的 Trae 是闭源的,去年有人逆向才发现,把数据收集的选项关掉,它照样在往外传,团队后来也做了补救。可你想想,这件事得等到有人愿意花力气去拆它,才查得出来。ZCode 这次也一样。

所以我的建议很具体,今天就能做:去翻一下你在用的那个 AI 工具的隐私政策,只看一件事,有没有写清楚会把什么传出去。

常见问题

ZCode 上传的是什么东西?

上传的是整个工作区的加密快照:一位开发者的项目工作区 345 兆,加密后 313 兆,明文清单列出 42411 个文件。大头不是代码而是 .git 历史,占 86.6%——包括每一版改动、提交者姓名邮箱、删掉的密钥密码、没推送过的分支名;真正的源码和文档只占 13.4%。

ZCode 的设置开关能关掉上传吗?

不能。两个相关开关一个只管要不要拿数据训练模型,另一个只管服务端拿到包后建不建索引,本地打包上传这一步两个都管不着。负责上传的后台程序登录即常开,代码里没有一句检查设置的话;手动删掉包,半小时内会自动生成新的。

ZCode 官方是怎么回应的?

事发当天下午在用户反馈群致歉,称问题源于代码库索引功能、上线初期默认开启、目前已经修复;还说 Repo Wiki 生成时可能触发上传、云端生成后立即销毁,并承诺开源代码库、邀请第三方审查。但技术复盘有三处对不上:触发时机、能不能关、销毁是否可验证。这段话只发在微信群,官网和隐私政策页没有同等内容。

.git 目录里的历史有什么风险?

.git 存的是从第一天到今天的每一版改动和提交记录:提交过又删掉的密钥密码全文都在,没推送过的分支名常带客户名,还有每个提交者的姓名和邮箱。也就是说,包里装的不只是你现在的代码,还有你以为已经不存在的历史。

ZCode智谱AI 编程工具数据隐私代码安全
专题 AI 编程