תיעוד/מדריכים
כלים מהירים
במהלך שיחה, הסוכן שלכם יכול להגיע ליכולת בשלוש דרכים: לשאול את סוכן ה-OpenClaw שלכם, להפעיל כלי ישירות, או להעביר משימה שתסתיים אחרי השיחה. הבחירה הנכונה ביניהן היא רוב מה שהופך שיחה למהירה ואמינה.
הרעיון שהכול נשען עליו
במהלך שיחה, המודל הקולי לא מריץ בעצמו את הסקריפטים שלכם ולא מדבר בעצמו עם סוכן ה-OpenClaw שלכם. כל מה שהוא יכול לעשות הוא להפעיל כלי שרכיב השיחות הציע לו. מה שקורה מאחורי הכלי נקבע ברכיב השיחות, ושם נמצאת הבחירה החשובה: על אותה שאלה אפשר לענות בסבב עבודה מלא של הסוכן, או בבדיקה ישירה אחת.
שאילתה, כלי או משימת רקע
1. שואלים את סוכן ה-OpenClaw שלכם: openclaw_query
רכיב השיחות מעביר את הבקשה, במילים פשוטות, לסוכן ה-OpenClaw שלכם. הסוכן חושב עליה, בוחר סקיל (skill), מריץ אותו, שוקל את התוצאה ועונה במשפט שהסוכן הקולי אומר למתקשר.
- מהירות: הדרך האיטית ביותר. כל בקשה היא סבב עבודה מלא של הסוכן, עם חשיבה לפני כל שלב ואחריו. רכיב השיחות מחכה עד 90 שניות כברירת מחדל.
- מתאימה לבקשות פתוחות בשיחות שלכם, כשהמתנה קצרה לא מפריעה: "לנסח תשובה לשרה", "מה כדאי לי להכין למחר".
- זמינה בשיחות של בעל העסק ובשיחות שהסוכן מוציא. אף פעם לא בשיחות ציבוריות.
caller -> openclaw_query("do I have new email?") -> OpenClaw agent turn
-> reads skill -> runs script -> reasons -> "You have three new messages..."
2. מפעילים כלי ישירות
רכיב השיחות מפעיל כלי מסוים אחד עם ארגומנטים מוגדרים, ומקבל בחזרה נתונים מובנים. אין באמצע סבב עבודה של הסוכן, ולכן הפעולה לוקחת בערך את הזמן שהכלי עצמו לוקח. הסוכן מקבל שדות אמיתיים (שולח, נושא, תאריך) ועונה לפיהם, במקום לנסח תשובה מהזיכרון.
יש שני סוגים של כלים ישירים:
- כלי HTTPS מותאמים: רכיב השיחות פונה בעצמו ל-API שלכם. עובדים בכל סוג שיחה, וזו הדרך להגיע למערכות בענן. ראו כלים מותאמים.
- כלי OpenClaw: רכיב השיחות מריץ כלי אחד שכבר רשום בסוכן ה-OpenClaw שלכם, דרך ה-endpoint
/tools/invokeשל OpenClaw, על אותו שרת. זו הדרך להגיע למשאבים שפרטי הגישה אליהם נמצאים על השרת הזה, כמו תיבת מייל או מסד נתונים מקומי.
מתאים לבדיקות מוכרות שחוזרות על עצמן, כשאתם רוצים את התשובה בתוך השיחה: "מה היה המייל האחרון שלי", "מה יש לי ביומן", "לבדוק את הלקוח הזה".
caller -> search_email -> POST /tools/invoke {"tool":"email_search",...}
-> script -> JSON -> spoken
3. מעבירים משימה ארוכה: openclaw_dispatch
רכיב השיחות מעביר לסוכן ה-OpenClaw שלכם תדריך שעומד בפני עצמו, כדי שיריץ אותו ברקע, וחוזר מיד לשיחה. הסוכן אומר למתקשר במשפט אחד שהתוצאה בדרך, ו-OpenClaw שולח אותה מאוחר יותר לערוץ צ'אט שאתם בוחרים, כמו Telegram או Slack. היא אף פעם לא מוקראת בשיחה.
- מתאים לעבודה שלא צריכה להחזיק את הקו: "לחקור את זה ולשלוח לי סיכום", "לנסח את הדוח ולשלוח לי".
- כבוי עד שמגדירים אותו. צריך להגדיר את
OPENCLAW_HOOKS_TOKEN,OPENCLAW_DISPATCH_CHANNELו-OPENCLAW_DISPATCH_TOב-.envשל רכיב השיחות, עם טוקן hooks שונה מהטוקן של רכיב השיחות עצמו. זמין רק בשיחות של בעל העסק ובשיחות שהסוכן מוציא, ורק עם OpenClaw.
כלל אצבע
| מה אתם צריכים | במה משתמשים | למה |
|---|---|---|
| תשובה פתוחה, והמתנה קצרה לא מפריעה | openclaw_query | גמיש: הסוכן מחליט לבד איך לטפל בזה |
| בדיקה מוכרת, עם תשובה בתוך השיחה | כלי ישיר | בלי סבב עבודה של הסוכן; עונה מנתונים אמיתיים |
| משימה ארוכה שהתשובה עליה יכולה להגיע אחר כך | openclaw_dispatch | לא מחזיק את השיחה |
איך לחבר כלי ישיר
- הוא רץ במהלך שיחה חיה? אז הוא צריך להיות כלי ישיר, לא
openclaw_query. - הוא קורא או כותב? קריאה אפשר להפוך בבטחה לכלי ישיר. כתיבה ושליחה דורשות את הזהירות שמתוארת בקריאה וכתיבה.
- איפה נמצאים פרטי הגישה שלו? על השרת של רכיב השיחות (סיסמה לתיבת מייל, סקריפט CRM מקומי): כלי OpenClaw. בשירות ענן (טוקן OAuth, מפתח SaaS): כלי HTTPS מותאם, או אפליקציה מחוברת אם יש כזאת.
מייל הוא הדוגמה הקלאסית לכלי בצד השרת: הוא רץ בזמן השיחה, הוא קורא, וסיסמת תיבת המייל נמצאת על השרת. בהמשך המדריך נחבר אותו ככלי OpenClaw.
מחברים כלי OpenClaw
1. הכלי צריך להיות רשום ב-OpenClaw
רכיב השיחות יכול להפעיל כל כלי שרשום בסוכן ה-OpenClaw שלכם. יכולת שהיא רק סקריפט בסביבת העבודה, כמו סקריפט מייל שמדפיס JSON, צריכה קודם להירשם ככלי OpenClaw, בדרך כלל דרך תוסף OpenClaw קטן שמריץ את הסקריפט לקריאה בלבד. בסוכנים שאנחנו בונים, הצוות שלנו מגדיר את זה, והסקריפט עצמו נשאר בדיוק כמו שהוא.
python3 ~/.openclaw/workspace/tools/moltbot_email.py search --query=proposal --since=7 --limit=10
# {"count": 2, "messages": [{"from": "...", "subject": "...", "date": "...", "snippet": "..."}]}
2. בודקים שהוא עובד, בלי שיחה
/tools/invoke מריץ כלי אחד בלי שום מודל, כך שאפשר לוודא שהכלי עובד עוד לפני שמתקשרים. השתמשו בטוקן ה-gateway של OpenClaw מתוך openclaw.json:
TOK=$(jq -r '.gateway.auth.token' ~/.openclaw/openclaw.json)
curl -sS http://127.0.0.1:18789/tools/invoke \
-H "Authorization: Bearer $TOK" -H "Content-Type: application/json" \
-d '{"tool":"email_search","args":{"query":"proposal","since_days":7}}'
# {"ok":true,"result":{"content":[{"type":"text","text":"{\"count\":2,...}"}]}}
רכיב השיחות פונה לאותו endpoint, בכתובת שמוגדרת אצלו ב-OPENCLAW_URL, http://127.0.0.1:18789 כברירת מחדל, עם אותו טוקן.
3. נותנים אותו לסוכן הקולי
הוסיפו רשומה ל-customTools ב-voice-tools.json, עם auth.type בערך openclaw-tool. אין בה endpoint, urlTemplate או bodyTemplate:
{
"name": "search_email",
"description": "Search the owner's email by sender, keyword or date. Use when the owner asks about their email.",
"parameters": {
"type": "object",
"properties": {
"query": { "type": "string", "description": "Keyword or sender" },
"since_days": { "type": "number", "description": "Only emails newer than this many days" }
},
"required": []
},
"auth": { "type": "openclaw-tool", "toolName": "email_search" },
"privateOnly": true,
"timeoutMs": 6000
}
nameהוא מה שהמודל הקולי רואה;toolNameהוא הכלי שרשום ב-OpenClaw.timeoutMsהוא 3000 כברירת מחדל, ובכלי OpenClaw אפשר להעלות אותו עד 10000. כשכלי חורג מהזמן, הסוכן מקבל על כך הודעה ומציע למתקשר לנסות פעם נוספת.- תשובת הטקסט של הכלי עוברת למודל כמו שהיא, עד 4000 תווים, ו-
responseTemplateלא חל עליה. דאגו שהכלי יחזיר JSON תמציתי. privateOnlyמרחיק את תיבת המייל של בעל העסק משיחות ציבוריות. בשיחות שהסוכן מוציא הכלי עדיין זמין.
רכיב השיחות קורא את voice-tools.json בתחילת כל שיחה, כך שאין צורך בגרסה חדשה או בהפעלה מחדש. התקשרו ושאלו "מה היה המייל האחרון שלי?", והתשובה תגיע מתיבת המייל עצמה.
עוטפים, לא כותבים מחדש
בדרך כלל לא בונים יכולת חדשה בשביל הטלפון, אלא חושפים יכולת שכבר יש לכם:
- הסקריפט שהסוכן שלכם כבר משתמש בו נשאר בדיוק כמו שהוא.
- הגדרת הכלי ממפה את הארגומנטים של הכלי הקולי לאפשרויות שכבר קיימות בסקריפט.
- שום דבר לא משתנה באופן שבו הסוכן שלכם משתמש בסקיל הזה בצ'אט.
כך מימוש אחד של "קריאת מייל" משרת גם את הצ'אט וגם את הטלפון, במקום שני עותקים שהולכים ומתרחקים זה מזה.
קריאה וכתיבה
בכלל הזה אסור לטעות. כלי ישיר רץ ברגע שהמודל מפעיל אותו. אין סבב עבודה של הסוכן, ולכן גם אף אחת מהבדיקות שסוכן ה-OpenClaw שלכם היה עושה בצ'אט לפני שליחת מייל או קביעת פגישה.
- קריאות (חיפוש במייל, בדיקת היומן, איתור איש קשר או הזמנה): הפכו אותן לכלים ישירים.
- כתיבה ושליחה (שליחת מייל, פרסום, קביעת פגישה בשם בעל העסק): אף פעם לא ככלי ישיר חשוף. השתמשו בכלי שנבנה להיות בטוח בפני עצמו, או השאירו את הפעולה ל-
openclaw_query, שם הסוכן שלכם מאשר קודם.
כלי הוואטסאפ מדגים מה זה "בטוח בפני עצמו": הנמען הוא תמיד המספר של המתקשר עצמו. רכיב השיחות ממלא אותו מתוך השיחה, והמודל לא בוחר אותו. חלון ההודעות של 24 שעות נאכף אצלנו. כלי שבנוי כך בטוח גם בשיחה ציבורית.
דף עזר
Pick the path
open-ended, a pause is fine ...... openclaw_query (an agent turn)
known read, answer on the call ... direct tool (no agent turn)
long job, reply can wait ......... openclaw_dispatch (result sent to chat later)
Pick the transport for a direct tool
credentials on the host .......... OpenClaw tool, auth.type "openclaw-tool"
credentials in the cloud ......... custom HTTPS tool, or a connected app
Wire an OpenClaw tool
1. the tool is registered in OpenClaw (read-only)
2. curl /tools/invoke to check it
3. one entry in voice-tools.json, auth.type "openclaw-tool"
Never put a send or a write on a raw direct tool.
שאלות
למה לא לטעון את הנתונים מראש להנחיות של הסוכן?
זה מה שזיכרון המתקשרים עושה, וזה מתאים לנתונים קטנים שידועים כבר בתחילת השיחה. כשיש הרבה יכולות זה לא עובד: כל מה שנטען מראש מאריך את ההנחיות בכל תגובה. כלי ישיר עולה תיאור קצר אחד, ומושך נתונים רק כשמבקשים אותם.
הכלי מחזיר שגיאה מ-/tools/invoke.
או שהוא לא רשום (בדקו ש-OpenClaw טען אותו, והפעילו מחדש את OpenClaw אחרי שהוספתם אותו), או שמדיניות כלים בסוכן הזה מסננת אותו. אם הסוכן שלכם עובד עם רשימת היתר מצומצמת של כלים, הוסיפו אליה את הכלי. הריצו את בדיקת ה-curl שלמעלה כדי לראות את השגיאה של OpenClaw עצמו.
זה עובד עם סוכן Hermes?
כלי OpenClaw דורשים סוכן OpenClaw. בהתקנת Hermes, השתמשו בכלי HTTPS מותאמים לבדיקות ישירות, ובסקילים (skills) של Hermes עצמו לכל מה שהוא עונה עליו דרך openclaw_query. ראו חיבור סוכן Hermes.
מתקשרים מהציבור יכולים להשתמש בכלים האלה?
כלים מותאמים וכלי OpenClaw זמינים בשיחות ציבוריות, אלא אם סימנתם אותם ב-"privateOnly": true. openclaw_query ו-openclaw_dispatch אף פעם לא זמינים למתקשרים מהציבור. כל כלי שקורא נתונים של בעל העסק, סמנו לבעל העסק בלבד.
ראו גם
- כלים: כל הכלים, ובאילו שיחות כל אחד זמין.
- כלים מותאמים: התיעוד המלא של
voice-tools.json.