Handoff
ส่งโปรเจกต์ไปยังเครื่องของคุณเองเพื่อให้เอเจนต์ทำงานต่อได้แม้ปิดแล็ปท็อป ติดตามการทำงานจากโทรศัพท์ และนำงานกลับบ้านด้วย Take back
Handoff คือการย้ายโปรเจกต์ไปยังเครื่องหนึ่งของคุณ และให้เอเจนต์ทำงานต่อบนเครื่องนั้นขณะที่แล็ปท็อปปิดอยู่ เมื่อคุณกลับมา Take back จะนำโปรเจกต์กลับมาในสภาพที่เอเจนต์ทิ้งไว้
ฟีเจอร์นี้ต่างจาก Remote Control ที่โทรศัพท์ของคุณเป็นเพียงหน้าต่างที่มองเข้าไปยังเดสก์ท็อปเครื่องนี้ ส่วน Handoff จะรันบนอีกเครื่องหนึ่ง และเดสก์ท็อปของคุณไม่จำเป็นต้องเปิดอยู่เลย
ก่อนส่งต่องานครั้งแรก
เปิด Settings → Machines เลือกเครื่อง แล้วเลือก Handoff ชีตจะตรวจสอบเครื่องและแสดงรายการสิ่งที่ยังขาด พร้อมวิธีแก้ไขข้างแต่ละรายการ:
| สิ่งที่ต้องมี | เหตุผล |
|---|---|
git | ส่งต่อประวัติและงานที่ยังไม่ได้ commit |
rsync | คัดลอกโปรเจกต์ไปและกลับ โดยส่งเฉพาะส่วนที่เปลี่ยนแปลง |
node 18 or newer | รันเครื่องมือบรรทัดคำสั่งของเอเจนต์ |
| systemd user services | ทำให้การรันอยู่รอดแม้เซสชัน SSH จบลง |
| Stay running after logout | หากไม่เปิด ทุกอย่างจะหยุดเมื่อเซสชันสุดท้ายจบ และไม่มีใครรีสตาร์ตให้ |
tmux (ไม่บังคับ) | ทำให้แท็บเชลล์ธรรมดายังคงอยู่ เอเจนต์ไม่ได้ใช้ |
Install all missing จะติดตั้งให้ครบทั้งหมด หรือจะติดตั้งทีละรายการก็ได้ ทุกคำสั่งจะแสดงให้เห็นครบถ้วนก่อนรัน พร้อมปุ่ม Copy หากคุณต้องการนำไปวางในเทอร์มินัลของตัวเอง

