v0.17.2 · 已发布的稳定版

让隐私状况更清晰。

你的麦克风。
你的摄像头。
让你看清状况。

发现访问、理解线索,并在桌面上采取行动。MicCamWatch 观察的是系统元数据,而不是你的谈话或画面。

Windows 10/11 · Linux x64 · macOS 15+
原生工具 · 开源代码 · 无遥测

点击即可控制Windows
Windows 下的 MicCamWatch 原生菜单:监测状态、隐私控制和桌面选项。
真实的 Windows 菜单,v0.17.1 截图。这是用户安装环境的历史截图:摄像头管线为“ready”,未请求麦克风保护,摄像头处于允许状态。这是真实界面,不是采集或硬件阻断的证明。它早于 Windows 常见问题中介绍的不完整状态诊断功能。

观察,但不录制

先理解,再行动

在本地保持控制

减少不透明,增加上下文。

有用的信号。
不是神奇的保证。

MCW 区分观察到的活动、可信度和风险。微弱的线索不会被当成确定的事实。

01 / 观察

查看访问

即时状态、实时监测和终端仪表板。当系统允许获取时,还会提供进程身份和上下文。

mcw status --lang zh
02 / 理解

追溯线索

根据操作系统提供进程、路径、来源和信任验证。诊断也会显示功能降级或不可用的采集器。

mcw doctor
03 / 行动

选择控制方式

静音、摄像头控制和登录时启动:这些都是明确选择的操作,范围仅限于平台实际支持的能力。

mcw tray
在终端中同样得心应手

无需浏览器的仪表板。

mcw top
在没有采集设备的 CI Windows 终端中,mcw top 0.17.1 仪表板的真实输出。
这是在 CI 的 Windows ConPTY 中运行的 mcw top v0.17.1 的真实输出(150 列),随后渲染成图像。该运行器没有任何采集设备,SDK 的静音状态也未知:它展示的是界面,而不是在物理硬件上的检测结果或阻断证明。本页所有截图均来自 Windows。

三种操作系统,各有不同能力

限制也是
产品的一部分。

监测无需管理员权限。需要特权的操作则必须另外获得授权。

版本 0.17.2 的支持范围
系统麦克风摄像头控制与限制
Windows 10/11
x64
活跃的 WASAPI 会话;可访问时验证进程。原生采集线索;可获取时归属到进程。仅加载模块时,只表示“ready”。端点静音,以及需要 UAC 授权的摄像头设备控制。手动保护请求在后台保持,直到明确释放;这不是电气隔离,也不保证覆盖独占模式或 ASIO 路径。
Linux
x64 · PipeWire
具有活跃链接的源和运行中的流;先认证 PID,再通过 /proc 验证。同样要求存在活跃的 PipeWire 链接。仅有 V4L2 句柄不能证明存在流;绕过 PipeWire 的访问可能无法被观察到。对会话中的源静音,并非禁止 ALSA 访问。USB 摄像头的 uvcvideo 仅通过单独审阅并安装的管理员组件支持;不支持非 USB 摄像头。
macOS 15+
Apple Silicon / Intel
CoreAudio 输入活动;可读取进程身份时验证 PID。通过 CoreMediaIO 获取设备运行状态,可信度中等。客户端和 PID 未知。此信号不能证明存在图像流;摄像头健康状态为“degraded”。仅在输入属性可修改时支持静音。MCW 管理的摄像头描述文件需要在系统设置中手动批准;它的存在不能证明物理层面的访问拒绝。

没有通用的断路开关。MCW 既不是杀毒软件,也不是证明发生过采集的取证工具。受保护的进程、驱动程序、直接访问或不可访问的会话,都可能限制观察和控制。WSL、虚拟机和没有硬件的运行器不保证能够访问物理设备。

资源占用:尚未达到 15 MB 的目标。已记录的 Windows 完整场景测量值超过了这一目标(采样的累计 RSS 峰值:56.041 MB)。这些测量存在局限;我们不承诺内存预算保证。阅读测量结果及其适用范围 ↗

轻松开始

你的系统。
合适的安装方式。

稳定版 0.17.2。可执行文件始终托管在 GitHub Releases,绝不会从本网站的镜像提供。

仅限 Linux 和 macOS

一行命令,安装稳定版。

无需 sudo
curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/Roman-Cuisset/miccamwatch/a58c8b9f3a967589a576879d6d27bfdbc40f9dff/installer/install.sh | sh

此命令会执行远程脚本。先下载并阅读脚本更安全。这不是 PowerShell 命令:在 Windows 上,请选择下方的 MSI 或 ZIP。

