Skip to content
牛牛
EN

遥测与隐私说明

个人版匿名「打开统计」采集什么、绝不采集什么、保留多久、如何一键关闭与请求删除。团队私有版从不上报。

牛牛个人版默认本地优先、网络隔离(绑定 127.0.0.1、关闭账号体系),因此我们无法知道「外部到底有多少人在使用」。为了统计活跃用户数、版本分布、操作系统分布与留存,个人版会在启动时发送一条匿名的「打开事件」——仅此而已。

本说明逐项告诉你采集什么、绝不采集什么,以及如何一键关闭。这种透明是「默认开启、可随时关闭(opt-out)」设计成立的前提。

适用范围:仅个人版 / 自托管单用户实例。厂商托管的团队私有版完全不启用本遥测——详见下方 启用范围

采集什么(最小集,仅 6 个字段)

每条「打开事件」只包含以下字段,别无其他:

字段含义说明
install_id匿名安装标识首次启动生成的随机 UUID,非账号、非设备序列号
machine_fp_hash机器指纹哈希机器指纹经固定 salt 做 SHA-256 哈希后的字符串,不是原始硬件 ID;仅用于去重「同一台机器重装」
version应用版本号用于统计版本分布
os操作系统windows / darwin / linux
archCPU 架构amd64 / arm64
opened_at打开时间RFC3339 格式的时间戳

服务端会严格校验:任何未知字段、疑似个人信息字段、任何用量数值字段都会被拒绝。

绝不采集

牛牛永远不会通过本遥测采集以下内容:

  • 账号 / 邮箱等个人信息(个人版本就没有账号体系,本接口完全匿名)。
  • token / 工作量 / 项目数等任何用量聚合——不统计你用了多少 token、跑了多少 workspace、建了多少 issue / project。
  • 仓库路径与文件名
  • issue / 提示词 / 对话内容
  • token 明文
  • 原始硬件 ID(只发 salted 哈希,不发原始指纹)。
  • 精确 IP 关联画像(仅按 IP 做匿名限流,不做基于 IP 的画像关联)。

用途

采集到的最小字段用于以下统计,不作他用:

  • DAU / WAU / MAU(按 install_id 在查询侧按天去重);
  • 版本分布version);
  • 操作系统分布os / arch);
  • 留存曲线

machine_fp_hash 仅在分析时用于把「同一台机器的多次重装」合并,避免重装被重复计为新装机。

上报机制

  • 触发:应用启动后约 10 秒发一条「打开 ping」;运行中每 24 小时发一条保活心跳(字段相同),保证长开会话每天准确计一个活跃日。
  • 匿名:请求不携带任何账号凭证。
  • 限流:按来源 IP 限流;请求体有大小上限。
  • 尽力而为:发送失败会静默重试几次后放弃,绝不阻塞主流程,也不会刷错误日志

保留期

  • 原始事件保留 90 天,到期自动清理。
  • 每日聚合统计长期保留(聚合后不含可定位到单次打开的原始明细)。

如何关闭

本遥测是 opt-out,可随时关闭,两种入口任选其一

  1. 设置 → 隐私 中的「匿名使用统计」开关(推荐)。关闭后下一个心跳周期即停止上报,无需重启

  2. 直接改配置文件 ~/.niuniu/config.yaml

    telemetry:
      enabled: false   # 默认 true(opt-out)

启用范围

实例形态是否上报
个人版 / 自托管单用户是(受「匿名使用统计」总开关控制,默认开)
厂商托管团队私有版(遥测组件根本不启动,无需关闭)

如何请求删除

由于本遥测完全匿名(无账号、无邮箱),唯一能定位你数据的标识是你的 install_id

  • 你的 install_id 可在 设置 → 隐私 查看,或在 ~/.niuniu/config.yamlserver.id 字段找到。
  • 如需删除与该 install_id 关联的原始事件,请携带 install_id,通过官网公开仓库 issue 提交删除请求。
  • 即便不主动请求,原始事件也会在 90 天后按保留期自动清理。

在 GitHub 上编辑此页 →