> ## Content Index
> Fetch the complete content index at: http://localhost:2368/llms.txt
> Use this file to discover other available public pages before exploring further.

# Mac mini M6 來了
- URL: http://localhost:2368/mac-mini-m6-comming/
- Published: 2026-09-24T04:33:01.000Z
- Updated: 2026-09-24T07:17:56.000Z
- Description: 只要我打開apple 官網看一下 mac mini ，他就會做一次調整，是什麼意思！！！
- Author: yuchang23
- Tags: Mac mini M6

幾年前買的 MacBook Air M2 一直出現記憶體不足的問題，龍蝦出現後大家狂推 Mac mini，於是就起了要買一台的念頭，但遲遲沒有購買。第一次打開 Apple 官網看一下規格，隔天就因為記憶體問題漲價；前陣子又打開官網看看，沒多久就又宣佈要推出 Mac mini M6，這次就預購了。

## 解放我的 MacBook Air，把開發環境搬到 Mac mini

新買的 Mac mini 沒接螢幕，打算當成一直開著的工作機。於是這次搬家就從「沒有螢幕要怎麼操作它」開始，接著搬 Claude Code 的設定、四個公司專案和密鑰檔，最後刪掉 Air 上的專案，釋放 MacBook Air 的記憶體。以下記錄我與 Claude Code 的互動。

### 沒有螢幕，怎麼操作

我先問：「除了遠端桌面，還有什麼方式可以操作沒有螢幕的 Mac mini？」AI 列了幾種：SSH、檔案共享、VS Code Remote-SSH，出門要連回來則用 Tailscale。它也提到，mini 沒接螢幕時，螢幕共享的解析度可能被卡得很低，可以插一個 HDMI 假螢幕插頭。

> SSH 是一種加密的遠端連線方式：在一台電腦上，用文字指令操作另一台電腦。

我選了 SSH，在 mini 的「系統設定 → 一般 → 共享」打開「遠端登入」。接著請 AI 查 mini 的狀態：SSH 已經開著，螢幕共享沒開，我自己去設定裡打開了。

接著要讓 Air 用金鑰登入 mini。金鑰產生好了，ssh-copy-id 卻一直失敗，原因是我在 Claude Code 裡用 ! 執行，這個模式沒辦法輸入密碼。AI 改提另一個做法：透過螢幕共享打開 mini 的終端機，把公鑰那一行直接貼進 authorized\_keys，貼完就成功了。

後來 AI 發現，mini 設定成閒置 1 分鐘就睡眠，只是因為我開著螢幕共享才沒睡。一台要一直開著的機器不能這樣設定，我在 mini 上執行 sudo pmset -a sleep 0 disksleep 0 autorestart 1 把它關掉。

### Claude Code 的設定要不要搬

我問 \~/.claude 要不要搬過去，又問能不能乾脆共享這個資料夾。

AI 建議不要整個共享：\~/.claude 裡除了我寫的規則、skills、agents、hooks 和記憶，還有 history、sessions、cache 這些 Claude Code 執行時一直在寫的檔案，兩台同時開就會同時寫同一批檔案。它提的做法是把我寫的內容放進一個私人 git repo（dotfiles-claude），再用 symlink 接回 \~/.claude，執行期間的檔案讓每台自己保留。

我同意後，它在 Air 上建好 repo，寫了一支可以重複執行的 link.sh：原本的檔案先搬到備份資料夾，再接上 symlink。推上 GitHub 之前掃過一輪，沒有金鑰或 webhook 網址。在 mini 上執行同一支 link.sh，28 個 skill、11 個 agent 和各專案的記憶就都接上了。mini 自己的 \~/.claude.json 保留不動，因為裡面是它自己的登入狀態。

### 專案和密鑰

裝 gh 的時候我順口問：放密鑰的 .env 能不能直接傳過去？AI 說可以用 SSH 傳，傳輸有加密，而且只在家裡的區網裡走。不過 mini 上還沒有專案，要先把專案搬過去。它也建議只搬會在 mini 上開發的專案，密鑰放的地方越少越好。

搬的時候碰到一個限制：從 Air 用 SSH 連進 mini，讀不到 mini 的鑰匙圈（keychain），所以 gh 的登入在 SSH 裡用不了，私人 repo 也 clone 不下來。AI 改成直接把 Air 上的 .git 資料夾複製過去，再在 mini 上 checkout。這樣完全不經過 GitHub，沒推上去的本機分支也一起帶過去了，Air 上還沒 commit 的修改則不會混進來。之後再用 SSH 傳過去 4 個 .env／local.settings.json 和 Planner 的登入設定，並確認這些檔案都在 .gitignore 裡。

mini 上缺的工具分兩批裝：Node 和 gh 是下載官方檔案放進 \~/.local 底下，不需要管理員權限；az、func、sqlcmd 要靠 Homebrew，裝 Homebrew 時我在 mini 上輸入了一次密碼。az login 等瀏覽器等了一分鐘都沒反應，AI 建議改用 az login --use-device-code，我在 Air 上輸入代碼完成登入。最後從 mini 用 sqlcmd 連 Azure SQL，查詢成功。

### 刪掉 Air 上的專案，釋放出大約 5.2 GB

最後就是 Air 上的專案可以刪了嗎？AI 先查有哪些東西只存在 Air 上：所有 commit 和本機分支都已經跟著 .git 到了 mini，但有幾份還沒 commit 的新檔案沒有過去，我決定先把這些檔案複製過去再刪。

