高级 16 分钟部署

企业中的编程 AI:保护专有代码、保密协议及机密 industriel

一名开发者将业务函数粘贴到云端助手中进行重构。在一秒钟内,一段受转让条款和 NDA 保护的代码片段便离开了您的管辖范围,经由某美国第三方的服务器传输。对于软件出版商、设计事务所或受工业秘密保护的 ESN 而言,这一看似无害的操作构成了法律和合同上的漏洞。本指南面向希望为开发人员配备高效副驾驶,同时确保任何一行专有代码都不离开企业网络的技术负责人或 CIO。我们将探讨为何 GitHub Copilot 和 Cursor 尽管提供“企业”选项仍存在问题,GDPR 和 AI Act 实际要求的内容,以及如何部署 100% 本地化的技术栈(Ollama、Cline、Aider、Tabby),无论是在工作站还是共享 GPU 服务器上,并实施可审计的非数据外泄策略。

作者: Mohamed Meguedmi·更新于 2026-08-27·已在 Ubuntu 24.04 上测试

#真正的风险:你的代码会传给第三方

源代码并非普通数据。它承载着您的算法、生产工艺机密、硬编码的 API 密钥(这种情况确实会发生)以及安全架构;从法律角度看,它还常常受到向客户转让权利的条款约束。云端代码助手会读取光标周围的上下文,有时还会读取整个代码仓库以建立索引,并将这些片段发送给远程模型。这种风险并非纸上谈兵:它涉及工业机密泄露、违反保密协议(NDA),而只要有一条注释包含个人数据,还会涉及不符合《通用数据保护条例》(GDPR)的问题。

工业机密
向第三方暴露的专有算法将丧失其机密性(《商法典》第 L151-1 条):法律保护随之失效。
转让条款
对于交付给客户的代码,合同通常禁止向未经批准的分包商披露任何内容。云端助手属于未申报的分包商。
供应商 NDA
您正在根据保密协议处理合作伙伴的代码:将此类内容发送至OpenAI或Anthropic属于直接违规。
个人数据
测试数据集、内联日志或代码注释中只要包含电子邮件地址,发送这些内容就会受到 GDPR 的约束。
!
‘我们不基于您的数据进行训练’这一误区
不将数据用于训练的承诺(zero data retention)只解决了问题的一部分。代码仍然会被传输,在欧盟境外服务器的内存中处理,并且仍受美国《CLOUD Act》约束。不用于训练不等于不传输。

#为何 Copilot 和 Cursor 会违反您的 NDA

企业本地 AI 套件

在工作场所部署本地 AI:GDPR、AI 法案、多用户架构、成本、供管理层参考的说明材料。

  • 在线空间,终身可用
  • PDF + 文件
  • 30 天内退款

GitHub Copilot 和 Cursor 是优秀的生产力工具,但其商业模式依赖于托管的大型语言模型(Copilot 基于 Azure/OpenAI 基础设施,Cursor 基于 OpenAI 和 Anthropic)。即使使用企业或商业套餐,您的代码也会离开本地设备,由服务器端完成补全。'内容排除'或'隐私模式'可降低数据留存,但仍然存在流向第三方的网络流量。对于禁止向未命名第三方披露的保密协议,此类流量构成违规,无论数据留存策略如何。

Copilot Business
代码会被发送至 GitHub/Azure,用于代码补全。默认启用“不用于训练”,但数据仍会传输至欧盟境外,并受 CLOUD Act 管辖。
Cursor(隐私模式)
隐私模式会阻止 Cursor 端保留数据,但请求仍会经过 OpenAI 和 Anthropic 的 API。
未启用 Privacy Mode 的 Cursor
代码可保留并用于产品优化。在严格NDA约束下不可接受。
共同的合同限制
这些方案均不会签署涵盖将客户代码转让给特定第三方分包商条款的数据处理协议(DPA)。
i
决定性测试
向您的法务咨询:‘我可以将客户X的代码发送到位于美国的第三方服务器Y吗?’。如果任一合同的答复为否,则无法在团队中实现云助手的统一部署。此时,本地部署成为唯一一致的策略。

#GDPR 和 AI Act 对源代码的要求

GDPR 讨论的不是“源代码”,而是个人数据。代码包含个人数据的情况比人们想象的更常见:注释中的电子邮件地址、测试用标识符、初始化数据、日志记录。一旦其中任何一项被发送给云端助手,就发生了数据传输,因此需要具备合法依据、与受托处理者签订数据处理协议(DPA,第 28 条),以及在向欧盟境外传输时采用有效的传输机制(标准合同条款)。AI Act 则将大多数代码助手归为有限风险,主要要求履行透明度义务;但对您而言,真正的关键在更上游,即模型输入数据的治理。

