Cài đặt PC + Laptop (Windows)
Setup full real-world: nhiều folders, ignore patterns, daily workflow.
Kiểm tra trước
Phần tiêu đề “Kiểm tra trước”- Quick Start đã xong (Syncthing pair 2 máy thành công)
- Quyết định những folder nào sync (vd:
~/.claude/,~/Documents/,D:/Projects/) - Backup data quan trọng trước (peace of mind)
Kiến trúc đề xuất
Phần tiêu đề “Kiến trúc đề xuất”┌──────────────── PC (always-on) ──────────────────┐│ Windows Syncthing :8384 ││ ├─ claude-state → C:\Users\<user>\.claude\ ││ ├─ documents → C:\Users\<user>\Documents\ ││ └─ public-shared → D:\Public LAN Folder\ │└──────────────────────────────────────────────────┘ ↕ LAN P2P┌────────────── Laptop (mobile) ───────────────────┐│ Windows Syncthing :8384 ││ ├─ claude-state ││ ├─ documents ││ └─ public-shared │└──────────────────────────────────────────────────┘Bước 1: Backup trạng thái hiện tại của Laptop
Phần tiêu đề “Bước 1: Backup trạng thái hiện tại của Laptop”# Trên LAPTOP$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"$backup = "C:\Users\$env:USERNAME\.claude.bak-$timestamp"Copy-Item -Recurse "C:\Users\$env:USERNAME\.claude" $backupWrite-Host "✓ Backup saved to: $backup"
# Move existing claude folder để sync overwriteMove-Item "C:\Users\$env:USERNAME\.claude\projects" "C:\Users\$env:USERNAME\.claude\projects.local-bak"Move-Item "C:\Users\$env:USERNAME\.claude\skills" "C:\Users\$env:USERNAME\.claude\skills.local-bak"Sau sync xong, có thể merge từ backup nếu cần files unique chỉ ở Laptop.
Bước 2: Thêm folder vào Syncthing trên PC
Phần tiêu đề “Bước 2: Thêm folder vào Syncthing trên PC”-
PC Web UI
http://127.0.0.1:8384→ Add Folder -
Folder 1:
claude-state- Folder Label:
Claude state - Folder ID:
claude-state - Folder Path:
C:\Users\<your-user>\.claude - Tab Sharing: tick Laptop
- Tab Ignore Patterns: paste:
session-envshell-snapshotsfile-historybackupsidemcp-needs-auth-cache.json**/.lock**/*.tmp**/.DS_Store**/Thumbs.db
- Save
- Folder Label:
-
Folder 2:
documents- Folder Path:
C:\Users\<your-user>\Documents - Sharing: tick Laptop
- Ignore Patterns:
**/node_modules**/.cache**/temp**/*.log**/.DS_Store
- Folder Path:
-
Folder 3+: tương tự cho
D:\Projects\, etc.
Bước 3: Chấp nhận folder trên Laptop
Phần tiêu đề “Bước 3: Chấp nhận folder trên Laptop”-
Sau Step 2, Laptop sẽ pop-up notification mỗi folder offer
-
Mỗi notification → click Add:
- Set Folder Path trên Laptop (mirror với PC)
- Save
-
Initial sync starts. Monitor qua Web UI → folder card → progress %
Bước 4: Kiểm tra đồng bộ
Phần tiêu đề “Bước 4: Kiểm tra đồng bộ”# Trên Laptop, sau initial sync done
# Check claude-state có conversationsGet-ChildItem "C:\Users\$env:USERNAME\.claude\projects" -Recurse -Filter "*.jsonl" | Measure-Object
# Check skills syncedGet-ChildItem "C:\Users\$env:USERNAME\.claude\skills" -Directory | Measure-ObjectIgnore Patterns — kinh nghiệm thực tế
Phần tiêu đề “Ignore Patterns — kinh nghiệm thực tế”Ignore patterns dùng glob syntax. Em recommend cho từng loại folder:
# Build artifacts**/node_modules**/dist**/build**/.next**/out**/coverage
# Dependencies caches**/.venv**/venv**/__pycache__**/*.pyc
# Per-machine env**/.env.local**/.env.development
# IDE / OS junk**/.vscode**/.idea.DS_StoreThumbs.dbdesktop.ini
# Logs + temp**/*.log**/tmp**/temp/# Per-machine session statesession-envshell-snapshotsfile-historybackupside
# Cache filesmcp-needs-auth-cache.json**/.lock
# Temp**/*.tmp**/.DS_Store**/Thumbs.db# Application caches**/.cache**/temp/
# OS junk**/.DS_Store**/Thumbs.db**/desktop.ini
# Logs**/*.logĐồng bộ OAuth token — lưu ý
Phần tiêu đề “Đồng bộ OAuth token — lưu ý”Một số files chứa auth tokens (vd ~/.claude/.credentials.json):
Quy trình hàng ngày tối ưu
Phần tiêu đề “Quy trình hàng ngày tối ưu”- Trên máy đang dùng: đóng app đang write file (vd Antigravity, IDE)
- Đợi 30s cho Syncthing flush
- Mở máy kia → tiếp tục work
- Tắt PC ở nhà (off LAN)
- Laptop work tiếp, edit nhiều files — Syncthing queue changes
- Về nhà bật PC → 2 máy auto pair lại → resume sync
Syncthing tạo file *.sync-conflict-<date>-<deviceID>.<ext> khi 2 máy
edit cùng file lúc 1 máy offline. Cách handle:
- Mở cả 2 versions, compare
- Quyết bản đúng, copy nội dung sang file gốc
- Xóa file
.sync-conflict-*
Tạm dừng / Tiếp tục đồng bộ
Phần tiêu đề “Tạm dừng / Tiếp tục đồng bộ”Đôi khi cần pause:
# API key trong config.xml$apiKey = (Select-String -Path "C:\Users\$env:USERNAME\AppData\Local\Syncthing\config.xml" -Pattern "<apikey>([^<]+)").Matches.Groups[1].Value
# Pause folderInvoke-RestMethod -Uri "http://127.0.0.1:8384/rest/db/pause?folder=claude-state" -Method Post -Headers @{"X-API-Key"=$apiKey}
# Resume folderInvoke-RestMethod -Uri "http://127.0.0.1:8384/rest/db/resume?folder=claude-state" -Method Post -Headers @{"X-API-Key"=$apiKey}Hoặc Web UI → folder → click pause icon.
Tự khởi động Syncthing khi đăng nhập
Phần tiêu đề “Tự khởi động Syncthing khi đăng nhập”# Create scheduled task to run Syncthing on logon$binary = (Get-ChildItem "C:\Users\$env:USERNAME\AppData\Local\Microsoft\WinGet\Packages\Syncthing.Syncthing*" -Filter "syncthing.exe" -Recurse | Select-Object -First 1).FullName
$action = New-ScheduledTaskAction -Execute $binary -Argument "serve --no-browser"$trigger = New-ScheduledTaskTrigger -AtLogOn -User "$env:USERNAME"$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -HiddenRegister-ScheduledTask -TaskName "Syncthing Daemon" -Action $action -Trigger $trigger -Settings $settingsTạo shortcut syncthing.exe (with arg serve --no-browser) trong:
shell:startup (Win+R → paste shell:startup → Enter)
Auto-run on Windows login.
Bước tiếp theo
Phần tiêu đề “Bước tiếp theo”PC + Laptop đã sync OK qua Windows. Tiếp theo:
- WSL Native Sync ⭐ — nếu bạn dùng WSL Ubuntu
- Sync Claude Code state — use case cụ thể
- Troubleshooting — fix khi sync fail