Gateway

1Password

OpenClaw ทำงานร่วมกับ 1Password ได้สองวิธีที่แยกจากกัน:

  • ข้อมูลลับในการกำหนดค่า: ฟิลด์ SecretRef ใดๆ ใน openclaw.json สามารถแก้ค่าแบบรันไทม์ผ่าน CLI op ได้ จึงไม่ต้องเก็บคีย์ API ไว้ในไฟล์การกำหนดค่า
  • เวิร์กโฟลว์ของเอเจนต์: Skills 1password ที่รวมมาให้จะสอนเอเจนต์ให้ลงชื่อเข้าใช้ และอ่านหรือแทรกข้อมูลลับด้วย op สำหรับงานของตนเอง

ข้อกำหนด

  • ติดตั้ง 1Password CLI (op) บนโฮสต์ Gateway (brew install 1password-cli บน macOS)
  • โหมดการยืนยันตัวตนสำหรับ op:
    • บัญชีบริการ (แนะนำสำหรับ Gateway แบบไม่มีส่วนติดต่อผู้ใช้): ส่งออก OP_SERVICE_ACCOUNT_TOKEN ในสภาพแวดล้อมของบริการ Gateway โดยไม่ต้องใช้แอปเดสก์ท็อปและไม่ต้องลงชื่อเข้าใช้แบบโต้ตอบ
    • การผสานการทำงานกับแอปเดสก์ท็อป: แอป 1Password ทำงานบนเครื่องเดียวกันโดยเปิดใช้การผสานการทำงานกับ CLI การเรียกใช้ครั้งแรกอาจเรียกใช้ Touch ID หรือการยืนยันตัวตนของระบบ
    • การลงชื่อเข้าใช้แบบสแตนด์อโลน: op signin จะแสดงพร้อมท์ในแต่ละเซสชัน เอเจนต์สามารถใช้งานผ่าน Skills ได้ แต่ไม่เหมาะสำหรับการแก้ค่าข้อมูลลับในการกำหนดค่าบน Gateway แบบไม่มีส่วนติดต่อผู้ใช้

แก้ค่าข้อมูลลับในการกำหนดค่าด้วย op

ประกาศผู้ให้บริการข้อมูลลับแบบ exec ซึ่งเรียกใช้ op read ด้วยการอ้างอิง op://vault/item/field แล้วกำหนดให้ฟิลด์ใดๆ ที่รองรับ SecretRef ชี้ไปยังผู้ให้บริการดังกล่าว:

