AI 集成 (MCP)

直接向 Claude 等 AI 查询您 Mac / Linux 的安全状态

RoamSwitch 内置了只读的 MCP(Model Context Protocol)服务器。只需连接到 MCP 客户端,用自然语言询问“我的 Mac / Linux 现在安全吗?”“有哪些端口对外暴露?”,即可获得基于 RoamSwitch 自身精确诊断结果的回答,而非 AI 的臆测。它无法切换锁定级别、隔离端口或执行任何其他操作,与 AI 客户端之间的通信完全通过设备内的 stdio 完成(Zero Telemetry 方针的延伸)。

🔒 为什么是安全的

  • 只读:仅提供安全诊断、端口监控、防护设置查询功能。未实现切换锁定、隔离端口、弹出设备等任何操作型工具。
  • 完全本地:与 AI 客户端(Claude Desktop/Code 等)的通信仅通过标准输入输出(stdio)进行,只在客户端与 Mac / Linux 上的 RoamSwitch 进程之间完成。绝不发送任何遥测数据。只有默认关闭、需主动启用的功能才会使用网络(仅检查本机自身 127.0.0.1 的漏洞验证,以及向 npm 注册表查询的 npm 签名验证)。
  • 防止误操作:由于不含任何操作型工具,因此不存在因提示注入等原因而误改防火墙或网络设置的风险。
连接方法

两步完成设置

1二进制文件位置

已内置于 RoamSwitch.app 中,无需单独下载或安装。

/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2a适用于 Claude Desktop

在 ~/Library/Application Support/Claude/claude_desktop_config.json 的 "mcpServers" 中添加以下内容,然后重新启动 Claude Desktop。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
    }
  }
}

2b适用于 Claude Code

只需在终端中执行一次以下命令即可。

claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2c适用于 OpenAI Codex CLI

请在 ~/.codex/config.toml 中添加以下内容,或在终端中执行以下命令。

[mcp_servers.roamswitch]
command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer

2d适用于 OpenCode

在项目根目录下的 opencode.json(或全局配置 ~/.config/opencode/opencode.json)中添加以下内容:

{
  "mcp": {
    "roamswitch": {
      "type": "local",
      "command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
    }
  }
}

💡 本地大模型支持: 搭配Ollama或LM Studio等本地模型时,即使RoamSwitch因检测到威胁而实施紧急断网,也能在完全离线状态下即时查询安全建议与事件分析。

2e适用于 Antigravity

请在 ~/.gemini/config/mcp_config.json(或工作区根目录的 .agents/mcp_config.json)中添加以下内容。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
    }
  }
}

* 注意:若在 Antigravity CLI (agy) 中执行工具时遇到 Hook Failure 或遥测错误,请在 ~/.gemini/config/plugins/.../hooks.json 中将 "enabled": false 以禁用该 Hook。

1二进制文件位置

已内置于 apt / rpm / AUR 软件包中,安装时会自动部署为 /usr/bin/roamswitch-mcp,无需单独下载或编译(客户端版与 Server Edition 通用)。

/usr/bin/roamswitch-mcp

Server Edition(无头运行模式)也可直接使用相同的二进制文件和相同的配置方法。详情请参阅《Linux Server 运维手册》中的「AI 代理 / MCP 集成运维」章节。

2a适用于 Claude Desktop

Claude Desktop 官方并未提供 Linux 版本。如果您使用的是非官方构建版本(例如 claude-desktop-debian 等),请在 ~/.config/Claude/claude_desktop_config.json 的 "mcpServers" 中添加以下内容后重启。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp"
    }
  }
}

2b适用于 Claude Code

只需在终端中执行一次以下命令即可。

claude mcp add roamswitch /usr/bin/roamswitch-mcp

2c适用于 OpenAI Codex CLI

请在 ~/.codex/config.toml 中添加以下内容,或在终端中执行以下命令。

[mcp_servers.roamswitch]
command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp

2d适用于 OpenCode

在项目根目录下的 opencode.json(或全局配置 ~/.config/opencode/opencode.json)中添加以下内容:

{
  "mcp": {
    "roamswitch": {
      "type": "local",
      "command": ["/usr/bin/roamswitch-mcp"]
    }
  }
}

💡 本地大模型支持: 搭配Ollama或LM Studio等本地模型时,即使RoamSwitch因检测到威胁而实施紧急断网,也能在完全离线状态下即时查询安全建议与事件分析。

2e适用于 Antigravity

请在 ~/.gemini/config/mcp_config.json(或工作区根目录的 .agents/mcp_config.json)中添加以下内容。

{
  "mcpServers": {
    "roamswitch": {
      "command": "/usr/bin/roamswitch-mcp"
    }
  }
}

* 注意:若在 Antigravity CLI (agy) 中执行工具时遇到 Hook Failure 或遥测错误,请在 ~/.gemini/config/plugins/.../hooks.json 中将 "enabled": false 以禁用该 Hook。