未启用 JavaScript 或在 HTTP 预览中时,HTTPS 链接指向发布版本不可变提交中的脚本。在本网站的 HTTPS 页面上,命令会调整为使用本站的 install.sh 端点。归档文件及其校验和仍从 GitHub 下载。

没有 JavaScript 也能选中命令文本。“复制”按钮仅在浏览器提供安全的剪贴板 API 时出现;否则,请选中文本并使用 Ctrl+C、Cmd+C 或选择菜单复制。

Windows 10 / 11

原生安装 · x64

按用户安装的 MSI 会将 mcw 添加到 PATH,并在开始菜单中创建快捷方式。便携 ZIP 包含 CLI 和托盘宿主这一对程序;请将两个可执行文件放在一起,并保持版本一致。

安装后请重新打开 PowerShell。若 ZIP 未添加到 PATH,请用 .\mcw.exe 代替 mcw。

mcw --version
mcw doctor
mcw status --lang zh
mcw top

桌面 Linux

x64 · glibc 2.35+

需要 PipeWire/SPA 库、pw-dump,以及在用户会话中可访问的 PipeWire 套接字。托盘需要 StatusNotifierItem 宿主;通知和声音需要各自的会话服务。

安装程序默认管理 $HOME/.local/bin 下的可执行文件,并验证 SHA256SUMS 中该归档的精确条目。不支持的架构会被拒绝,不会用其他架构替代。

macOS 15 或更高版本

Apple Silicon / Intel

安装程序会选择你的原生架构。菜单栏需要 Aqua 会话。原生辅助程序已内置;这些归档不需要开发环境。

推荐的替代方式

下载。验证。阅读。执行。

Linux 和 macOS · 此脚本固定到发布版本的提交。先下载并阅读,再验证校验和,然后运行下方独立的安装命令。

curl --proto '=https' --tlsv1.2 -fsSL \
  https://raw.githubusercontent.com/Roman-Cuisset/miccamwatch/a58c8b9f3a967589a576879d6d27bfdbc40f9dff/installer/install.sh \
  -o mcw-install.sh
less mcw-install.sh

执行前,请比较文件校验和:Linux 使用 sha256sum mcw-install.sh,macOS 使用 shasum -a 256 mcw-install.sh。安装脚本(不是归档文件)的预期值为:

b7348c9a6f37a3d4f89faa2b767fd4880162d90c8f5d7c151185e0823384d1bb

在同一渠道显示的校验和只能验证字节一致性,不能提供独立的真实性验证。也请查看不可变源代码中的脚本。

阅读并验证后,安装版本 0.17.2,并明确请求添加到 PATH:

sh mcw-install.sh --version v0.17.2 --add-path

若不希望修改 shell 配置,请将 --add-path 替换为 --no-modify-path。未作选择时,安装程序会在终端中征求同意;在非交互模式下,它不会悄悄修改 PATH。之后请打开一个新终端。不会启用任何自动启动或设备控制。

Unix 上的预期结果:脚本会显示下载和验证步骤,然后针对明确请求的版本显示 Installation completed: mcw 0.17.2。在兼容的终端中,步骤会以彩色显示(可通过 NO_COLOR 禁用)。随后会说明如何启动 mcw top,以及在需要时使用完整路径,或打开新终端以使 PATH 生效。这个成功结果仅指安装成功:它不证明设备可用,也不证明保护已启用。

归档、SHA-256 校验和与来源

请从同一个发布版本下载归档文件和 SHA256SUMS。Linux 使用 sha256sum --check --ignore-missing SHA256SUMS。macOS 请将 shasum -a 256 nom-de-l-archive.tar.gz 的结果与清单中的精确条目比较。PowerShell 可用 Get-FileHash .\miccamwatch-windows-x86_64.zip -Algorithm SHA256 比较 ZIP(MSI 请相应调整文件名)。

GitHub 证明提供构建来源信息。使用 GitHub CLI 验证时,请根据下载的文件调整路径:

gh attestation verify ./miccamwatch-linux-x86_64.tar.gz \
  --repo Roman-Cuisset/miccamwatch \
  --signer-workflow Roman-Cuisset/miccamwatch/.github/workflows/release.yml \
  --source-ref refs/tags/v0.17.2 \
  --source-digest a58c8b9f3a967589a576879d6d27bfdbc40f9dff \
  --deny-self-hosted-runners

校验和与归档共用发布渠道。构建来源、发布者签名和杀毒扫描是三件不同的事。本网站不提供任何二进制文件。

Homebrew / AUR:仓库中有配方,但未宣布任何已发布的 tap 或 AUR 软件包。不要使用凭空编造的包管理器命令。

