雙機設置 · 完整踩坑紀錄

兩台電腦共用 Claude Code
從零踩坑到成功的完整紀錄

Thomas 花了一整天踩遍所有坑,最終讓台式機和筆記本
共享同一套記憶、設定、技能,手機一個 App 同時操控兩台電腦。

Part 1 背景目標 Part 2 術語解釋 (9個) Part 3 三方案比較 Part 4 五大踩坑 Part 5 最煩的三件事 Part 6 最終配置圖 Part 7 開機自啟設置 FAQ
1 背景和目標
Thomas 想要做到的事
📱
手機
Claude App
Remote Control 遠程控制
💻
台式機
Desktop-PC
💻
筆記本
Laptop-OWER
兩台電腦 git pull/push 同一個 GitHub 私人倉庫
🔒
GitHub 私人倉庫
downloads-config (private)
共享的東西
CLAUDE.md 主設定
記憶文件 (32個)
技能 agents (7個)
命令 commands (17個)
各自獨立的東西
settings.json (機器專屬)
本機路徑
本機安裝的工具
執行中的 Session
一句話總結目標:不管你在外面拿手機,還是坐在台式機前,Claude 都認識你、記得你的習慣、擁有同樣的技能。
2 術語解釋(9個)
Remote Control 遠程控制
在手機 App 上控制電腦裡的 Claude Code,發指令、看結果,完全不需要坐在電腦前。
比喻:就像遙控器控制電視。你人在沙發上,電視在房間另一頭,但你完全能控制它。
Session 會話 / 對話框
一個對話框就是一個 Session。關掉對話框再開新的,就是「新建 Session」。很多設定只在新 Session 才生效。
比喻:就像餐廳每桌的對話。同一桌(Session)有上下文,換桌(新 Session)就重新開始。
Junction 軟連接 / 資料夾捷徑
Windows 的資料夾捷徑。看起來是一個資料夾,實際上指向另一個地方。修改捷徑裡的文件,等於直接修改原始位置的文件。
比喻:就像鏡子裡的影像。你對著鏡子裡梳頭,實際上你真實的頭也在動,兩邊完全同步。
Bypass Permissions 繞過權限確認
讓 Claude 不需要每次操作都問你「可以嗎?」,直接執行。開啟後 Claude 就像一個被完全信任的助手,自主動手做事。
比喻:就像給助理「白紙授權」。他不需要每件小事都問你,直接去做就好。
Working Directory 工作目錄
Claude Code 啟動時所在的資料夾。決定它讀哪個 CLAUDE.md、把記憶存到哪裡,以及有哪些「信任」的權限。
比喻:就像員工的辦公室位置。在哪個辦公室上班,就用那個辦公室的文件夾和規則。
Scheduled Task 排程任務
Windows 的「定時自動執行程式」功能。可以設定開機自動跑、每天幾點跑、用戶登入時跑。
比喻:就像定時器。設好時間,時間一到自動執行,不需要你手動去按。
Session 0 vs 1 後台模式 vs 桌面模式
Windows 有兩種工作環境:Session 0 是後台服務,沒有視覺桌面。Session 1 是你看得見的桌面。Claude remote-control 必須在 Session 1 才能正常執行。
Session 0 後台
✗ 沒有桌面
✗ claude RC 會失敗
✓ WinRM 遠程執行
✓ Windows 服務
Session 1 桌面
✓ 有視覺桌面
✓ claude RC 正常
✓ 用戶登入後
✓ 排程任務自然觸發
Workspace Trust 工作區信任
Claude Code 的安全機制。必須先「信任」一個資料夾,Claude 才允許在該資料夾啟動執行。信任記錄儲存在 .claude.json 文件中。
比喻:就像進入辦公室的門禁。第一次要刷卡登記,之後才能自由進出。
WinRM Windows 遠程管理
Windows Remote Management,讓一台電腦可以遠程執行另一台電腦的指令。是 PowerShell 遠程控制的底層協定。
比喻:就像一根看不見的網路電話線,讓你的鍵盤輸入直接跑到另一台電腦執行。
3 三個方案對比
方案 做法 優點 缺點 結論
A最終採用 兩台電腦都 clone 同一個 GitHub 私人 repo,用 Junction 捷徑讓 .claude 目錄的 agents / memories 指向 repo 裡的文件 ✓ 完全共享,改一個兩台同步
✓ 離線可用
✓ 無延遲
需要一次性設置(建 Junction、設 git 自動 push/pull)
B 所有設定放在 Google Drive 同步資料夾,路徑設定都指向 G 盤 ✓ 真正一份文件
✓ 不需要 git
✗ 同步有延遲(幾秒到幾分鐘)
✗ 斷網就不能用
✗ G 盤加密路徑複雜
C 兩台電腦都 clone repo,但不建 Junction,每次手動執行 git pull 同步 ✓ 設置最簡單 ✗ 需要手動操作,容易忘
✗ 忘了 pull 就會修改過時的版本
為什麼選方案 A? Junction 捷徑一旦建好,就是永久的「透明橋樑」。Claude Code 看到的是本機路徑(快、穩定),但實際上文件在 Git repo 裡(兩台共享)。配合 Stop Hook 自動 push,整個流程完全無需手動操作。
4 踩過的 5 個大坑
1
WinRM 遠程執行 ≠ 用戶的桌面(Session 0 陷阱)
問題
用 WinRM 遠程在筆記本執行 claude remote-control,以為這樣就能讓筆記本出現在手機 App 的設備列表裡。
現象
WinRM 執行的命令跑在 Session 0(後台模式),沒有桌面、沒有 GUI。claude 報錯「必須登入」或「Workspace not trusted」,手機 App 什麼都看不到。
解法
改用 Windows 排程任務(Scheduled Task),設為 AtLogon(用戶登入時觸發),讓系統在用戶的桌面 Session 1 裡啟動 claude。
關鍵
即使用 WinRM 執行 schtasks /run,它也是在 Session 0 跑。只有排程任務的觸發器自然觸發(如用戶登入)才能進入 Session 1。
2
WinAPI 注入 Session 1 需要 SYSTEM 權限(Error 1314)
問題
知道問題在 Session 0 後,嘗試用 Windows API(CreateProcessAsUser)把程式強制注入到 Session 1 的桌面去執行。
現象
Error 1314:A required privilege is not held by the client. 普通用戶帳號沒有 SeAssignPrimaryTokenPrivilege 這個特殊權限。
解法
放棄 API 注入方式。回到正途:建立排程任務,設定 AtLogon + 互動式模式(Interactive),讓 Windows 自己在用戶桌面啟動程式。
3
工作目錄必須是「已信任的資料夾」(Workspace Trust 踩坑)
問題
排程任務改好了,claude 也啟動了,但還是無法 remote-control。
現象
報錯:Workspace not trusted. Please run claude in <DIR> first
claude 要求工作目錄必須先被「信任過」才允許啟動。
診斷
C:\Users\[用戶名]\.claude.json,找到有 "hasTrustDialogAccepted": true 的資料夾,那就是可以用的工作目錄。
解法
把排程任務的工作目錄改成桌面(C:\Users\[用戶名]\Desktop),或直接手動在桌面執行一次 claude 讓它記錄信任。
4
日誌重定向 >> 截斷了 echo y 的輸入
問題
為了方便排查問題,在啟動腳本加了日誌記錄:echo y | claude remote-control >> log.txt 2>&1
現象
程式啟動後,到「Enable Remote Control? (y/n)」就自動退出,y 沒有被輸入進去。
原因
>> log.txt 2>&1 把 stdout 重定向到文件,干擾了 stdin 的 pipe,echo y 的輸入沒有正確傳到程式。
解法
移除 >> 重定向。不要在同一行既用 pipe 又用重定向。如果要記錄日誌,另外用包裝腳本分開處理。
5
「可用的遠程用戶」和「登入桌面的用戶」是不同的人
問題
一直用 remoteadmin 帳號操作筆記本,把所有設定(Junction、credentials)都放在 remoteadmin 的目錄。
現象
claude 找不到設定、找不到 junction、找不到記憶文件。因為真正登入桌面的用戶是 abc25,而不是 remoteadmin。
診斷
執行 query session,看哪個用戶的狀態是 Active(那個才是坐在桌面的人)。
解法
所有設定(Junction、排程任務、CLAUDE.md 路徑)改為針對 abc25 用戶目錄。遠程操作和桌面操作用的是不同帳號,必須分清楚。
通用教訓:遇到問題先診斷再動手。先跑 query session 確認誰在桌面,先查 .claude.json 確認哪個目錄被信任,先搞清楚 Session 0 還是 Session 1,再決定用什麼方法。瞎試只會浪費更多時間。
5 Thomas 最煩的 3 件事
"你有 bypass 權限,為什麼還要問我批准?"
根本原因:defaultMode: bypassPermissions 這個設定只在「新開對話」時生效。老對話開著的話,它還是讀啟動時的設定,改了設定沒用。
解法:修改設定後,手機 App 點 + 開一個全新對話。重開對話不需要重啟電腦,只需要在 App 裡點 + 按鈕。如果全局和項目級設定都需要設,兩個都設上,確保沒有一個「下層設定」覆蓋「上層設定」。
"Playwright 你早就安裝過了,你又裝一次!"
根本原因:Claude 每次新對話不知道這台電腦已經裝了什麼工具,於是習慣性先跑 pip install,重複安裝已有的套件。
解法:每次安裝新工具之前先確認:py -m playwright --versionpip show playwright。已安裝工具的清單必須寫進 CLAUDE.md 或記憶文件,讓 Claude 每次都知道。
"你走了這麼多彎路,你學到了什麼?"
根本原因:遇到問題就直接試,不先診斷環境,導致在錯誤的前提上浪費大量時間。
教訓——三步診斷法:
Step 1:query session — 確認哪個用戶在桌面(Session 1)
Step 2:查 .claude.json — 確認哪個目錄已被信任
Step 3:確認工作目錄是否正確後,再動手設置排程任務
6 最終成功配置圖
💻 台式機(Desktop-PC)
C:\Users\Administrator\.claude\
  ├─ agents\ → JUNCTION
  │     D:\Backup\Downloads\
  │      claude-sonnet-4-6\agents\
  └─ projects\D--...\memory\
      → JUNCTION → ...\memories\