提供的工具

只读工具(目前 Mac 33 种 / Linux 38 种,持续增加中)

get_security_report

在 Mac 上进行 18 项综合诊断(FileVault、SIP、Gatekeeper、防火墙、Wi-Fi 加密强度、ARP 欺骗、外部暴露端口等),在 Linux 上进行客户端 27 项 / 服务器 34 项诊断(内核加固、Docker 套接字与特权容器保护、容器运行时隔离、已知漏洞等),并返回评分与改进建议。

get_exposed_ports

列出当前所有正在监听的端口,对外部暴露的端口返回包含已知高危服务(Redis/MongoDB 等)判定的详细审计结果。在 Mac 上,会对每个暴露端口向 127.0.0.1 发送 1 次 HTTP GET 以检查标头。

get_guard_status

返回未知端口拦截、ARP欺骗自动遏制、USB防护、蓝牙防护、网页/邮件下载保护、DNS威胁防护的开启状态及当前保护级别。

audit_url_safety

接收邮件链接或网页URL作为参数,完全在本地(Zero Telemetry)即时诊断钓鱼欺诈、Unicode同形异义伪装、仿冒子域名和高风险顶级域。

get_app_help

在本地即时检索涵盖RoamSwitch所有功能规范、底层机制、警报通知及故障排除的官方知识库,返回准确的技术说明与处置建议。

audit_security_logs

汇总近期安全日志(Mac:Sudo 认证失败、SSH 暴力破解尝试、Gatekeeper 拦截、XProtect 检测等 / Linux:Sudo 认证失败、SSH 暴力破解、防火墙拦截、AppArmor 拒绝、ClamAV 检测等),自动屏蔽 API 密钥、令牌等敏感信息,并返回基于日志模板化的新模式检测与频率异常(统计学突增)检测结果。在 Linux 上,如果无法读取 journal(例如超时),统计中的 0 条并不表示什么都没发生,此时 journalReadComplete 为 false,并在 journalError 中给出原因。

get_notification_history

返回 RoamSwitch 发送的通知(安全日志审计异常、ClickFix 检测等)历史记录,最近1周、最新在前。

roamswitch://docs/* (MCP Resources)

AI客户端可直接读取至上下文的官方文档资源(功能规范、警报处置指南、设置指南、故障排除)。

其他只读工具