日常使用

先观察。
只启用你选择的功能。

仅安装不会启用任何保护、自动启动或进程终止。

01

检查会话

显示版本、采集器状态和观察到的访问。status 在没有匹配的访问时返回 0,有访问时返回 1,出错时返回 2:返回码 1 不是故障。

mcw --version
mcw doctor
mcw status --lang zh
02

选择界面

top 打开仪表板。tray 打开原生菜单(Windows 通知区域、Linux StatusNotifierItem、macOS 菜单栏)。终端监测可用 Ctrl+C 结束。

mcw top
# 或进行带通知的监测:
mcw watch --notify
03

启动:由你同意

仅在你愿意时,注册托盘以便登录时启动:Windows 使用用户任务/条目,Linux 使用 .desktop 文件,macOS 使用 LaunchAgent。不会隐式安装任何登录服务。

mcw autostart enable
mcw autostart status
# 如需撤销:
mcw autostart disable

自动终止(--kill-unauthorized)默认禁用。它要求发布者/路径策略明确拒绝、可归属的活跃采集、连续两次观察,以及进程不受保护。仅有“suspicious”风险不会触发它;没有 PID 的 macOS 摄像头也无法触发它。

始终由你管理的安装

更新。
妥善卸载。

不要混用 MSI、受管理的安装程序、手动归档安装和包管理器。安装的管理方式决定操作流程。

更新

  • Windows MSI:安装新发布版本的 MSI;mcw update 不会更新 MSI 注册信息。
  • Windows 便携版 / Cargo:mcw update 在验证保护功能可用性并安全停止自身管理的托盘后,验证并替换一致的 CLI/托盘程序对。
  • 受管理的 Unix 安装:使用 mcw update,或使用公开脚本并指定相同前缀。没有 --version 时,脚本跟随最新稳定版。更新程序拒绝降级。
  • 手动归档安装:Linux 需要手动替换;macOS 可根据文档所述条件,更新位于 bin 之外、由其管理的独立可执行文件。
  • 包管理器:请使用该包管理器更新,绝不要使用 curl 脚本或 mcw update。

受管理的更新会保留偏好设置,不会重新启用不存在、已禁用或由外部管理的自动启动。安装被修改、正在运行或无法验证归属时会被拒绝;不要强行绕过。

卸载

  • Windows MSI:禁用相应的自动启动,然后使用 Windows 设置中的“已安装的应用”。
  • 便携 ZIP:禁用该安装管理的自动启动,停止该安装的进程,然后移除这对可执行文件。
  • 受管理的 Unix 安装:下载并阅读上面的脚本后,使用下方命令;若安装时使用了自定义前缀,请添加相同的 --prefix。
  • Linux 摄像头组件:在用户侧更新或删除之前,恢复其管理的绑定,并明确移除单独安装的管理员组件。操作流程 ↗。
mcw autostart disable
mcw tray stop
sh mcw-install.sh --uninstall

Unix 脚本仅移除自身管理的可执行文件/状态以及受管理的 PATH 区块;不会删除策略、偏好设置、历史记录或控制归属证明。删除应用不能替代明确的恢复操作。

默认本地处理

你的活动,
不是我们的数据。

不录音,不采集图像。不进行遥测,不向服务器发送历史记录。

阅读隐私政策

元数据,而非媒体内容

MCW 读取系统信号和进程信息。设置、策略、日志和历史记录保留在本地。可用 mcw config settings-path 和 mcw history path 查看路径;mcw history clear 清除 MCW 历史记录。

明确说明联网例外

安装和更新会连接 GitHub。“online”信任策略允许原生的证书或密钥网络验证;“offline”则根据平台禁止这些验证。系统日志遵循各自的保留规则。

本页保持轻量依赖

没有跟踪器、第三方库或远程字体。可选的 JavaScript 改善选项卡和复制功能;没有它,下载和指南仍可访问。托管服务商和 GitHub 可能处理正常的请求元数据,例如 IP 地址。

遇到不清楚的情况时

明确解答,
不留模糊地带。

先运行 mcw doctor。采集器不可用不代表一切正常。

安装后无法识别“mcw”

修改 PATH 后请打开新终端。Windows 便携版请从解压目录使用 .\mcw.exe。Unix 若保留了默认前缀,可尝试 "$HOME/.local/bin/mcw" --version。安装程序无法改变父终端的环境。

如果 Defender 已隔离可执行文件,问题就不在 PATH:请保留“保护历史记录”的详细信息,并遵循下方注意事项,不要恢复检测到的字节内容。

Windows:摄像头正在使用,但 PID 未知,或托盘显示覆盖范围不完整

