การใช้ Remote Control กับ ccam
หน้านี้แปลด้วยเครื่องจากภาษาอังกฤษ ยินดีรับการแก้ไข แก้ไขหน้านี้บน GitHub
ccam work rc เริ่ม Remote Control ของ Claude Code ในชื่อบัญชี work คุณจึงควบคุมเซสชันบนคอมพิวเตอร์เครื่องนี้ได้จาก claude.ai/code หรือแอป Claude บนมือถือ คำสั่งนี้ทำงานเหมือน claude rc โดยต่างกันเพียงข้อเดียว: หากบัญชีใช้เซิร์ฟเวอร์ MCP ร่วมกัน ccam จะถามหนึ่งครั้งว่าจะคัดลอกเซิร์ฟเวอร์เหล่านั้นลงใน .claude.json ของบัญชีหรือไม่ เพราะเซสชันของ Remote Control อ่านเซิร์ฟเวอร์จากที่นั่นเท่านั้น
การเริ่มใช้งาน
ccam work rc # Remote Control as the account work
ccam 2 rc # the account with number 2 (see ccam list)
ccam work remote-control # the long name of the same command
ccam work rc --name laptop # options after rc go to Remote Control
ccam work rc --spawn worktree # each new session in its own git worktree
ccam --dry-run work rc # print the command instead of running itคำสั่งลัดใช้ได้แบบเดียวกัน: ccwork rc คือ ccam work rc ให้รันคำสั่งในโฟลเดอร์ที่คุณต้องการทำงาน แล้วเปิด claude.ai/code หรือแอป Claude ที่ลงชื่อเข้าใช้ด้วยบัญชี Claude เดียวกับ work
ตัวเลือก
ตัวเลือกสองประเภทมาบรรจบกันที่นี่: ตัวเลือกของ ccam เอง ซึ่งอยู่ก่อนชื่อบัญชีหรืออยู่ในการตั้งค่าของ ccam และตัวเลือกของ Remote Control ซึ่งอยู่หลัง rc และส่งถึง Claude Code โดยไม่เปลี่ยนแปลง
ตัวเลือกและการตั้งค่าของ ccam
| ตัวเลือกหรือการตั้งค่า | สิ่งที่ทำ | ค่าเริ่มต้น |
|---|---|---|
--dry-run (ก่อนชื่อบัญชี) |
พิมพ์ตัวแปรสภาพแวดล้อมและคำสั่ง รวมถึงข้อความแจ้งเรื่อง MCP หากมี ไม่ถามและไม่คัดลอก | ปิด |
Copy them into .claude.json (a backup is kept)? [y/N] |
ถามเมื่อบัญชีใช้เซิร์ฟเวอร์ MCP ร่วมกันและ .claude.json ของบัญชียังไม่มีรายการปัจจุบันของกลุ่ม y คัดลอกเซิร์ฟเวอร์ ส่วน N หรือ Enter จะเริ่มโดยไม่มีเซิร์ฟเวอร์เหล่านั้น |
N |
mcp_strategy = "sync" ใน ~/.config/ccam/config.toml |
คัดลอกเซิร์ฟเวอร์ของกลุ่มลงใน .claude.json ก่อนการเริ่มทุกครั้ง ไม่ว่าจะเป็น Remote Control หรือไม่ จึงไม่มีการถามเลย |
"flag" |
ccam share work --mcp off |
เลิกใช้เซิร์ฟเวอร์ MCP ร่วมกับบัญชีนี้ จากนั้น Remote Control จะเริ่มด้วยเซิร์ฟเวอร์ของบัญชีเองเท่านั้นและไม่มีการถาม | เปิด |
ตัวเลือกของ Remote Control
ทุกอย่างหลัง rc เป็นของ Claude Code ตารางนี้คือตัวเลือกของ claude remote-control ใน Claude Code 2.1.304 ส่วน ccam work rc --help จะพิมพ์รายการสำหรับเวอร์ชันของคุณ
| ตัวเลือก | สิ่งที่ทำ |
|---|---|
--name <name> |
ชื่อของเซสชันที่แสดงใน claude.ai/code |
--remote-control-session-name-prefix <prefix> |
คำนำหน้าของชื่อเซสชันที่สร้างขึ้นอัตโนมัติ (ค่าเริ่มต้น: ชื่อโฮสต์) |
-c, --continue |
กลับไปเชื่อมต่อกับเซสชันที่ Remote Control บันทึกไว้ล่าสุดสำหรับโฟลเดอร์นี้ ภายในประมาณ 4 ชั่วโมง |
--session-id <id> |
กลับไปเชื่อมต่อกับเซสชันที่ระบุ |
--permission-mode <mode> |
โหมดสิทธิ์ของเซสชันใหม่: acceptEdits, auto, bypassPermissions, default, dontAsk หรือ plan |
--spawn <mode> |
same-dir (ค่าเริ่มต้น), worktree (git worktree หนึ่งชุดต่อเซสชัน) หรือ session (เซสชันเดียว และออกเมื่อเซสชันจบ) |
--capacity <N> |
จำนวนเซสชันสูงสุดพร้อมกันในโหมด same-dir และ worktree (ค่าเริ่มต้น 32) |
--[no-]create-session-in-dir |
สร้างเซสชันแรกในโฟลเดอร์ปัจจุบันตอนเริ่ม (ค่าเริ่มต้น: เปิด) |
--[no-]chrome |
Claude in Chrome สำหรับเซสชันใหม่ (ค่าเริ่มต้น: ปิด) |
-d, --debug, --debug-file <path>, -v, --verbose |
เอาต์พุตสำหรับดีบักและแบบละเอียด |
ให้วาง rc ต่อจากชื่อบัญชีทันที ccam ถือว่าอาร์กิวเมนต์แรกที่ไม่ขึ้นต้นด้วย - คือคำสั่งของ Claude Code ดังนั้นใน ccam work rc --name laptop ccam จะเห็น rc แต่ใน ccam work --model opus rc จะเห็น opus
สิ่งที่ ccam ทำ
การเริ่มจะผ่านเส้นทางปกติ (การเริ่ม Claude Code) โดยมีการเปลี่ยนแปลงหนึ่งจุดในขั้นตอน MCP:
ccam หาบัญชี ตรวจลิงก์ที่ใช้ร่วมกันของบัญชี และหา
claudeเหมือนการเริ่มทุกครั้งccam เห็นว่าคำสั่งคือ
rcหรือremote-controlจึงไม่ใส่--mcp-configหากบัญชีใช้เซิร์ฟเวอร์ MCP ร่วมกัน ccam จะเปรียบเทียบ
mcp.jsonของกลุ่มกับsync-stampใน~/.local/state/ccam/mcp/work/หาก.claude.jsonมีเซิร์ฟเวอร์ปัจจุบันอยู่แล้ว หรือกลุ่มไม่มีเซิร์ฟเวอร์เลย ccam จะข้ามไปขั้นตอนที่ 6 ทันทีมิฉะนั้น ccam จะระบุชื่อเซิร์ฟเวอร์ที่เซสชันจะไม่ได้รับ:
$ ccam work rc ccam: Remote Control sessions only get MCP servers stored in account work's .claude.json, not the shared MCP servers (ctx, fs). Copy them into .claude.json (a backup is kept)? [y/N]เมื่อตอบ
yccam จะบันทึกสำเนาสำรองของ.claude.jsonใช้ล็อกของ Claude Code เอง เพิ่มเซิร์ฟเวอร์ของกลุ่มลงในmcpServersและคงเซิร์ฟเวอร์อื่นของบัญชีไว้ เมื่อตอบNเมื่อไม่มีเทอร์มินัล หรือขณะที่บัญชีกำลังทำงาน ccam จะไม่เปลี่ยนแปลงอะไรและแจ้งให้ทราบ:Starting without them. To copy them before every launch instead, set mcp_strategy = "sync" in ~/.config/ccam/config.tomlccam บันทึกเซสชัน ตั้ง
CLAUDE_CONFIG_DIRเป็นโฟลเดอร์ของบัญชี แล้วแทนที่ตัวเองด้วยclaude rcผ่านexec
จากนั้น Remote Control จะทำงานต่อไปในฐานะเซิร์ฟเวอร์ ทุกเซสชันที่มันเริ่มให้คุณเป็นโปรเซสลูกของโปรเซสนั้น จึงทำงานในฐานะ work: ใช้การเข้าสู่ระบบ การตั้งค่า และประวัติการสนทนาของ work และนับรวมในขีดจำกัดการใช้งานของ work ตราบใดที่เซิร์ฟเวอร์ยังทำงาน ccam จะถือว่าบัญชีนั้นกำลังทำงานอยู่
การทดลองรัน (dry run) แสดงให้เห็นความแตกต่าง การเริ่มปกติส่งเซิร์ฟเวอร์ของกลุ่มเป็นอาร์กิวเมนต์ แต่ Remote Control ไม่ส่ง:
$ ccam --dry-run work
CLAUDE_CONFIG_DIR=/home/me/.local/share/ccam/profiles/work /home/me/.local/bin/claude --mcp-config=/home/me/.local/share/ccam/groups/default/mcp.json
$ ccam --dry-run work rc
ccam: Remote Control sessions only get MCP servers stored in account work's .claude.json, not the shared MCP servers (ctx, fs).
Starting without them. To copy them before every launch instead, set mcp_strategy = "sync" in ~/.config/ccam/config.toml
CLAUDE_CONFIG_DIR=/home/me/.local/share/ccam/profiles/work /home/me/.local/bin/claude rcทำไมจึงทำงานแบบนี้
Remote Control ไม่รับ --mcp-config ในการเริ่มปกติ ccam ส่งเซิร์ฟเวอร์ของกลุ่มให้ Claude Code ในรูป --mcp-config=<path> และไม่เคยเขียนไฟล์ของ Claude Code แต่ claude remote-control ปฏิเสธตัวเลือกนี้เมื่ออยู่ก่อนชื่อคำสั่ง และไม่รับเลยเมื่ออยู่หลังชื่อคำสั่ง ก่อน ccam 0.6.0 ccam work rc จึงล้มเหลวกับทุกบัญชีที่ใช้เซิร์ฟเวอร์ MCP ร่วมกัน ตอนนี้ ccam ไม่ใส่ตัวเลือกนี้แล้ว
เซสชันของ Remote Control อ่านเซิร์ฟเวอร์จาก .claude.json เท่านั้น เซสชันที่ Remote Control เริ่มไม่ได้สืบทอดตัวเลือกจากบรรทัดคำสั่ง ที่เดียวที่เซสชันเหล่านั้นพบเซิร์ฟเวอร์ MCP ของผู้ใช้คือ .claude.json ของบัญชี ไฟล์นี้ยังเก็บรายละเอียดการเข้าสู่ระบบของบัญชีและสถานะแยกตามโฟลเดอร์ด้วย ccam จึงลิงก์ไฟล์นี้ไปยังสำเนาที่ใช้ร่วมกันแบบที่ทำกับ settings.json ไม่ได้ การคัดลอกเซิร์ฟเวอร์ลงในไฟล์นี้จึงเป็นวิธีเดียวที่จะให้เซสชันได้รับรายการที่ใช้ร่วมกัน
ccam ถามก่อนเขียน ด้วยกลยุทธ์ flag ซึ่งเป็นค่าเริ่มต้น ccam สัญญาว่าจะไม่แตะ .claude.json Remote Control เป็นกรณีเดียวที่ ccam ต้องเขียนลงไฟล์นี้ จึงถามก่อน เก็บสำเนาสำรองไว้ และไม่แตะสิ่งใดนอกจาก mcpServers
ccam ไม่เขียนขณะที่บัญชีกำลังทำงาน Claude Code เขียน .claude.json ใหม่ระหว่างเซสชัน การเปลี่ยนแปลงจากภายนอกจึงอาจสูญหายหรือถูกเขียนทับ ccam จึงข้ามการคัดลอกเมื่อมีเซสชันใดของบัญชีกำลังทำงาน รวมถึงเซิร์ฟเวอร์ Remote Control อีกตัวด้วย
ccam ถามหนึ่งครั้งต่อการเปลี่ยนแปลง หลังจากคัดลอกแล้ว sync-stamp จะเก็บเวลาแก้ไขของ mcp.json ของกลุ่มไว้ ccam จะถามอีกครั้งเฉพาะเมื่อไฟล์นั้นเปลี่ยน เช่น หลังจาก ccam mcp add หากคุณตอบ N ก็ยังไม่มีสำเนา ccam จึงจะถามทุกครั้งที่เริ่ม Remote Control
ccam mcp ทำให้สำเนาเป็นปัจจุบันอยู่เสมอ เมื่อชื่อซ้ำกัน รายการใน .claude.json จะมีผลเหนือกว่า --mcp-config สำเนาเก่าจึงอาจบังนิยามที่ใหม่กว่าในการเริ่มปกติด้วย ด้วยเหตุนี้ ccam mcp add, add-json, remove และ import จึงอัปเดตสำเนาของทุกบัญชีที่ไม่ได้กำลังทำงาน:
$ ccam mcp add ctx --url https://mcp.context7.com/mcp
✓ ctx added in group default — applies from the next launch
✓ Updated the copy in account work's .claude.json (made for Remote Control)เมื่อไม่มีเทอร์มินัล คำตอบคือไม่ Remote Control มักรันจากสคริปต์ เซอร์วิส หรือ nohup ซึ่งไม่มีใครตอบคำถามได้ ในกรณีนั้น ccam จะเริ่มโดยไม่มีเซิร์ฟเวอร์เหล่านั้นแทนที่จะรอ
ปัญหาและวิธีแก้
เซิร์ฟเวอร์ MCP ที่ใช้ร่วมกันไม่ปรากฏในเซสชันของ Remote Control
คำถามถูกตอบว่า N ไม่มีเทอร์มินัล หรือบัญชีกำลังทำงานอยู่ ให้หยุด Remote Control ปิดเซสชันอื่นของบัญชี แล้วรัน ccam work rc อีกครั้งในเทอร์มินัลและตอบ y หากไม่ต้องการให้ถามอีกเลย ให้ตั้ง mcp_strategy = "sync" ใน ~/.config/ccam/config.toml เซิร์ฟเวอร์ที่อยู่ในเซสชันแล้วจะไม่เปลี่ยนระหว่างที่เซสชันทำงาน ดังนั้นให้เริ่มเซสชันใหม่หลังจากคัดลอก
"Account work is running, so its .claude.json is left alone"
ยังมีเซสชันของ work เปิดอยู่: อาจเป็น ccam work ปกติ คำสั่งลัด หรือเซิร์ฟเวอร์ Remote Control อีกตัว ให้ออกจากเซสชันนั้นแล้วรัน ccam work rc อีกครั้ง เซสชันที่บัญชีอื่นรันอยู่ไม่นับรวม
ccam ถามทุกครั้ง
คุณยังไม่ได้คัดลอกเซิร์ฟเวอร์ ให้ตอบ y หนึ่งครั้ง หรือตั้ง mcp_strategy = "sync" หากไม่ต้องการเซิร์ฟเวอร์เหล่านี้ใน Remote Control เลย ให้เลิกใช้ MCP ร่วมกับบัญชีนี้: ccam share work --mcp off
ccam work rc ล้มเหลวทันทีพร้อมข้อผิดพลาดเกี่ยวกับ --mcp-config
ccam ของคุณเก่ากว่า 0.6.0 และส่ง --mcp-config ให้ Remote Control ให้รัน ccam update หากพบข้อผิดพลาดเดียวกันกับ ccam เวอร์ชันปัจจุบัน แปลว่ามีตัวเลือกที่มีค่าอยู่ก่อน rc เช่นใน ccam work --model opus rc ccam จึงถือว่า opus เป็นคำสั่ง ให้วาง rc ต่อจากชื่อบัญชีทันที
การเปลี่ยนแปลงที่ทำด้วย ccam mcp ไม่ไปถึง Remote Control
ccam mcp add และ remove อัปเดตสำเนาเฉพาะในบัญชีที่ไม่ได้กำลังทำงาน และแจ้งให้ทราบ: Note: account work is running, so the copy in its .claude.json stays as it was until its next Remote Control launch. ให้หยุด Remote Control แล้วเริ่มใหม่ ccam จะเห็นว่า mcp.json เปลี่ยนไปและถามอีกครั้ง
สำเนาแทนที่เซิร์ฟเวอร์ของฉันเอง
หากบัญชีมีเซิร์ฟเวอร์ของตัวเองที่ชื่อเดียวกับเซิร์ฟเวอร์ของกลุ่ม การคัดลอกจะแทนที่เซิร์ฟเวอร์นั้น .claude.json ก่อนหน้าอยู่ใน ~/.local/state/ccam/mcp/work/backups/ ซึ่งเก็บไว้ 5 ชุดล่าสุด หากต้องการใช้เวอร์ชันของคุณกับทุกบัญชี ให้ย้ายเข้าไปในกลุ่มด้วย ccam mcp import work <server> --force ก่อนเริ่ม Remote Control ครั้งถัดไป
ฉันต้องการลบเซิร์ฟเวอร์ที่คัดลอกมา
ccam mcp remove <server> ลบเซิร์ฟเวอร์ออกจากกลุ่มและจากทุกสำเนา หากต้องการกลับไปยังสถานะก่อนคัดลอก ให้กู้คืนสำเนาสำรองล่าสุดจาก ~/.local/state/ccam/mcp/work/backups/ ขณะที่ไม่มีเซสชันของบัญชีทำงานอยู่
Remote Control ถามว่าจะเชื่อถือโฟลเดอร์หรือไม่ หรือออกไปเมื่อไม่มีเทอร์มินัล
การเชื่อถือโฟลเดอร์เก็บแยกตามบัญชีใน .claude.json ดังนั้นโฟลเดอร์ที่คุณเชื่อถือในฐานะ personal จะเป็นโฟลเดอร์ใหม่สำหรับ work ให้รัน ccam work หนึ่งครั้งในโฟลเดอร์นั้นแล้วยอมรับ จากนั้นจึงเริ่ม Remote Control ที่นั่น
"You must be logged in with a Claude account that has a subscription"
Remote Control ต้องเข้าสู่ระบบด้วยบัญชี Claude ที่มีการสมัครสมาชิก ตรวจอีเมลของบัญชีใน ccam list และลงชื่อเข้าใช้อีกครั้งด้วย ccam login work หากจำเป็น
เซสชันไม่ปรากฏบนโทรศัพท์
แอป Claude หรือ claude.ai/code ลงชื่อเข้าใช้ด้วยบัญชี Claude อื่น ให้เปรียบเทียบกับอีเมลที่ ccam list แสดงสำหรับ work
ccam เตือนว่ามี Claude Code อีกตัวใช้ประวัติการสนทนาร่วมกันในโฟลเดอร์นี้
มีบัญชีอื่นในกลุ่มประวัติเดียวกันกำลังทำงานอยู่ในโฟลเดอร์เดียวกัน เซสชันที่ทำการสนทนาเดียวกันต่อจากทั้งสองบัญชีอาจทำให้ประวัติปนกัน ให้ตอบ y เฉพาะเมื่อทั้งสองจะทำงานกับการสนทนาคนละรายการ หรือเริ่ม Remote Control ในโฟลเดอร์อื่น