RGPD 第28条
所有处理您数据的云端助手均为受托方,需签署数据处理协议。许多团队在未签订合同的情况下使用该服务。
GDPR:向欧盟以外传输数据
如果数据不托管在欧盟境内,就需要保障措施(SCC)和数据传输分析。本地部署则完全消除了这个问题。
AI法案(透明度要求)
代码助手属于有限风险类别:需告知用户相关内容由 AI 生成。要求不多,但应记录在案。
从设计上实现最小化
最简单的合规途径:完全不传输数据。本地技术栈本身就能实现数据最小化。
→
本地部署:用做减法的方式实现合规
与其为云端工具堆砌 DPA、SCC、影响评估和内容排除措施,不如采用 100% 本地部署,消除数据传输。没有传输,就没有受托处理方,也就没有模型输入方面的 GDPR 问题。这是在审计人员面前最站得住脚的做法。

#100% 本地栈:Ollama、Cline、Aider、Tabby

本地编程助手的技术栈由两层构成:一层是推理服务器,在您的硬件上运行模型;另一层是客户端,从 IDE 或终端连接到该服务器。作为参考的服务器是 Ollama,它提供本地 HTTP API,并管理 GGUF 模型的下载。在服务器之上,三个相互补充的客户端覆盖不同用途:Cline 用于 VS Code 中的智能体,Aider 用于终端中以 Git 提交为导向的结对编程,Tabby 用于类似 Copilot 的自动补全,并通过共享服务器模式供整个团队使用。

Ollama
本地推理服务器(MIT 许可证)。通过 http://localhost:11434 提供模型服务。不收集代码遥测数据,推理过程中也不会发起出站调用。
Cline
VS Code 扩展(智能体)。可读写文件、执行命令、规划涉及多个文件的任务。可连接 Ollama,将其用作本地模型提供程序。
Aider
结对编程命令行工具(Apache 2.0)。可编辑代码并执行 Git 提交,非常适合在指导下进行重构。连接到 Ollama API。
Tabby
自托管的自动补全服务器(Apache 2.0)。可替代 Copilot 提供行内建议;尤其适合共享 GPU 服务器的部署模式。
安装基础环境:Ollama + 一个代码模型
# Serveur d'inference local
curl -fsSL https://ollama.com/install.sh | sh

# Modele de code recommande pour 16 Go VRAM (specialiste agent de code)
ollama pull devstral:24b

# Verifier que l'API locale repond (aucun appel sortant)
curl http://localhost:11434/api/tags
将 Aider 连接到 Ollama(终端)
pip install aider-install && aider-install

# Pointer Aider vers le serveur local, jamais vers une API cloud
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/devstral:24b

使用 Cline 时,在 VS Code 的扩展设置中选择提供商 'Ollama',并填写服务器 URL(本地地址或内部 GPU 服务器的地址)。不填写任何云 API 密钥:这从技术上保证了不会有任何片段发送到 OpenAI 或 Anthropic。Tabby 则以容器形式部署在 GPU 服务器上,各工作站连接其内部端点。

#架构:隔离工作站 vs 共享 GPU 服务器

主要有两种部署拓扑。独立工作站直接在开发者的机器(Mac M 系列或配备 RTX 显卡的 PC)上运行 Ollama:代码始终不离开这台机器,非常适合最严格的保密协议(NDA),但受限于单台机器的显存容量,而且为大量工作站配备硬件的成本很高。共享 GPU 服务器将一个或多个 GPU 集中部署在内部网络中;各工作站通过 API 连接到服务器。这样可以共享更大的模型,更合理地配置硬件,而且数据流始终严格限定在内部网络(局域网或企业 VPN)中。

两种部署拓扑的对比
标准独立工作站(本地 Ollama)共享GPU服务器(Tabby/Ollama)
代码范围始终留在本机仍处于内部网络(LAN/VPN)中
模型大小受设备VRAM限制更大规模的共享模型(24-80GB)
硬件成本较高(每个开发者配备1块GPU)优化(1台服务器供N名开发者使用)
实时自动补全若本地使用GPU则表现良好结合 Tabby 和批处理时表现出色
严格NDA的合规性最高(无网络流量)强(数据仅在内部流转,且可追溯)
维护去中心化、异构集中管理,更新受控
→
推荐的混合架构方案
实际使用中,可以将两者结合:在 GPU 服务器上部署 Tabby,为整个团队提供共享的自动补全服务(高吞吐量、批处理);在处理最敏感代码仓库的工作站上,或需要离线工作时,本地运行 Ollama。整个方案都应遵循阻止访问已知云端 AI 端点的网络策略。

