---
read_when: You want agent sessions to run on ephemeral cloud machines instead of the Gateway host, or you are configuring cloudWorkers profiles.
sidebarTitle: Cloud Workers
status: active
summary: 'ส่งเซสชันไปยังเครื่องคลาวด์แบบใช้แล้วทิ้ง: การจัดเตรียมทรัพยากร รันไทม์ของเวิร์กเกอร์ การอนุมานผ่านพร็อกซี และการสตรีมผลลัพธ์'
title: เวิร์กเกอร์บนคลาวด์
x-i18n:
    generated_at: "2026-07-16T19:13:02Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: c20b3b4f1408ed3ef0beb155a207f99476323cf67eba7b44931eec32c79e52be
    source_path: gateway/cloud-workers.md
    workflow: 16
---

Cloud workers ช่วยให้เซสชันเรียกใช้ลูปเอเจนต์บนเครื่องคลาวด์แบบใช้แล้วทิ้ง ขณะที่ทุกอย่างเกี่ยวกับเซสชันยังคงอยู่ในตำแหน่งเดิมเสมอ ได้แก่ มองเห็นได้ในแถบด้านข้าง สตรีมแบบสด และทรานสคริปต์อยู่ภายใต้การดูแลของ Gateway โดย Gateway จะเช่ากล่อง ติดตั้ง OpenClaw สำเนาที่ตรึงเวอร์ชันไว้ ซิงค์เวิร์กสเปซของเซสชันไปยังกล่อง และส่งมอบลูปของเทิร์นให้แก่กระบวนการ `openclaw worker` ที่ถูกจำกัด การเรียกโมเดลจะถูกพร็อกซีกลับผ่าน Gateway ดังนั้นข้อมูลประจำตัวของผู้ให้บริการจะไม่ออกจากเครื่องของคุณ และการแคชพรอมต์ยังคงทำงานได้เพราะผู้ให้บริการมองเห็นสตรีมเดียวที่ต่อเนื่อง

เมื่องานเสร็จสิ้น (หรือกล่องหยุดทำงาน) เครื่องจะถูกทิ้ง สถานะถาวร ได้แก่ ทรานสคริปต์ คอมมิตของเวิร์กสเปซ และระเบียนการจัดวาง จะอยู่กับ Gateway

<Note>
Cloud workers เป็นฟีเจอร์ที่ต้องเลือกเปิดใช้และจะไม่ปรากฏจนกว่าจะกำหนดค่าโปรไฟล์ การติดตั้งที่ยังไม่ได้กำหนดค่าจะไม่เห็น RPC การกำหนดค่า หรือ UI ใหม่
</Note>

## สิ่งใดทำงานที่ใด

| ประเด็น                                                 | ตำแหน่ง                                                                         |
| ------------------------------------------------------- | -------------------------------------------------------------------------------- |
| ลูปเอเจนต์ + เครื่องมือ (`exec`, `read`, `write`, `edit`, …) | กล่อง Cloud worker                                                                 |
| การอนุมานโมเดลและข้อมูลประจำตัวของผู้ให้บริการ                | Gateway (พร็อกซีโดยการอ้างอิง `{provider, model}`)                               |
| ทรานสคริปต์ (ถาวร, ที่เก็บเซสชัน)                     | Gateway                                                                          |
| การสตรีมสดเข้าสู่แถบด้านข้าง                         | การกระจายสัญญาณของ Gateway ซึ่งรับข้อมูลจากสตรีมเหตุการณ์ที่เล่นซ้ำได้ของ worker                      |
| ประวัติ Git ของเวิร์กสเปซ                                   | สร้างบนกล่องโดยไม่มีข้อมูลประจำตัว; Gateway รับช่วงคอมมิตและเป็นผู้ดำเนินการ push/PR |

