摘要: 文章整理把閒置 Mac 變成 Claude Code 專用工作站的做法,讓長時代理任務與 macOS GUI 操作離開主力機。獨立機器能縮小風險範圍,但原始指南的免密碼 sudo 與跳過權限屬於實驗配置,不該當成安全預設。較穩做法是乾淨帳號、SSH 金鑰、低權限憑證、保留核准閘門與快速重建。
最近 Hacker News 上有一個很務實的話題:把閒置的 Mac 當成 Claude Code 專用工作站,讓 Agent 可以長時間執行任務,再由主力電腦經 SSH、或直接從手機遠端交辦。原始設定指南
這個方向帶來的價值顯而易見。Agent 不需再依附於日常使用的 Laptop,還能夠操作 macOS 獨有的工具與 GUI App。然而「換成一台獨立機器」頂多是把風險範圍縮小,並非從此就能廢掉所有權限控管。原始指南本身就含括跳過 Permission Prompt、Passwordless sudo 等高權限設定;這類配置放在作者自己的實驗環境並無不妥,但不該被一般使用者拿去當安全預設值。
這套架構的實際模樣
它基本上就是一台遠端的 Agent Box:
Main Mac / Phone
│
│ SSH or approved remote channel
▼
Dedicated user on spare Mac
│
├── Claude Code
├── isolated repositories
├── scoped API credentials
└── optional GUI / computer-use access
主力電腦的職責僅限於送出任務與收讀結果。程式碼執行、套件安裝、Browser Automation 和其他 Agent 行為,一概留在備用 Mac 上。即便 Agent 犯了錯,理論上也碰不到主力機內的相片、文件、瀏覽器 Session 或私人 Keychain。
原指南是一份 12+ 步的完整建置流程,有幾個步驟值得被單獨提出來講:目標機上若已有個人資料,先做整機抹除(Erase All Content and Settings);開一個全新的本機帳號,而且不登入 Apple ID;打開 Remote Login(SSH);以 pmset 讓接上電源的機器永不休眠(闔蓋時亦然),不然 macOS 閒置十分鐘就會自網路斷線;剪貼簿靠 pbcopy/pbpaste 走 SSH 加密同步,指南附帶的 clip.sh 更具備圖片支援——手機端複製的圖片可直接貼入遠端的 Claude Code session。
設定流程中幾個關鍵指令如下。第一步為啟用 Remote Login(SSH):
sudo systemsetup -setremotelogin on
第二步是指南給專用帳號配的免密碼 sudo(即前文所說的高權限設定):
echo "<user> ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/<user>-nopasswd >/dev/null
sudo chmod 440 /etc/sudoers.d/<user>-nopasswd
sudo visudo -cf /etc/sudoers.d/<user>-nopasswd # must print 'parsed OK'
第三步在主力機生成 SSH Key、安裝至目標機,往後連線便不再需要輸入密碼:
ssh-keygen -t ed25519
ssh-copy-id <user>@<target-host>.local
下面是防止機器休眠的 pmset 設定(若改用電池供電,須以 -a 取代 -c,但耗電量會上升):
sudo pmset -c sleep 0
sudo pmset -c disablesleep 1
sudo pmset -c displaysleep 0
defaults -currentHost write com.apple.screensaver idleTime 0
收尾則是用 SSH 在目標機上把 Claude Code 裝起來:
ssh <user>@<target-host>.local 'curl -fsSL https://claude.ai/install.sh | bash -s -- 2.1.219'
為什麼單靠 Container 不夠
對大部分 Coding 工作而言,Container 仍是更單純的選項:開得快、重置容易,Filesystem 與 Network 也能設限。它做不到的,是完整覆蓋所有 macOS 使用場景。
| 方案 | 適用情境 | 主要限制 |
|---|---|---|
| Container | CLI、測試、Build、一般 Repository 工作 | GUI、macOS App 與 Hardware Integration 的支援有限 |
| 備用 Mac | Xcode、Unity、Browser、Computer Use、長時間任務 | 維護成本較高,權限設定一有失誤風險就放大 |
| 主力 Mac | 短任務、需要有人在旁即時監督 | 容易接觸私人資料與日常憑證 |
倘若任務只牽涉 Git、Shell 與 Test Runner,先走 Container 通常更明智。備用 Mac 的獨到之處,在於它同時提供完整的 macOS Environment,又與日常裝置彼此隔開。
機器獨立不等於自動安全
Agent Box 同樣可能觸及 Network、Cloud Account、Source Code 和 API Key。常見風險如下:
- Agent 安裝未經審核的 Package,或執行 Repository 內夾帶的惡意 Script。
- sudo 開得太寬,一個下錯的指令就升格為 System-level 破壞。
- SSH 對公網開放,招來密碼猜測或憑證攻擊。
- 將個人的 GitHub、Apple ID 或主力 Cloud Credential 複製到備用機器。
- Computer Use 一旦取得 Screen Recording 和 Accessibility 權限,能操控的 App 就變多了。
其中最該避免的,是把 --dangerously-skip-permissions 或 NOPASSWD: ALL 當起手式。兩者能換來順暢的操作體驗,犧牲掉的卻是最關鍵的安全摩擦。若真有無人值守需求,起點應該是特定 Repository、特定指令與最低權限 Credential,再逐項擴充能力。
相對安全的設定順序
1. 先劃出乾淨的身份邊界
啟用一個專屬本機帳戶,不登入私人 Apple ID,也不同步個人 iCloud、Browser Profile 或 Password Manager。Repository 與工作資料僅保留必要部分。
2. 收緊遠端入口
改用 SSH Key,關掉多餘的 Remote Service,並優先將連線限定於 Local Network 或受控 VPN。別為了省事就把 SSH Port 攤在公網上。指南自身的作法足供參考:hostname.local 僅在區網內解析,需要跨網路時走 Tailscale——WireGuard 點對點加密隧道,公網零暴露;而且加入網路只帶來可達性,SSH 與螢幕共享仍需各自以金鑰或密碼通過驗證,等於多一層把關。手機端的操控則由 Claude App 經 Anthropic 中繼,不直接開啟遠端埠。
3. 使用專用、低權限的 Credential
替 Agent 開立獨立的 GitHub Token、Cloud API Key 與測試帳戶。Token 僅授予任務所需的 Repository 或 Resource,並設好 Rotation 與撤銷途徑。
4. 保留 Approval Gate
檔案讀取、測試與無副作用的命令可以從寬;Package Installation、System Setting、Credential Access、Deployment 及刪除操作則應留住人工核准。高權限命令不可全域免密碼放行。
5. 把復原能力列為必要功能
程式碼必須進 Git,重要資料必須有 Backup。Agent Box 要能快速重建,而非變成另一台不容出錯的 Production Server。面對長時間任務,記錄執行 Log、Commit 與產物位置,才能在失敗後釐清到底發生什麼。
GUI Control 何時值得開啟
讓 Agent 操控 GUI,適用於 Xcode、Unity、Design Tool,或只能走 Browser 的流程。但 macOS 的 Screen Recording 與 Accessibility 權限極其強大。開啟之前,先確認該帳戶看不到私人視窗、訊息及其他使用者資料。
較為穩健的順序,是先把純 SSH/CLI 工作流跑通。唯有具體任務確實需要點擊、拖曳或 Screenshot Feedback 時,再為指定工具單獨開放 GUI 權限。
真正要啟用 Computer Use 時,指南的作法是於目標機執行官方 setup script,它會裝好 LaunchAgent 並啟用內建 computer-use 工具(前提是有 tmux 與 Claude Pro 或 Max 方案):
ssh -t <user>@<target-host>.local \
'curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/setup-computer-use.sh -o setup-computer-use.sh && bash setup-computer-use.sh'
主力機端另需安裝 ic script,裝完就能以 ic 在目標機開啟帶 Computer Use 的 Claude Code session(ic -c 續接、ic ls 列出 session、ic rc 遠端控制):
curl -fsSL https://raw.githubusercontent.com/ykdojo/claude-controls-mac/main/ic.sh -o ~/.local/bin/ic
chmod +x ~/.local/bin/ic
export IC_BOX="<user>@<target-host>.local"
這套做法最適合誰
備用 Mac Agent Box 適合需要長時間 Coding、要做 macOS App Automation,或想將 AI Agent 與日常工作環境隔離的人。它並非「完全放手讓 Agent 控制一台電腦」的捷徑,而是一處能逐步授權、容易復原的隔離環境。
安全的真正關鍵不在機器夠不夠獨立,而在身份、Network、Credential、Approval 與 Recovery 是否各有清楚邊界。只要這些邊界還在,備用 Mac 才會是有用的 Agent 工作站,而不是另一台高權限的風險來源。
