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 ภายในเครื่องบนโฮสต์อยู่แล้ว
ขั้นตอนเริ่มต้นใช้งาน/กำหนดค่าสามารถนำมาใช้ซ้ำได้โดยตรง setup-token ของ Anthropic ยังคง
เป็นเส้นทางการตรวจสอบสิทธิ์ด้วยโทเค็นที่รองรับ แต่ OpenClaw จะเลือกการนำ Claude CLI
มาใช้ซ้ำก่อนเมื่อพร้อมใช้งาน
การแลกเปลี่ยน OAuth (วิธีการเข้าสู่ระบบ)
ขั้นตอนการเข้าสู่ระบบแบบโต้ตอบของ OpenClaw ถูกนำไปใช้ใน openclaw/plugin-sdk/llm.ts และเชื่อมต่อกับวิซาร์ด/คำสั่งต่างๆ
setup-token ของ Anthropic
รูปแบบขั้นตอน:
- สร้างโทเค็นโดยเรียกใช้
claude setup-tokenบนเครื่องใดก็ได้ที่มี Claude Code จากนั้นเริ่มใช้ setup-token ของ Anthropic หรือวางโทเค็นจาก OpenClaw - OpenClaw จัดเก็บข้อมูลประจำตัว Anthropic ที่ได้ไว้ในโปรไฟล์การตรวจสอบสิทธิ์
- การเลือกโมเดลยังคงอยู่ที่
anthropic/... - โปรไฟล์การตรวจสอบสิทธิ์ Anthropic ที่มีอยู่ยังคงพร้อมให้ใช้เพื่อย้อนกลับ/ควบคุมลำดับ
OpenAI Codex (ChatGPT OAuth)
OAuth ของ OpenAI Codex รองรับการใช้งานภายนอก 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และยอมรับเฉพาะโฮสต์ลูปแบ็กเท่านั้น แทนค่าได้ด้วย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
- ข้อมูลอ้างอิงการกำหนดค่า - คีย์การกำหนดค่าการตรวจสอบสิทธิ์