工具 支持 概要
audit_secrets Mac / Linux 从文本、文件或目录中检测泄露的 API Key 与私钥(检出值在输出时已脱敏)。
run_active_vuln_scan Mac / Linux 仅限 127.0.0.1 的非破坏性实证型漏洞验证。不会连接其他主机,但属于会发送网络请求的工具,因此默认关闭,需在设置中主动启用。
get_vulnerability_scan_history Mac / Linux 返回实证型漏洞诊断(run_active_vuln_scan)所记录的各项目最新结果及经过天数(pass_age)。
verify_security_findings Mac / Linux 按当前状态重新评估 get_security_report 中的各项目(checkId),并为每个项目返回 stillPresent(仍然存在)、resolved(已解决,或按设计不适用)、inconclusive(无法判定)三者之一,以及与语言无关的原因代码。用于在修复之后确认问题是否真的消除;因权限不足、特权辅助程序未连接、无法访问 Docker 等原因而未能测量的项目,不会被报告为安全,而是返回 inconclusive。省略 checkIds 时检查所有项目(最多可指定 Mac 50 项、Linux 64 项;Linux 还可指定 isServer)。Mac 上的 host_firewall、network_stealth_mode、gateway_arp_lock、malware_scanning、dns_threat_guard、usb_zero_trust 由 RoamSwitch 应用内设置的值决定是否合格,因此这些项目反映的是应用内设置,而不是对操作系统实际状态的重新测量。只读,不会连接外部主机,也不会进行修复或更改任何设置。在 Linux 上也不会向局域网发送任何内容,只会从本地缓存读取网关。在 Mac 上,为查询网关的 MAC 地址,可能会向局域网内的网关发送 ICMP ping,通常 1 次(查不到 MAC 时最多数次)。
audit_mcp_configs Mac / Linux 读取 AI 客户端的 MCP 配置文件(Claude Desktop、Claude Code、Cursor、Windsurf、VS Code、Cline、Gemini CLI,以及已登记项目文件夹中的 .mcp.json 等),指出有风险的设置。会检测无需逐次确认就自动批准的工具(auto_approve)、非 loopback 主机上的明文 http:// 服务器(不仅是 url 字段,像 --server http://… 这样通过启动参数传入的连接目标也包括在内。remote_plain_http)、以 shell 或解释器单行命令启动(shell_wrapper)、获取未固定版本的软件包或镜像的 npx / uvx / docker run 等启动方式(unpinned_package_launcher)、带有 --privileged 或挂载了 Docker 套接字、根文件系统的 docker run(container_host_access)、让进程在启动时加载额外代码的环境变量(如 LD_PRELOAD、NODE_OPTIONS 中的 --require;名称不区分大小写,不返回值;code_loading_env)、指向无认证攻击工具后端 HexStrike AI 的配置(hexstrike)、组或其他用户可写的配置文件(world_writable_config)Claude Code의 enableAllProjectMcpServers(auto_trust_project_servers), 웹 페이지·메일·채팅·Issue처럼 다른 사람이 쓴 글을 읽는 서버와 명령 실행·파일 변경이 가능한 서버가 한 설정 파일에 함께 있는 구성(간접 프롬프트 인젝션의 전제가 되는 조합. 잘 알려진 패키지 이름으로 판정하며 서버 도구의 내용은 보지 않음; injection_exposure)을 검출합니다.无参数、只读,不会向网络发送任何内容。不会返回环境变量或标头的值、参数和任何机密,只返回服务器名称、命令名、URL 主机,以及(为注册表名称时的)软件包或镜像名称。无法解析的文件会列在 unreadableFiles 中,表示未被审计。
audit_agent_setup Mac / Linux 读取提供给 AI 智能体的指示文件和技能(~/.claude 下的 CLAUDE.md、commands、agents、skills,以及 ~/.codex、~/.cursor/rules、~/.gemini、~/.agents、~/.openclaw,和已登记项目文件夹中的 CLAUDE.md、AGENTS.md、.cursorrules 等)和 OpenClaw 的 openclaw.json,指出危险的内容和设置。对于指示和技能文件,会检测隐藏在不可见 Unicode 标签字符中的句子(hidden_tag_characters)、零宽字符和改变文字方向的控制字符(invisible_characters)、要求忽略先前指示或向用户隐瞒的措辞(override_instruction)、curl … | sh 这类下载后直接执行的写法(remote_script_exec)、解码后执行编码字符串(encoded_payload_exec)、对密钥和凭据存放位置的引用(credential_access)及其附近的外发或数据接收服务地址(credential_exfil_shape、exfil_endpoint)、设置重启后仍保留的机制(persistence_instruction)、技能中的已编译代码(skill_precompiled_code)和他人可写的文件(agent_file_writable)。HTML 注释中的内容渲染后会被隐藏,因此按更高风险处理。对于 OpenClaw,会检测认证被关闭(openclaw_auth_disabled)、可从网络访问的监听方式(openclaw_wide_bind)、不足 24 个字符的令牌(openclaw_weak_token)、允许所有来源(openclaw_origin_wildcard)、已开启的 dangerously… 开关(openclaw_dangerous_flag)、信任所有对象的代理设置(openclaw_broad_trusted_proxy、openclaw_proxy_trust_loosened)、对任何人开放的私信或群组策略(openclaw_open_dm)、mDNS 的 full(openclaw_mdns_full)、被隐藏的自检结果(openclaw_audit_suppressed)以及宽松的权限(openclaw_loose_permissions)。所有规则都是确定性的,匹配只表示“需要人来读一读”,并不断定为恶意。无参数、只读,不会向网络发送任何内容。不会返回文件正文或机密(令牌只报告长度),只返回规则名、行号、URL 主机和配置键路径。无法读取的文件会列在 unreadableFiles 中,表示未被审计。
run_package_cve_scan Mac / Linux 将已安装的软件包(Mac:Homebrew / Linux:dpkg・dnf・zypper・pacman)与本地 CVE 映射进行比对。完全不产生任何网络通信。在 Linux 上,如果无法获取软件包列表或超时,不会报告“无匹配”,而是 complete 为 false,并在 incompleteReason 中给出原因(未完成的结果不等于没有问题)。 在 Ubuntu(20.04、22.04、24.04、26.04)上,使用 Ubuntu 专用数据,按源软件包名称和源版本比对,只检查 Ubuntu 已发布修复、CVSS 7.0 及以上的 CVE,因此“无匹配”不代表没有已知 CVE。结果中增加 ecosystem 和 release,每条检出带有 binary(已安装的二进制软件包名称);只有 Ubuntu Pro 才能修复的漏洞带有 proOnly。Ubuntu 衍生版(Linux Mint、Pop!_OS 等)和不支持的版本会返回 complete 为 false,并在 incompleteReason 中给出原因,不会改用 Debian 的数据。
run_package_cve_scan_languages Mac / Linux 将 npm / PyPI / crates.io / RubyGems / Packagist / Go / Maven 等依赖锁定文件与同一本地 CVE 映射进行比对。完全不产生任何网络通信。
run_package_lifecycle_script_scan Mac / Linux 列出项目 node_modules 中 package.json 的生命周期脚本(preinstall / install / postinstall / prepare)。仅读取文件,不执行任何内容,也不进行网络通信。每一项会附带是否符合危险模式(如 curl|sh)的参考标记,但这只是清单,并不是威胁判定。
run_typosquat_scan Mac / Linux 检查项目 package.json 中的依赖包名称是否与知名 npm 包只相差 1~2 个字符(疑似 typosquatting,即仿冒包名)。仅读取本地文件,不会连接任何包注册表。这只是供参考的简易判断,可能出现误报。
run_npm_audit_signatures Mac / Linux 这是会向 npm 注册表(registry.npmjs.org)发起查询的工具。它运行 npm audit signatures,验证已安装软件包的签名与来源。默认关闭,在设置中启用之前会拒绝执行(Mac 版仅限 Pro)。
get_quarantine_status Mac / Linux 返回恶意软件隔离 Vault 的内容(原始路径、检出的威胁名称、隔离时间与大小)。
get_canary_status Mac / Linux 返回勒索软件诱饵文件(Canary)的部署状态,以及最近 50 条检测事件。
get_ransomware_entropy_guard_status Mac 返回通用熵值型勒索软件检测的启用状态,以及最近的熵值突发检测事件。
get_honeytoken_status Mac 返回凭据蜜罐令牌的启用状态,以及最近的访问检测事件。
get_browser_credential_watch_status Mac 返回浏览器凭据访问监控的启用状态,以及最近的访问检测事件。
get_forensic_evidence_bundles Mac 返回紧急 Air-Gap 触发时保存的取证证据包(进程列表、网络连接、变更文件等)清单。
get_ransomware_recovery_snapshots Mac 返回用于勒索软件恢复的 APFS 快照(事前、检测时、手动)列表、推荐的恢复来源、保留模式状态以及快照间隔设置。检测时的快照可能已包含被加密的文件。仅限 Pro。
search_exec_events Mac / Linux 搜索进程执行记录。Mac 上搜索基于 eslogger 的记录,Linux 上搜索执行记录器的日志(带可发现篡改的哈希链),可按路径、参数等筛选,并会返回记录器状态以及日志是否可读。Mac 版仅限 Pro。Linux 的日志仅 root 可读,因此需要以 root 权限运行。
get_process_tree Mac / Linux 根据执行记录重建指定进程的祖先与后代进程并返回。只能得知记录器实际看到的进程。Mac 版仅限 Pro。
get_port_anomaly_incidents Mac / Linux 返回端口异常防护的基线状态、当前自动阻断的端口,以及最近 50 条事件。响应中明确注明:当前自动阻断的端口是不带时间戳的当前状态快照,与带时间戳的事件历史是两回事。
get_ssh_guard_incidents Mac / Linux 返回 SSH 暴力破解防护的状态与记录。包括:是否执行封禁还是只做检测(例如另一个防御工具已在保护 sshd)、当前被封禁的来源地址与剩余时间,以及最近的记录(封禁、仅检测、失败累积的来源地址登录成功,三者之一,最多 200 条)。尝试过的用户名本身在 Linux 上不保存(只记数量),在 Mac 上经过无害化处理后最多返回 5 个。Mac 还会返回最近的 SSH 登录(来源地址、用户、认证方式、密钥指纹)。只读,没有解除封禁的 MCP 工具。Linux 上封禁列表只有 root 能读取,因此以普通用户运行时只返回数量。Linux 可用于 Server Edition,以及 sshd 正在运行的 Client Edition;Mac 仅限 Pro 版。
get_port_scan_incidents Linux 返回针对本设备的端口扫描(侦察)检测日志,包括在短时间内触及大量端口的来源 IP、触及的端口数量及部分端口,以及是否已被自动封锁(及封锁时长)。
get_runtime_threat_status Mac 返回是否因 XProtect 检出恶意软件而进入 Air-Gap 隔离,以及触发该隔离的事件。排查 Air-Gap 原因时应最先查看此工具。
verify_fim Linux 对约 150 处关键系统文件重新计算哈希,并与基线比对以验证是否被篡改。以 root 运行时,结果中还会包含新增字段 recentIntrusionContext。对每次最近的变更,会给出做出修改的进程(账户、可执行文件、命令)、该进程所属的 SSH 登录(来源、登录时间、认证方式),或无法查明的原因。
get_file_scan_guard_status Linux (Server) 返回文件扫描防护(ClamAV)的配置及其所用隔离 Vault 的状态(这是面向 Server Edition 的工具,不是客户端版恶意软件防护的设置)。
get_ebpf_incidents Linux (Server) 返回 eBPF 运行时防护的当前隔离状态,以及触发隔离的事件历史。在 Server Edition 上,每条记录还会附带从检测到处置的时间(毫秒,detect_to_receive_ms、receive_to_action_ms、detect_to_action_ms),结果中还包含 Falco 心跳检测的状态(heartbeat)。
get_resource_guard_incidents Linux (Server) 返回资源耗尽/进程异常检测防护的历史(内存泄漏、崩溃循环),并附置信等级(此防护属于 Server Edition。客户端版中不运行,因此结果始终为空)。
get_incident_timeline Mac / Linux 将各防护模块的检测结果合并为单一时间线返回(含进程谱系与 MITRE ATT&CK 标签,实验性)。
get_network_history Mac 记录每个已记住的 Wi-Fi 网络曾应答过的网关设备数量及最后一次出现的时间,并检测名称高度相似的其他网络(Evil Twin 疑似克隆热点)。也可用于确认是否曾经连接过某个网络。
get_vpn_status Linux (Client) 返回在不受信任网络下 VPN(WireGuard / Tailscale)的启用设置、隧道的实际连接状态,以及防泄漏切换开关(kill switch)的启用状态。
get_link_guard_status Linux (Client) 返回 Link Guard(通过 DNS / TLS SNI / HTTP Host 检测拦截钓鱼与恶意网站)的启用设置、工作模式(关闭 / 警告 / 拦截)、白名单,以及最近 7 天内的拦截 / 警告事件。
get_air_gap_status Linux (Client) 返回紧急 Air-Gap 隔离(切断全部通信)当前是否处于激活状态、触发原因、距自动解除的剩余时间,以及所有被 SIGSTOP 冻结的进程。
get_sharing_services_status Linux (Client) 返回在连接不受信任网络时自动停止 SSH、Samba、屏幕共享(GNOME 远程桌面 / VNC / xrdp)功能的设置,以及实际被停止与恢复的服务状态。
get_bluetooth_guard_status Linux (Client) 返回在不受信任网络下强制关闭可被发现状态的蓝牙防护设置,以及控制器的实际状态(电源、可发现性、已连接设备)。
get_usb_guard_status Linux (Client) 返回 USB 存储防护与 BadUSB 键盘防护(仅通过 evdev 抑制输入,绝不会在内核层面禁用设备)的设置,以及已连接设备与待批准设备列表。
get_fleet_status Linux 返回 Fleet(面向组织的集中管理,为 RoamSwitch Business 准备中的功能)在本设备一侧的状态,包括是否已注册、当前应用的策略版本、签到状态等。不会返回注册码、令牌、密钥或许可证信息。Fleet 没有远程命令通道,管理员无法隔离或操作本设备。
get_sensor_audit_results Mac / Linux 返回向已配对的 RoamSwitch Sensor(在同一局域网内、运行于您自己硬件上的独立产品)发起的外部主动审计的结果(待处理、已完成、失败)。它补充了从设备内部看不到的「从外部能否访问到」这一视角。无法通过此工具发起审计或进行配对。