#不同显存容量适合哪些代码模型

本地编程助手的质量取决于模型。2026 年,三类开放模型在编程领域占据主导地位:Qwen3-Coder(Alibaba,MoE 30B-A3B,256k 上下文,凭借仅 3B 的活跃参数实现较快速度,Apache 2.0)、Devstral(Mistral AI,专为配合 Cline 和 OpenHands 执行智能体任务而设计的 24B 模型,Apache 2.0),以及编程能力强的通用模型,如 Qwen 3.8 27B 或 GLM 4.7 Flash。选择应根据可用显存和用途来确定:Tabby 自动补全适合小而快的模型,Cline 的智能体推理则适合更大的模型。

按可用显存容量划分的本地代码模型(Q4 量化)
VRAM推荐模型典型用途
8 GBQwen2.5-Coder 7B 基础模型(FIM)Tabby 内联自动补全(2026 年 FIM 领域的标杆),快速补全
16 GBDevstral 24B / gpt-oss 20B在中等规模的代码仓库中使用 Cline 智能体和 Aider
24 GBQwen3-Coder 30B-A3B / Qwen 3.8 27B多文件重构,推理
48-80 GBQwen3-Coder 30B-A3B Q8 / Granite 4.2 30B多名开发者共用的服务器,长上下文
i
作出承诺前,先核实实际 VRAM
模型的 VRAM 占用取决于量化方式和上下文长度(KV 缓存会随上下文增长)。一个 Qwen3-Coder 30B-A3B 在 Q4 量化下(19 GB)在 24 GB 显存上可以运行中等长度的上下文,但 256k 的上下文可能会导致溢出。请使用实际负载进行测试。

#“仅使用本地模型提供方”策略

本地技术栈只有在受到政策严格约束时才能起到保护作用。“Provider local only”意味着任何开发工具都不能连接到云端 AI API。这一政策包含三个互补层面:工具配置(不设置云端密钥)、网络封锁(开发电脑无法访问云端 AI 端点)和组织规则(签署相关规范文件)。只有结合这三个层面,才能使该政策在审计时真正具备可据以要求遵守的约束力。

  1. 01
    禁止使用云API密钥
    开发机上不得设置 OPENAI_API_KEY、ANTHROPIC_API_KEY 或同类变量。Cline 和 Aider 均配置为仅连接内部 Ollama 端点。
  2. 02
    通过防火墙封锁端点
    过滤发往 api.openai.com、api.anthropic.com 以及 Copilot 和 Cursor 域名的出站流量。这样,补全内容就无法再从网络中传出。
  3. 03
    固定扩展程序配置
    通过 GPO 或 MDM 部署 VS Code/Cline 设置,防止开发者将配置重新指向云服务提供商。
  4. 04
    使用章程与培训
    签署的使用规范会提醒大家,禁止将代码粘贴到云端聊天机器人中(剩余风险并非来自技术,而是来自人的行为)。
  5. 05
    记录推理服务器的访问日志
    Ollama/Tabby 服务器的日志证明,代码补全由内部服务器提供。这是审计的关键证据。

#审计以确认数据未被外泄

“本地运行”这一说法只有得到证明才站得住脚。无数据外泄审计需要以记录为证,证明使用 AI 编程助手期间没有任何代码片段离开既定边界。最有说服力的方法是观察网络流量:在一次高强度编程会话期间捕获一台工作电脑的流量,并检查是否有连接发往云端 AI 服务端点。还需检查配置和服务器日志,作为补充。

会话期间捕获并检查出站流量
# 1. Capturer le trafic du poste pendant une session de codage Cline/Aider
sudo tcpdump -i any -n 'tcp port 443' -w /tmp/session_code.pcap

# 2. Lister les IP/destinations contactees (hors reseau interne)
tcpdump -r /tmp/session_code.pcap -n | awk '{print $5}' | cut -d. -f1-4 | sort -u

# 3. Verifier qu'aucune resolution ne vise un endpoint d'IA cloud
grep -Ei 'openai|anthropic|githubcopilot|cursor' /var/log/dnsmasq.log || echo 'OK : aucune requete IA cloud'
网络证据
tcpdump/Wireshark 抓包:仅出现内部服务器和内部 Git 仓库的 IP 地址。没有任何云端 AI 端点。
配置证明
导出的 Cline/Aider 设置,显示使用的是内部 Ollama 服务提供方,且未配置云服务密钥。
拦截生效的证据
反向测试:从开发工作站手动尝试访问 api.openai.com,结果失败(被防火墙阻止)。
服务器端证据
带时间戳的Ollama/Tabby日志,将代码补全记录与内部工作站关联起来。
→
记录一次,反复执行
编写审计脚本(捕获 + 分析 + 报告)并定期安排执行。当客户或CNIL提出问题时,可复现的审计记录比单次声明更有价值。

