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個)
記憶文件 (32個)
技能 agents (7個)
命令 commands (17個)
各自獨立的東西
settings.json (機器專屬)
本機路徑
本機安裝的工具
執行中的 Session
本機路徑
本機安裝的工具
執行中的 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。
現象
報錯:
claude 要求工作目錄必須先被「信任過」才允許啟動。
Workspace not trusted. Please run claude in <DIR> firstclaude 要求工作目錄必須先被「信任過」才允許啟動。
診斷
查
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 --version 或 pip show playwright。已安裝工具的清單必須寫進 CLAUDE.md 或記憶文件,讓 Claude 每次都知道。
"你走了這麼多彎路,你學到了什麼?"
根本原因:遇到問題就直接試,不先診斷環境,導致在錯誤的前提上浪費大量時間。
教訓——三步診斷法:
Step 1:
Step 2:查
Step 3:確認工作目錄是否正確後,再動手設置排程任務
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\
\.claude\agents\
→
Junction
透明橋樑
透明橋樑
→
實際存放的地方
repos\downloads-config
\claude-sonnet-4-6\agents\
\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"
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
$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 有沒有連通
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,步驟一次性完成後就永久生效
1. 新增 agent 或 command 時,確保存到 Git repo 的對應目錄(Junction 會自動同步)
2. 修改了共享的設定後記得 git push
3. 新開電腦(重灌等)時需要重新 clone repo 和建 Junction,步驟一次性完成後就永久生效