Skip to content

隐私与安全

Codeg 是本地优先的。你的对话、设置和项目数据都存放在你的机器上;应用不含任何形式的分析、遥测或追踪 —— 没有 Codeg 账户、中间没有云、也不会向任何地方回传数据。网络仅在你采取的某项操作需要它时才会被使用 —— 运行智能体、推送到远程、检查更新。本页确切阐明这意味着什么:哪些留在原地、哪些离开,以及介于其间的机密如何被保管。

本地保存的内容

Codeg 自身存储的一切都位于运行它的机器上的 ~/.codeg/ 之下(参见架构):

  • SQLite 数据库 —— 你的对话、设置,以及账户的非机密元数据;
  • 你的技能以及你附加到对话中的任何上传内容
  • 诊断日志

解析、存储、git 操作和文件处理全都在设备本地进行。不存在需要你亲自运行之外的服务器组件:桌面应用将一切保留在你的电脑上,而自托管服务器将一切保留在那台机器上。没有任何东西被上传到 Codeg —— 因为根本没有可上传的地方。

离开你机器的内容 —— 且仅在你采取行动时

Codeg 出于少数几个明确触发的原因才访问网络,每一个都是你所做某事的直接结果:

  • 智能体 ↔ 模型提供商。 最主要的一项。当智能体运行时,它的 CLI 会调用你所配置的模型提供商 —— Anthropic、OpenAI 等等 —— 携带提示词以及它所需的上下文。Codeg 编排智能体;智能体发起调用,使用在模型提供商下设定的凭据。它所发送的内容受提供商自身的政策约束,而非 Codeg 的。
  • Git 远程。 克隆、拉取和推送会与 GitHub、GitLab 或你的远程所指向的任何服务器通信 —— 由版本控制下的账户进行认证。
  • 更新检查。 软件更新会联系发布源以查看是否存在更新版本,若你选择安装则将其下载。
  • 安装智能体。 添加一个智能体 CLI 会从其常规的分发源下载它。
  • 聊天频道,如果你连接了任何频道 —— 这些集成会与你所关联的消息服务通信。

这就是全部清单了。其中没有任何一项会针对你的文件在后台定时运行;每一项都是对你按下的某个按钮或你启动的某个智能体的响应。

macOS 文件夹访问提示

在 macOS 上,你可能会看到类似 "Codeg 想要访问你"文稿"文件夹中的文件" 的系统对话框 —— 或者是桌面、下载、音乐文件夹。这是 macOS 的标准隐私提示,值得说清楚究竟是什么触发了它。

是智能体的命令 —— 而非 Codeg 在读取你的文件夹。

Codeg 未声明对这些文件夹的任何特殊访问权限,也不会自行索引或读取它们。该提示之所以出现,是因为某个智能体的命令在执行你的任务时触碰了一个受保护的文件夹

macOS 守护着少数几个个人文件夹 —— 桌面、文稿、下载等 —— 并在任何程序首次伸入其中时发出询问。当智能体运行你任务的某个步骤时,它执行的命令(一个 find、一个 ls、一个 grep、一段构建脚本 —— 或者仅仅是在一个恰好位于这些文件夹之下的项目中工作)可能会越过那条界线。由于 macOS 会将子进程的文件访问归因于启动它的应用,因此该对话框带有 Codeg 的名字,尽管真正在伸手的是智能体的命令 —— 这与你自己在 Terminal 中运行那条命令时会得到的提示如出一辙。

如何回应它:

  • 若你希望智能体处理该文件夹中的文件,就选允许
  • 拒绝,命令便无法读取该文件夹 —— 智能体会照常继续处理其余的一切。

无论哪种方式,选择权都在你手中,而且你随时可以在 系统设置 → 隐私与安全性 → 文件与文件夹 下重新调整,那里按应用逐一列出了每一项授权。

机密存放在哪里

凭据会得到特殊处理 —— 它们被保管在数据库之外、网络之外

  • 桌面端,令牌会进入你操作系统的密钥环 —— macOS 上的 Keychain、Windows 上的凭据管理器、Linux 上的 Secret Service。只有非机密的元数据(服务器、用户名、作用域)留在应用数据库中;机密本身从不进入。
  • 无头服务器上,由于不存在桌面密钥环,同样的机密会回退到数据目录中的一个 tokens.json 文件,仅在该部署内部可读。

这一拆分会在几个地方浮现出来:你的 Git 和聊天令牌存放在密钥环中,这正是桌面备份无法包含它们的原因(恢复后你需要重新输入),而服务器的 tokens.json 则是其备份的一部分。你的智能体所使用的模型提供商凭据则又是单独配置的。

将 Codeg 暴露到网络

默认情况下 Codeg 不监听任何人 —— 桌面应用不开放任何端口。有两个功能会有意改变这一点,且二者都由你掌控:

  • Web 服务将桌面应用变成一个浏览器可访问的服务器。它绑定到所有网络接口(0.0.0.0,因此任何能在该端口路由到你机器的人都能访问登录页 —— 这正是它由一个访问令牌把关的原因。把那个令牌当密码对待:保持其强度,并在你于不受信任的网络上用完后停止该服务。
  • 独立服务器在设计上就是同样的思路,同样由令牌把关。

对于企业网络,网络代理会将 Codeg 的所有出站流量 —— 智能体调用、git、更新 —— 都经由你指定的代理路由,从而使出口流量遵循你所在组织的政策。

备份

一份备份是你数据的可移植副本,因此要把该文件本身当作敏感物对待。Codeg 对此毫不含糊:一个未加密的归档会以明文包含你的机密(API 密钥、令牌)。在导出时设置一个口令来加密它 —— 只是别弄丢那个口令,因为加密的备份若没有它便无法恢复。无论哪种方式,都请把该文件存放在你信任的地方。

值得了解

  • 没有遥测,就是没有。 Codeg 中不存在分析或追踪 SDK —— 没有任何东西衡量或上报你如何使用它。
  • 你是唯一的服务器。 无论你运行桌面应用还是自行托管,你的数据都留在你所掌控的硬件上;不存在数据流经的、由 Codeg 运营的后端。
  • 模型提供商才是真正的出口。 离开你机器的最重要的东西,是你的智能体发送给其模型提供商的内容 —— 而那是需要用你在模型提供商下设定的密钥去权衡的、提供商的数据政策。
  • 智能体在有风险的操作前会询问。 通过 ACP 驱动,智能体会为敏感操作请求权限,而不是悄无声息地执行 —— 这是一项你能在对话中看到并回应的控制。
  • 机密从不搭载在数据库里。 令牌存放在操作系统密钥环(或服务器的 tokens.json)中,而非 SQLite 文件里 —— 因此分享或迁移那个数据库并不会泄露它们。
  • 模型提供商 —— 你在此配置智能体调用所携带的模型凭据。
  • 版本控制 —— Git 和聊天令牌,以及保管它们的密钥环。
  • 系统 —— 网络代理,以及备份加密。
  • Web 服务 —— 为浏览器访问把关的访问令牌。
  • 架构 —— 支撑这一切的本地优先、三二进制文件设计。

基于 Apache-2.0 许可证发布。