#坦诚权衡:本地部署与云端服务

公平地说:云端在最大规模模型的实际输出质量以及无需操心基础设施方面仍然领先。在某些复杂推理任务上,专有云端助手可能优于本地运行的 Qwen3-Coder 30B-A3B。本地部署需要硬件投入和维护推理服务器的团队,而且在要求最高的任务上,质量会略逊一筹。合理的权衡并非意识形态问题,而是取决于您代码的敏感性。

以下情况请选择本地部署
您有受NDA约束的代码、转让条款、工业秘密,或客户禁止使用未经批准的第三方分包商。
满足以下条件时,云端服务可能就够用了
您的代码是开源的,不包含个人数据,也没有对第三方承担合同上的保密承诺。
本地部署的真实成本
GPU 服务器(24-48 GB)按团队分摊通常在 2-3 年内比按席位计费的云许可更经济。
云服务的隐藏风险
单次违反 NDA(合同损失、诉讼)的成本超过多年本地许可费用。
i
用一句话概括决策规则
如果无法对所有代码仓库回答‘可以将此代码发送给第三方吗?’时回答‘是’,则部署一套统一的本地堆栈:相比零散的云/本地混合部署,这种方式更易于管理。

#结论与实施

如今,为开发团队配备高性能的代码协作者,同时始终不暴露专有代码,已经切实可行:使用 Ollama 作为推理服务器,Cline 和 Aider 分别用于智能体和终端,Tabby 用于共享自动补全,整套方案遵循“provider local only”策略,并进行可复现的数据不外泄审计。GDPR 和 AI Act 合规可以通过做减法来实现:没有数据传输,没有受托处理方,也就没有相关疑问。为节省搭建时间,付费指南《本地代码协作者》提供一套开箱即用的 Ollama + Cline + Aider 方案:可直接使用的配置、按 VRAM 预算选择模型的方法、阻止访问云端端点的网络策略,以及数据不外泄审计脚本。借助这些内容,您可以在几小时内部署一套能够向法务部门和客户充分说明其合理性的技术栈。

常见问题
Copilot Enterprise 真的与 NDA 不兼容吗?+
这取决于NDA协议。如果您的协议禁止向未明确授权的第三方披露信息,则答案是肯定的:即使启用了非训练模式,代码仍会经过GitHub/Azure基础设施,这属于向第三方披露。在任何云部署前,必须由法务部门审核每个客户合同。
本地 Ollama 技术栈的性能是否足以替代 Copilot?+
对于日常自动补全和结对编程,可以:Tabby 提供行内建议(使用 Qwen2.5-Coder 7B 基础模型,它在 2026 年仍是 FIM 的标杆模型);对于智能体聊天,Devstral 24B 或 Qwen3-Coder 30B-A3B 在大多数任务上都能与之媲美。在非常复杂的推理任务上,规模最大的云端模型仍然领先,但差距已经缩小,而隐私保障也改变了整体权衡。
为一个由 10 名开发者组成的团队配备哪种 GPU?+
一台配备 24 至 48 GB 显存的共享 GPU 服务器(例如起步时使用一张 24 GB 显卡),运行 Tabby 和 Ollama,并搭配 Devstral 24B 或 Qwen3-Coder 30B-A3B,通常就足以满足约十名开发者的自动补全需求。请测量您的实际负载:长上下文会增大 KV 缓存和所需显存。
GDPR 真的要求用于代码的 AI 必须在本地运行吗?+
不要求。GDPR 并不强制要求本地运行。一旦发生个人数据传输(评论、日志、测试数据集),它就要求具备法律依据和数据处理协议(DPA);如果数据传输到欧盟以外,还需要提供传输保障。本地运行只是最简单的合规途径,因为它消除了数据传输,也就消除了其中大部分义务。
如何向客户证明没有任何一行代码泄露?+
通过一套可复现的审计材料来证明:在编码会话期间捕获网络流量,显示与云端 AI 端点的连接数为零;导出不含云端密钥的工具配置;进行负向测试,验证访问被防火墙阻止;以及提供内部推理服务器的日志。将整个流程编写成脚本,以便按需重新执行。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。