---
read_when:
    - การอัปเดต OpenClaw
    - มีบางอย่างใช้งานไม่ได้หลังจากอัปเดต
summary: การอัปเดต OpenClaw อย่างปลอดภัย (การติดตั้งแบบส่วนกลางหรือจากซอร์สโค้ด) พร้อมกลยุทธ์การย้อนกลับ
title: กำลังอัปเดต
x-i18n:
    generated_at: "2026-07-20T06:01:13Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: b337c3c4c845e054eebb5a7eb018900f9e22b695a59e14c0a6f0cb67d2e4780a
    source_path: install/updating.md
    workflow: 16
---

อัปเดต OpenClaw ให้เป็นเวอร์ชันล่าสุดอยู่เสมอ

สำหรับการแทนที่อิมเมจ Docker, Podman และ Kubernetes โปรดดู
[การอัปเกรดอิมเมจคอนเทนเนอร์](/th/install/docker#upgrading-container-images) Gateway
จะดำเนินงานอัปเกรดที่ปลอดภัยต่อการเริ่มต้นระบบก่อนเข้าสู่สถานะพร้อมใช้งาน และจะออกหาก
สถานะที่เมานต์ไว้ต้องได้รับการซ่อมแซมด้วยตนเอง

## แนะนำ: `openclaw update`

ตรวจหาประเภทการติดตั้ง (npm, pnpm, Bun หรือ git) ดึงข้อมูลเวอร์ชันล่าสุด เรียกใช้ `openclaw doctor` และรีสตาร์ต Gateway

```bash
openclaw update
```

สลับช่องทางหรือระบุเวอร์ชันที่ต้องการ:

```bash
openclaw update --channel beta
openclaw update --channel extended-stable
openclaw update --channel dev
openclaw update --dry-run   # แสดงตัวอย่างโดยไม่ดำเนินการ
```

`openclaw update` ไม่มีแฟล็ก `--verbose` (แต่ตัวติดตั้งมี) สำหรับการวินิจฉัย ให้ใช้
`--dry-run` เพื่อแสดงตัวอย่างการดำเนินการที่วางแผนไว้ ใช้ `--json` เพื่อรับผลลัพธ์แบบมีโครงสร้าง หรือ
ใช้ `openclaw update status --json` เพื่อตรวจสอบสถานะช่องทางและความพร้อมใช้งาน

`--channel beta` จะเลือก npm dist-tag รุ่น beta ก่อน แต่จะเปลี่ยนไปใช้ stable/latest
เมื่อไม่มีแท็ก beta หรือเวอร์ชันของแท็กดังกล่าวเก่ากว่ารีลีส stable ล่าสุด
ให้ใช้ `--tag beta` แทนสำหรับการอัปเดตแพ็กเกจแบบครั้งเดียวที่ตรึงไว้กับ npm
beta dist-tag โดยตรง

`--channel extended-stable` ใช้กับแพ็กเกจเท่านั้น และการติดตั้งยังคง
ทำงานในโฟร์กราวด์เท่านั้น OpenClaw อ่านตัวเลือกสาธารณะ `extended-stable` ของ npm
ตรวจสอบแพ็กเกจแบบเจาะจงที่เลือก และติดตั้งเวอร์ชันนั้นโดยตรง หากข้อมูลรีจิสทรีขาดหาย
หรือไม่สอดคล้องกัน ระบบจะหยุดอย่างปลอดภัยและจะไม่เปลี่ยนไปใช้ `latest`
หากเวอร์ชันที่เลือกเก่ากว่าเวอร์ชันที่ติดตั้งอยู่ การยืนยัน
ดาวน์เกรดตามปกติยังคงมีผล CLI จะบันทึกช่องทางหลังจาก
อัปเดตคอร์สำเร็จ แต่การเรียกใช้ `npm install -g openclaw@extended-stable` โดยตรง
จะไม่อัปเดต `update.channel`
หลังจากสลับคอร์แล้ว Plugin npm ทางการที่เข้าเกณฑ์ซึ่งมีเจตนาแบบค่าเปล่า/ค่าเริ่มต้น หรือ
`latest` จะปรับให้ตรงกับเวอร์ชันคอร์นั้นทุกประการ การตรึงเวอร์ชันที่แน่นอนและแท็ก
ที่ไม่ใช่ `latest` ซึ่งระบุไว้อย่างชัดเจน รวมถึง Plugin จากบุคคลที่สามและแหล่งที่ไม่ใช่ npm จะไม่เปลี่ยนแปลง
การติดตั้งจากแค็ตตาล็อกที่สร้างโดย OpenClaw เวอร์ชันปัจจุบันจะคง
เจตนาเริ่มต้นนั้นไว้ ระเบียนรุ่นเก่าที่มีเฉพาะเวอร์ชันแบบเจาะจงจะยังคงถูกตรึงไว้ เนื่องจาก
OpenClaw ไม่สามารถแยกแยะการตรึงอัตโนมัติเดิมออกจากการตรึงของผู้ใช้ได้อย่างปลอดภัย ให้เรียกใช้
`openclaw plugins update @openclaw/name` หนึ่งครั้งในช่องทาง extended-stable
เพื่อให้ Plugin นั้นกลับมาติดตามเวอร์ชันคอร์แบบตรงกันทุกประการ

`--channel dev` มอบ GitHub เช็กเอาต์ `main` แบบเคลื่อนที่ต่อเนื่อง สำหรับการอัปเดต
แพ็กเกจแบบครั้งเดียว `--tag main` จะแมปไปยังข้อกำหนดแพ็กเกจ
`github:openclaw/openclaw#main` และติดตั้งโดยตรงผ่านตัวจัดการแพ็กเกจเป้าหมาย (npm/pnpm/bun)

สำหรับ Plugin ที่มีการจัดการ หากไม่มีรีลีส beta ระบบจะแสดงคำเตือนแทนที่จะถือว่าล้มเหลว:
การอัปเดตคอร์ยังคงสำเร็จได้ ขณะที่ Plugin เปลี่ยนไปใช้รีลีส
ค่าเริ่มต้น/latest ที่บันทึกไว้

โปรดดูความหมายของแต่ละช่องทางที่ [ช่องทางรีลีส](/th/install/development-channels)

## สลับระหว่างการติดตั้งด้วย npm และ git

ใช้ช่องทางเพื่อเปลี่ยนประเภทการติดตั้ง ตัวอัปเดตจะเก็บสถานะ การกำหนดค่า
ข้อมูลประจำตัว และพื้นที่ทำงานไว้ใน `~/.openclaw` โดยจะเปลี่ยนเฉพาะการติดตั้งโค้ด OpenClaw
ที่ CLI และ Gateway ใช้งาน

```bash
# การติดตั้งแพ็กเกจ npm -> git เช็กเอาต์ที่แก้ไขได้
openclaw update --channel dev

# git เช็กเอาต์ -> การติดตั้งแพ็กเกจ npm
openclaw update --channel stable
```

แสดงตัวอย่างการสลับโหมดการติดตั้งก่อน:

```bash
openclaw update --channel dev --dry-run
openclaw update --channel stable --dry-run
```

`dev` จะทำให้มี git เช็กเอาต์ สร้างบิลด์ และติดตั้ง CLI ส่วนกลางจาก
เช็กเอาต์นั้น ช่องทาง `stable`, `extended-stable` และ `beta` ใช้การติดตั้ง
แบบแพ็กเกจ ระบบจะปฏิเสธ extended-stable บน git เช็กเอาต์โดยไม่แก้ไขหรือ
แปลงเช็กเอาต์นั้น หากติดตั้ง Gateway ไว้แล้ว `openclaw update` จะรีเฟรช
ข้อมูลเมตาของบริการและรีสตาร์ตบริการ เว้นแต่จะระบุ `--no-restart`

สำหรับการติดตั้งแพ็กเกจที่มีบริการ Gateway แบบมีการจัดการ `openclaw update` จะกำหนดเป้าหมาย
ไปยังรากแพ็กเกจที่บริการนั้นใช้ หากคำสั่งเชลล์ `openclaw` มาจาก
การติดตั้งอื่น ตัวอัปเดตจะแสดงรากทั้งสองและพาธ Node ของบริการ
ที่มีการจัดการ และตรวจสอบเวอร์ชัน Node ดังกล่าวเทียบกับข้อกำหนด
`engines.node` ของรีลีสเป้าหมายก่อนแทนที่แพ็กเกจ

## ทางเลือก: เรียกใช้ตัวติดตั้งอีกครั้ง

```bash
curl -fsSL https://openclaw.ai/install.sh | bash
```

เพิ่ม `--no-onboard` เพื่อข้ามการเริ่มต้นใช้งาน หากต้องการบังคับประเภทการติดตั้งที่ระบุ ให้ส่ง
`--install-method git --no-onboard` หรือ `--install-method npm --no-onboard`

หาก `openclaw update` ล้มเหลวหลังจากขั้นตอนติดตั้งแพ็กเกจ npm ให้เรียกใช้
ตัวติดตั้งอีกครั้งแทน ตัวติดตั้งจะไม่เรียกใช้ตัวอัปเดต แต่จะเรียกการติดตั้งแพ็กเกจ
ส่วนกลางโดยตรง และสามารถกู้คืนการติดตั้ง npm ที่อัปเดตเพียงบางส่วนได้

```bash
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method npm
```

ตรึงการกู้คืนไว้กับเวอร์ชันหรือ dist-tag ที่ระบุด้วย `--version`:

```bash
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method npm --version <version-or-dist-tag>
```

## ทางเลือก: ใช้ npm, pnpm หรือ bun ด้วยตนเอง

```bash
npm i -g openclaw@latest
```

แนะนำให้ใช้ `openclaw update` สำหรับการติดตั้งที่มีการควบคุมดูแล เนื่องจากสามารถประสานการสลับแพ็กเกจ
กับบริการ Gateway ที่กำลังทำงานอยู่ได้ หากอัปเดตการติดตั้งที่มีการควบคุมดูแลด้วยตนเอง
ให้หยุด Gateway ที่มีการจัดการก่อน ตัวจัดการแพ็กเกจจะแทนที่ไฟล์
โดยตรง และมิฉะนั้น Gateway ที่กำลังทำงานอยู่อาจพยายามโหลดไฟล์คอร์หรือ Plugin
ระหว่างการสลับ รีสตาร์ต Gateway หลังจากตัวจัดการแพ็กเกจทำงานเสร็จ เพื่อให้โหลด
การติดตั้งใหม่

สำหรับการติดตั้งส่วนกลางทั้งระบบบน Linux ที่มี root เป็นเจ้าของ หาก `openclaw update` ล้มเหลวโดยมี
`EACCES` ให้กู้คืนด้วย npm ของระบบ โดยหยุด Gateway ไว้ตลอด
การแทนที่ด้วยตนเอง ใช้แฟล็กโปรไฟล์/สภาพแวดล้อมเดียวกับที่ใช้ตามปกติสำหรับ
Gateway นั้น แทนที่ `/usr/bin/npm` ด้วย npm ของระบบที่เป็นเจ้าของ
คำนำหน้าส่วนกลางที่ root เป็นเจ้าของบนโฮสต์:

```bash
openclaw gateway stop
sudo /usr/bin/npm i -g openclaw@latest
openclaw gateway install --force
openclaw gateway restart
```

จากนั้นตรวจสอบ:

```bash
openclaw --version
curl -fsS http://127.0.0.1:18789/readyz
openclaw plugins list --json
openclaw gateway status --deep --json
openclaw doctor --lint --json
```

เมื่อ `openclaw update` จัดการการติดตั้ง npm ส่วนกลาง ระบบจะติดตั้งเป้าหมาย
ลงในคำนำหน้า npm ชั่วคราวก่อน แพ็กเกจตัวเลือกจะตรวจสอบเวอร์ชัน Node
ของโฮสต์ระหว่าง `preinstall` จากนั้น OpenClaw จึงจะตรวจสอบรายการไฟล์
`dist` ที่บรรจุในแพ็กเกจ และสลับโครงสร้างแพ็กเกจที่สะอาดเข้าไปยังคำนำหน้าส่วนกลางจริง
ตัวป้องกันความสมบูรณ์ของแพ็กเกจจะไม่รวมอยู่ในรายการที่คาดหมาย และจะถูกนำออกหลังจาก
`preinstall` สำเร็จเท่านั้น ดังนั้นการข้ามสคริปต์วงจรชีวิตจะล้มเหลวก่อน
การสลับเช่นกัน ใน npm 12 และใหม่กว่า ตัวอัปเดตจะอนุญาตเฉพาะวงจรชีวิตของ OpenClaw
ในแพ็กเกจตัวเลือกเท่านั้น ส่วนสคริปต์ของการขึ้นต่อกันแบบส่งต่อจะยังคงถูกบล็อก วิธีนี้ช่วยป้องกันไม่ให้ npm
วางแพ็กเกจใหม่ทับไฟล์เก่าที่ตกค้างจากแพ็กเกจเดิม หากคำสั่งติดตั้ง
ล้มเหลว OpenClaw จะลองใหม่หนึ่งครั้งด้วย `--omit=optional` ซึ่งช่วยในโฮสต์
ที่ไม่สามารถคอมไพล์การขึ้นต่อกันเสริมแบบเนทีฟได้

คำสั่งอัปเดต npm และอัปเดต Plugin ที่ OpenClaw จัดการยังล้าง
การกักกันซัพพลายเชน `min-release-age` ของ npm (หรือคีย์การกำหนดค่าเดิม `before`)
สำหรับโพรเซส npm ลูกด้วย นโยบายดังกล่าวมีไว้เพื่อการป้องกันโดยทั่วไป แต่การอัปเดต
OpenClaw ที่สั่งอย่างชัดเจนหมายถึง "ติดตั้งรีลีสที่เลือกทันที"

```bash
pnpm add -g openclaw@latest
```

หาก pnpm 11 ติดตั้ง OpenClaw 2026.7.1 ให้เรียกใช้คำสั่งด้วยตนเองนั้นหนึ่งครั้ง
รีลีสดังกล่าวมาก่อนเลย์เอาต์แพ็กเกจส่วนกลางแบบแยกของ pnpm 11 ดังนั้นตัวอัปเดตของรีลีสนั้นอาจ
เข้าใจผิดว่าการติดตั้ง npm อื่นเป็น CLI ที่กำลังทำงานอยู่ รีลีสหลังจากนั้นจะคง
ความเป็นเจ้าของของ pnpm และติดตามรากแพ็กเกจทดแทนระหว่างการอัปเดต นอกจากนี้
ยังใช้ไดเรกทอรี bin ส่วนกลางที่ตัวจัดการเจ้าของรายงาน และหยุดก่อน
แก้ไขเมื่อคำสั่ง pnpm ที่พร้อมใช้งานรายงานรากส่วนกลางหรือเวอร์ชันหลักที่ต่างออกไป
หรือเมื่อแพ็กเกจที่เรียกใช้งานถูกตัดขาดหรือไม่ใช่การติดตั้ง OpenClaw
ที่ใช้งานอยู่เพียงรายการเดียวในตำแหน่งนั้น

หาก OpenClaw ใช้กลุ่มการติดตั้งส่วนกลางของ pnpm 11 ร่วมกับแพ็กเกจอื่น
ตัวอัปเดตอัตโนมัติจะหยุดก่อนเปลี่ยนแปลงกลุ่ม ให้อัปเดตกลุ่มเดิม
ที่คั่นด้วยจุลภาคด้วยตนเอง เพื่อให้แพ็กเกจร่วมกลุ่มและนโยบายการบิลด์ยังคงเดิม

```bash
bun add -g openclaw@latest
```

### หัวข้อขั้นสูงเกี่ยวกับการติดตั้ง npm

<AccordionGroup>
  <Accordion title="โครงสร้างแพ็กเกจแบบอ่านอย่างเดียว">
    OpenClaw ถือว่าการติดตั้งส่วนกลางจากแพ็กเกจเป็นแบบอ่านอย่างเดียวขณะรันไทม์ แม้ผู้ใช้ปัจจุบันจะมีสิทธิ์เขียนไดเรกทอรีแพ็กเกจส่วนกลางก็ตาม การติดตั้งแพ็กเกจ Plugin จะอยู่ในราก npm/git ที่ OpenClaw เป็นเจ้าของภายใต้ไดเรกทอรีการกำหนดค่าของผู้ใช้ และการเริ่มต้น Gateway จะไม่แก้ไขโครงสร้างแพ็กเกจ OpenClaw

    การตั้งค่า npm บน Linux บางแบบจะติดตั้งแพ็กเกจส่วนกลางไว้ในไดเรกทอรีที่ root เป็นเจ้าของ เช่น `/usr/lib/node_modules/openclaw` OpenClaw รองรับเลย์เอาต์นี้ เนื่องจากคำสั่งติดตั้ง/อัปเดต Plugin จะเขียนข้อมูลภายนอกไดเรกทอรีแพ็กเกจส่วนกลางดังกล่าว

  </Accordion>
  <Accordion title="ยูนิต systemd ที่เพิ่มความปลอดภัย">
    ให้สิทธิ์ OpenClaw เขียนไปยังรากการกำหนดค่า/สถานะ เพื่อให้การติดตั้ง Plugin การอัปเดต Plugin และการล้างข้อมูลโดย doctor ที่สั่งอย่างชัดเจนสามารถบันทึกการเปลี่ยนแปลงได้:

    ```ini
    ReadWritePaths=/var/lib/openclaw /home/openclaw/.openclaw /tmp
    ```

  </Accordion>
  <Accordion title="การตรวจสอบพื้นที่ดิสก์ล่วงหน้า">
    ก่อนอัปเดตแพ็กเกจและติดตั้ง Plugin ที่สั่งอย่างชัดเจน OpenClaw จะพยายามตรวจสอบพื้นที่ดิสก์แบบพยายามให้ดีที่สุดสำหรับโวลุ่มเป้าหมาย พื้นที่ต่ำจะทำให้เกิดคำเตือนพร้อมพาธที่ตรวจสอบ แต่จะไม่บล็อกการอัปเดต เนื่องจากโควตาระบบไฟล์ สแนปช็อต และโวลุ่มเครือข่ายอาจเปลี่ยนแปลงหลังการตรวจสอบ การติดตั้งจริงของตัวจัดการแพ็กเกจและการตรวจสอบหลังการติดตั้งยังคงเป็นผลชี้ขาด
  </Accordion>
</AccordionGroup>

## ตัวอัปเดตอัตโนมัติ

ปิดไว้โดยค่าเริ่มต้น เปิดใช้งานใน `~/.openclaw/openclaw.json`:

```json5
{
  update: {
    channel: "stable",
    auto: {
      enabled: true,
    },
  },
}
```

| ช่องทาง           | ลักษณะการทำงาน                                                                                                                      |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `stable`          | ดำเนินการหลังจากการหน่วงเวลาในตัว พร้อมการกระจายเวลาแบบกำหนดซ้ำได้เพื่อทยอยเปิดตัว                                                |
| `extended-stable` | ตรวจหาคำแนะนำการอัปเดตแบบอ่านอย่างเดียวเมื่อเริ่มต้นและทุก 24 ชั่วโมงเมื่อเปิดใช้ `checkOnStart` และจะไม่ดำเนินการอัตโนมัติ |
| `beta`            | ตรวจสอบตามช่วงเวลาในตัวและดำเนินการทันที                                                                        |
| `dev`             | ไม่มีการดำเนินการอัตโนมัติ ให้ใช้ `openclaw update` ด้วยตนเอง                                                                           |

Gateway ยังบันทึกคำแนะนำการอัปเดตเมื่อเริ่มต้นด้วย (ปิดใช้งานด้วย
`update.checkOnStart: false`) การเลือก extended-stable ที่จัดเก็บไว้จะใช้
เส้นทางคำแนะนำแบบอ่านอย่างเดียวนี้และช่วงเวลาคำแนะนำ 24 ชั่วโมงที่มีอยู่ แต่จะไม่เรียกใช้
การติดตั้งอัตโนมัติ การส่งต่อ การรีสตาร์ต การหน่วงเวลา/การกระจายเวลาของ stable หรือการตรวจสอบ beta
สำหรับการดาวน์เกรดหรือการกู้คืนจากเหตุขัดข้อง ให้ตั้งค่า `OPENCLAW_NO_AUTO_UPDATE=1` ในสภาพแวดล้อมของ Gateway เพื่อบล็อกการดำเนินการอัตโนมัติ แม้จะกำหนดค่า `update.auto.enabled` ไว้ก็ตาม คำแนะนำการอัปเดตเมื่อเริ่มต้นยังคงทำงานได้ เว้นแต่จะปิดใช้ `update.checkOnStart` ด้วย

การอัปเดตผ่านตัวจัดการแพ็กเกจที่ร้องขอผ่านระนาบควบคุม Gateway แบบสด
(`update.run`) จะไม่แทนที่โครงสร้างแพ็กเกจภายในโพรเซส Gateway
ที่กำลังทำงาน สำหรับการติดตั้งบริการแบบมีการจัดการ Gateway จะเริ่มการส่งต่อแบบแยกออกจากโพรเซส
แล้วออก จากนั้นให้เส้นทาง CLI `openclaw update --yes --json` ตามปกติหยุด
บริการ แทนที่แพ็กเกจ รีเฟรชข้อมูลเมตาของบริการ รีสตาร์ต ตรวจสอบ
เวอร์ชันและการเข้าถึง Gateway และกู้คืน macOS LaunchAgent ที่ติดตั้งแล้วแต่ยังไม่ได้โหลด
เมื่อทำได้ หาก Gateway ไม่สามารถดำเนินการส่งต่อนั้นได้อย่างปลอดภัย
`update.run` จะรายงานคำสั่งเชลล์ที่ปลอดภัยแทนการเรียกใช้ตัวจัดการแพ็กเกจ
ภายในโพรเซส

การ์ดอัปเดตในแถบด้านข้างของ Control UI จะแสดง **อัปเดต Gateway** เมื่อการ์ดจะเริ่ม
ขั้นตอน `update.run` นี้โดยตรง ซึ่งครอบคลุม Control UI ที่โฮสต์ในเบราว์เซอร์ Gateway
ระยะไกล และ Gateway ภายในเครื่องที่จัดการด้วยตนเอง

ในแอป macOS ที่ลงนามแล้ว Gateway ภายในเครื่องที่แอปเป็นเจ้าของจะเปลี่ยนการ์ดนั้นเป็น
**อัปเดตแอป Mac + Gateway** โดย Sparkle จะอัปเดตแอปก่อน หลังจากเปิดแอปอีกครั้ง
แอปจะเรียกใช้ `openclaw update --tag <app-version> --json` รีสตาร์ต Gateway
และตรวจสอบสถานะการทำงานในหน้าต่างความคืบหน้าแบบการตั้งค่า หน้าต่างนี้จะปรากฏเฉพาะ
เมื่อ Gateway ที่มีการจัดการนั้นต้องได้รับการอัปเดต ซ่อมแซม หรือติดตั้ง ส่วนการอัปเดตเฉพาะแอป
จะเปิดกลับเข้าสู่แอปโดยตรง รายละเอียดความล้มเหลวจะยังคงแสดงอยู่พร้อมการดำเนินการ Retry, [คู่มือการอัปเดต](/th/install/updating) และ
[Discord](https://discord.gg/clawd) แอปจะไม่ใช้เส้นทางที่ประสานงานกันนี้
กับ Gateway ระยะไกลหรือที่จัดการจากภายนอก จะไม่ดาวน์เกรด Gateway
ที่ใหม่กว่า และจะไม่ลบล้างการปักหมุดช่องทาง `extended-stable`

เมื่ออัปเดตสำเร็จ แอปจะจัดคิวเหตุการณ์ต้อนรับแบบครั้งเดียวสำหรับเซสชันโดยตรงระดับบนสุด
ล่าสุดที่มีการโต้ตอบกับผู้ใช้/ช่องทางจริง การเรียกใช้ Cron,
Heartbeat และการอัปเดตเซสชันเฉพาะเบื้องหลังจะไม่เปลี่ยนการเลือกนั้น ใน
โหมดระยะไกล แอปจะอัปเดตเฉพาะรันไทม์ Node ของ Mac ภายในเครื่องและส่งเหตุการณ์
เฉพาะเมื่อ Gateway ระยะไกลที่เชื่อมต่ออยู่มีเวอร์ชันใหม่เท่ากับหรือใหม่กว่าแอป

## หลังการอัปเดต

<Steps>

### เรียกใช้ doctor

```bash
openclaw doctor
```

ย้ายข้อมูลการกำหนดค่า ตรวจสอบนโยบาย DM และตรวจสอบสถานะ Gateway รายละเอียด: [Doctor](/th/gateway/doctor)

### รีสตาร์ต Gateway

```bash
openclaw gateway restart
```

### ตรวจสอบยืนยัน

```bash
openclaw health
```

</Steps>

## การย้อนกลับ

การย้อนกลับมีสองระดับ:

1. ติดตั้งโค้ด OpenClaw เวอร์ชันเก่าอีกครั้งโดยคงสถานะปัจจุบันไว้
2. กู้คืนสถานะก่อนการอัปเดตเฉพาะเมื่อโค้ดเก่าไม่สามารถใช้การกำหนดค่า
   หรือฐานข้อมูลที่ย้ายข้อมูลแล้วได้

เริ่มด้วยการย้อนกลับเฉพาะโค้ด การกู้คืนสถานะจะละทิ้งการเปลี่ยนแปลงที่เกิดขึ้นหลังจาก
การสำรองข้อมูล

### ก่อนอัปเดต: สร้างข้อมูลสำรองที่ตรวจสอบยืนยันแล้ว

`openclaw update` จะเก็บสำเนาการกำหนดค่าก่อนการอัปเดตโดยอัตโนมัติ แต่ไม่ได้
สร้างจุดกู้คืนสถานะทั้งหมด ก่อนการอัปเดตครั้งสำคัญ ให้สร้างจุดดังกล่าว
อย่างชัดเจน:

```bash
mkdir -p ~/Backups/openclaw
openclaw backup create --output ~/Backups/openclaw --verify
```

ไฟล์รายการของอาร์ไคฟ์จะบันทึกเวอร์ชัน OpenClaw และพาธต้นทางที่รวมอยู่
ในการสำรองข้อมูล อาร์ไคฟ์อาจมีข้อมูลประจำตัว โปรไฟล์การยืนยันตัวตน และสถานะ
ช่องทาง ดังนั้นให้จัดเก็บด้วยสิทธิ์สำหรับเจ้าของเท่านั้นและการป้องกันระดับเดียวกับ
ไดเรกทอรีสถานะที่ใช้งานอยู่ ดูไฟล์ที่รวมและจงใจ
ไม่รวมได้ที่ [การสำรองข้อมูล](/th/cli/backup)

สำหรับจุดกู้คืนแบบตรงกันทุกไบต์ซึ่งรวมอาร์ติแฟกต์ชั่วคราวที่อาร์ไคฟ์
แบบพกพาไม่รวมไว้ ให้หยุด Gateway แล้วใช้สแนปช็อตระบบไฟล์ โวลุ่ม หรือ VM
ที่แพลตฟอร์มของคุณมีให้

### ย้อนกลับการติดตั้งแพ็กเกจ

แสดงรายการเวอร์ชันที่เผยแพร่แล้ว จากนั้นดูตัวอย่างและติดตั้งเวอร์ชันที่ทราบว่าใช้งานได้ดี:

```bash
npm view openclaw versions --json
openclaw update --tag <known-good-version> --dry-run
openclaw update --tag <known-good-version>
```

ควรใช้ `openclaw update --tag` แทนการติดตั้งโดยตรงผ่านตัวจัดการแพ็กเกจ โดยจะ
ตรวจพบการดาวน์เกรด ขอการยืนยัน ดำเนินการปรับ Plugin ที่มีการจัดการให้สอดคล้องกัน
และตรวจสอบความเข้ากันได้กับเป้าหมายที่ติดตั้ง รีเฟรชข้อมูลเมตาของบริการ
รีสตาร์ต Gateway และตรวจสอบยืนยันเวอร์ชันที่กำลังทำงาน หากช่องทางที่จัดเก็บไว้
คือ `extended-stable` ให้ใช้
`--channel stable --tag <known-good-version>` เนื่องจากแท็กแบบใช้ครั้งเดียวที่ระบุแน่นอนไม่สามารถ
ใช้ร่วมกับตัวเลือก `extended-stable` ได้

การอัปเดตแพ็กเกจจะเตรียมและตรวจสอบยืนยันแพ็กเกจเป้าหมายก่อนเปิดใช้งาน หาก
การสลับระบบไฟล์หรือการแทนที่ชิมคำสั่งล้มเหลว OpenClaw จะกู้คืนแพ็กเกจเก่า
โดยอัตโนมัติ หลังจากสลับสำเร็จ หากการตรวจสอบสถานะ Gateway ล้มเหลวในภายหลัง
ระบบจะรายงานเวอร์ชันก่อนหน้าและคำแนะนำการย้อนกลับด้วยตนเอง แทนที่จะ
แทนที่แพ็กเกจอีกครั้งโดยอัตโนมัติ

หากใช้เส้นทางการอัปเดตผ่าน CLI ไม่ได้ ให้ใช้ตัวจัดการแพ็กเกจและขอบเขต
การติดตั้งเดียวกับที่เป็นเจ้าของ Gateway ปัจจุบัน:

```bash
openclaw gateway stop
npm i -g openclaw@<known-good-version>
openclaw gateway install --force
openclaw gateway restart
```

แทนที่ `npm` ด้วย `pnpm` หรือ `bun` เมื่อตัวจัดการนั้นเป็นเจ้าของการติดตั้ง ระหว่าง
การกู้คืนจากเหตุขัดข้อง ให้ป้องกันไม่ให้ตัวอัปเดตอัตโนมัติที่เปิดใช้งานอยู่ติดตั้ง
รุ่นที่ใหม่กว่าทันที โดยตั้งค่า `OPENCLAW_NO_AUTO_UPDATE=1` ในสภาพแวดล้อมของ Gateway

### ย้อนกลับซอร์สเช็กเอาต์

ใช้เช็กเอาต์ที่สะอาดและเลือกแท็กหรือคอมมิตที่ทราบว่าใช้งานได้ดี:

```bash
git fetch --all --tags
git checkout --detach <known-good-tag-or-commit>
pnpm install && pnpm build
openclaw gateway restart
```

หากต้องการกลับไปยังเวอร์ชันล่าสุด: `git checkout main && git pull`

ตัวอัปเดตจะคืน git checkout ไปยังบรานช์และ
SHA ก่อนหน้าโดยอัตโนมัติเมื่อการติดตั้งการขึ้นต่อกัน การบิลด์ การบิลด์ UI หรือ doctor ล้มเหลวหลังจากเริ่ม
การอัปเดต git แล้ว แต่ยังคงต้องเช็กเอาต์ด้วยตนเองเมื่อจงใจเลือก
คอมมิตที่เก่ากว่า

### การดาวน์เกรดข้ามการย้ายเซสชันไปยัง SQLite

ก่อนเริ่ม OpenClaw รุ่นเก่าที่ใช้ไฟล์ ให้ใช้ CLI ปัจจุบันเพื่อ
กู้คืนอาร์ติแฟกต์บทสนทนาแบบเดิมที่เก็บถาวรไว้:

```bash
openclaw gateway stop
openclaw doctor --session-sqlite restore --session-sqlite-all-agents
```

การดำเนินการนี้จะไม่ลบข้อมูล SQLite เซสชันที่สร้างขึ้นหลังการย้ายข้อมูลไปยัง SQLite
จะมีอยู่เฉพาะใน SQLite และจะไม่ปรากฏในรันไทม์รุ่นเก่า ดู
[การดาวน์เกรดหลังการย้ายเซสชันไปยัง SQLite](/th/cli/doctor#downgrading-after-session-sqlite-migration)

### กู้คืนสถานะเฉพาะเมื่อจำเป็น

หากโค้ดเก่าไม่สามารถอ่านการกำหนดค่าหรือสคีมาฐานข้อมูลที่ใหม่กว่าได้ ให้หยุด
Gateway และกู้คืนสแนปช็อตระบบไฟล์ โวลุ่ม หรือ VM ก่อนการอัปเดตที่ตรวจสอบยืนยันแล้ว
เก็บสถานะปัจจุบันแยกไว้ก่อนกู้คืน เนื่องจากการดำเนินการนี้จะลบ
การเปลี่ยนแปลงที่เกิดขึ้นหลังจากสแนปช็อต

อาร์ไคฟ์ `openclaw backup create` แบบครอบคลุมรองรับการสร้างและการตรวจสอบยืนยัน แต่
ไม่รองรับการเปิดใช้งานทั้งอาร์ไคฟ์แทนที่เดิมโดยตรง ให้แตกอาร์ไคฟ์แบบครอบคลุมไปยังไดเรกทอรี
เตรียมการ แล้วใช้การจับคู่ต้นทางกับอาร์ไคฟ์ใน `manifest.json` สำหรับการกู้คืน
แบบออฟไลน์ ในทำนองเดียวกัน `openclaw backup sqlite restore` จะเขียนฐานข้อมูลที่ตรวจสอบยืนยันแล้ว
ไปยังเป้าหมายใหม่ โดยการเปิดใช้งานเป้าหมายนั้นยังคงเป็นขั้นตอนออฟไลน์ที่ผู้ปฏิบัติงาน
ต้องดำเนินการอย่างชัดเจน

### ตรวจสอบยืนยันการย้อนกลับ

```bash
openclaw --version
openclaw health
openclaw plugins list --json
openclaw gateway status --deep --json
openclaw doctor --lint --json
```

## หากติดขัด

- เรียกใช้ `openclaw doctor` อีกครั้งและอ่านผลลัพธ์อย่างละเอียด
- สำหรับ `openclaw update --channel dev` ในซอร์สเช็กเอาต์ ตัวอัปเดตจะบูตสแตรป `pnpm` โดยอัตโนมัติเมื่อจำเป็น หากพบข้อผิดพลาดในการบูตสแตรป pnpm/corepack ให้ติดตั้ง `pnpm` ด้วยตนเอง (หรือเปิดใช้งาน `corepack` อีกครั้ง) แล้วเรียกใช้การอัปเดตใหม่
- ตรวจสอบ: [การแก้ไขปัญหา](/th/gateway/troubleshooting)
- สอบถามใน Discord: [https://discord.gg/clawd](https://discord.gg/clawd)

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

- [ภาพรวมการติดตั้ง](/th/install): วิธีการติดตั้งทั้งหมด
- [Doctor](/th/gateway/doctor): การตรวจสอบสถานะหลังการอัปเดต
- [การย้ายข้อมูล](/th/install/migrating): คู่มือการย้ายข้อมูลระหว่างเวอร์ชันหลัก