上述工具中,仅读取本地状态的工具(隔离 Vault、诱饵文件、端口异常、运行时威胁、通知历史、事件时间线、网络历史、VPN / Link Guard / Air-Gap / 共享服务 / 蓝牙 / USB 防护状态等)即使在 RoamSwitch 因检测到威胁而紧急切断网络时也能继续工作。搭配本地 LLM,即可在断网期间当场排查原因。

verify_security_findings 的原因代码。两个平台共通的有 failing(仍然存在)、passing(没有问题)、not_applicable(在此环境中按设计不适用)、not_verifiable(无法用这种方式确认)、unknown_check_id(指定的 checkId 不存在)。仅 Mac 会返回 helper_unavailable(特权辅助程序未连接)、gateway_unknown(无法确定网关)、no_baseline(无法与已登记的受信任网络的网关 MAC 比对;若未登记受信任网络,通过 MCP 的 ARP 监控始终返回此值)、not_measured(端口列表尚未测量过;仅出现在应用内报告中,通过 MCP 通常不会出现)、location_unavailable(读取 Wi-Fi 需要位置信息权限)、tool_failed(系统命令没有返回结果,或输出无法断定启用与否,例如 SIP 显示 enabled (Custom Configuration))。仅 Linux 会返回 not_root(不是 root,无法读取)、daemon_unknown(无法获取守护进程状态)、tool_missing(缺少所需命令)、tool_timeout(外部命令未在时限内完成而被终止)、docker_unreachable(无法连接 Docker)、unconfirmed(该项目自身将结果标记为未确认)。返回 inconclusive 时,既不能说修复已生效,也不能说未生效,请补齐缺少的权限或连接后再次调用。