json5
{  secrets: {    providers: {      onepassword_openai: {        source: "exec",        command: "/opt/homebrew/bin/op",        allowSymlinkCommand: true, // จำเป็นสำหรับไบนารีที่ Homebrew ติดตั้งเป็นลิงก์สัญลักษณ์        trustedDirs: ["/opt/homebrew"],        args: ["read", "op://Personal/OpenClaw QA API Key/password"],        passEnv: ["HOME"],        jsonOnly: false,      },    },  },  models: {    providers: {      openai: {        baseUrl: "https://api.openai.com/v1",        models: [{ id: "gpt-5", name: "gpt-5" }],        apiKey: { source: "exec", provider: "onepassword_openai", id: "value" },      },    },  },}

องค์ประกอบต่างๆ ทำงานร่วมกันดังนี้:

  • command ต้องเป็นพาธแบบสัมบูรณ์ โดย trustedDirs จะระบุว่าไดเรกทอรีของพาธนั้นเชื่อถือได้ และจำเป็นต้องใช้ allowSymlinkCommand เนื่องจาก Homebrew ติดตั้ง op เป็นลิงก์สัญลักษณ์
  • args ส่งต่อการอ้างอิง op://vault/item/field ตามต้นฉบับทุกประการ OpenClaw ไม่ได้แยกวิเคราะห์สคีมา op:// ด้วยตนเอง แต่ไบนารี op จะเป็นผู้แก้ค่าดังกล่าว
  • passEnv ส่งต่อตัวแปรที่ระบุจากสภาพแวดล้อม Gateway การผสานการทำงานกับแอปเดสก์ท็อปต้องใช้ HOME ส่วนบัญชีบริการต้องมี OP_SERVICE_ACCOUNT_TOKEN อยู่ในสภาพแวดล้อมของบริการ Gateway ด้วย (เพิ่มลงใน passEnv หรือตั้งค่าผ่าน env เฉพาะเมื่อยอมรับได้ว่าโทเค็นจะสามารถอ่านได้จากไฟล์การกำหนดค่า)
  • สำหรับเอาต์พุตค่าเดียว ให้คง id: "value" ไว้ หากใช้ jsonOnly: true และเพย์โหลด JSON ให้ระบุฟิลด์ด้วย ID ตัวชี้ JSON แทน
  • การใช้รายการผู้ให้บริการหนึ่งรายการต่อข้อมูลลับหนึ่งรายการช่วยให้ตรวจสอบการอ้างอิงได้ ควรตั้งชื่อผู้ให้บริการตามองค์ประกอบที่ใช้งาน (onepassword_openai, onepassword_telegram)

ดู ข้อมูลลับของ Gateway สำหรับลำดับการแก้ค่า การแคช และความหมายของความล้มเหลว และดู พื้นผิวข้อมูลรับรอง SecretRef สำหรับฟิลด์ทั้งหมดที่ยอมรับ SecretRef

การตั้งค่าบัญชีบริการสำหรับ Gateway แบบไม่มีส่วนติดต่อผู้ใช้

  1. สร้างบัญชีบริการในบัญชี 1Password และให้สิทธิ์อ่านเฉพาะรายการในห้องนิรภัยที่ Gateway ต้องใช้
  2. มอบ OP_SERVICE_ACCOUNT_TOKEN ให้แก่บริการ Gateway (plist ของ launchd, ยูนิต systemd หรือ env ของคอนเทนเนอร์)
  3. เพิ่ม "OP_SERVICE_ACCOUNT_TOKEN" ลงในรายการ passEnv ของผู้ให้บริการ
  4. ตรวจสอบจากสภาพแวดล้อมของโฮสต์ Gateway: op whoami ควรแสดงบัญชีบริการโดยไม่แสดงพร้อมท์

การอ่านด้วยบัญชีบริการกำหนดให้ระบุชื่อห้องนิรภัยอย่างชัดเจนในการอ้างอิง op:// จำกัดขอบเขตของบัญชีให้แคบที่สุด เนื่องจากบัญชีนี้เป็นข้อมูลรับรองแบบ bearer

Skills 1password สำหรับเอเจนต์

OpenClaw รวม Skills 1password ซึ่งช่วยให้เอเจนต์ใช้งาน op ได้อย่างเชี่ยวชาญ โดยจะตรวจหาโหมดการยืนยันตัวตนที่พร้อมใช้งาน (บัญชีบริการ การผสานการทำงานกับแอปเดสก์ท็อป หรือการลงชื่อเข้าใช้แบบสแตนด์อโลน) ตรวจสอบสิทธิ์เข้าถึงด้วย op whoami ก่อนอ่านข้อมูลใดๆ และเลือกใช้ op run / op inject แทนการเขียนค่าข้อมูลลับลงดิสก์ Skills นี้ต้องใช้ไบนารี op และมีตัวเลือกติดตั้งผ่าน Homebrew เมื่อไม่พบไบนารีดังกล่าว

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

หมายเหตุด้านความปลอดภัย

  • ค่าข้อมูลลับที่แก้ผ่านผู้ให้บริการแบบ exec จะคงอยู่ในหน่วยความจำของ Gateway ส่วนสแนปช็อตการกำหนดค่าและการตอบกลับ config.get จะปกปิดฟิลด์ SecretRef
  • ห้ามใส่ค่าข้อมูลลับใน openclaw.json บันทึก หรือแชตโดยเด็ดขาด ให้เก็บชื่อรายการไว้ในการกำหนดค่าและเก็บค่าไว้ใน 1Password
  • บันทึกการตรวจสอบของ 1Password จะแสดงการอ่านทุกครั้งของบัญชีบริการ ทำให้การหมุนเวียนคีย์และการตรวจสอบเหตุการณ์เป็นไปได้ในทางปฏิบัติ

การแก้ไขปัญหา

  • command not found หรือข้อผิดพลาดในการสร้างโปรเซส: ใช้พาธแบบสัมบูรณ์ของ op และเพิ่มไดเรกทอรีของพาธนั้นลงใน trustedDirs
  • op แก้ค่าได้ แต่การอ่านล้มเหลวโดยมีข้อผิดพลาดเกี่ยวกับลิงก์สัญลักษณ์: ตั้งค่า allowSymlinkCommand: true สำหรับการติดตั้งผ่าน Homebrew
  • account is not signed in: สำหรับบัญชีบริการ ให้ยืนยันว่า OP_SERVICE_ACCOUNT_TOKEN ถูกส่งถึงบริการ Gateway และมีอยู่ในรายการ passEnv; สำหรับการผสานการทำงานกับเดสก์ท็อป ให้ยืนยันว่าแอปกำลังทำงานและปลดล็อกอยู่
  • การอ่านครั้งแรกช้า: เพิ่ม timeoutMs ในผู้ให้บริการ เนื่องจากการเริ่มทำงานแบบ cold start ของ op อาจเกินระยะหมดเวลาที่เข้มงวดบนโฮสต์ที่มีภาระงานสูง
Was this useful?
On this page

On this page