当原生报告未提供可用的时间戳时,即使 Windows 提供了原始 PID,摄像头活动也可能无法归属到 PID。从版本 0.17.2 开始,托盘保留观察到的访问,并用橙色感叹号区分这种部分覆盖状态。详细信息提供相关采集器、原因和采集情况;真正的不可用状态或保护错误仍具有优先级。旧版本可能显示灰色叉号和笼统的“telemetry degraded”摘要。

请查看 Status details…、mcw status --lang zh、mcw status --json 和 mcw doctor,以区分活动、归属和采集器健康状态。归属未知既不是“没有访问”,也不是“摄像头已阻断”:不能仅凭名称或原始 PID 推断客户端身份,或推断有权停止某个进程。本页截图明确保留为 0.17.1 的历史截图。

需要哪些权限和授权?

观察:在用户会话中运行 MCW,无需全面提权。系统限制可能使某些身份信息或采集器不可用;额外权限也不保证能确定归属。

Windows:更改摄像头设备需要单独的 UAC 授权。Linux:USB 摄像头控制首先需要单独安装同一版本的管理员组件,然后明确进行 Polkit 授权;用户安装程序不会部署该组件。macOS:摄像头描述文件的安装与移除仍需在系统设置中手动完成,通知取决于系统授权。MCW 不绕过 TCC、Gatekeeper 或 SIP;描述文件的存在不能证明采集已被拒绝。

Linux:PipeWire 不可用,没有摄像头或没有托盘

在桌面用户会话中运行 MCW,不要通过 sudo 运行。检查 pw-dump、PipeWire/SPA 库、XDG_RUNTIME_DIR、用户套接字,以及自定义配置时的 PIPEWIRE_REMOTE。套接字不可访问或正在重启属于错误,不是“没有访问”。

托盘需要 StatusNotifierItem 宿主。通知需要会话服务和 notify-send;声音需要 canberra-gtk-play、主题和会话后端。调用被接受不证明通知已被看到或声音已被听到。绕过 PipeWire 的直接摄像头访问可能仍无法确定归属,或使观察能力降级。

macOS:为什么摄像头没有 PID?

CoreMediaIO 公共 API 提供设备运行状态,而不是使用它的客户端身份。因此,MCW 显示 PID 未知和摄像头健康状态降级,而不会编造归属。AVFoundation 可用性和设备运行状态都不能证明图像已被采集。描述文件等待批准不等于已阻断。

SmartScreen、Defender 或 Gatekeeper:应该绕过吗?

不应该:不要关闭保护,也不要添加排除项。公开发布的 0.17.2 在 Windows 上未签名;也未宣布任何 Apple Developer ID 签名或公证。因此可能出现警告。GitHub 证明描述的是构建,而不是其无害性。

若 Defender 检出威胁,请记录名称、路径、版本、可获取的哈希值和“保护历史记录”详情。不要从隔离区恢复,也不要自动重新安装检测到的字节内容。仓库记录了该事件以及向 Microsoft 手动提交的流程;不声称已被判定为误报。签名、来源与安全处理 ↗。

关闭托盘后,保护是否已解除?

不一定。在 Windows 上,手动保护由后台原生代理管理;关闭托盘或 top 后,请求仍保持,直到运行 mcw unmute 或 mcw camera allow。这不承诺重启后仍持续生效。Linux 和 macOS 保留其有限、单次的控制方式,不会继承这一 Windows 机制。

请检查实际状态。Windows 摄像头守护已停止时仍会发出警告:仅有“Block”意图不能证明未来的连接会受到保护。替换或卸载前请明确恢复,并解决所有待完成状态。

为什么更新或卸载被拒绝?

正在运行的可执行文件、已请求的保护、待完成的恢复、缺失或被修改的管理凭据、不安全的路径,都可能阻止操作。请停止监测进程,完成特权操作,并检查控制状态。脚本拒绝 root、被修改或不归其管理的目标,以及不安全的链接;它不会替你停止进程。

旧版托盘可能需要正常手动退出:不要在摄像头操作期间强制退出。不要删除归属记录来绕过拒绝。请使用正确的安装管理方式和文档中的流程。

如何在不泄露隐私的情况下分享诊断?

mcw doctor --json 和 mcw status --json 有助于诊断,但路径、用户名、PID、设备和应用名称可能涉及个人信息。在将片段附到 issue 前,请检查并遮盖这些数据。MCW 不会自动收集你的报告;分享完全自愿。为保持诊断稳定,技术性证据详情仍使用英语。

开放、有文档、可审计

信任始于
可以验证的事实。