与外部主机通信的只有需主动启用(Mac 上仅限 Pro)的 run_npm_audit_signatures(npm 注册表)。run_active_vuln_scan(默认关闭)只向 127.0.0.1 发送探测,Mac 上的 get_exposed_ports 只会对每个暴露端口向 127.0.0.1 发送 1 次 HTTP GET 以检查标头。查询网关的 MAC 地址时,Mac 上的诊断类工具可能会向局域网内的网关发送 ICMP ping,通常 1 次(查不到 MAC 时最多数次)。Linux 上的 get_security_report 和 verify_security_findings 不会向局域网发送任何内容,只会从本地缓存读取网关(get_guard_status 等需要重新获取网关 MAC 的其他工具可能会发送 1 次 ping)。

场景化实战应用示例

日常办公与开发流程中的具体提问方式

涵盖本地开发端口审计、公共 Wi-Fi 安全检查、钓鱼 URL 诊断等真实场景的提示词与 AI 回复示例。可一键复制提示词直接发送给 AI。

🛠️

本地服务器与数据库端口暴露审计

Web 开发 / Docker

启动 Next.js、Vite、Python、Docker、Redis 等服务时,让 AI 审计是否存在意外绑定至 0.0.0.0 (全公开) 而暴露给局域网的危险端口。