刪之前，AI 又查了有沒有程式還在用這些資料夾，結果比預期多：專案還開在另一個 Claude Code session 裡、Antigravity IDE 也開著專案的檔案，還有幾個已經跑了 40 到 168 天、一直沒關的開發伺服器，另外還有一個 154 天前某個 session 留下的上傳測試迴圈，每 5 秒重試一次。

AI 在這裡停下來，等我關掉那個 session 和 IDE，才去關開發伺服器，刪除四個資料夾，空出大約 5.2 GB。

### 連線設定好之後，安裝 tmux

要讓 Mac mini 一直工作、不因為 SSH 斷線而中斷，就需要安裝 tmux。

沒有 tmux 的情況下，用 SSH 連進 Mac mini 跑 Claude，這時候 MacBook 闔上、Wi-Fi 斷掉或視窗不小心關掉，SSH 連線就斷了，Mac mini 上正在跑的 Claude 也會跟著中斷，做到一半的工作就停了。

有了 tmux，Mac mini 上會開一個獨立的工作空間，Claude 在裡面跑；SSH 連線只是從外面看著這個空間。連線斷了，工作空間還在，Claude 也會繼續做事，重新連上後輸入 tmux a 就回到剛才的畫面。

我同意安裝之後，Claude 透過 SSH 直接幫我裝好，也在 \~/.ssh/config 加了 mini 別名，之後在 Air 的終端機就能連到 Mac mini 的獨立工作空間。

平常開工的流程：  
ssh mini  
tmux new -s work # 之後重新連上改用 tmux a  
cd 專案 && claude  
如果 claude 顯示沒登入就輸入 security unlock-keychain ，輸入密碼後再執行 cd 專案 && claude

但每次開工都要連線、開 tmux、切到專案資料夾，於是我問能不能包成 agent，Claude 認為不適合，因為這些步驟都發生在 Claude 啟動之前，agent 還沒有機會跑。它改寫了一個 shell 函式 work，放在 Air 的 .zshrc，開新的終端機視窗之後就能用：

work() {  
local name="${1:-main}"  
ssh -t mini "zsh -lic 'tmux ls >/dev/null 2>&1 || security unlock-keychain; cd \~/$1 || exit 1; exec tmux new -A -s $name'"  
}

| 輸入          | 效果                                  |
| ----------- | ----------------------------------- |
| work        | 連進 Mac mini，回到名為 main 的工作空間；沒有就新開一個 |
| work <專案>   | 開一個名為 <專案> 的工作空間，直接進到 \~/<專案> 資料夾   |
| 連線斷掉後再輸入同一行 | 自動接回原本的畫面，不會重開                      |

由於我的專案都放在 Mac mini 的家目錄下，所以只要 Air 的終端機在輸入 work <專案> 就會連進 Mac mini、切到 \~/<專案>，並開一個叫 <專案> 的 tmux 工作空間；如果已經開著，就直接接回去。進去後輸入 claude 就可以開始工作。要離開時先按 Ctrl＋b，放開後再按 d，就能退出 tmux，Claude 會在背景繼續跑。

### 後記

目前這個方式運行得很順利！接著要研究的是如何讓 mini go big，連我睡覺的時候也持續工作，早上只需要檢查有沒有朝我設定的目標正確前進！

---

SSH 機制：

一次連線的五個步驟

Air（用戶端） mini（伺服器 sshd, port 22）  
│ ① 建立連線 ─────────────────────────→ │  
│ ② 協商加密金鑰 ←──────────────────→ │ 之後所有內容都加密  
│ ③ 確認「你真的是 mini」← 出示主機金鑰 │  
│ ④ 證明「我是 yuchang23」→ 密碼或金鑰 │  
│ ⑤ 開一個 shell，執行指令 ←─────────→ │

① 是 Air 先跟 mini 的 port 22 建立 TCP 連線

② 協商加密金鑰：雙方用數學方法（Diffie-Hellman 金鑰交換）各自算出同一把臨時金鑰，這把金鑰本身從來不在網路上傳送。之後的密碼、指令、傳輸的 .env 內容全部都經過加密，區網裡有人偷聽也只看得到亂碼。

③ 確認對方身分：mini 會出示自己的「主機金鑰」。Air 第一次連線時會記進 \~/.ssh/known\_hosts，這次看到的 Permanently added 'yuchang23s-mac-mini.local' 就是這一步。以後如果有別的機器冒充 mini，金鑰對不上，ssh 會跳出警告並拒絕連線。

④ 證明你是誰：有兩種方式。

- 密碼：直接輸入 mini 的登入密碼。這次 ssh-copy-id 失敗，就是因為 ! 模式沒辦法輸入密碼。
- 金鑰：  
  - ssh-keygen 在 Air 上產生一對金鑰：私鑰 \~/.ssh/id\_ed25519 留在 Air，永遠不外傳；公鑰 id\_ed25519.pub 可以公開。
  - 你在 mini 上把公鑰貼進 \~/.ssh/authorized\_keys，意思是「持有對應私鑰的人可以登入」。
  - 連線時，mini 出一道題目，Air 用私鑰簽名回傳，mini 再用公鑰驗證簽名。過程中私鑰完全不會離開 Air。

⑤ 開始操作：驗證通過後，mini 會開一個 shell。