☰
它到底记录了什么?macOS Harness 匿名遥测机制深度解读
2026/10/23 2:37:00 网站建设 项目流程

【免费下载链接】macos-harness

The simplest, thinnest harness that gives an LLM complete freedom to control a Mac.

项目地址:https://gitcode.com/gh_mirrors/mac/macos-harness
点击查看免费下载

macOS Harness是一个让 LLM 直接控制 Mac 的极简工具,官方说明中有一句容易被忽略的话:匿名遥测默认开启。它到底收集了什么?会不会把屏幕内容、文件路径、聊天记录发出去?这篇文章带你完整看懂 macOS Harness 遥测机制——记录了什么、怎么发送、以及如何一键关闭。

一、先说结论:遥测只记"命令类别 + 运行元数据" 🎯

macOS Harness 的遥测模块总共只有一两百行代码,全部集中在 src/macos_harness/telemetry.py 中,文件开头的设计目标写得很直白:Tiny, privacy-safe, opt-out——极小、隐私安全、可随时退出。

核心规则只有一条:遥测只记录"哪个已知命令、是否成功、花了多久",外加少量运行环境信息,绝不记录任何用户数据。

二、遥测到底记录了什么?一张清单看明白

每次执行macos-harness命令结束时,cli.py 都会在finally块中调用capture_cli()上报一次事件(事件名macos_harness_cli)。完整字段清单如下:

字段含义示例值
command命令类别,仅限白名单值doctor、see、repl…
success本次执行是否成功true/false
duration_seconds执行耗时(秒,保留 2 位小数)1.23
macos_harness_version工具版本0.1.2
python_versionPython 主/次版本3.12
os/machine操作系统 / 硬件架构Darwin/arm64
agent检测到哪个 AI 客户端在调用codex、claude-code…

两个值得展开的设计:

command 字段有白名单机制

只有 7 个命令会被原样记录:python、doctor、apps、repl、skill、see、state(见 telemetry.py 中的COMMANDS)。任何其他值都会被归一化为python,所以你输入的参数、脚本内容、应用名在结构上就不可能被带出去。

agent 字段靠环境变量猜测

遥测会检查环境变量来判断是哪个 AI 客户端在调用:CODEX_THREAD_ID→ codex、CLAUDECODE→ claude-code、CURSOR_AGENT→ cursor、GEMINI_CLI→ gemini-cli、OPENCODE→ opencode(见 telemetry.py)。没有命中任何标记时,该字段为空。

三、遥测绝对不记录的内容

README 的 "Permissions and privacy" 一节给出了明确的"负面清单":

  • ❌ 你给 Agent 的提示词(prompts)
  • ❌ 应用名称(app names)
  • ❌ 截图(screenshots)
  • ❌ 屏幕上的 UI 文本
  • ❌ AppleScript 脚本内容
  • ❌ 文件路径、窗口标题

这不只是口头承诺,而是有自动化测试守护的。tests/test_telemetry.py 会把真实上报的 payload 序列化后,断言其中不含app、path、prompt、script、screenshot、text、title、window等任何敏感字样;CONTRIBUTING.md 也把"绝不通过遥测发送用户数据"列为项目三大不可妥协原则之一。

四、install_id:一个随机 UUID,不是硬件指纹 🆔

上报数据需要一个标识符来区分不同安装,macOS Harness 的做法是:

  1. 首次运行时生成一个随机 UUIDv4作为install_id,写入本地配置(见 telemetry.py)
  2. 配置文件默认位于~/Library/Application Support/macos-harness/telemetry.json,可通过MACOS_HARNESS_HOME环境变量改变位置(见 telemetry.py)
  3. 目录权限设为700、文件权限设为600,仅本用户可读写(见 telemetry.py)

注意:这个 ID 与硬件序列号、MAC 地址、用户名均无关,删掉配置文件就是全新的匿名身份。此外 payload 中还显式设置了$process_person_profile: False和$geoip_disable: True——不做用户画像合并、不做 IP 地理位置解析(见 telemetry.py)。

五、数据怎么发出去?后台静默、失败无感 📡

发送逻辑见 telemetry.py:

  • 每次上报启动一个分离的后台子进程发送,不阻塞你的命令执行
  • 默认 5 秒超时,可用MACOS_HARNESS_TELEMETRY_TIMEOUT调整
  • 目标是 PostHog 的欧洲节点eu.i.posthog.com,地址可用MACOS_HARNESS_POSTHOG_HOST覆盖
  • 任何异常都被静默吞掉——网络不通、超时、报错都不会影响正常使用

换句话说,遥测是"锦上添花"式的:发不出去,工具也不会变慢或失败。

六、如何关闭 macOS Harness 遥测:一条命令即可 🔕

方法一:一条命令永久关闭(推荐)

macos-harness telemetry disable

它会在本地配置中写入disabled: true,之后所有上报直接跳过。随时可以用macos-harness telemetry status查看当前状态(输出 JSON:是否启用、install_id、配置文件路径),用macos-harness telemetry enable重新开启。命令实现见 telemetry.py,官方安装文档 install.md 也有同样说明。

方法二:环境变量即时关闭

以下任意一个环境变量生效即可禁用遥测(判断逻辑见 telemetry.py):

环境变量生效取值
MACOS_HARNESS_TELEMETRY0/false/no/off
ANONYMIZED_TELEMETRY0/false/no/off
DO_NOT_TRACK1/true/yes/on

比如MACOS_HARNESS_TELEMETRY=0 macos-harness doctor,本次运行就不收集任何数据。

七、小结

macOS Harness 的遥测机制可以概括为三点:

  • 记录极小:只有命令类别、成功与否、耗时、版本与平台信息
  • 匿名彻底:随机 UUID + 关闭地理解析 + 不做用户画像
  • 退出自由:一条命令或环境变量即可完全关闭,且有自动化测试防止用户数据混入上报

如果你打算把 macOS Harness 交给 AI 助手长期使用,建议先跑一次macos-harness telemetry status确认状态,再按需选择开启或关闭——知情,才有得选。

【免费下载链接】macos-harness

The simplest, thinnest harness that gives an LLM complete freedom to control a Mac.

项目地址:https://gitcode.com/gh_mirrors/mac/macos-harness
点击查看免费下载
上一篇:告别MSVCP140.dll报错:Visual C++运行库合集vcredist完整安装指南
下一篇:内存管理工具自救指南:一个被电脑卡到怀疑人生的人的 Mem Reduct 实战手记

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询