💬 AI 提示词示例
请审计我 Mac 当前运行的本地开发服务器和容器的外部暴露端口。有没有绑定到 0.0.0.0 并暴露在局域网中的危险端口?
⚡ Tool: get_exposed_ports
检测到的端口审计结果:
• 🚨 端口 3000 (node / Next.js): 正在 0.0.0.0:3000 上向外暴露
• 🚨 端口 6379 (redis-server): 正在 0.0.0.0:6379 上向外暴露(未设置密码认证,同一 Wi-Fi 内其他设备可直接访问)
• ✅ 端口 5432 (postgres): 绑定至 127.0.0.1:5432(仅限 localhost,安全)
💡 修复建议: 在 Redis 配置中修改为 bind 127.0.0.1,Next.js 建议使用 npm run dev -- -H 127.0.0.1 启动。
☕

外出连接公共 Wi-Fi 时的安全性检查

远程办公 / 公共 Wi-Fi

在咖啡厅或酒店连接公共 Wi-Fi 后,让 AI 进行全面的安全体检,确认防火墙、隐身模式和 ARP 防护是否已正常启用。

💬 AI 提示词示例
我刚连上了咖啡厅的公共 Wi-Fi。请进行全面的安全性诊断,评估在这里办公是否安全,并告知防火墙和 ARP 欺骗防护的状态。
⚡ Tools: get_security_report, get_guard_status
Mac 安全综合体检结果:
• 🛡️ 综合得分: 88 / 100 (Grade: A-)
• 📡 网络判定: 不信任网络(外出模式 / 数据包过滤已生效)
• ✅ 防火墙 / 隐身模式: 已开启(阻断外部探测数据包)
• ✅ ARP 欺骗自动隔离: 已开启(检测到流量劫持时自动隔离)
• ⚠️ 改进建议: FileVault 磁盘加密未启用,建议在“系统设置”中开启。
✉️

可疑邮件与聊天链接的安全性检测

防钓鱼欺诈 / URL 诊断

收到冒充合作方的可疑邮件或 Slack/Discord 私信中的 URL 时,完全在设备端进行本地解析(Zero Telemetry),不将链接泄露给外部服务器。

💬 AI 提示词示例
合作方发来的邮件里有一个链接“https://apple.com.login-auth-verify.xyz/account”。在我点击之前,请诊断其安全性。
⚡ Tool: audit_url_safety
URL 安全诊断报告 (完全本地解析):
• 🚨 风险判定: Dangerous (危险 / 安全得分: 8/100)
• ❌ 伪装知名品牌子域名: 伪装为 apple.com,实际主域名为 login-auth-verify.xyz。
• ❌ 高危 TLD: .xyz 是钓鱼欺诈活动中高频使用的一次性域名后缀。
• 🔒 Zero Telemetry: 本地计算,未向外部服务器发送任何查询数据。
• 🛑 处置建议: 切勿点击该链接,请立即删除邮件并上报。
🤖

编码过程中的自主安全防护 (Safeguard)

AI Agent 协作

让 Claude Code 或 Antigravity 部署后端或运行测试套件时,自主调用 MCP 工具作为防护栏,确保未意外开放多余端口。

💬 AI 提示词示例
请构建项目的后端 API 和测试环境。完成后,使用 RoamSwitch MCP 确认没有意外暴露外部端口,再向我报告完成。
⚡ Tool: get_exposed_ports
AI Agent 自主执行摘要:
1. 已在 8080 端口启动 Fastify 后端服务。
2. 🔍 RoamSwitch MCP 验证: 执行 get_exposed_ports 确认服务严格绑定在 127.0.0.1:8080 (仅 localhost),无局域网暴露。
3. 环境安全已确认,正在继续执行集成测试。
📋

工作开始前检查与公司提交报告生成

定期合规审计 / 报告生成

为满足企业安全合规要求、向 IT 部门汇报或个人日常自检,一键生成结构清晰的 Markdown 格式 Mac 安全体检报告。

