AI编程工具非常火,可以相信现在大多数人一定会用上某种AI编程工具或大模型。让AI帮助自己写代码,越来越成为一种流行的趋势与现实
- 有可能是Github Cockpit或国内的通义灵码这种AI辅助工具
- 亦或是Cursor或Trace这样的AI IDE
AI编程助手能不能提高效率先放一边,我见过很多人被AI的一些生成前面代码的能力惊住,也见过有言论评论说是"以前是编程一小时,调试十分钟,用了AI工具后变成编程十分钟,调试一小时"等调侃的评论。我自己使用这些AI编程工具也有一些心得。
不过今天我要从另一个角度来聊这些AI编程助手的问题,就是隐私与安全问题。
代码的隐私与安全
做为程序员,我们的代码理所当然会有隐私与安全上的问题。主要考量点在于:
代码是私有的
当然,这里要加个限制条件,大多数。也许你写的是开源的项目,代码可能不是那么非常“私有”,但开源的代码也可能是你或少数几个人私有的。虽然开源意味着每个人都能访问它,但也许你们会很介意你们写的代码会被AI拿去,用来训练或什么。
更别说大多数写的代码完全是公司私有的。公司绝对不会允许自己的代码能被AI随便读取,或是拿去训练。
但现在AI普遍面临数据困境,就是互联网上的数据都用完了,虽然很多AI类工具申明不会使用用户数据,问题是这个行为完全是一个黑盒
,做为使用方的我们压根无法验证。
代码中有很多KEY
代码中常包含调用第三方服务的KEY(如支付API的密钥),这些KEY一旦泄露,黑客就能直接滥用服务。虽然目前尚未见相关报道,但AI工具完全有能力扫描并上传代码中的KEY。更糟的是,当你向AI提问时,它可能自动附带上下文代码,连带把KEY泄露出去。
更别说有时候你在问一个问题时,可能AI工具会自动附带一些关联的代码做为上下文进去,把你的KEY附带进去,也是完全有可能的。
本地向量化
不管是Github Cockpit,还是Cursor这样的工具,这些AI 工具你本地都有个行为,那就是先会对你当前所有项目做一个向量化,存储在本地。
其实这个过程,完全就意味着你所有的代码,都被扫描,识别,转换为向量化一次。至于要不要AI会不会去上传回去,同样这是个黑盒
,做为使用一方的我们,完全无法验证。
怎么解决?
所以,怎么办?
在AI时代,完全因隐私与安全问题放弃AI编程工具并不现实。抛开效率争议不谈,掌握AI辅助编程已是程序员的必备技能之一。关键在于,如何在享受便利的同时降低风险。,但怎么合理的使用AI辅助编程,这同样是另一个问题了,这里不谈。
就隐私与安全上的问题,我个人的建议有几个可以考虑:
- 网页优先
这是我使用AI的一个最多的方式。尽量优先使用网页的方式去与AI聊,遇到不会的编程点,或者代码需要改进的,就在网页上去与AI交互。
这样每次只需要把自己对应的代码告诉AI就行了,整个项目那些,AI完全不知情。这就有了一定的安全性。
- 慎用不知名的插件
Github Cockpit是微软的,通义灵码是阿里的,这些编程工具背后都是大公司。相对于个人或一些小团队开的AI插件或辅助类工具,大公司的仍然相对可靠。
当然,这也并不尽然,微软在用GIthu上开源代码训练时,当初就遭到了很多开源项目开发者的反对,但微软还是这么做了。
不过,尽量少用不知名的AI工具,仍然是你应该慎重考虑的事。
- 有条件的私有化
比如,你的公司是大公司,不缺钱,那你们公司基于隐私与安全的考虑,同时基于提升效率的考量,在公司范围了,私有化部署一套大模型,比如类似DeepSeek等在编程方面表现优异的AI模型,再提供给公司使用,这就非常好了。
或者,做为个人,你有一定的资源,比如有8G或16G显存的显卡,在你本地用Ollama部署一些本地的AI模型,比如qwen2.5-coder 7B或14B这样参数级别的模型,也是一个很好的方式。
- 插件与大模型分离配置
如果使用一些诸如continue.dev
这样的插件,这一类的插件通常支持自定义大模型,你就配置自定义的API,比如阿里百练或Groq提供的AI等。
这样至少插件与AI大模型是由不同的提供方提供,而不是某一个提供方提供。这样也能某种程度上提升一定的安全性。
安全意识
虽然我相信大部分使用AI编程工具的程序员,可能不太会考虑我在这篇文章中说的隐私与安全问题。
但如果你的代码的确在安全性上有非常高的要求,涉及的行业有保密性质,那在使用AI辅助工具时,你就不能遗忘这个隐私与安全问题。