Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

“การจับคู่” คือขั้นตอนการอนุมัติสิทธิ์เข้าถึงอย่างชัดเจนของ OpenClaw ใช้ในสองตำแหน่ง:
  1. การจับคู่ DM (ใครบ้างที่ได้รับอนุญาตให้คุยกับบอต)
  2. การจับคู่ Node (อุปกรณ์/Node ใดบ้างที่ได้รับอนุญาตให้เข้าร่วมเครือข่าย Gateway)
บริบทด้านความปลอดภัย: ความปลอดภัย

1) การจับคู่ DM (การเข้าถึงแชตขาเข้า)

เมื่อช่องทางถูกกำหนดค่าด้วยนโยบาย DM pairing ผู้ส่งที่ไม่รู้จักจะได้รับโค้ดสั้น และข้อความของพวกเขาจะ ไม่ถูกประมวลผล จนกว่าคุณจะอนุมัติ นโยบาย DM เริ่มต้นมีเอกสารไว้ที่: ความปลอดภัย dmPolicy: "open" จะเป็นสาธารณะก็ต่อเมื่อ allowlist DM ที่มีผลรวม "*" อยู่ด้วย การตั้งค่าและการตรวจสอบความถูกต้องต้องใช้ไวลด์การ์ดนั้นสำหรับการกำหนดค่า public-open หากสถานะที่มีอยู่มี open พร้อมรายการ allowFrom แบบเจาะจง runtime จะยังคงอนุญาตเฉพาะผู้ส่งเหล่านั้นเท่านั้น และการอนุมัติใน pairing-store จะไม่ขยายสิทธิ์เข้าถึง open โค้ดจับคู่:
  • 8 อักขระ ตัวพิมพ์ใหญ่ ไม่มีอักขระที่สับสนได้ง่าย (0O1I)
  • หมดอายุหลัง 1 ชั่วโมง บอตจะส่งข้อความจับคู่เฉพาะเมื่อมีการสร้างคำขอใหม่เท่านั้น (โดยประมาณหนึ่งครั้งต่อชั่วโมงต่อผู้ส่ง)
  • คำขอจับคู่ DM ที่รอดำเนินการถูกจำกัดไว้ที่ 3 รายการต่อช่องทาง โดยค่าเริ่มต้น คำขอเพิ่มเติมจะถูกเพิกเฉยจนกว่าจะมีรายการหนึ่งหมดอายุหรือได้รับการอนุมัติ

อนุมัติผู้ส่ง

openclaw pairing list telegram
openclaw pairing approve telegram <CODE>
หากยังไม่มีการกำหนดค่าเจ้าของคำสั่ง การอนุมัติโค้ดจับคู่ DM จะบูตสแตรป commands.ownerAllowFrom ไปยังผู้ส่งที่ได้รับอนุมัติด้วย เช่น telegram:123456789 ซึ่งทำให้การตั้งค่าครั้งแรกมีเจ้าของที่ชัดเจนสำหรับคำสั่งที่มีสิทธิ์พิเศษและพรอมป์อนุมัติ exec หลังจากมีเจ้าของแล้ว การอนุมัติการจับคู่ในภายหลังจะให้เฉพาะสิทธิ์เข้าถึง DM เท่านั้น โดยจะไม่เพิ่มเจ้าของเพิ่มเติม ช่องทางที่รองรับ: discord, feishu, googlechat, imessage, irc, line, matrix, mattermost, msteams, nextcloud-talk, nostr, openclaw-weixin, signal, slack, synology-chat, telegram, twitch, whatsapp, zalo, zalouser

กลุ่มผู้ส่งที่นำกลับมาใช้ซ้ำได้

ใช้ accessGroups ระดับบนสุดเมื่อชุดผู้ส่งที่เชื่อถือได้เดียวกันควรถูกใช้กับ หลายช่องทางข้อความ หรือกับทั้ง allowlist ของ DM และกลุ่ม กลุ่มแบบคงที่ใช้ type: "message.senders" และถูกอ้างอิงด้วย accessGroup:<name> จาก allowlist ของช่องทาง:
{
  accessGroups: {
    operators: {
      type: "message.senders",
      members: {
        discord: ["discord:123456789012345678"],
        telegram: ["987654321"],
        whatsapp: ["+15551234567"],
      },
    },
  },
  channels: {
    telegram: { dmPolicy: "allowlist", allowFrom: ["accessGroup:operators"] },
    whatsapp: { groupPolicy: "allowlist", groupAllowFrom: ["accessGroup:operators"] },
  },
}
กลุ่มสิทธิ์เข้าถึงมีเอกสารโดยละเอียดที่นี่: กลุ่มสิทธิ์เข้าถึง

ตำแหน่งที่จัดเก็บสถานะ