💬 AI 提示词示例
请输出一份 Markdown 格式的当前 Mac 安全状态摘要报告,方便我附在日报或提交给 IT 部门,并列出改进项清单。
⚡ Tools: get_security_report, get_guard_status
生成的 Markdown 报告示例:
## 🛡️ Mac Security Health Report (2026-08-28)
- 综合得分: 96 / 100 (Grade: A+)
- 核心防护状态:
  • FileVault: ✅ 已开启 (APFS Encrypted)
  • SIP (系统完整性保护): ✅ 已开启
  • 防火墙 / 隐身模式: ✅ 已开启
  • ARP 欺骗自动隔离: ✅ 已开启
  • DNS 威胁防护: ✅ 已开启 (Quad9 Secure DNS)
- 待办建议: 无(系统处于极佳安全状态)
🛡️

USB、蓝牙与下载防护等各项 Guard 状态确认

设备与物理安全防线

确认未知 USB 存储接入防护、蓝牙设备监视、Web/邮件下载文件防护及安全 DNS 切换等各项实时防线是否正常运行。

💬 AI 提示词示例
USB 存储防护、蓝牙监测、DNS 威胁防护、下载保护等各项防护功能是否都在正常运行?
⚡ Tool: get_guard_status
RoamSwitch 防护状态汇总:
• 🛡️ 当前保护级别: Balanced (标准防护模式)
• ✅ USB 存储防护: 运行中 (插入未登记 USB 时告警/阻断)
• ✅ 蓝牙防护: 运行中 (监视未配对设备的靠近)
• ✅ Web/邮件下载保护: 运行中 (自动使用 ClamAV 扫描带隔离属性的文件)
• ✅ DNS 威胁防护: 运行中 (自动拦截恶意 C2 与钓鱼域名)
💡

咨询软件用法、功能规范与通知处理建议

功能详解 / 警报处置

针对出现的通知警告或具体功能细节(包过滤、FSEvents、ClamAV、USB防护等),让AI基于内置官方知识库提供权威解答与处置步骤。

💬 模式A: 开发端口自动拦截与安全配置咨询(Web开发・Next.js)
RoamSwitch提示『🚪 未知监听端口(3000)已自动拦截』。这是我的Next.js开发服务器,如何安全地在本地运行?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
来自RoamSwitch官方知识库的解答:
• 🚪 拦截原因: 开发服务绑定了 0.0.0.0(全网公开),RoamSwitch已自动阻断外部局域网访问。
• ⚙️ 安全处置:
  1. 推荐(本地绑定): 使用 npm run dev -- -H 127.0.0.1 启动,仅限本机访问。
  2. 需局域网共享: 在RoamSwitch『端口审计』中放行3000端口。
💬 模式B: 紧急隔离后的安全确认与事件分析(切换至热点后)
咖啡厅内RoamSwitch因『🚨 检测到ARP欺骗』紧急切断了网络,我已切换到手机热点。刚才的Wi-Fi发生了什么,触发了什么防护,后续应如何处理?
⚡ Tool: get_app_help / Resource: roamswitch://docs/alerts-and-messages
来自RoamSwitch官方知识库的解答:
• 🔍 事件分析: 局域网内存在恶意设备伪造ARP数据包冒充路由器网关,企图窃听您的网络流量(中间人攻击 / MITM)。
• 🛡️ RoamSwitch自动防护: 触发ARP自动隔离,实施物理隔离(AirGap)以阻断数据嗅探。
• 🛑 后续建议: 切勿重新连接该公共Wi-Fi,请继续在手机热点下安全作业,建议在『日志审计』中查看详情。
💬 模式C: USB自动推出与安全白名单登记咨询
RoamSwitch提示『🔌 已推出未注册的USB存储』弹出了U盘。这是我自己的安全U盘,如何将其登记为只读模式并正常使用?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
来自RoamSwitch官方知识库的解答:
• 🔌 推出原因: 为防止未授权数据外泄及恶意BadUSB固件攻击,系统已自动将其卸载。
• ⚙️ 安全登记步骤: 1. 从菜单栏RoamSwitch图标打开『设置』 → 2. 选择『USB存储保护』标签页 → 3. 点击『从已连接设备添加』并选中该U盘 → 4. 将权限设为『只读(推荐)』并保存,下次连接即可安全挂载。
💬 模式D: 辅助程序未连接与后台守护进程恢复咨询
菜单栏显示『⚠️ 辅助程序未连接』,我该如何恢复?
⚡ Tool: get_app_help / Resource: roamswitch://docs/troubleshooting
来自RoamSwitch官方知识库的解答:
• ⚠️ 原因分析: 与负责数据包过滤(PF)控制的特权守护进程 RoamSwitchHelper 之间的XPC通信暂时中断。
• 🛠️ 恢复步骤:
  1. 打开终端并运行以下命令重启辅助程序:
    sudo killall RoamSwitchHelper
  2. 重启RoamSwitch应用程序。
  3. 在macOS『系统设置』>『通用』>『登录项与扩展』中确认已启用 RoamSwitchHelper。
