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 socket 與特權容器保護、容器執行環境隔離、已知漏洞等),並回傳評分與改善建議。

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 Remote Desktop / 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儲存』彈出了隨身碟。這是我自己的安全隨身碟,如何將其登記為唯讀模式並正常使用?
⚡ Tool: get_app_help / Resource: roamswitch://docs/settings-guide
來自RoamSwitch官方知識庫的解答:
• 🔌 推出原因: 為防止未授權資料外洩及惡意BadUSB韌體攻擊,系統已自動將其卸載。
• ⚙️ 安全登記步驟: 1. 從選單列RoamSwitch圖示開啟『設定』 → 2. 選擇『USB儲存保護』標籤頁 → 3. 點選『從已連接設備新增』並選中該隨身碟 → 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),請在切換至手機熱點等安全網路後再進行查詢。