9月18日,智谱AI就旗下编程工具ZCode引发的"代码库数据上传"争议发布情况说明,向受影响用户致歉,并称相关问题已完成自查和修复。据报道,这场争议在开发者社区里讨论了好几天,核心问题其实只有一个:你敲进编辑器里的代码,到底去了哪里。
先把事实说清楚。
根据智谱方面的说明,问题来自ZCode的"代码库索引"功能。这个功能的设计初衷是在本地生成仓库索引,用来支持会话检查点恢复、历史版本回退,以及一个叫Repo Wiki的功能。争议点集中在Repo Wiki上:它在云端生成Wiki页面时,可能会触发仓库数据上传。官方强调,Wiki页面生成后,上传的数据会立即销毁,不会保存。真正让用户不满的是另一个细节——该功能在上线初期是默认开启的。也就是说,相当一部分用户是在没有明确感知的情况下,代码被传到了云端。目前官方称问题已修复,并给出了一组补救措施:近期开源ZCode代码库、邀请第三方评估人员对系统进行审查、为全体用户额外提供一次周额度重置。
事情本身不复杂,但它戳中的是一个所有用AI写代码的人都该关心的问题。
这事的本质:AI编程工具的"上下文焦虑"
如果把时间往回拨两年,那时候的AI编程工具主要做两件事:代码补全和对话问答。补全看的是当前文件的一小段上下文;问答靠你手动把代码粘贴进去。工具本身"知道"的东西很少。
现在的工具不是这个逻辑了。它们想理解你的整个仓库——文件之间的引用关系、函数定义在哪、这个改动的历史是什么。要理解整个仓库,就得先给仓库建索引。这个过程通常分两步:把代码切成片段、算成向量,存进本地或云端的向量库里。做检索时,再把相关的片段捞出来喂给模型。这就是常说的RAG那套东西。
关键分歧点在索引建在哪里。
- 本地索引:索引文件和向量都躺在你的电脑上,查询也在本地完成。数据不出机器。
- 云端索引:代码片段要上传到厂商的服务器去处理和存储。功能更花哨(比如跨设备共享、团队协作、自动生成文档),代价是代码离开了你的硬盘。
Repo Wiki这类功能,本质上就是"把整个仓库读一遍,然后生成一份结构化文档"。它绕不开把代码送到能跑大模型的服务端这一步。所以严格说,上传这个动作不一定是"偷偷"的——它是这类云端功能的技术前提。真正的问题是默认值:一个涉及代码外发的功能,默认打开,而不是默认关闭,等于把"知道风险并主动选择"的门槛,从用户侧移到了产品侧。
- 云端索引:代码片段要上传到厂商的服务器去处理和存储。功能更花哨(比如跨设备共享、团队协作、自动生成文档),代价是代码离开了你的硬盘。
变了什么:AI编程工具从"看你正在写的那几行",变成了"看你的整个代码库"。理解得越深,需要的上下文越多,数据外发的面就越大。
没变什么:数据边界这件事,从来不是技术问题,而是信任和合同问题。以前是云笔记、截图工具、在线IDE,现在轮到AI编程助手。工具越强,默认设置越应该保守——这个道理,行业其实一直没真正当回事。
对普通开发者意味着什么
先说结论:这不代表AI编程工具不能用,而是提醒你把它当成一个会联网的第三方进程来看待。
第一,先看默认开关。任何一个标着"索引"“Wiki”“云端同步”"遥测"的功能,都值得你去设置里确认一下当前是开还是关。尤其是公司电脑上,装之前先看默认状态,比事后道歉有用。
第二,分清本地和云端。很多工具同时提供两种模式,产品文档里会写清楚索引落在哪里。如果你的项目涉及客户代码、未公开的算法或合规数据,优先选本地模式,或者干脆用私有化部署的版本。
第三,管住出口。在企业环境下,最实在的一招不是指望每个员工都记得关开关,而是从网络出口做管控。用Linux的开发者,可以自己动手看一眼工具进程在连哪些外部地址:
# 查看某个进程当前建立的外部连接(Linux)sudolsof-i-P-n|grep<工具进程名># 或者看全系统连接,按PID过滤ss-tunp|grep<pid>如果发现一个本该做本地补全的进程,在往你不认识的域名传数据,那就值得追一追了。
第四,写好排除清单。主流工具基本都支持某种形式的忽略配置——比如Cursor的.cursorignore、GitHub Copilot的内容排除规则。具体文件名以各家文档为准,但思路是通用的:把不该被索引的东西列出来。
# 示例:把敏感内容挡在索引之外 .env *.pem *.key *.p12 secrets/ internal/ *.sql # 顺手检查一下,这些文件现在是不是被git忽略了 git status --ignored第五,别忘了合同和授权。外包交付、甲方代码、涉及数据出境的项目,AI工具怎么用,往往在合同里是有约定的。"工具默认帮我传了"不是免责理由,出了事还是使用方担责。
收个尾
智谱这次的处理方式——开源代码库、引入第三方审查、给补偿——算是比较正面的一套组合拳,能不能真正把信任修回来,还得看后面的执行。但这件事更大的价值,是给所有人提了个醒:当AI工具越来越"懂"你的代码时,先问一句"它把我的代码送到哪去了",并不过分。
你在项目里会主动关掉AI编程工具的云端功能吗?还是觉得只要代码不涉密就无所谓?评论区聊聊。