🧯

Air-Gap 触发后,使用本地 LLM + MCP 进行离线诊断

事件响应 / 本地 LLM 诊断

当检测到勒索软件等触发 Air-Gap(紧急网络隔离)时,Claude Desktop 等云端 AI 的通信也会同时被切断。但 RoamSwitch 的 MCP 服务器仅通过本地进程通信运行,只要搭配 Ollama 等本地 LLM,即便完全没有外部网络也能继续诊断。日志异常检测、篡改检测、已知 CVE 比对均完全在本地完成,因此恰恰是在网络无法使用的这一刻才真正发挥作用。

💬 AI 提示词示例
RoamSwitch 的勒索软件防护已触发,主机进入 Air-Gap(紧急网络隔离)状态。虽然无法使用网络,但请诊断当前状况:发生时间、涉及的进程和文件、系统文件是否被篡改、是否有相关可疑日志、是否有迹象表明利用了已知漏洞。
⚡ Tools: get_canary_status, get_port_anomaly_incidents, audit_security_logs, get_quarantine_status (Linux Server: get_ebpf_incidents / Mac: get_runtime_threat_status)
离线诊断结果(零网络活动):
• 🐛 诱饵文件触发: 14:32:07 检测到 /var/www/decoy_invoice.pdf 被加密,进程 suspicious_enc(PID 8823)已立即冻结并隔离
• 🔌 端口监控(Port Anomaly Guard): 近期事件记录中未发现新的自动阻断 — 入侵途径似乎仅为诱饵文件触发的这一起,未发现其他后门端口被开启
• 📜 日志关联(异常检测): 触发前12分钟起 sshd 认证失败激增(检测到频率激增,Z-score 5.2)——可能的入侵途径
• 🔒 篡改检测(FIM): 约150处关键路径均未发现篡改——未确认入侵扩散至系统层
• 📦 已知漏洞比对: 已与本地 CVE 映射比对,相关软件包未发现严重已知漏洞
💡 建议操作: 入侵很可能仅限于 Web 根目录范围内。在从备份恢复之前,建议逐一检查该目录下的其他文件。
常见问题

关于 MCP 集成

Q. 真的完全不与外部通信吗?

A. 是的。MCP 服务器是由 AI 客户端通过标准输入输出(stdio)直接启动的本地进程,不会发送任何遥测数据。诊断结果也是在这台 Mac / Linux 上即时计算得出的。与外部主机通信的只有需主动启用(Mac 上仅限 Pro)的 run_npm_audit_signatures(npm 注册表)。run_active_vuln_scan(默认关闭)只向 127.0.0.1 发送探测,Mac 上的 get_exposed_ports 只会对每个暴露端口向 127.0.0.1 发送 1 次 HTTP GET 以检查标头。查询网关的 MAC 地址时,Mac 上的诊断类工具可能会向局域网内的网关发送 ICMP ping,通常 1 次(查不到 MAC 时最多数次)。Linux 上的 get_security_report 和 verify_security_findings 不会向局域网发送任何内容,只会从本地缓存读取网关(get_guard_status 等需要重新获取网关 MAC 的其他工具可能会发送 1 次 ping)。

Q. 非 Pro 版也能使用吗?

A. Linux 版免费,可使用全部工具。Mac 版的免费版也能使用大部分工具,但 get_ransomware_recovery_snapshots、search_exec_events、get_process_tree、run_npm_audit_signatures 这 4 个仅限 Pro,未启用 Pro 时会返回错误。此外,各项自动防护的实际生效情况还取决于 Pro 版的授权状态,因此工具端只能确认设置中的开关状态。

Q. 支持哪些 AI 客户端?

A. 只要客户端支持 MCP(Model Context Protocol)的 stdio 传输方式,除上述之外的客户端基本上也可以使用。已在 Claude Desktop、Claude Code、OpenAI Codex CLI、OpenCode、Antigravity 上验证可用。

Q. 在 Antigravity 中出现 "Hook Failure" 或遥测错误导致无法执行工具?

A. 可能是 Antigravity 中安装的外部插件(如 Google Cloud 遥测等)的 PreToolUse Hook 阻止了工具执行。请打开 ~/.gemini/config/plugins/.../hooks.json 并将其设置为 "enabled": false。

Q. 网络被完全阻断时是否仍可进行AI查询?

A. 如果您通过OpenCode等工具搭配Ollama或LM Studio使用本地模型,所有处理均在 Mac / Linux 本地完成,因此即使在RoamSwitch实施网络紧急物理隔离期间,也能完全离线正常查询。若使用的是云端大模型(如Claude API),请在切换至手机热点等安全网络后再进行查询。