D:\Backup\Downloads\ Git Repo
  ├─ CLAUDE.md 共享
  ├─ .claude\commands\ (17個) 共享
  └─ claude-sonnet-4-6\
      ├─ agents\ (7個) 共享
      └─ memories\ (32個文件) 共享
💻 筆記本(Laptop-OWER)
C:\Users\abc25\.claude\
  ├─ agents\ → JUNCTION
  │     C:\Users\abc25\repos\
  │      downloads-config\...agents\
  └─ projects\...\memory\
      → JUNCTION → ...\memories\
C:\Users\abc25\repos\downloads-config\ Git Clone
  ├─ CLAUDE.md 同一份!
  ├─ .claude\commands\ 同一份!
  └─ claude-sonnet-4-6\
      ├─ agents\ 同一份!
      └─ memories\ 同一份!
Junction 如何工作(以 agents 為例)
Claude 以為看到的
C:\Users\abc25
\.claude\agents\
Junction
透明橋樑
實際存放的地方
repos\downloads-config
\claude-sonnet-4-6\agents\
Git 同步到
GitHub
私人倉庫
兩台電腦的 Junction 都指向各自的 Git repo clone,而兩個 clone 都和 GitHub 同步 = 兩台電腦共享同一套 agents
最終效果:在台式機修改了一個 agent,git push 後,筆記本 git pull,Junction 自動讓筆記本的 Claude 也看到最新版本。完全自動,不需要手動複製文件。
7 開機自啟動設置方法(筆記本)
1
建立 PowerShell 啟動腳本
在筆記本建立一個 .ps1 腳本,指定工作目錄為「已信任的資料夾」(例如桌面),然後執行 claude remote-control 並自動回答 y。
# 存到:C:\Users\abc25\start-claude-rc.ps1
Set-Location "C:\Users\abc25\Desktop"
echo y | claude remote-control --session-name "Laptop-OWER"
注意:不要在同一行加 >> 日誌重定向(坑4的教訓)
2
建立 Windows 排程任務
用系統管理員身份開啟 PowerShell,建立一個 AtLogon(用戶登入時觸發)的排程任務。
# 以系統管理員身份執行
$action = New-ScheduledTaskAction `
  -Execute "powershell.exe" `
  -Argument "-WindowStyle Hidden -File C:\Users\abc25\start-claude-rc.ps1"

