Maintenance

การอัปเดต

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

สำหรับการแทนที่อิมเมจของ Docker, Podman และ Kubernetes โปรดดู การอัปเกรดอิมเมจคอนเทนเนอร์ Gateway จะดำเนินงานอัปเกรดที่ปลอดภัยต่อการเริ่มต้นระบบก่อนพร้อมให้บริการ และจะออกหากสถานะที่เมานต์ไว้ จำเป็นต้องซ่อมแซมด้วยตนเอง

แนะนำ: openclaw update

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

bash
openclaw update

สลับช่องทางหรือระบุเวอร์ชันเป้าหมาย:

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

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

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

--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 ที่มีการจัดการ การไม่มีรุ่นเบต้าถือเป็นคำเตือน ไม่ใช่ความล้มเหลว: การอัปเดตแกนหลักยังคงสำเร็จได้ ขณะที่ Plugin ย้อนกลับไปใช้ รุ่นค่าเริ่มต้น/latest ที่บันทึกไว้

ดูความหมายของช่องทางได้ที่ ช่องทางการเผยแพร่

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

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

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

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

bash
openclaw update --channel dev --dry-runopenclaw 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 stopsudo /usr/bin/npm i -g openclaw@latestopenclaw gateway install --forceopenclaw gateway restart

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

bash
openclaw --versioncurl -fsS http://127.0.0.1:18789/readyzopenclaw plugins list --jsonopenclaw gateway status --deep --jsonopenclaw doctor --lint --json

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

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

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

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

Read-only package tree

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

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

Hardened systemd units

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

ini
ReadWritePaths=/var/lib/openclaw /home/openclaw/.openclaw /tmp
Disk-space preflight

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

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

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

json5
{  update: {    channel: "stable",    auto: {      enabled: true,      stableDelayHours: 6,      stableJitterHours: 12,      betaCheckIntervalHours: 1,    },  },}
ช่องทาง ลักษณะการทำงาน
stable รอ stableDelayHours (ค่าเริ่มต้น: 6) จากนั้นดำเนินการโดยใช้ค่าคลาดเคลื่อนแบบกำหนดแน่นอนตลอดช่วง stableJitterHours (ค่าเริ่มต้น: 12) เพื่อทยอยเปิดตัว
extended-stable ตรวจสอบคำใบ้การอัปเดตแบบอ่านอย่างเดียวเมื่อเริ่มต้นระบบและทุก 24 ชั่วโมงเมื่อเปิดใช้ checkOnStart โดยจะไม่ดำเนินการอัตโนมัติเด็ดขาด
beta ตรวจสอบทุก betaCheckIntervalHours (ค่าเริ่มต้น: 1) และดำเนินการทันที
dev ไม่มีการดำเนินการอัตโนมัติ ให้ใช้ openclaw update ด้วยตนเอง

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

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

การ์ดอัปเดตในแถบด้านข้างของ Control UI จะเริ่มโฟลว์ update.run เดียวกันนี้ ใน แอป macOS ที่ลงนามแล้ว การ์ดจะอัปเดตแอปผ่าน Sparkle ก่อน หลังจากเปิดใหม่ แอปจะปรับ Gateway ภายในเครื่องที่ได้รับการจัดการให้เป็นเวอร์ชันเดียวกัน

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

เรียกใช้ doctor

bash
openclaw doctor

ย้ายรูปแบบการกำหนดค่า ตรวจสอบนโยบาย DM และตรวจสอบสถานะของ Gateway รายละเอียด: Doctor

รีสตาร์ต Gateway

bash
openclaw gateway restart

ตรวจสอบ

bash
openclaw health

ย้อนกลับ

ตรึงเวอร์ชัน (npm)

bash
npm i -g openclaw@<version>openclaw doctoropenclaw gateway restart

ตรึงคอมมิต (ซอร์ส)

bash
git fetch origingit checkout "$(git rev-list -n 1 --before=\"2026-01-01\" origin/main)"pnpm install && pnpm buildopenclaw gateway restart

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

หากคุณติดขัด

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

เนื้อหาที่เกี่ยวข้อง

Was this useful?
On this page

On this page