ชีตยังวัด ทรัพยากรที่เหลือบนเครื่อง ได้แก่ หน่วยความจำว่าง พื้นที่ดิสก์ว่าง คอร์ และโหลด และจะแจ้งตรงๆ เมื่อเหลือน้อย แทนที่จะปล่อยให้คุณสงสัยทีหลังว่าทำไมการ build ถึงช้า
การลงชื่อเข้าใช้เอเจนต์ตั้งใจให้ทำเอง
คุณล็อกอิน Claude หรือ Codex บนตัวเครื่องนั้น ในเทอร์มินัลจริง 1DevTool ไม่คัดลอกข้อมูลรับรองออกจากคอมพิวเตอร์เครื่องนี้ และชีตก็ระบุไว้ชัดเจนว่า signed in on the machine, never copied from here คอนฟิกเอเจนต์ของคุณจะถูกส่งไปด้วย โดยเส้นทางเฉพาะเครื่องและคำสั่ง MCP จะถูกเขียนใหม่ให้เหมาะกับเครื่องปลายทาง
การส่งต่อโปรเจกต์
เลือก Hand off to a machine… จากเมนูในแถบด้านข้างของโปรเจกต์ นอกจากนี้ยังมีอยู่ที่แถวของเครื่องใน Settings → Machines และในมุมมองงาน Handoff
ชีตจะถามสี่อย่าง:
- เครื่องและเอเจนต์ ที่จะใช้รัน
- การสนทนา — ต่อจากการสนทนาเดิม หรือเริ่มใหม่ เอเจนต์รันโดยไม่มีหน้าจอ คุณอ่านได้จากล็อกของมัน
- สิ่งที่ควรทำต่อไป ด้วยคำพูดของคุณเอง — "Finish the migration, run the tests, and fix what fails."
- การยืนยันว่าไม่มีอะไรรันอยู่กับโปรเจกต์นี้ที่เครื่องนี้ เพื่อไม่ให้การคัดลอกเกิดขึ้นระหว่างที่กำลังแก้ไข ระหว่างที่โปรเจกต์อยู่ที่อื่น การแก้ไขในเครื่องจะถูกหยุดไว้
ติ๊ก Run without asking หากไม่มีใครอยู่คอยอนุมัติพรอมต์ หากไม่ติ๊ก เอเจนต์จะหยุดที่พรอมต์แรก ตัวเลือกนี้มีผลกับเครื่องปลายทางเท่านั้น ไม่มีผลกับคอมพิวเตอร์เครื่องนี้
สิ่งที่ยังขวางการส่งต่อจะแสดงเป็นชิปที่คลิกเพื่อข้ามไปยังช่องนั้นได้ทันที
สิ่งที่ถูกคัดลอก
โปรเจกต์ทั้งหมด ประวัติ git และการสนทนา ส่งผ่าน rsync:
- ไฟล์ที่ track และไม่ได้ track
- การเปลี่ยนแปลงที่ staged และไม่ได้ staged
- การลบ สิทธิ์ executable และ symlink
.gitเอง
ดังนั้นไม่ต้อง "push ขึ้น GitHub ก่อน" — เครื่องปลายทางเริ่มจากสิ่งที่อยู่บนดิสก์ของคุณทุกประการ รวมถึงการแก้ไขที่ทำค้างไว้
Left out แสดงแพตเทิร์นที่ถูกข้ามเป็นชิปที่คุณเอาเครื่องหมายถูกออกได้ และ Also leave out รับแพตเทิร์นเพิ่มเติม โฟลเดอร์ชื่อ build, dist หรือ target ถูกเก็บไว้โดยตั้งใจ เพราะมักมีซอร์สโค้ดจริงอยู่
ไฟล์ .env ของคุณก็ถูกส่งไปด้วย — เขียนผ่าน stdin, chmod 600, และแทนที่แบบ atomic ระบบแสดง ชื่อ ไฟล์และตัวแปรให้คุณเห็น แต่ไม่เคยบันทึกค่าลงล็อก
เมื่อไปถึงแล้ว เอเจนต์จะรันเป็นยูนิต systemd --user ซึ่งเป็นสิ่งที่ทำให้ปิดแล็ปท็อปได้
คำสั่งต่อเนื่องจะเข้าคิวบนเครื่องปลายทาง
พิมพ์คำสั่งถัดไปได้ทุกเมื่อ รวมถึงขณะที่กำลังรันอยู่ เครื่องปลายทางจะเก็บไว้และเริ่มทันทีที่การรันปัจจุบันจบ — ไม่ว่าแล็ปท็อปจะปิดหรือแอปจะปิดอยู่ก็ตาม คิวอยู่บนเครื่องปลายทาง ไม่ใช่ในแอปของคุณ
มุมมองงานจะสตรีมล็อกของเครื่องกลับมา: ข้อความของผู้ช่วย การเรียกเครื่องมือ ผลลัพธ์ และสถานะการจบ โดยแต่ละการรันมีหมายเลขกำกับ
Open on phone
Open on phone อยู่บนหน้าจอสำเร็จของ Handoff มุมมองงาน และแถวของเครื่อง สแกน QR code ด้วยกล้องโทรศัพท์แล้วหน้าเว็บจะเปิดใน Safari หรือ Chrome — ไม่ต้องติดตั้งแอป และหน้าเว็บถูกให้บริการโดยตัวเครื่องปลายทาง ผ่าน Cloudflare quick tunnel จึงใช้งานได้ต่อเนื่องแม้ปิดแล็ปท็อป
จากโทรศัพท์คุณสามารถ:
- ติดตามล็อกสด — รายการเดียวกับที่มุมมองงานบนเดสก์ท็อปแสดง
- ส่งคำสั่งถัดไป — เข้าคิวหากกำลังรันอยู่ เริ่มทันทีหากไม่ได้รัน
- Stop การรันปัจจุบัน
- เปิดเชลล์ Admin PIN 6 หลักจะเปิดเชลล์
tmuxบนเครื่องปลายทางในเบราว์เซอร์ของโทรศัพท์ เชลล์ยังอยู่แม้ปิดแท็บ และปรับขนาดตามหน้าจอ - รับการแจ้งเตือนแบบพุชเมื่อการรันจบ — หนึ่งครั้งต่อการรันที่จบ และเมื่อคิวเดินต่อ ใช้ได้กับ Android Chrome ในตอนนี้ ส่วน iPhone ให้เพิ่มหน้าเว็บลงใน Home Screen ก่อน
หน้าสแกนจะแสดงเซสชันโทรศัพท์ที่เปิดอยู่ทั้งหมดพร้อม Sign out all และ Turn off จะตัดลิงก์ทิ้งทั้งหมด New code จะออก QR code และ PIN ใหม่โดยไม่ทำให้โทรศัพท์ที่ล็อกอินอยู่ถูกออกจากระบบ การ Take back Handoff สุดท้ายบนเครื่องหนึ่งจะปิดการเข้าถึงจากโทรศัพท์ให้เองโดยอัตโนมัติ
cloudflared บนเครื่องปลายทางจะถูกตรวจสอบกับ digest ของ GitHub release ก่อนรัน
Take back
Take back นำงานกลับมาโดยเรียงลำดับให้ไม่มีอะไรสูญหาย:
- คิวของเครื่องปลายทางถูกพักไว้ จึงไม่มีการรันใหม่เริ่มขึ้นใต้เท้าคุณ
- การรันปัจจุบันถูกหยุด
- โปรเจกต์ถูก rsync กลับบ้านพร้อมการเปลี่ยนแปลงของเอเจนต์
- ยูนิตที่สร้างบนเครื่องปลายทางถูกล้างออก
แพตเทิร์นที่ถูกยกเว้นตอนส่งออกไปจะถูกใช้ซ้ำตอนนำกลับ ดังนั้น Take back จะไม่ลบสิ่งที่ไม่เคยถูกส่งไป
Related
- Machines — รายชื่อเครื่องที่ Handoff เลือกใช้ และที่ที่เอเจนต์รันอยู่
- Control 1DevTool From Your Phone — พื้นผิวโทรศัพท์อีกแบบ ที่ชี้มายังเดสก์ท็อปเครื่องนี้
- SSH Keys