Bạn sẽ đồng bộ những gì?
Khi làm việc trên nhiều máy, có 4 thứ cần "đi theo" bạn. Mỗi thứ đồng bộ bằng một con đường riêng — hiểu rõ chỗ này thì làm đâu trúng đó:
💻 Máy cũ (đang có sẵn việc)
~/.claude/memory🖥 Máy mới (Mac, PC Windows, laptop…)
Chuẩn bị trước khi bắt đầu
Trên mỗi máy mới, bạn cần sẵn sàng các tài khoản và công cụ sau. Đăng nhập cùng tài khoản với máy cũ thì mọi thứ mới gặp nhau.
- ✅ Tài khoản Claude (Anthropic) — cùng email đang dùng ở máy cũ.
- ✅ Tài khoản Obsidian có gói Obsidian Sync (~$4–5/tháng) — nếu chưa có, mua tại obsidian.md/sync.
- ✅ Node.js 18+ và Git — nền để cài Claude Code (hướng dẫn cho cả Mac & Windows ngay dưới).
- 🔶 NÂNG CAO Tài khoản GitHub + Google Drive (cùng email với máy cũ).
🍎 Trên máy Mac — cài Homebrew & Node.js
# 1) Cài Homebrew (trình quản lý phần mềm cho Mac) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 2) Cài Node.js (kèm npm) + Git brew install node git # 3) Kiểm tra — cần Node v18 trở lên node -v npm -v git --version
🪟 Trên máy Windows — cài Node.js & Git
Mở PowerShell (bấm Start → gõ "PowerShell" → Enter) rồi chạy:
# Cài Node.js LTS + Git bằng winget (có sẵn trên Windows 10/11) winget install OpenJS.NodeJS.LTS winget install Git.Git # ĐÓNG PowerShell rồi mở lại, sau đó kiểm tra: node -v git --version
Đưa Obsidian Vault về máy 2
Đây là phần quan trọng nhất với người làm note. Obsidian Sync sẽ tự kéo toàn bộ vault (note, wiki, tài liệu) từ máy 1 về máy 2 — không cần copy tay.
Cài Obsidian
Tải tại obsidian.md → cài như app bình thường. Mở lên, chọn "Sign in" và đăng nhập cùng tài khoản Obsidian với máy 1.
Bật Sync & kết nối vault từ xa
- Mở Settings (⚙️) → Sync.
- Bấm "Connect to a remote vault" (hoặc "Choose a vault to connect").
- Chọn đúng vault bạn đã sync ở máy 1 (ví dụ
Brain to Letandao). - Bật công tắc "Sync is on".
Chờ tải về xong
Góc dưới phải có biểu tượng sync quay. Vault lớn có thể mất vài phút. Khi báo "Fully synced" là xong — toàn bộ note đã nằm trên máy 2.
.git, node_modules, .secrets, .claude, và file > 5MB. Giữ Sync nhẹ, nhanh và an toàn.Cài & đăng nhập Claude Code
Claude Code là "trợ lý lập trình + trợ lý vận hành" chạy ngay trong Terminal. Cài một lệnh, đăng nhập một lần là dùng được.
Cài Claude Code
# Cách 1 — cài qua npm (khuyên dùng) npm install -g @anthropic-ai/claude-code # Kiểm tra cài thành công claude --version
Lệnh trên chạy giống nhau trên Mac (Terminal) và Windows (PowerShell).
Cách 2 — cài bản native, không cần Node:
# 🍎 Mac curl -fsSL https://claude.ai/install.sh | bash # 🪟 Windows (PowerShell) irm https://claude.ai/install.ps1 | iex
Đăng nhập
Vào thư mục làm việc bất kỳ rồi gõ claude. Lần đầu nó sẽ hỏi đăng nhập:
# 🍎 Mac cd ~/Documents # 🪟 Windows cd $env:USERPROFILE\Documents # Rồi mở Claude và đăng nhập claude # Trong Claude, gõ: /login
Trình duyệt mở ra → đăng nhập cùng tài khoản Claude với máy cũ → quay lại là xong. Đăng nhập lưu theo máy, làm một lần duy nhất cho mỗi máy.
~/.claude/: memory (bộ nhớ dài hạn), projects (lịch sử phiên), settings (cấu hình). Phần NÂNG CAO bên dưới sẽ hướng dẫn đồng bộ memory để "bộ não AI" theo bạn sang máy 2.Kiểm tra: đã đồng bộ chưa?
Đến đây, với mức cơ bản bạn đã làm việc được 2 máy. Thử nhanh:
- ✅ Mở Obsidian máy 2 → thấy đủ note như máy 1.
- ✅ Sửa 1 note trên máy 1 → vài giây sau máy 2 cập nhật theo.
- ✅ Mở Terminal, gõ
claude→ trò chuyện được, không đòi đăng nhập lại.
Két sắt Git — lịch sử & tua ngược
Obsidian Sync giữ bản mới nhất, nhưng nếu lỡ xoá nhầm hay muốn xem "tháng trước file này thế nào" thì cần Git — một két sắt ghi lại mọi thay đổi, tự sao lưu lên GitHub mỗi tối.
Tạo SSH key trên máy 2 & gắn vào GitHub
SSH key giúp máy mới đẩy/kéo dữ liệu lên GitHub mà không cần gõ mật khẩu. Mỗi máy một key riêng — đừng copy key từ máy này sang máy khác.
🍎 Mac — mở Terminal:
# Tạo key mới (đặt tên gợi nhớ theo máy) ssh-keygen -t ed25519 -C "macbook-cas" -f ~/.ssh/github-cas # In khoá công khai ra để copy cat ~/.ssh/github-cas.pub
🪟 Windows — mở PowerShell:
# Tạo key mới (Enter 3 lần để bỏ qua passphrase) ssh-keygen -t ed25519 -C "pc-windows-cas" -f "$env:USERPROFILE\.ssh\github-cas" # In khoá công khai ra để copy Get-Content "$env:USERPROFILE\.ssh\github-cas.pub"
Copy dòng vừa in → vào GitHub → Settings → SSH and GPG keys → New SSH key → dán vào → Save.
Khai báo key cho GitHub
🍎 Mac:
# Tạo/sửa file ~/.ssh/config cat >> ~/.ssh/config <<'EOF' Host github.com HostName github.com User git IdentityFile ~/.ssh/github-cas EOF # Kiểm tra kết nối ssh -T git@github.com
🪟 Windows — bật dịch vụ SSH rồi khai báo key:
# Bật ssh-agent (chạy PowerShell với quyền Administrator) Set-Service ssh-agent -StartupType Automatic Start-Service ssh-agent # Khai báo key trong file config @" Host github.com HostName github.com User git IdentityFile ~/.ssh/github-cas "@ | Add-Content "$env:USERPROFILE\.ssh\config" # Kiểm tra kết nối ssh -T git@github.com
Thấy dòng "Hi <tên>! You've successfully authenticated..." là thành công.
Clone két sắt về máy 2
Két sắt chính là thư mục vault của bạn (đã được git init ở máy 1). Clone nó về:
cd ~/Documents git clone git@github.com:<tài-khoản>/<tên-repo>.git "Brain to Letandao"
git@github.com:ceoletandao/cas-brain.git, clone vào đúng tên Brain to Letandao để mọi đường dẫn khớp với máy 1.git init + git remote add origin … trong chính thư mục đó. Đừng tạo 2 thư mục khác nhau.
Thói quen lưu két sắt — cách chắc ăn nhất
Khi làm nhiều máy, kỷ luật quan trọng hơn tự động hoá. Chỉ cần 2 lệnh, thành phản xạ là không bao giờ mất việc:
# 🌅 ĐẦU buổi làm — kéo bản mới nhất về (chạy giống nhau trên Mac & Windows) git pull # 🌙 CUỐI buổi làm — đẩy việc của mình lên git add -A git commit -m "cập nhật ngày ..." git push
Lười gõ? Cứ nói với Claude Code: "lưu két sắt giúp anh" — nó chạy cả 3 lệnh cuối giúp bạn.
launchd. Nhưng macOS chặn tác vụ nền đọc thư mục ~/Documents nếu chưa cấp Full Disk Access — job chạy mỗi tối nhưng âm thầm lỗi, không ai biết. Chúng tôi từng mất 23 ngày không có bản lưu vì đúng lỗi này.
/bin/zsh. Và mỗi tháng kiểm tra 1 lần xem commit gần nhất là ngày nào:git log -1 --format="Lần lưu gần nhất: %cd"
Đừng đưa gì vào két sắt Git
Đây là phần ít ai nói nhưng dễ vỡ trận nhất. Git sinh ra để quản chữ (note, code, cấu hình) — không phải để chứa file nặng. Nhồi media vào là repo phình, push mãi không xong, và mỗi máy mới phải kéo về hàng GB.
.bin 1.4GB, file ghi âm họp ~1GB và một thư mục copy thừa 710MB. Kết quả: đẩy 15 phút rồi GitHub từ chối thẳng — vì nó chặn cứng mọi file > 100MB. Sau khi loại đúng 4 nhóm này ra, dung lượng đẩy tụt từ 2GB → 294MB và xong trong vài phút.
Bảng phân loại: cái gì đi đường nào
✅ ĐƯA vào Git (nhẹ, cần lịch sử)
🚫 KHÔNG đưa vào Git → để Drive
Dựng "hàng rào" .gitignore
Tạo file tên .gitignore ngay trong thư mục vault, nội dung:
# --- Bí mật: TUYỆT ĐỐI không lên git --- .secrets/ .env **/.env .claude/settings.local.json # --- Media nặng: để trên Google Drive --- *.mp4 *.mov *.wav *.m4a *.bin # --- Rác máy tính --- node_modules/ .DS_Store Thumbs.db *.log
# Liệt kê file > 50MB trong thư mục (GitHub cảnh báo >50MB, CHẶN >100MB)
find . -type f -not -path './.git/*' -size +50M -exec ls -lh {} \; | awk '{print $5, $9}'
.gitignore ngay, đừng để nó lọt vào két sắt.
git rm --cached "đường/dẫn/file-nang.bin"
# thêm vào .gitignore rồi sửa lại commit vừa nãy
git commit --amend --no-edit
Đồng bộ "bộ não AI" qua Google Drive
Bộ nhớ dài hạn của Claude nằm ở ~/.claude/memory. Để nó theo bạn sang máy 2, ta đặt thư mục thật trên Google Drive rồi tạo symlink (liên kết tắt) trỏ tới — cả 2 máy cùng dùng một bộ nhớ.
Cài Google Drive cho máy 2
Tải Google Drive for Desktop → đăng nhập cùng email với máy 1. Với thư mục bộ nhớ, đặt chế độ "Available offline" (không stream) để Claude đọc/ghi tức thì.
Trỏ thư mục memory về Drive
Giả sử bộ nhớ thật để ở My Drive/claude-cas/memory.
🍎 Mac — Terminal:
# Sao lưu thư mục memory cũ (nếu có) cho chắc mv ~/.claude/memory ~/.claude/memory.bak 2>/dev/null # Tạo symlink trỏ tới bộ nhớ trên Drive ln -s "$HOME/Library/CloudStorage/GoogleDrive-<email>/My Drive/claude-cas/memory" ~/.claude/memory # Kiểm tra ls -la ~/.claude/memory
🪟 Windows — PowerShell quyền Administrator (bấm chuột phải PowerShell → "Run as administrator"):
# Sao lưu memory cũ (nếu có) Rename-Item "$env:USERPROFILE\.claude\memory" "memory.bak" -EA SilentlyContinue # Tạo symlink trỏ tới bộ nhớ trên Drive (G: là ổ Drive, sửa cho đúng máy bạn) New-Item -ItemType SymbolicLink ` -Path "$env:USERPROFILE\.claude\memory" ` -Target "G:\My Drive\claude-cas\memory" # Kiểm tra Get-Item "$env:USERPROFILE\.claude\memory" | Select-Object LinkType, Target
settings.local.json và lịch sử projects/ mang tính từng-máy. Đồng bộ chúng dễ gây xung đột. Chỉ đưa memory (và phần agents/skills dùng chung) lên Drive.Mang Secrets sang máy 2 — đúng cách
Secrets là API key, token, mật khẩu (thường trong .secrets/, .env). Đây là phần dễ sai nhất và nguy hiểm nhất.
- KHÔNG paste key/token vào khung chat với bất kỳ AI nào (kể cả Claude).
- KHÔNG để secrets lên cloud dùng chung (Obsidian Sync, Drive chung, Notes). Phải
.gitignore+ loại khỏi Sync. - Chuyển secrets giữa 2 máy bằng tay: AirDrop, USB, hoặc password manager (1Password/Bitwarden).
Cách chuyển an toàn
- AirDrop (2 máy Mac): gửi thẳng thư mục
.secrets/sang máy 2, đặt vào đúng vị trí. - Sau khi đặt xong, khoá quyền lại:
chmod 600 .secrets/* - Nếu cần dán giá trị key vào file mà không hiện ra màn hình, dùng lệnh ẩn input:
read -s -p "Dán credential rồi Enter: " S \ && sed -i '' "s|^FIELD=.*|FIELD=$S|" .secrets/file.env \ && unset S && echo "✅ Đã lưu"
.secrets/ và khởi động lại dịch vụ đang dùng.Dùng chung Mac ↔ Windows: 3 cái bẫy
Nếu bạn chỉ dùng toàn Mac (hoặc toàn Windows) thì bỏ qua phần này. Nhưng nếu trộn Mac và PC Windows trên cùng một két sắt, có 3 thứ chắc chắn sẽ cắn bạn nếu không xử trước.
Hồ Sơ Khách Hàng.md được Mac và Windows mã hoá Unicode khác nhau (NFD vs NFC). Hậu quả: máy kia thấy file "trùng tên nhưng không mở được", hoặc Git báo file vừa bị xoá vừa được thêm.
git clone.
💊 Thuốc: chạy 1 lần trên MỖI máy
🍎 Trên Mac — Terminal:
git config --global core.autocrlf input git config --global core.precomposeunicode true git config --global core.quotepath false
🪟 Trên Windows — PowerShell (dòng cuối cần quyền Administrator):
git config --global core.autocrlf true git config --global core.quotepath false git config --global core.longpaths true
Và thêm 1 file .gitattributes vào vault
File này ép mọi máy hiểu giống nhau — tạo trong thư mục vault, đặt cạnh .gitignore:
# Chuẩn hoá xuống dòng cho mọi file chữ * text=auto eol=lf # File nhị phân: cấm Git đụng vào nội dung *.png binary *.jpg binary *.pdf binary *.wav binary *.mp4 binary
ho-so-khach-hang thay vì Hồ Sơ Khách Hàng). Tên có dấu vẫn chạy, nhưng khi trộn Mac–Windows thì đây là nguồn rắc rối số 1. Note bên trong Obsidian thì cứ tiếng Việt thoải mái — chỉ tên thư mục cấp cao nên để không dấu.
Quy trình làm việc nhiều máy hằng ngày
Dù bạn có 2 máy hay 5 máy, giữ một thói quen nhỏ này là không bao giờ xung đột hay mất việc:
🌅 Khi bắt đầu (máy nào cũng vậy)
- Mở Obsidian → chờ báo "Fully synced".
- PRO Vào thư mục dự án chạy
git pullđể lấy bản mới nhất. - Mở Drive → chờ icon bộ nhớ sync xong rồi mới mở Claude.
🌙 Khi kết thúc
- Lưu hết note → để Obsidian sync xong mới đóng máy.
- PRO
git add -A && git commit -m "..." && git push - Để Drive sync nốt bộ nhớ AI.
git pull đầu buổi → chuyện gì xảy ra?git push, Git báo "rejected — behind". Đừng hoảng, cũng đừng dùng --force (sẽ xoá việc của máy kia). Cứ chạy:
git pull --rebase
# Git tự ghép việc của bạn lên trên bản mới. Xong thì:
git push
<<<<<<< rồi giữ phần đúng — hoặc nhờ thẳng Claude Code: "gỡ conflict giúp anh".
Checklist cho mỗi máy mới (bấm để tick)
- ✓Obsidian đã cài + đăng nhập tài khoản
- ✓Obsidian Sync bật, vault báo "Fully synced"
- ✓Selective sync đã loại trừ
.git / .secrets / .claude / node_modules - ✓Node.js 18+ và Git đã cài (
node -v,git --versionchạy được) - ✓Claude Code đã cài +
/loginthành công - ✓PRO SSH key riêng của máy này đã gắn vào GitHub,
ssh -T git@github.comOK - ✓PRO Đã
git clonekét sắt về đúng tên thư mục - ✓PRO Đã có
.gitignorechặn media nặng + secrets - ✓PRO Trộn Mac–Windows? Đã chạy 3 lệnh
git configở Phần 8 - ✓PRO Google Drive đã cài, thư mục
memorysymlink về Drive - ✓SEC Secrets đã chuyển tay an toàn + khoá quyền lại
- ✓Đã test: sửa note máy cũ → máy mới cập nhật;
claudechạy không đòi login
Lỗi thường gặp
🪟 Windows: PowerShell báo "cannot be loaded because running scripts is disabled"
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser → gõ Y → Enter.🪟 Windows: git clone báo "Filename too long"
git config --global core.longpaths true (PowerShell quyền Admin), rồi clone lại. Nếu vẫn lỗi, clone vào thư mục gần gốc ổ đĩa như C:\cas\ thay vì lồng sâu trong Documents.Đổi máy xong, Git báo cả nghìn file bị sửa mà mình không đụng gì
git config --global core.autocrlf trên mỗi máy và thêm file .gitattributes vào vault. Sau đó chạy git add --renormalize . một lần để dọn.Push bị GitHub từ chối: "file is XXX MB; exceeds 100 MB limit"
git rm --cached "đường/dẫn/file", thêm nó vào .gitignore, rồi git commit --amend --no-edit và push lại. File vẫn còn nguyên trên máy bạn.Đặt auto-commit ban đêm mà cả tháng không thấy bản lưu nào
launchd) bị chặn đọc ~/Documents nếu chưa cấp Full Disk Access → job chạy nhưng lỗi âm thầm. Kiểm tra bằng git log -1 --format="%cd". Cách chắc ăn: bỏ auto, dùng thói quen pull/push ở Phần 4.Obsidian báo xung đột (conflict) một file
Gõ claude báo "command not found"
npm config get prefix để biết đường dẫn, rồi thêm .../bin vào PATH trong ~/.zshrc. Hoặc cài lại bằng bản native: curl -fsSL https://claude.ai/install.sh | bash.npm báo lỗi quyền (EACCES) khi cài global
sudo. Đặt lại thư mục global về home: npm config set prefix ~/.npm-global rồi thêm ~/.npm-global/bin vào PATH. Với wrangler/cache, có thể set npm_config_cache="$PWD/.npmcache" ngay trước lệnh.GitHub báo "Permission denied (publickey)"
~/.ssh/config chưa trỏ đúng IdentityFile. Chạy lại ssh -T git@github.com để xem báo lỗi, kiểm tra đã dán đúng file .pub vào GitHub chưa.Claude không nhớ gì như ở máy 1
~/.claude/memory chưa được nối. Kiểm tra symlink (ls -la ~/.claude/memory phải trỏ tới Drive) và Drive đã sync xong thư mục đó chưa.