จัดเก็บภายใต้ ~/.openclaw/credentials/:
  • คำขอที่รอดำเนินการ: <channel>-pairing.json
  • ที่เก็บ allowlist ที่อนุมัติแล้ว:
    • บัญชีเริ่มต้น: <channel>-allowFrom.json
    • บัญชีที่ไม่ใช่ค่าเริ่มต้น: <channel>-<accountId>-allowFrom.json
พฤติกรรมการกำหนดขอบเขตบัญชี:
  • บัญชีที่ไม่ใช่ค่าเริ่มต้นอ่าน/เขียนเฉพาะไฟล์ allowlist ที่กำหนดขอบเขตของตน
  • บัญชีเริ่มต้นใช้ไฟล์ allowlist แบบไม่กำหนดขอบเขตตามช่องทาง
ให้ถือว่าสิ่งเหล่านี้เป็นข้อมูลอ่อนไหว (เพราะควบคุมสิทธิ์เข้าถึงผู้ช่วยของคุณ)
ที่เก็บ allowlist สำหรับการจับคู่ใช้สำหรับการเข้าถึง DM การอนุญาตกลุ่มแยกออกมาต่างหาก การอนุมัติโค้ดจับคู่ DM ไม่ได้อนุญาตให้ผู้ส่งนั้นรันคำสั่งกลุ่ม หรือควบคุมบอตในกลุ่มโดยอัตโนมัติ การบูตสแตรปเจ้าของคนแรกเป็นสถานะการกำหนดค่า แยกต่างหากใน commands.ownerAllowFrom และการส่งมอบแชตกลุ่มยังคงทำตาม allowlist กลุ่มของช่องทาง (เช่น groupAllowFrom, groups หรือการแทนที่แบบต่อกลุ่ม หรือต่อหัวข้อ ขึ้นอยู่กับช่องทาง)

2) การจับคู่อุปกรณ์ Node (Node iOS/Android/macOS/headless)

Node เชื่อมต่อกับ Gateway ในฐานะ อุปกรณ์ ด้วย role: node Gateway สร้างคำขอจับคู่อุปกรณ์ที่ต้องได้รับการอนุมัติ

จับคู่ผ่าน Telegram (แนะนำสำหรับ iOS)

หากคุณใช้ Plugin device-pair คุณสามารถทำการจับคู่อุปกรณ์ครั้งแรกได้ทั้งหมดจาก Telegram:
  1. ใน Telegram ให้ส่งข้อความถึงบอตของคุณ: /pair
  2. บอตตอบกลับด้วยสองข้อความ: ข้อความคำแนะนำและข้อความ โค้ดตั้งค่า แยกต่างหาก (คัดลอก/วางใน Telegram ได้ง่าย)
  3. บนโทรศัพท์ของคุณ เปิดแอป OpenClaw iOS → Settings → Gateway
  4. สแกน QR code หรือวางโค้ดตั้งค่าและเชื่อมต่อ
  5. กลับไปที่ Telegram: /pair pending (ตรวจสอบ ID คำขอ บทบาท และขอบเขต) จากนั้นอนุมัติ
