15 分鐘,讓你的 agent 開始整晚工作
回答三個問題,我給你一份只屬於你的步驟清單。每一步都會講為什麼要做、指令是什麼、怎麼確認成功了,還有沒成功的話去哪裡看。(那台機器是 Windows?先看這一節。)
如果你用的是 Windows?
你選了 Windows,所以精靈沒有給你清單。不是還沒做。這條路的形狀跟另外三種不一樣,給你半套清單只會害你。
走得通,但要透過 WSL2,比 Mac 或 Linux 多幾道手續。如果你只是想讓 agent 今晚就開始工作,去租一台最便宜的雲端 VPS,照上面那條路走。那通常比在 Windows 上打通還快 — 這不是敷衍,是幫你省一個晚上。
為什麼不能直接用原生 Windows
這份指南靠三個零件:CLI、tmux、SSH。SSH 沒問題,Windows 10 和 11 都內建 OpenSSH Server,打開就能連進去拿到 PowerShell。
問題出在 tmux。它沒有原生 Windows 版本,而它是整份指南的承重牆。少了它,連線一斷,agent 收到 SIGHUP 就死(機制在這裡),「關掉手機它繼續跑」直接不成立。你會得到一台能 SSH 進去的 Windows,但那不是這份指南要給你的東西。
agent 本身的 Windows 支援各家不一,變動也快,這裡刻意不列清單,請看你要用的那個工具的官方文件。但注意論證的順序:agent 在原生 Windows 上跑得再好,也碰不到 tmux 那個問題。能不能跑,跟斷線後活不活得下來,是兩件事。
建議的做法:WSL2
WSL2 裡面是一個完整的 Linux,tmux、sshd、agent 的行為都跟真的 Linux 一樣。裝好一個發行版,前面「Linux 主機」那條路每一步都適用 — 直接回到上面,第一題改選 Linux 主機。
但 WSL 有三個 Mac 和 Linux 不會遇到的坑
三個都解得掉。先知道,免得卡住的時候以為是自己弄壞了什麼:
- 網路。WSL2 跑在一台有自己 IP 的虛擬機裡,藏在 NAT 後面。裡面的 sshd 從這台 Windows 之外預設連不到。兩種解法。一是在 Windows 端設
netsh interface portproxy把 port 轉進去,但 WSL 的 IP 每次重開都可能變,你會一直重設。二是在.wslconfig開鏡像網路模式networkingMode=mirrored,讓 WSL 直接共用主機的網路介面,port 轉發整步消失。後者乾淨很多,需要比較新的 Windows 11。 - WSL 不會自己一直開著。最後一個 process 結束,發行版幾秒內關掉,虛擬機跟著收。但這份指南要的是一台常開的機器,所以 WSL 得在開機時就跑起來、沒人登入也留著,通常靠排程工作或 keepalive。Mac 和 Linux 上沒有這個問題要處理,這條是 WSL 獨有的。
- systemd 是選用的。舊的 WSL 沒有 systemd,
systemctl這個指令根本不存在,精靈裡「在 Linux 主機上啟用 SSH 服務」那步給的指令會直接失敗。新版可以在/etc/wsl.conf加systemd=true打開,但預設不開,舊安裝更不會有。
還有一條路:把 Windows 留著當客戶端
這裡講的 Windows 一直都是「那台被連線的機器」。如果你的 Windows 只是你平常工作的電腦,跑 agent 的是別台 — 家裡的 Mac mini、公司的 Linux 主機、一台 VPS — 那上面這些你一個都不會遇到。這份指南對你完全成立。要設定的機器從來不是你手上這台。