$trigger = New-ScheduledTaskTrigger -AtLogOn -User "abc25"

$settings = New-ScheduledTaskSettingsSet `
  -ExecutionTimeLimit 0

Register-ScheduledTask `
  -TaskName "Claude-RemoteControl" `
  -Action $action `
  -Trigger $trigger `
  -Settings $settings `
  -RunLevel Highest
3
確認設置成功
重新登入 Windows(不是重啟,是登出再登入),然後打開手機 Claude App,切換 Session。
成功的樣子
手機 App 右上角看到 "Laptop-OWER" 可以切換,點進去就能發指令
失敗的樣子
列表裡沒有 Laptop-OWER,或點進去沒有回應,回去檢查 Session(坑1)和工作目錄(坑3)
4
手機 App 切換到筆記本
設置完成後,在手機 Claude App 的 Remote Control 列表就能看到兩台電腦。
手機 App → 右上角選 Session → 看到 "Desktop-PC" 和 "Laptop-OWER" → 點選要控制的電腦 → 開始下命令
小提示:台式機(Desktop-PC)在 Thomas 的系統裡已設為開機自動啟動 Remote Control,所以台式機開機後不需要任何操作,手機直接能連。筆記本按以上步驟設定後,登入後也會自動啟動。
? 常見問題 FAQ
改了 CLAUDE.md 後,另一台電腦什麼時候會看到更新?
改完後需要手動 git add . && git commit -m "..." && git push,另一台電腦下次執行 git pull 後才會同步。 如果設置了 Stop Hook 自動 push,台式機每次對話結束時會自動推送。筆記本每次新 Session 開始可以設觸發自動 pull。
兩台電腦同時修改了同一個記憶文件,會衝突嗎?
如果修改的是不同的行,git 會自動合併,不衝突。如果修改的是同一行,git 會停下來要你手動選擇保留哪個版本。 建議:台式機和筆記本盡量修改不同的記憶文件(台式機的新發現寫台式機的日誌,筆記本的寫筆記本的),減少衝突機率。
手機 App 連不上電腦,怎麼排查?
按以下順序檢查:
1. 電腦開著嗎、用戶有登入嗎(確保 Session 1 存在)
2. 排程任務有沒有執行(工作排程器裡查 Claude-RemoteControl 的狀態)
3. claude 進程有沒有在跑(工作管理員查 claude.exe)
4. 手機和電腦是不是在同一個網路,或 Tailscale 有沒有連通
settings.json 為什麼不共享,要各台電腦獨立?
settings.json 裡有些設定是機器專屬的(例如本機的文件路徑白名單),不同電腦的路徑不一樣。共享 settings.json 會導致一台電腦的路徑白名單讓另一台電腦也「以為有權限」,但實際上路徑不存在。 所以 settings.json 故意設計為不共享,每台電腦自己維護自己的。
Junction 和一般捷徑(.lnk)有什麼不一樣?
一般 Windows 捷徑(.lnk)是給人用的,程式讀取時看到的是捷徑文件本身。 Junction 是 NTFS 文件系統層級的連結,程式讀取時完全看不出是連結,直接透明地讀到真實位置的文件。Claude Code 需要 Junction 而不是普通捷徑,就是因為它必須在文件系統層級「透明地」指向正確路徑。
這套配置做好後,還需要維護什麼?
日常幾乎不需要維護。只有以下情況需要注意:
1. 新增 agent 或 command 時,確保存到 Git repo 的對應目錄(Junction 會自動同步)
2. 修改了共享的設定後記得 git push
3. 新開電腦(重灌等)時需要重新 clone repo 和建 Junction,步驟一次性完成後就永久生效