โค้ดตั้งค่าเป็น payload JSON ที่เข้ารหัส base64 ซึ่งประกอบด้วย:
  • url: URL WebSocket ของ Gateway (ws://... หรือ wss://...)
  • bootstrapToken: โทเค็นบูตสแตรปแบบอายุสั้นสำหรับอุปกรณ์เดียวที่ใช้สำหรับ handshake การจับคู่ครั้งแรก
โทเค็นบูตสแตรปนั้นพาโปรไฟล์บูตสแตรปการจับคู่ในตัวมาด้วย:
  • โทเค็น node หลักที่ส่งต่อให้ยังคงเป็น scopes: []
  • โทเค็น operator ใด ๆ ที่ส่งต่อให้ยังคงถูกจำกัดอยู่กับ allowlist บูตสแตรป: operator.approvals, operator.read, operator.talk.secrets, operator.write
  • การตรวจสอบ scope ของบูตสแตรปมีคำนำหน้าตามบทบาท ไม่ใช่ pool scope แบบแบนเดียว: รายการ scope ของ operator จะตอบสนองเฉพาะคำขอ operator เท่านั้น และบทบาทที่ไม่ใช่ operator ยังต้องขอ scope ภายใต้คำนำหน้าบทบาทของตนเอง
  • การหมุนเวียน/เพิกถอนโทเค็นในภายหลังยังคงถูกจำกัดทั้งโดยสัญญาบทบาทที่อุปกรณ์ได้รับอนุมัติ และ scope operator ของเซสชันผู้เรียก
ปฏิบัติกับโค้ดตั้งค่าเหมือนรหัสผ่านในช่วงที่ยังใช้ได้ สำหรับการจับคู่มือถือผ่าน Tailscale, สาธารณะ หรือระยะไกลอื่น ๆ ให้ใช้ Tailscale Serve/Funnel หรือ URL Gateway wss:// อื่น โค้ดตั้งค่าแบบข้อความธรรมดา ws:// จะยอมรับเฉพาะ local loopback, ที่อยู่ LAN ส่วนตัว, โฮสต์ Bonjour .local และโฮสต์ Android emulator เท่านั้น ที่อยู่ CGNAT ของ tailnet, ชื่อ .ts.net และโฮสต์สาธารณะยังคง ปิดไม่ให้ผ่านก่อนออก QR/โค้ดตั้งค่า

อนุมัติอุปกรณ์ Node

openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
เมื่อการอนุมัติแบบชัดเจนถูกปฏิเสธเพราะเซสชันอุปกรณ์ที่จับคู่แล้วซึ่งอนุมัติ ถูกเปิดด้วย scope สำหรับการจับคู่เท่านั้น CLI จะลองส่งคำขอเดิมซ้ำด้วย operator.admin วิธีนี้ทำให้อุปกรณ์ที่จับคู่แล้วและมีความสามารถระดับ admin สามารถกู้คืนการจับคู่ Control UI/เบราว์เซอร์ใหม่ได้โดยไม่ต้องแก้ไข devices/paired.json ด้วยมือ Gateway ยังคงตรวจสอบการเชื่อมต่อที่ลองซ้ำ โทเค็นที่ไม่สามารถยืนยันตัวตน ด้วย operator.admin จะยังคงถูกบล็อก หากอุปกรณ์เดิมลองใหม่ด้วยรายละเอียดการยืนยันตัวตนที่ต่างออกไป (เช่น บทบาท/scope/public key ต่างกัน) คำขอที่รอดำเนินการก่อนหน้าจะถูกแทนที่ และจะมีการสร้าง requestId ใหม่
อุปกรณ์ที่จับคู่แล้วจะไม่ได้รับสิทธิ์เข้าถึงที่กว้างขึ้นอย่างเงียบ ๆ หากอุปกรณ์เชื่อมต่อใหม่โดยขอ scope เพิ่มเติมหรือบทบาทที่กว้างขึ้น OpenClaw จะคงการอนุมัติเดิมไว้ตามเดิมและสร้างคำขออัปเกรดที่รอดำเนินการใหม่ ใช้ openclaw devices list เพื่อเปรียบเทียบสิทธิ์เข้าถึงที่อนุมัติอยู่ในปัจจุบันกับสิทธิ์เข้าถึงที่เพิ่งร้องขอก่อนที่คุณจะอนุมัติ

การอนุมัติอัตโนมัติสำหรับ Node แบบ trusted-CIDR ที่เป็นตัวเลือก

การจับคู่อุปกรณ์ยังคงเป็นแบบทำเองโดยค่าเริ่มต้น สำหรับเครือข่าย Node ที่ควบคุมอย่างเข้มงวด คุณสามารถเลือกใช้การอนุมัติอัตโนมัติสำหรับ Node ครั้งแรกด้วย CIDR หรือ IP แบบเจาะจงอย่างชัดเจน:
{
  gateway: {
    nodes: {
      pairing: {
        autoApproveCidrs: ["192.168.1.0/24"],
      },
    },
  },
}
สิ่งนี้ใช้เฉพาะกับคำขอจับคู่ role: node ใหม่ที่ไม่มี scope ที่ร้องขอเท่านั้น ไคลเอนต์ Operator, เบราว์เซอร์, Control UI และ WebChat ยังต้องการ การอนุมัติด้วยมือ การเปลี่ยนบทบาท, scope, metadata และ public-key ยังต้องการ การอนุมัติด้วยมือ

ที่จัดเก็บสถานะการจับคู่ Node

จัดเก็บภายใต้ ~/.openclaw/devices/:
  • pending.json (อายุสั้น; คำขอที่รอดำเนินการจะหมดอายุ)
  • paired.json (อุปกรณ์ที่จับคู่แล้ว + โทเค็น)

หมายเหตุ

  • API เดิม node.pair.* (CLI: openclaw nodes pending|approve|reject|remove|rename) เป็น ที่เก็บการจับคู่แยกต่างหากที่ Gateway เป็นเจ้าของ Node แบบ WS ยังต้องใช้การจับคู่อุปกรณ์
  • ระเบียนการจับคู่คือแหล่งความจริงถาวรสำหรับบทบาทที่อนุมัติ โทเค็นอุปกรณ์ที่ใช้งานอยู่ ยังคงถูกจำกัดอยู่กับชุดบทบาทที่อนุมัตินั้น รายการโทเค็นหลงเหลือ นอกบทบาทที่อนุมัติจะไม่สร้างสิทธิ์เข้าถึงใหม่

เอกสารที่เกี่ยวข้อง