部落格
零雲架構:Tactic Remote 如何讓你的程式碼始終留在本機
Tactic Remote 採用零雲架構,所有程式碼執行、工作階段資料和檔案存取均保留在開發者的 Mac 上,iPhone 與 Mac 之間的加密連線完全繞過我們的基礎設施。
繼續查看該欄目下的產品與工程更新。
瀏覽此分類每週都會出現新的報導:某個 AI 工具將原始碼上傳到了雲端服務、在未經同意的情況下使用專有資料進行訓練,或者因 API 設定錯誤導致開發環境憑證洩露。開發者對接觸程式碼庫的工具心存警惕是完全合理的。
Tactic Remote 從設計之初就圍繞一個簡單的原則:你的程式碼永遠不會離開你的機器。本文將詳細解釋這是如何實現的、信任邊界在哪裡,以及我們能看到什麼和不能看到什麼。
「零雲」意味著什麼
Tactic Remote 沒有雲端後台。我們不營運任何中繼、儲存或處理你開發資料的伺服器。iPhone 與 Mac 之間的連線是直接的。
在區域網路模式下,「直接」是字面意義上的直接——你的 iPhone 透過本地 Wi-Fi 網路與 Mac 通訊。流量不會離開你的網路,DNS 解析也不會存取外部伺服器。連線發生在同一子網路的兩台裝置之間。
在 Cloudflare Tunnel 模式下,當你不在本地網路時,流量透過 Cloudflare 的邊緣網路到達你的 Mac。Cloudflare 提供傳輸層,但應用層的酬載在 iPhone 和 Mac companion 應用程式之間進行端到端加密。Cloudflare 看到的是加密位元組,我們什麼也看不到。
具體來說,「零雲」涵蓋以下內容:
- 原始碼 ——從不傳輸給我們。Claude Code 讀取的檔案內容留在你的 Mac 上。當 iPhone 應用程式的審批檢視顯示檔案差異時,它們直接從 Mac 傳輸到 iPhone。
- 工作階段記錄 ——你與 Claude Code 之間的對話留在 Mac 上。iPhone 接收終端輸出串流用於顯示,但該串流從 Mac 到 iPhone,沒有我們控制的中間環節。
- Shell 命令輸出 ——留在 Mac 上。串流傳輸到 iPhone 用於顯示,不儲存在其他地方。
- 審批決定 ——從 iPhone 傳輸到 Mac。我們沒有你核准或拒絕了什麼的記錄。
- 推播通知酬載 ——這是我們與 Apple 基礎設施互動的唯一領域。詳見下方討論。
iPhone 與 Mac 之間的認證
當你將 iPhone 與 Mac companion 配對時,裝置透過以下兩種方式之一建立共享密鑰:
QR 碼配對。 Mac companion 產生一個包含一次性配對權杖和 Mac 本地網路位址的 QR 碼。你用 iPhone 應用程式掃描它。裝置在初始連線上交換加密金鑰,後續連線使用這些金鑰進行認證。配對權杖是一次性的,60 秒後過期。
手動輸入代碼。 對於 QR 碼掃描不方便的情況,Mac companion 會顯示一個 6 位數字代碼。你在 iPhone 上輸入。該代碼與 QR 碼權杖作用相同——引導金鑰交換。
配對完成後,認證是自動的。iPhone 在每次連線時出示儲存的金鑰,Mac companion 根據已授權裝置清單進行驗證。無需密碼、無需輪換權杖、無需 OAuth 流程。
配對資料在 Mac 上儲存在 macOS Keychain 中,在 iPhone 上儲存在 iOS Keychain 中。兩者都是由 Apple Secure Enclave 提供的硬體加密儲存。
信任邊界
每個安全模型都有信任邊界——你必須信任外部事物的界限。我們希望明確說明我們的信任邊界:
你信任 Anthropic 的 Claude Code
Tactic Remote 是 Claude Code 的控制層。Claude Code 本身與 Anthropic 的 API 通訊以產生回應。你的提示詞和 Claude 的回應會經過 Anthropic 的伺服器。這是使用 Claude Code 的固有特性,不是 Tactic Remote 新增的,也不是它能移除的。Anthropic 的資料處理政策適用於這些流量。
你信任 Apple 的推播通知
當 Mac companion 需要喚醒 iPhone 以發送審批請求時,它會透過 Apple 推播通知服務 (APNs) 發送推播通知。通知酬載包含最少的提示資訊——工作階段名稱和操作類型(例如,「Claude 想要執行一個 shell 命令」)。它不包含實際命令、檔案內容或任何原始碼。
我們將通知酬載設計得盡可能精簡。詳細的審批資訊在你開啟通知時由 iPhone 應用程式直接從 Mac 取得。Apple 能看到你收到了一條來自 Tactic Remote 的通知,但看不到 Claude Code 正在做什麼。
你信任 Cloudflare(僅限 Tunnel 模式)
如果你使用 Cloudflare Tunnel 進行遠端存取,流量會經過 Cloudflare 的網路。正如我們在 Cloudflare 深度整合文章 中所討論的,傳輸層由 Cloudflare 提供,但應用酬載使用 Cloudflare 不擁有的金鑰進行加密。
你信任你的本地網路(僅限區域網路模式)
在區域網路模式下,連線的安全性取決於你的 Wi-Fi 網路。在受信任的家庭或辦公網路中,這沒問題。在公共 Wi-Fi 網路中,區域網路模式的流量理論上可能被攔截。無論網路類型如何,我們都會為 WebSocket 連線使用 TLS,但在透過不受信任的網路連線時,我們建議使用 Cloudflare Tunnel 模式。
我們能看到什麼和不能看到什麼
我們認為資料存取的透明度是不可妥協的。以下是精確的說明:
| 資料 | 我們能看到嗎? | 說明 |
|---|---|---|
| 原始碼 | 否 | 從不離開你的 Mac |
| 工作階段記錄 | 否 | 僅限 Mac 到 iPhone |
| 執行的命令 | 否 | 僅限 Mac 到 iPhone |
| 審批決定 | 否 | 僅限 iPhone 到 Mac |
| 讀取或寫入的檔案 | 否 | 僅限本機 Mac |
| 通知遞送狀態 | 是 | Apple 回報遞送狀態 |
| 應用程式當機報告 | 是(可選) | 標準 iOS 當機報告 |
| 使用分析 | 是(可選) | 工作階段計數、時長——無內容 |
可選的分析資料(如果啟用)僅包含彙總使用指標:啟動了多少工作階段、平均工作階段時長、連線模式分佈。不包含內容、檔案路徑或命令文字。分析功能可在 iPhone 應用程式的設定中完全關閉。
網路架構
以下描述了典型 Tactic Remote 工作階段中網路層面發生的情況:
區域網路模式
你的路由器看到兩台裝置之間的本地流量。你的 ISP 看不到與 Tactic Remote 相關的任何內容。唯一的外部流量是 Claude Code 與 Anthropic API 的通訊,無論是否使用 Tactic Remote,這都會發生。
Cloudflare Tunnel 模式
Cloudflare 看到的是加密的應用流量。Mac 上的 cloudflared 常駐程式終止 Cloudflare 隧道,並將流量轉發到 localhost 上的 Mac companion。除 Cloudflare 邊緣網路外,沒有其他外部方處理流量,且 Cloudflare 無法解密應用層加密。
威脅模型
我們考慮了以下攻擊情境以及架構如何應對:
Wi-Fi 網路被入侵。 WebSocket 連線上的 TLS 可防止被動竊聽。執行 TLS 攔截(MITM)攻擊的主動攻擊者需要突破 iPhone 應用程式中的憑證釘選,這是一種高複雜度的攻擊。
iPhone 被竊。 Tactic Remote 應用程式需要生物辨識認證(Face ID 或 Touch ID)才能開啟。配對金鑰儲存在 Secure Enclave 中,即使在越獄裝置上也無法擷取。被竊的 iPhone 在沒有機主生物辨識的情況下無法核准操作或檢視工作階段資料。
Mac 被入侵。 如果攻擊者能存取你的 Mac,他們就能存取 Claude Code 能存取的一切——無論是否使用 Tactic Remote 都是如此。Tactic Remote 不會擴大被入侵 Mac 的攻擊面。
惡意 Mac companion 更新。 Mac companion 作為簽章二進位檔透過我們的網站分發。macOS Gatekeeper 在執行前驗證程式碼簽章。我們沒有推送靜默更新的能力——使用者必須手動下載並安裝更新。
為什麼這很重要
AI 輔助開發工具的趨勢是雲端託管代理,在沙箱環境中執行,透過儲存庫整合存取你的程式碼。這種模式適用於某些團隊,但它要求你信任工具供應商來處理你的原始碼、憑證和開發工作流。
Tactic Remote 採取相反的方式。你的 Mac 就是執行環境。程式碼留在你的磁碟上。憑證留在你的 Keychain 中。唯一涉及的 AI 服務是 Claude Code 與 Anthropic API 的現有關係,這是你安裝 Claude Code 時就已同意的。
這種架構有其代價。你需要一台保持開機的 Mac。你需要自行管理網路連線。你無法享受可從任何瀏覽器存取的雲端儀表板的便利。
我們認為這個權衡是值得的。對於從事專有軟體開發、處理敏感資料或在受監管產業營運的開發者來說,能夠說「我的程式碼從未離開過我的機器」不是一個功能——而是一個要求。
有關安全強化建議和詳細設定指南,請參閱我們的安全與網路強化文件。