Fundamentals
OAuth
OpenClaw รองรับ OAuth ("การยืนยันตัวตนแบบสมาชิก") สำหรับผู้ให้บริการที่มีตัวเลือกนี้ โดยเฉพาะ OpenAI Codex (ChatGPT OAuth) และ การนำ Anthropic Claude CLI มาใช้ซ้ำ สำหรับ Anthropic ในทางปฏิบัติแบ่งได้ดังนี้:
- คีย์ API ของ Anthropic: ใช้การเรียกเก็บเงินผ่าน API ของ Anthropic ตามปกติ
- Anthropic Claude CLI / การยืนยันตัวตนแบบสมาชิกภายใน OpenClaw: เจ้าหน้าที่ Anthropic
แจ้งเราว่าการใช้งานลักษณะนี้ได้รับอนุญาตอีกครั้ง ดังนั้น OpenClaw จึงถือว่าการนำ Claude CLI
มาใช้ซ้ำและการใช้
claude -pได้รับอนุญาตสำหรับการเชื่อมต่อนี้ เว้นแต่ Anthropic จะเผยแพร่นโยบายใหม่ สำหรับการใช้งาน Anthropic ในระบบจริง การยืนยันตัวตนด้วยคีย์ API ยังคงเป็นแนวทางที่ปลอดภัยกว่าและแนะนำให้ใช้
OpenClaw จัดเก็บทั้งการยืนยันตัวตนด้วยคีย์ API ของ OpenAI และ ChatGPT/Codex OAuth
ไว้ภายใต้รหัสผู้ให้บริการมาตรฐาน openai รหัสโปรไฟล์ openai-codex:* และรายการ
auth.order.openai-codex แบบเก่าเป็นสถานะดั้งเดิมที่ซ่อมแซมได้ด้วย
openclaw doctor --fix; สำหรับการกำหนดค่าใหม่ ให้ใช้รหัสโปรไฟล์ openai:* และ
auth.order.openai
หน้านี้ครอบคลุม:
- วิธีทำงานของ การแลกเปลี่ยนโทเค็น OAuth (PKCE)
- ตำแหน่งที่ จัดเก็บ โทเค็น (และเหตุผล)
- วิธีจัดการ หลายบัญชี (โปรไฟล์ + การเขียนทับรายเซสชัน)
Plugin ของผู้ให้บริการที่มีขั้นตอน OAuth หรือคีย์ API ของตนเองจะทำงานผ่าน จุดเริ่มต้นเดียวกัน:
openclaw models auth login --provider <id>จุดรับโทเค็น (เหตุผลที่ต้องมี)
โดยทั่วไปผู้ให้บริการ OAuth จะสร้างโทเค็นรีเฟรชใหม่ทุกครั้งที่เข้าสู่ระบบหรือรีเฟรช ผู้ให้บริการบางรายทำให้โทเค็นรีเฟรชก่อนหน้าใช้ไม่ได้เมื่อออกโทเค็นใหม่สำหรับ ผู้ใช้/แอปเดียวกัน อาการที่พบในทางปฏิบัติคือ เมื่อเข้าสู่ระบบทั้งผ่าน OpenClaw และ ผ่าน Claude Code / Codex CLI ระบบใดระบบหนึ่งอาจถูกนำออกจากระบบแบบสุ่มในภายหลัง
เพื่อลดปัญหานี้ OpenClaw จึงใช้ที่เก็บโปรไฟล์การยืนยันตัวตนเป็น จุดรับโทเค็น:
- รันไทม์อ่านข้อมูลประจำตัวจากตำแหน่งเดียวต่อเอเจนต์
- โปรไฟล์หลายรายการอยู่ร่วมกันได้และกำหนดเส้นทางได้อย่างแน่นอน
- การนำ CLI ภายนอกมาใช้ซ้ำขึ้นอยู่กับผู้ให้บริการ: เมื่อ OpenClaw เป็นเจ้าของโปรไฟล์
OAuth ภายในเครื่องสำหรับผู้ให้บริการแล้ว โทเค็นรีเฟรชภายในเครื่องจะเป็นข้อมูลมาตรฐาน
หากโทเค็นรีเฟรชภายในเครื่องนั้นถูกปฏิเสธ OpenClaw จะรายงานโปรไฟล์ที่ต้อง
ยืนยันตัวตนใหม่ แทนที่จะย้อนกลับไปใช้ข้อมูลโทเค็นจาก CLI ภายนอก
การเริ่มต้นจาก Codex CLI มีขอบเขตแคบยิ่งกว่า โดยทำได้เพียงเติมข้อมูลเริ่มต้นให้โปรไฟล์ว่าง
ในรูปแบบ
openai:defaultก่อนที่ OpenClaw จะเป็นเจ้าของ OAuth ของผู้ให้บริการนั้น หลังจากนั้น การรีเฟรชที่ OpenClaw เป็นเจ้าของจะยังคงเป็นข้อมูลมาตรฐาน - เส้นทางสถานะ/การเริ่มระบบจะจำกัดการค้นหา CLI ภายนอกไว้เฉพาะชุดผู้ให้บริการ ที่กำหนดค่าไว้แล้ว จึงไม่ตรวจสอบที่เก็บข้อมูลเข้าสู่ระบบของ CLI ที่ไม่เกี่ยวข้อง สำหรับการตั้งค่าที่มีผู้ให้บริการเพียงรายเดียว
การจัดเก็บ (ตำแหน่งของโทเค็น)
ข้อมูลลับจะอยู่แยกตามเอเจนต์ โดยใช้ชื่อเชิงตรรกะ auth-profiles.json เป็นคีย์
(ที่เก็บเบื้องหลังคือฐานข้อมูล SQLite ของเอเจนต์ โดยคงชื่อ JSON ไว้เพื่อ
ความเข้ากันได้และการแสดงผลในเครื่องมือ):
- โปรไฟล์การยืนยันตัวตน (OAuth + คีย์ API + การอ้างอิงระดับค่าที่ไม่บังคับ):
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - ไฟล์เพื่อความเข้ากันได้กับระบบดั้งเดิม:
~/.openclaw/agents/<agentId>/agent/auth.json(รายการapi_keyแบบคงที่จะถูกล้างออกเมื่อค้นพบ)
ไฟล์ดั้งเดิมสำหรับนำเข้าเท่านั้น (ยังรองรับอยู่ แต่ไม่ใช่ที่เก็บหลัก):
~/.openclaw/credentials/oauth.json(นำเข้าสู่ที่เก็บโปรไฟล์การยืนยันตัวตนเมื่อใช้งานครั้งแรก)
รายการทั้งหมดข้างต้นรองรับ $OPENCLAW_STATE_DIR ด้วย (เขียนทับไดเรกทอรีสถานะ) เอกสารอ้างอิงฉบับเต็ม: /gateway/configuration-reference#auth-storage
สำหรับการอ้างอิงข้อมูลลับแบบคงที่และพฤติกรรมการเปิดใช้งานสแนปช็อตขณะรันไทม์ โปรดดู การจัดการข้อมูลลับ
เมื่อเอเจนต์รองไม่มีโปรไฟล์การยืนยันตัวตนภายในเครื่อง OpenClaw จะใช้การสืบทอดแบบ อ่านผ่านจากที่เก็บของเอเจนต์เริ่มต้น/หลัก โดยจะไม่โคลนที่เก็บของเอเจนต์หลักเมื่ออ่าน โทเค็นรีเฟรช OAuth มีความละเอียดอ่อนเป็นพิเศษ ขั้นตอนการคัดลอกตามปกติจึงข้ามโทเค็นเหล่านี้ โดยค่าเริ่มต้น เนื่องจากผู้ให้บริการบางรายหมุนเวียนหรือทำให้โทเค็นรีเฟรชใช้ไม่ได้หลังใช้งาน ให้กำหนดค่าการเข้าสู่ระบบ OAuth แยกต่างหากสำหรับเอเจนต์เมื่อต้องใช้บัญชีอิสระ
การนำ Anthropic Claude CLI มาใช้ซ้ำ
OpenClaw รองรับการนำ Anthropic Claude CLI มาใช้ซ้ำและ claude -p ในฐานะ
แนวทางการยืนยันตัวตนที่ได้รับอนุญาต หากมีการเข้าสู่ระบบ Claude ภายในเครื่องบนโฮสต์อยู่แล้ว
ขั้นตอนเริ่มต้นใช้งาน/กำหนดค่าสามารถนำมาใช้ซ้ำได้โดยตรง โทเค็นตั้งค่าของ Anthropic
ยังคงเป็นแนวทางการยืนยันตัวตนด้วยโทเค็นที่รองรับ แต่ OpenClaw เลือกใช้ Claude CLI
ซ้ำเป็นอันดับแรกเมื่อพร้อมใช้งาน
การแลกเปลี่ยน OAuth (วิธีทำงานของการเข้าสู่ระบบ)
ขั้นตอนการเข้าสู่ระบบแบบโต้ตอบของ OpenClaw ถูกนำไปใช้ใน openclaw/plugin-sdk/llm.ts และเชื่อมต่อเข้ากับตัวช่วยตั้งค่า/คำสั่งต่างๆ
โทเค็นตั้งค่าของ Anthropic
รูปแบบขั้นตอน:
- เริ่มใช้โทเค็นตั้งค่าหรือวางโทเค็นของ Anthropic จาก OpenClaw
- OpenClaw จัดเก็บข้อมูลประจำตัว Anthropic ที่ได้ไว้ในโปรไฟล์การยืนยันตัวตน
- การเลือกโมเดลยังคงใช้
anthropic/... - โปรไฟล์การยืนยันตัวตน Anthropic ที่มีอยู่ยังคงพร้อมใช้สำหรับการย้อนกลับ/ควบคุมลำดับ
OpenAI Codex (ChatGPT OAuth)
OpenAI Codex OAuth รองรับการใช้งานนอก Codex CLI อย่างชัดเจน รวมถึงเวิร์กโฟลว์ของ OpenClaw
คำสั่งเข้าสู่ระบบใช้รหัสผู้ให้บริการ OpenAI มาตรฐาน:
openclaw models auth login --provider openaiใช้ --profile-id openai:<name> สำหรับบัญชี ChatGPT/Codex OAuth หลายบัญชี
ในเอเจนต์เดียว อย่าใช้ openai-codex:<name> สำหรับโปรไฟล์ใหม่ Doctor จะย้าย
คำนำหน้าแบบเก่านี้ไปยังรหัสโปรไฟล์ openai:* ที่ไม่ชนกัน ให้เรียกใช้
openclaw models auth list --provider openai หลังการซ่อมแซม ก่อนคัดลอก
รหัสโปรไฟล์ไปยัง auth.order หรือ /model ...@<profileId>
รูปแบบขั้นตอน (PKCE):
- สร้างตัวตรวจสอบ/คำท้า PKCE และ
stateแบบสุ่ม - เปิด
https://auth.openai.com/oauth/authorize?...(ขอบเขตopenid profile email offline_access) - พยายามรับคอลแบ็กที่
http://localhost:1455/auth/callback(โฮสต์คอลแบ็ก มีค่าเริ่มต้นเป็นlocalhostและยอมรับเฉพาะโฮสต์แบบ local loopback; เขียนทับได้ด้วยOPENCLAW_OAUTH_CALLBACK_HOST) - หากสามารถวางโค้ดได้ก่อนที่คอลแบ็กจะมาถึง (หรือใช้งานจากระยะไกล/ไม่มีส่วนแสดงผล และคอลแบ็กไม่สามารถผูกพอร์ตได้) ให้วาง URL เปลี่ยนเส้นทาง/โค้ดแทน การวางด้วยตนเองจะแข่งกับคอลแบ็กจากเบราว์เซอร์ และรายการที่เสร็จก่อนจะเป็นผู้ชนะ
- แลกเปลี่ยนโค้ดที่
https://auth.openai.com/oauth/token - แยก
accountIdจากโทเค็นการเข้าถึงและจัดเก็บ{ access, refresh, expires, accountId }
เส้นทางตัวช่วยตั้งค่าคือ openclaw onboard → ตัวเลือกการยืนยันตัวตน openai
การรีเฟรช + การหมดอายุ
โปรไฟล์จัดเก็บเวลาประทับ expires ขณะรันไทม์:
- หาก
expiresอยู่ในอนาคต ให้ใช้โทเค็นการเข้าถึงที่จัดเก็บไว้ - หากหมดอายุ ให้รีเฟรช (ภายใต้การล็อกไฟล์) และเขียนทับข้อมูลประจำตัวที่จัดเก็บไว้
- หากเอเจนต์รองอ่านโปรไฟล์ OAuth ของเอเจนต์หลักที่สืบทอดมา การรีเฟรชจะเขียนกลับไปยัง ที่เก็บของเอเจนต์หลัก แทนที่จะคัดลอกโทเค็นรีเฟรชไปยังที่เก็บของเอเจนต์รอง
- ข้อมูลประจำตัว CLI ที่จัดการจากภายนอก (Claude CLI, การเริ่มต้นจาก Codex CLI แบบจำกัด; โปรดดู จุดรับโทเค็น) จะถูกอ่านใหม่ แทนการใช้โทเค็นรีเฟรชที่คัดลอกมา หากการรีเฟรชที่มีการจัดการล้มเหลว OpenClaw จะรายงานโปรไฟล์ที่ได้รับผลกระทบเพื่อให้ยืนยันตัวตนใหม่ แทนที่จะส่งคืนข้อมูลโทเค็น จาก CLI ภายนอก
ขั้นตอนการรีเฟรชเป็นไปโดยอัตโนมัติ โดยทั่วไปคุณไม่จำเป็นต้องจัดการโทเค็นด้วยตนเอง
หลายบัญชี (โปรไฟล์) + การกำหนดเส้นทาง
มีสองรูปแบบ:
1) แนะนำ: แยกเอเจนต์
หากไม่ต้องการให้บัญชี "ส่วนตัว" และ "งาน" มีปฏิสัมพันธ์กัน ให้ใช้เอเจนต์ที่แยกจากกัน (เซสชัน + ข้อมูลประจำตัว + พื้นที่ทำงานแยกกัน):
openclaw agents add workopenclaw agents add personalจากนั้นกำหนดค่าการยืนยันตัวตนแยกตามเอเจนต์ (ตัวช่วยตั้งค่า) และกำหนดเส้นทางแชตไปยังเอเจนต์ที่ถูกต้อง
2) ขั้นสูง: หลายโปรไฟล์ในเอเจนต์เดียว
ที่เก็บโปรไฟล์การยืนยันตัวตนรองรับรหัสโปรไฟล์หลายรายการสำหรับผู้ให้บริการเดียวกัน เลือกว่าจะใช้รายการใดได้ดังนี้:
- ใช้ทั่วทั้งระบบผ่านลำดับการกำหนดค่า (
auth.order) - ใช้รายเซสชันผ่าน
/model ...@<profileId>
ตัวอย่าง (การเขียนทับสำหรับเซสชัน):
/model Opus@anthropic:work
แสดงรหัสโปรไฟล์ที่มีอยู่ด้วย:
openclaw models auth list --provider <id>เอกสารที่เกี่ยวข้อง:
- การสลับโมเดลเมื่อขัดข้อง (กฎการหมุนเวียน + ระยะพัก)
- คำสั่งเครื่องหมายทับ (พื้นผิวคำสั่ง)
ที่เกี่ยวข้อง
- การยืนยันตัวตน - ภาพรวมการยืนยันตัวตนของผู้ให้บริการโมเดล
- ข้อมูลลับ - การจัดเก็บข้อมูลประจำตัวและ SecretRef
- เอกสารอ้างอิงการกำหนดค่า - คีย์การกำหนดค่าการยืนยันตัวตน