- أسرار الإعداد: يمكن لأي حقل SecretRef في
openclaw.jsonأن يُحل عبر CLI الخاص بـopفي وقت التشغيل، بحيث لا تُخزَّن مفاتيح API مطلقًا في ملف الإعداد. - سير عمل الوكلاء: تعلّم مهارة
1passwordالمضمّنة الوكلاء كيفية تسجيل الدخول وقراءة الأسرار أو حقنها باستخدامopلتنفيذ مهامهم الخاصة.
المتطلبات
- تثبيت CLI الخاص بـ 1Password (
op) على مضيف Gateway (brew install 1password-cliعلى macOS). - وضع مصادقة لـ
op:- حساب خدمة (موصى به لبوابات Gateway غير المزودة بواجهة): صدّر
OP_SERVICE_ACCOUNT_TOKENفي بيئة خدمة Gateway. لا حاجة إلى تطبيق سطح المكتب أو تسجيل دخول تفاعلي. - التكامل مع تطبيق سطح المكتب: يعمل تطبيق 1Password على الجهاز نفسه مع تمكين تكامل CLI. قد تؤدي الاستدعاءات الأولى إلى طلب Touch ID أو مصادقة النظام.
- تسجيل دخول مستقل: يطلب
op signinالمصادقة في كل جلسة. وهو مناسب للوكلاء عبر المهارة، لكنه غير ملائم لحل أسرار الإعداد على Gateway غير مزود بواجهة.
- حساب خدمة (موصى به لبوابات Gateway غير المزودة بواجهة): صدّر
حل أسرار الإعداد باستخدام op
عرّف موفّر أسرار تنفيذيًا يشغّلop read باستخدام مرجع op://vault/item/field، ثم وجّه إليه أي حقل يدعم SecretRef:
- يجب أن يكون
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، حدّد الحقول بدلًا من ذلك بواسطة معرّف مؤشر JSON. - يؤدي تخصيص إدخال موفّر واحد لكل سر إلى إبقاء المراجع قابلة للتدقيق؛ وسمِّ الموفّرين باسم الجهة التي تستهلكهم (
onepassword_openai،onepassword_telegram).
إعداد حساب خدمة لبوابات Gateway غير المزودة بواجهة
- أنشئ حساب خدمة في حسابك على 1Password وامنحه حق الوصول للقراءة فقط إلى عناصر الخزنة التي يحتاج إليها Gateway.
- وفّر
OP_SERVICE_ACCOUNT_TOKENلخدمة Gateway (ملف plist الخاص بـ launchd أو وحدة systemd أو بيئة الحاوية). - أضف
"OP_SERVICE_ACCOUNT_TOKEN"إلى قائمةpassEnvالخاصة بالموفّر. - تحقّق من بيئة مضيف Gateway: ينبغي أن يطبع
op whoamiحساب الخدمة من دون مطالبة.
op://. قيّد نطاق الحساب بإحكام؛ فهو بيانات اعتماد لحاملها.
مهارة 1password للوكلاء
يتضمن OpenClaw مهارة1password التي تجعل الوكلاء مشغّلين أكفاء لـ op: فهي تكتشف وضع المصادقة المتاح (حساب خدمة أو تكامل تطبيق سطح المكتب أو تسجيل دخول مستقل)، وتتحقق من الوصول باستخدام op whoami قبل قراءة أي شيء، وتفضّل op run / op inject على كتابة قيم الأسرار إلى القرص. تتطلب المهارة الملف التنفيذي op وتعرض تثبيته عبر Homebrew عند فقدانه.
يستخدمها الوكلاء في سير عملهم الخاص، مثل قراءة رمز نشر في أثناء المهمة أو حقن متغيرات البيئة في أمر. وهي مستقلة عن حل أسرار الإعداد؛ إذ يحل Gateway مراجع SecretRef من دون تدخل أي مهارة.
ملاحظات أمنية
- تبقى قيم الأسرار التي تُحل عبر الموفّرين التنفيذيين في ذاكرة 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لدى الموفّر؛ إذ يمكن أن تتجاوز عمليات البدء البارد لـopحدود المهلة الصارمة على المضيفين المشغولين.