Plugin guides
ตัวกลางจัดการข้อมูลลับของ 1Password
โบรกเกอร์ข้อมูลลับ 1Password
Plugin onepassword ที่รวมมาให้มอบเครื่องมือเดียวที่ควบคุมด้วยนโยบายแก่เอเจนต์สำหรับ
อ่านชุดฟิลด์ 1Password ที่คัดสรรไว้ โดยค่าเริ่มต้นจะปิดใช้งานและจะ
ไม่ทำงานจนกว่าจะมี plugins.entries.onepassword.config
นี่คือเครื่องมือสำหรับเอเจนต์ ไม่ใช่ผู้ให้บริการ SecretRef เครื่องมือนี้จะไม่แทรกตัวแปร สภาพแวดล้อมหรือแก้ไขข้อมูลลับในการกำหนดค่า OpenClaw
โมเดลความปลอดภัย
- รองรับเฉพาะการยืนยันตัวตนด้วยบัญชีบริการเท่านั้น โทเค็นจะอยู่ในไฟล์ข้อมูลประจำตัวภายในเครื่อง
และจะไม่ยอมรับใน
openclaw.json - ใช้เฉพาะรีจิสทรีที่คัดสรรไว้ เอเจนต์สามารถแสดงรายการ slug ที่กำหนดค่าไว้ แต่ Plugin จะไม่ แจกแจง vault ของ 1Password
- นโยบาย
auto,approveหรือdenyแยกตาม slug - สิทธิ์อนุมัติมีวันหมดอายุ ค่าที่แคชไว้จะไม่ข้ามนโยบายปัจจุบัน
- ความพยายามเข้าถึงทุกครั้งจะถูกบันทึกไว้ในสถานะ SQLite ที่ใช้ร่วมกันของ OpenClaw แถวการตรวจสอบ จะรวมเหตุผลที่ระบุไว้ จึงควรใช้เหตุผลที่ไม่มีข้อมูลละเอียดอ่อน โบรกเกอร์จะ ไม่คัดลอกค่าที่ดึงมาหรือโทเค็นบริการไปยังแถวการตรวจสอบ
- หลังจากการเรียกใช้เครื่องมือปัจจุบัน การคงอยู่ของบทสนทนาที่ OpenClaw เป็นเจ้าของ
จะแทนที่ค่า
getที่สำเร็จด้วยข้อมูลเมตาที่ปกปิดแล้ว - โมเดลสามารถมองเห็นค่านั้นได้ระหว่างการเรียกใช้นั้น หากโมเดลคัดลอกค่าไปยัง การเรียกใช้เครื่องมือหรือการตอบกลับในภายหลัง ระเบียนที่แยกต่างหากนั้นจะอยู่นอกฮุก การคงอยู่ของ Plugin นี้ กำหนดนโยบายให้แคบและอย่าขอให้โมเดลแสดงค่า ซ้ำ
- Plugin จะเรียกใช้
opหนึ่งครั้งต่อการไม่พบข้อมูลในแคช และจะไม่ลองใหม่เมื่อถึงขีดจำกัดอัตราหรือ เกิดความล้มเหลวอื่น - การเรียก
opแต่ละครั้งจะทำงานด้วยสภาพแวดล้อมขั้นต่ำที่ปิดใช้งานการผสานรวมกับ แอปเดสก์ท็อป 1Password (OP_LOAD_DESKTOP_APP_SETTINGS=false,OP_BIOMETRIC_UNLOCK_ENABLED=false) ดังนั้นแอป 1Password ที่ติดตั้งบน โฮสต์ Gateway จะไม่เรียกกล่องโต้ตอบไบโอเมตริกหรือสิทธิ์ของ macOS
ให้สิทธิ์อ่านแก่บัญชีบริการเฉพาะ vault และรายการที่ลงทะเบียนไว้ใน การกำหนดค่า Plugin เท่านั้น
ก่อนเริ่มต้น
สิ่งที่ต้องมี:
- 1Password CLI (
op) ที่ติดตั้งบนโฮสต์ Gateway - บัญชีบริการ 1Password ที่มีสิทธิ์เข้าถึงรายการที่เลือก
- ไฟล์โทเค็นเฉพาะสำหรับบัญชีบริการ
เปิดใช้งาน Plugin ที่รวมมาให้:
openclaw plugins enable onepasswordสร้างไดเรกทอรีและไฟล์โทเค็นภายใต้ไดเรกทอรีสถานะ OpenClaw:
mkdir -p ~/.openclaw/credentials/onepasswordchmod 700 ~/.openclaw/credentials/onepasswordprintf '%s' "$OP_SERVICE_ACCOUNT_TOKEN" > \ ~/.openclaw/credentials/onepassword/service-account-tokenchmod 600 ~/.openclaw/credentials/onepassword/service-account-tokenunset OP_SERVICE_ACCOUNT_TOKENเมื่อกำหนด OPENCLAW_STATE_DIR ให้แทนที่ ~/.openclaw ด้วยไดเรกทอรีนั้น
Plugin จะแจ้งเตือนหนึ่งครั้งเมื่อไฟล์โทเค็นสามารถอ่านหรือเขียนได้โดยกลุ่มหรือ
ผู้ใช้อื่น
กำหนดค่าข้อมูลลับที่ลงทะเบียน
เพิ่มการกำหนดค่า Plugin ลงใน openclaw.json:
{ "plugins": { "entries": { "onepassword": { "enabled": true, "config": { "vault": "Automation", "defaultPolicy": "approve", "cacheTtlSeconds": 300, "grantTtlHours": 720, "opTimeoutMs": 15000, "items": { "repository-token": { "item": "Repository automation token", "field": "credential", "policy": "approve", "description": "Token for repository automation", }, "model-key": { "item": "Model provider key", "vault": "Agent credentials", "policy": "auto", }, }, }, }, }, },}slug ใช้ตัวอักษรพิมพ์เล็ก ตัวเลข และเครื่องหมายยัติภังค์ โดยขึ้นต้นด้วยตัวอักษรหรือ
ตัวเลข และมีความยาวไม่เกิน 64 อักขระ รีจิสทรีหนึ่งรายการมีได้สูงสุด 32
slug ส่วนคำอธิบายมีได้สูงสุด 200 อักขระ field ยอมรับป้ายกำกับ
หรือ ID ของฟิลด์หนึ่งรายการ ต้องไม่มีเครื่องหมายจุลภาค และมีค่าเริ่มต้นเป็น credential
vault ระดับรายการจะแทนที่ vault เริ่มต้น opBin สามารถกำหนดพาธสัมบูรณ์
ไปยังไฟล์ปฏิบัติการ op ได้ มิฉะนั้น Plugin จะแก้ไข op จาก PATH
ชื่อรายการต้องไม่ขึ้นต้นด้วยเครื่องหมายยัติภังค์
ใช้เครื่องมือสำหรับเอเจนต์
ชื่อเครื่องมือคือ onepassword
แสดงรายการ slug ที่ลงทะเบียน:
{ "action": "list" }ผลลัพธ์จะมีเฉพาะ slug คำอธิบาย นโยบาย และสถานะว่าสิทธิ์แบบถาวร ยังทำงานอยู่หรือไม่ ผลลัพธ์จะไม่มีค่าข้อมูลลับและจะไม่ค้นข้อมูลจาก 1Password
ขอข้อมูลลับหนึ่งรายการ:
{ "action": "get", "slug": "repository-token", "reason": "Authenticate the requested repository operation"}ต้องระบุ reason โดยต้องไม่ว่างและจำกัดไว้ที่ 300 อักขระ
get ที่สำเร็จจะส่งคืนค่าพร้อม slug ที่กำหนดค่าไว้ ชื่อรายการ และ
ป้ายกำกับฟิลด์
สคีมาเครื่องมือยังประกาศพารามิเตอร์ภายใน authorizationNonce ด้วย
ชั้นนโยบายจะแทรกค่านี้หลังจากประเมินคำขอเพื่อส่งต่อการอนุญาต
ไปยังการเรียกใช้เครื่องมือที่ดำเนินการ ห้ามตั้งค่าด้วยตนเอง เพราะฮุกนโยบายจะเขียนทับ
ค่าที่ระบุ และค่าที่ไม่รู้จักจะทำให้คำขอล้มเหลว
ระดับนโยบายและการอนุมัติ
auto: ดึงข้อมูลทันทีและตรวจสอบคำขอdeny: บล็อกและตรวจสอบคำขอapprove: ใช้สิทธิ์แบบถาวรที่ยังไม่หมดอายุ หรือขอให้บุคคลอนุญาตหนึ่งครั้ง อนุญาตเสมอ หรือปฏิเสธ
การอนุญาตหนึ่งครั้งจะให้สิทธิ์เฉพาะการเรียกใช้เครื่องมือปัจจุบัน การอนุญาตเสมอจะเขียนสิทธิ์
แบบถาวรสำหรับเอเจนต์และ slug นั้นลงใน SQLite โดยเอเจนต์อื่นต้องได้รับ
การอนุมัติของตนเอง OpenClaw จะเสนอตัวเลือกอนุญาตเสมอเฉพาะเมื่อผู้เรียกมีอัตลักษณ์
เอเจนต์ที่ชัดเจน สิทธิ์จะหมดอายุหลังจาก grantTtlHours ซึ่งมีค่าเริ่มต้นเป็น 720 ชั่วโมง
การอนุมัติที่ไม่ได้รับการตัดสินใจหรือหมดเวลาจะปฏิเสธคำขอ โดยระยะเวลารอการอนุมัติ
สูงสุดคือ 600 วินาที Plugin จะเก็บสิทธิ์แบบถาวรได้สูงสุด 1,024 รายการ เมื่อถึง
ขีดจำกัดดังกล่าว สิทธิ์ที่เก่าที่สุดจะถูกนำออก และเอเจนต์ของสิทธิ์นั้นต้องอนุมัติการเข้าถึงครั้งถัดไป
การอนุญาตที่ประเมินแล้วแต่ละรายการใช้ได้เพียงครั้งเดียวและจะถูกส่งต่อไปยังการเรียกใช้เครื่องมือ ที่ดำเนินการผ่านสถานะ SQLite ที่ใช้ร่วมกัน ดังนั้นการส่งต่อจึงยังทำงานได้เมื่อมีอินสแตนซ์ Plugin มากกว่าหนึ่งอินสแตนซ์ทำงานอยู่ในกระบวนการ Gateway การอนุญาตที่ไม่ได้ใช้จะหมดอายุ หลังกรอบเวลาการอนุมัติ 600 วินาที
แคชในหน่วยความจำมีค่าเริ่มต้นเป็น 300 วินาทีและมีขอบเขตตามรีจิสทรี
slug ที่กำหนดค่าไว้ ตั้งค่า cacheTtlSeconds เป็น 0 เพื่อปิดใช้งานแคช นโยบายจะได้รับการประเมิน
ก่อนการค้นหาแคชทุกครั้ง และการพบข้อมูลในแคชจะถูกตรวจสอบ การโหลดการกำหนดค่ารันไทม์ใหม่
จะมีผลที่ขอบเขตนโยบายและการดำเนินการแต่ละครั้ง การปิดใช้งาน Plugin หรือ
การนำ slug ออก การปฏิเสธ หรือการเปลี่ยนเป้าหมาย slug จะทำให้การอนุญาตที่รอดำเนินการและ
ค่าที่แคชไว้ใช้ไม่ได้
ตรวจสอบสถานะและประวัติการตรวจสอบ
แสดงความพร้อมและจำนวนรีจิสทรี:
openclaw onepassword statusคำสั่งนี้จะรายงานว่าไฟล์โทเค็นมีอยู่หรือไม่ op ได้รับการแก้ไขหรือไม่และพาธของมัน
จำนวนรายการที่ลงทะเบียน และจำนวนแยกตามนโยบาย โดยจะไม่อ่านหรือแสดง
โทเค็นหรือค่าข้อมูลลับ
แสดงแถวการตรวจสอบล่าสุด 50 แถว:
openclaw onepassword auditopenclaw onepassword audit --limit 100แถวจะแสดงรายการใหม่ที่สุดก่อน และแสดงการประทับเวลา เอเจนต์ slug ผลลัพธ์ errorCode
เมื่อความพยายามล้มเหลว และเหตุผลที่ตัดทอน เหตุผลจะถูกจัดเก็บตามที่
ระบุไว้ โบรกเกอร์จะไม่เพิ่มค่าที่ดึงมาลงในบันทึกการตรวจสอบ
ลักษณะการทำงานของ 1Password CLI
ทุกครั้งที่ไม่พบข้อมูลในแคช ระบบจะเรียกใช้ op item get พร้อมรายการ vault และตัวเลือก
ฟิลด์ที่ตรงตามที่กำหนดค่าไว้ เอาต์พุต JSON เวลาหมดเขตที่จำกัด และ --cache=false กระบวนการลูก
จะได้รับเฉพาะฟิลด์นั้นแทนที่จะเป็นรายการทั้งหมด โดยมีเพียง
OP_SERVICE_ACCOUNT_TOKEN และ HOME อยู่ในสภาพแวดล้อมของกระบวนการลูก
Plugin จะพยายามเพียงหนึ่งครั้ง ควรจัดการข้อผิดพลาด RATE_LIMITED ด้วยการรอ
ก่อนส่งคำขอของเอเจนต์ในภายหลัง Plugin จะไม่สร้างลูปการลองใหม่
โดยอัตโนมัติ
รหัสข้อผิดพลาด
ความพยายามที่ล้มเหลวจะมีรหัสข้อผิดพลาดแบบปิดหนึ่งรหัสในผลลัพธ์ของเครื่องมือและแถว การตรวจสอบ
ข้อผิดพลาดในการเข้าถึง 1Password:
| รหัส | ความหมาย |
|---|---|
TOKEN_MISSING |
ไฟล์โทเค็นหายไปหรือว่างเปล่า |
OP_NOT_FOUND |
ไม่สามารถแก้ไขไบนารี op ได้ |
ITEM_NOT_FOUND |
รายการที่กำหนดค่าไว้ไม่อยู่ใน vault |
FIELD_NOT_FOUND |
ฟิลด์ที่กำหนดค่าไว้ไม่มีอยู่ในรายการ โดยจะแสดงป้ายกำกับที่มี |
RATE_LIMITED |
ถึงขีดจำกัดอัตราของบัญชีบริการ 1Password |
AUTH_FAILED |
การยืนยันตัวตนของบัญชีบริการล้มเหลว |
TIMEOUT |
op เกิน opTimeoutMs |
OP_ERROR |
ความล้มเหลวอื่นใดของ op หรือเอาต์พุตไม่ถูกต้อง |
ข้อผิดพลาดด้านนโยบายและการตรวจสอบความถูกต้อง:
| รหัส | ความหมาย |
|---|---|
INVALID_ACTION, INVALID_REASON, INVALID_SLUG |
คำขอไม่ผ่านการตรวจสอบความถูกต้องของอินพุต |
UNKNOWN_SLUG |
slug ไม่อยู่ในรีจิสทรีที่กำหนดค่าไว้ |
TOOL_CALL_ID_MISSING |
การเรียกมาถึงโดยไม่มี ID การเรียกใช้เครื่องมือ |
POLICY_NOT_EVALUATED |
ไม่พบการอนุญาตที่ตรงกันสำหรับการเรียกนี้ คำขอไม่ได้รับการอนุมัติตามนโยบาย |
POLICY_CHANGED |
การกำหนดค่าเปลี่ยนไประหว่างการอนุมัติและการดำเนินการ |
GRANT_EXPIRED |
สิทธิ์แบบถาวรหมดอายุก่อนการดำเนินการ |
APPROVAL_CANCELLED |
การเรียกใช้ถูกยกเลิกขณะที่รอการอนุมัติ |