กล่องไม่จำเป็นต้องมีพอร์ตขาเข้า ยกเว้น `sshd`: Gateway เชื่อมต่อออกผ่าน SSH ที่ตรึงไว้ และอุโมงค์ย้อนกลับจะนำ WebSocket ของ worker กลับมา ผู้ให้บริการ Crabbox ที่รวมมาให้บังคับใช้เส้นทาง SSH สาธารณะและปิดใช้การลงทะเบียน Tailscale แบบจัดการ การเข้าถึงอินเทอร์เน็ตขาออกขึ้นอยู่กับนโยบายของผู้ให้บริการ โดยโปรไฟล์ AWS เริ่มต้นสามารถเข้าถึงอินเทอร์เน็ตได้ เว้นแต่คุณจะจำกัดเครือข่ายหรือกลุ่มความปลอดภัยของโปรไฟล์

## ข้อกำหนด

- Plugin ผู้ให้บริการ worker Plugin `crabbox` ที่รวมมาให้ควบคุม CLI ของ [Crabbox](https://github.com/openclaw/crabbox) ซึ่งเป็นตัวกลางสำหรับการเช่าเครื่องจากแบ็กเอนด์คลาวด์ต่าง ๆ (AWS, Hetzner และอื่น ๆ) ไบนารี `crabbox` ต้องอยู่ใน `PATH` (หรือตั้งค่า `settings.binary`) โดยกำหนดค่าข้อมูลประจำตัวของผู้ให้บริการไว้แล้ว การรับเข้า AWS ต้องใช้ Crabbox 0.38.1 หรือใหม่กว่า
- สำหรับ worker ของ Crabbox AWS ค่า `aws.instanceProfile` ที่มีผลต้องว่างเปล่า ผู้ให้บริการจะตรวจสอบ `crabbox config show --json` ก่อนจัดสรร จากนั้นกำหนดให้ `crabbox inspect --json` รายงาน `providerMetadata.instanceProfileAttached: false` จาก EC2 `DescribeInstances` การเช่าที่มีบทบาทอินสแตนซ์หรือไม่มีเมทาดาทาที่เชื่อถือได้จะถูกหยุดและปฏิเสธ
- Node.js บนเครื่องที่เช่า อิมเมจคลาวด์พื้นฐานมักไม่มี Node.js ให้ติดตั้งผ่านคำสั่ง `setup` ของโปรไฟล์
- เซสชันที่มี managed worktree ซึ่งเซสชันเป็นเจ้าของ (สร้างด้วย `worktree: true`) การจัดส่งจะย้ายเนื้อหาของ worktree นั้น ส่วนไดเรกทอรีทั่วไปจะซิงค์เป็นสำเนามิเรอร์ตามแมนิเฟสต์

## การกำหนดค่า

เพิ่มโปรไฟล์ภายใต้ `cloudWorkers.profiles` ใน `openclaw.json`:

```json
{
  "cloudWorkers": {
    "profiles": {
      "aws": {
        "provider": "crabbox",
        "install": "bundle",
        "settings": {
          "provider": "aws",
          "class": "standard",
          "ttl": "8h",
          "idleTimeout": "45m",
          "setup": "test -x /usr/bin/node || (curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs)"
        }
      }
    }
  }
}
```

ฟิลด์ของโปรไฟล์:

| คีย์        | ความหมาย                                                                                                                                                                                                                                        |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `provider` | ID ผู้ให้บริการ worker ที่ Plugin ลงทะเบียนไว้ (`crabbox` สำหรับ Plugin ที่รวมมาให้)                                                                                                                                                                  |
| `install`  | `bundle` (ค่าเริ่มต้น) ส่งบิลด์ของ Gateway ที่กำลังทำงาน; `npm` ติดตั้ง Gateway เวอร์ชันรีลีสที่ตรงกันทุกประการพร้อมตรึงค่าความถูกต้อง `npm` กำหนดให้ Gateway ทำงานจากรีลีสที่จัดแพ็กเกจไว้                                                      |
| `settings` | JSON ที่ผู้ให้บริการเป็นเจ้าของ สำหรับ crabbox: `provider` (แบ็กเอนด์), `class` (คลาสเครื่อง), `ttl`, `idleTimeout` (ระยะเวลาแบบ Go), `setup` ที่ระบุหรือไม่ก็ได้ และพาธสัมบูรณ์ `binary` OpenClaw บังคับใช้ SSH สาธารณะและปิดใช้ Tailscale แบบจัดการสำหรับการเช่าเหล่านี้ |
| `lifetime` | นโยบายที่จัดเก็บไว้ซึ่งระบุหรือไม่ก็ได้ (`idleTimeoutMinutes`, `maxLifetimeMinutes`)                                                                                                                                                                           |

### คำสั่งตั้งค่า

`settings.setup` ทำงานบนกล่องที่เช่าหลังจาก SSH พร้อมใช้งานและก่อนติดตั้ง OpenClaw คำสั่งนี้ทำงานในความพยายามจัดเตรียม **ทุกครั้ง** (รวมถึงการเล่นซ้ำหลังจากการจัดส่งถูกขัดจังหวะ) ดังนั้นจึงต้องทำงานซ้ำได้โดยให้ผลลัพธ์เดิม — ป้องกันการติดตั้งด้วยการตรวจสอบ `command -v`/`test -x` ดังตัวอย่าง หากการตั้งค่าล้มเหลว ผู้ให้บริการจะหยุดการเช่าและการจัดส่งจะล้มเหลวแบบปิดกั้น โดยจะไม่ปล่อยให้กล่องที่กำหนดค่าไม่สมบูรณ์ยังทำงานอยู่

### ช่องทางการติดตั้ง

- **`bundle`** จัดแพ็ก `dist` ของ Gateway ที่กำลังทำงาน, `package.json` ที่ตัดส่วนไม่จำเป็นออก และแพ็กเกจเวิร์กสเปซใด ๆ ที่บิลด์อ้างอิง โดยทั้งหมดครอบคลุมด้วยแฮชเนื้อหา กล่องจะตรวจสอบบันเดิลดั้งเดิมเทียบกับแฮชดังกล่าว แล้วติดตั้งดีเพนเดนซี npm สำหรับโปรดักชัน (ปิดใช้สคริปต์) วิธีนี้ใช้สำหรับเรียกใช้บิลด์สำหรับการพัฒนาบน worker
- **`npm`** ยืนยันว่ามีรีลีสอยู่ในรีจิสทรีสาธารณะ ตรึงค่าความถูกต้อง SHA-512 และติดตั้ง `openclaw@<version>` ที่ตรงกับ Gateway ทุกประการ

## การจัดส่งเซสชัน

ใน Control UI ให้เปิด **เซสชันใหม่** เลือกเอเจนต์ที่กำหนดค่ารันไทม์เป็น OpenClaw เลือกเป้าหมาย **Cloud · profile** ที่กำหนดค่าไว้จากเมนู **ตำแหน่ง** แล้วเริ่มงาน การเลือก Cloud จะเปิดใช้ managed worktree ที่จำเป็นโดยอัตโนมัติ; Gateway จะสร้างเซสชัน ดำเนินการจัดส่งให้เสร็จ และส่งเทิร์นแรกหลังจากนั้นเท่านั้น ป้ายเซิร์ฟเวอร์ในแถบด้านข้างของเซสชันแสดงสถานะการจัดวางถาวร เป้าหมาย Cloud จะไม่มีให้เลือกสำหรับแค็ตตาล็อกเซสชัน CLI ภายนอก

โฟลว์ RPC ที่เทียบเท่าคือ:

สร้างเซสชันพร้อม managed worktree แล้วจัดส่งเซสชัน (RPC ต้องใช้ `operator.admin` และจะมีอยู่เมื่อกำหนดค่าโปรไฟล์แล้วเท่านั้น):

Cloud workers เรียกใช้รันไทม์เอเจนต์ OpenClaw เลือก `openai/*` หรือโมเดลอื่นที่แก้ไขไปยังรันไทม์ดังกล่าว; เซสชันที่กำหนดค่าให้ใช้รันไทม์ CLI ภายนอก เช่น `claude-cli` ไม่สามารถจัดส่งได้

```bash
openclaw gateway call sessions.create \
  --params '{"key":"agent:main:big-refactor","worktree":true,"cwd":"/path/to/repo","worktreeName":"big-refactor"}'

openclaw gateway call sessions.dispatch \
  --timeout 1500000 \
  --params '{"key":"agent:main:big-refactor","profileId":"aws"}'
```

`sessions.dispatch` ปิดการรับเทิร์นในเครื่อง รอให้งานที่ทำอยู่เสร็จ จัดเตรียมการเช่า เรียกใช้การตั้งค่า บูตสแตรป OpenClaw ซิงค์เวิร์กสเปซ และส่งคืนเมื่อการจัดวางไปถึงการเป็นเจ้าของโดย worker ในสถานะ `active` ควรเผื่อเวลาหลายนาทีสำหรับการจัดส่งครั้งแรก; ระบบจะแคชการเช่าและการติดตั้งเมื่อผู้ให้บริการรองรับ หลังจากนั้นให้โต้ตอบกับเซสชันตามปกติ โดยเทิร์นจะถูกกำหนดเส้นทางไปยัง worker โดยอัตโนมัติ

เทิร์นของ worker ที่เสร็จสมบูรณ์จะปรับข้อมูลไฟล์เวิร์กสเปซที่เข้าเกณฑ์และมีขนาดไม่เกินขีดจำกัดกลับเข้าสู่ managed worktree ของเซสชัน ก่อนปล่อยการอ้างสิทธิ์เทิร์น เหตุการณ์ worker สุดท้ายจะสร้างแนวกั้นผลลัพธ์ที่รอดำเนินการแบบถาวรก่อนมีการตอบรับ ดังนั้นการกู้คืนหลัง Gateway เริ่มระบบใหม่จะดึงเวิร์กสเปซระยะไกลกลับมาก่อนที่การล้างเทิร์นเก่าจะทำลายเจ้าของ การปรับข้อมูลจะตรวจสอบสิทธิ์แมนิเฟสต์ของ worker และหยุดเมื่อข้อมูลในเครื่องแตกต่างออกไป แทนที่จะเขียนทับฝ่ายใดฝ่ายหนึ่ง ก่อนเปลี่ยนแปลงไฟล์ Gateway จะจัดเก็บบันทึกย้อนกลับที่มีขนาดจำกัดไว้ในฐานข้อมูลสถานะ SQLite; การลองใหม่จะกู้คืนบันทึกดังกล่าวหลังจากกระบวนการ Gateway ถูกขัดจังหวะ ผลลัพธ์เวิร์กสเปซใช้ความหมายของไฟล์แบบ Git ได้แก่ เก็บรักษาไฟล์ปกติ บิตเรียกทำงาน symlink การเพิ่ม การเปลี่ยนแปลง และการลบ ส่วนไดเรกทอรีว่างและโหมดไดเรกทอรีอื่นจะไม่ถูกเก็บรักษา ออบเจ็กต์คอมมิตระยะไกลจะไม่ถูกเก็บรักษา; การเปลี่ยนแปลงไฟล์ที่ได้จะยังคงอยู่ใน managed worktree เพื่อการตรวจสอบและคอมมิตตามปกติ

เมื่องานเสร็จสมบูรณ์และไม่มีเทิร์นกำลังทำงาน ให้เปิดเมนูเซสชันแล้วเลือก **หยุด Cloud worker…** Gateway จะปรับข้อมูลเวิร์กสเปซครั้งสุดท้ายก่อนทำลายสภาพแวดล้อม การจัดวางที่อยู่ใน `draining` หรือ `reconciling` กำลังดำเนินการรื้อถอนให้เสร็จสิ้น; รอจนป้ายเปลี่ยนเป็น `reclaimed` ก่อนลบเซสชัน

สำหรับ worker ที่เชื่อมต่ออยู่แต่เสียหายหรือทำงานควบคุมไม่ได้ ผู้ปฏิบัติงานสามารถเรียก `environments.destroy` พร้อม `{ "force": true }` เป็นทางเลือกสุดท้าย การรื้อถอนแบบบังคับจะทำเครื่องหมายการจัดวางว่าล้มเหลวอย่างถาวร และละทิ้งผลลัพธ์ระยะไกลที่ยังไม่ได้ปรับข้อมูลก่อนทำลายสภาพแวดล้อม

RPC สำหรับการดูแลระบบที่เทียบเท่าคือ:

```bash
openclaw gateway call sessions.reclaim \
  --timeout 600000 \
  --params '{"key":"agent:main:big-refactor"}'
```

การจัดวางจะเคลื่อนผ่านเครื่องสถานะถาวร (`local → requested → provisioning → syncing → starting → active`) ดังนั้นหาก Gateway เริ่มระบบใหม่ระหว่างการจัดส่ง ระบบจะปรับข้อมูลแทนที่จะปล่อยให้เครื่องรั่วไหล เทิร์นโมเดลที่ล้มเหลวจะคงการจัดวางที่ใช้งานอยู่ไว้เพื่อให้ลองใหม่ได้ หากการปรับข้อมูลเวิร์กสเปซขาเข้าล้มเหลว worker จะยังคงทำงานอยู่เช่นกัน เพื่อให้ผู้ปฏิบัติงานแก้ไขความขัดแย้งในเครื่องและลองใหม่โดยไม่สูญเสียผลลัพธ์ระยะไกล; ส่วนความล้มเหลวของวงจรชีวิตจะย้ายการจัดวางไปยังสถานะข้อผิดพลาดหรือเรียกคืนแล้ว และเก็บส่วนท้ายของข้อมูลวินิจฉัยไว้

## โมเดลความปลอดภัย

- **ปิดการรับข้อมูลขาเข้าของ worker** Worker สื่อสารด้วยโปรโตคอลเฉพาะบนซ็อกเก็ตที่ผ่านอุโมงค์ โดยมีรายการอนุญาตเมธอดแบบปิด — worker ไม่สามารถเรียก RPC ของผู้ปฏิบัติงานได้
- **ออกข้อมูลประจำตัวใหม่และจัดเก็บแบบแฮช** การจัดส่งแต่ละครั้งจะออกข้อมูลประจำตัวของ worker; Gateway จัดเก็บเฉพาะค่าแฮช การหมุนเวียนข้อมูลประจำตัวและการกั้นด้วยยุคของเจ้าของรับประกันว่ามีเจ้าของที่ใช้งานอยู่ได้ไม่เกินหนึ่งรายต่อเซสชัน — worker เก่าที่เชื่อมต่อใหม่จะถูกกั้นออกและไม่ถูกผสาน
- **การตรึงคีย์โฮสต์** ผู้ให้บริการต้องเปิดเผยคีย์โฮสต์ SSH ของกล่องขณะจัดเตรียม; การบูตสแตรปจะเชื่อมต่อโดยตรึงคีย์อย่างเข้มงวดและล้มเหลวแบบปิดกั้นหากไม่มีคีย์ดังกล่าว
- **ไม่มีข้อมูลประจำตัวของโมเดล แพลตฟอร์มซอร์สโค้ด หรือคลาวด์ค้างอยู่บนกล่อง** การยืนยันตัวตนของโมเดลจะอยู่บน Gateway (การอนุมานเดินทางโดยการอ้างอิง `{provider, model}`) คอมมิต Git ของเวิร์กสเปซจะถูกสร้างโดยไม่มีข้อมูลประจำตัวของแพลตฟอร์มซอร์สโค้ด และเมทาดาทาการเช่า Crabbox AWS จะถูกตรวจสอบกับแหล่งข้อมูลที่เชื่อถือได้ว่ามีบทบาทอินสแตนซ์หรือไม่ก่อนตั้งค่า คำสั่งตั้งค่าต้องไม่มีข้อมูลประจำตัวเช่นกัน
- **การรับส่งข้อมูลขาออกที่ผู้ให้บริการเป็นเจ้าของ** อุโมงค์ย้อนกลับทำให้ OpenClaw ไม่จำเป็นต้องเข้าถึงโมเดลโดยตรง แต่ OpenClaw จะไม่เขียนกฎไฟร์วอลล์ของผู้ให้บริการใหม่ จำกัดการรับส่งข้อมูลขาออกในผู้ให้บริการ worker เมื่องานกำหนดให้ต้องทำ
- **ทรานสคริปต์ถาวรแบบครั้งเดียวพอดี** Worker คอมมิตชุดทรานสคริปต์ผ่านโปรโตคอลเปรียบเทียบและสลับกับ leaf ของเซสชัน; ฐานที่เก่าจะหยุดการทำงานทันที แทนที่จะทำซ้ำหรือ rebase เอาต์พุตที่มีค่าใช้จ่าย

## การแก้ไขปัญหา

- **`sessions.dispatch` เป็นเมธอดที่ไม่รู้จัก** — ไม่มีการกำหนดค่า `cloudWorkers.profiles` หรือผู้เรียกไม่มี `operator.admin`
- **"เทิร์นของ Cloud worker ต้องใช้รันไทม์ OpenClaw"** — เลือกโมเดลที่กำหนดค่ารันไทม์เป็น OpenClaw รันไทม์ CLI ภายนอก เช่น `claude-cli` ไม่รองรับการอนุมานของ worker
- **"การบูตสแตรป worker ต้องใช้ Node.js บนโฮสต์ที่เช่า"** — เพิ่มการติดตั้ง Node ลงใน `settings.setup` (ดูด้านบน)
- **การรับรองบทบาทอินสแตนซ์ AWS ล้มเหลว** — ล้าง `aws.instanceProfile` (และ `CRABBOX_AWS_INSTANCE_PROFILE` หากตั้งค่าไว้) ติดตั้ง Crabbox 0.38.1 หรือใหม่กว่า ไบนารีรุ่นเก่าไม่เปิดเผยสัญญา `providerMetadata.instanceProfileAttached` ที่เป็นแหล่งข้อมูลหลักซึ่งจำเป็นสำหรับการรับเข้า AWS
- **การส่งงานล้มเหลวพร้อมข้อผิดพลาดจากผู้ให้บริการ** — ระเบียนการจัดวางและ `environments.list` จะเก็บข้อผิดพลาดล่าสุด รวมถึงส่วนท้ายของ stderr จากการตั้งค่า/บูตสแตรป Box จะถูกทำลายเมื่อเกิดความล้มเหลว ดังนั้นส่วนท้ายดังกล่าวจึงเป็นหลักฐานนิติพิสูจน์หลัก
- **ไคลเอนต์หมดเวลาขณะส่งงาน** — `openclaw gateway call` ใช้ค่าเริ่มต้นเป็นการหมดเวลา 10s โปรดกำหนด `--timeout` ให้มากเพียงพอ (การส่งงานจะยังคงทำงานต่อที่ฝั่งเซิร์ฟเวอร์ไม่ว่าอย่างไรก็ตาม และการลองใหม่ระหว่างการจัดเตรียมจะถูกปฏิเสธด้วย `session cannot dispatch from placement provisioning`)
- **การดูแลรักษา lease** — `crabbox list --provider <backend>` แสดง lease ที่ยังใช้งานอยู่ ส่วน `crabbox stop --provider <backend> --id <lease>` ใช้ปล่อย lease หนึ่งรายการด้วยตนเอง lease ที่ไม่มีการใช้งานจะหมดอายุตาม `idleTimeout` ของโปรไฟล์

## ที่เกี่ยวข้อง

- [การแซนด์บ็อกซ์](/th/gateway/sandboxing) — ลดขอบเขตผลกระทบจากการเรียกใช้เครื่องมือภายในเครื่อง
- [CLI ของเซสชัน](/th/cli/sessions) — ตรวจสอบเซสชันที่จัดเก็บไว้
- [ข้อมูลอ้างอิงการกำหนดค่า](/th/gateway/configuration-reference)
