איש מקצוע בוחן רשימת דרישות מול מחשב וכרטיסי תהליך מחוברים, בכחול ובצהוב

מודול 3 | תרגול 2: ממייל לטופס עם Claude Code

תוכן עניינים

תוכן עניינים

משך התרגול: כ-50 דקות.

 

מאיה מבקשת ניסוי במייל חופשי. כדי שרוני תוכל לטפל בבקשה, צריך להפוך אותו לטופס מסודר. חלק מהפרטים מופיעים במייל, את סוג הציוד אפשר להסיק מהקטלוג, ועל מיקום וסף הצלחה צריך לשאול.

 

מה תבנו: תהליך ב-n8n שמחלץ שדות, מצרף קטלוג כחבילת הקשר ומחזיר ציוד עם ראיה לבחירה ושאלות על מה שחסר. הפלט המובנה מאפשר להעביר את הבקשה לשלבים הבאים בלי לקרוא ולמיין כל מייל מחדש.

 

אתם מגדירים את הכללים ובודקים את התוצאה. Claude Code בונה, ואת כללי העבודה והלקחים שתבדקו תשמרו ב-CLAUDE.md לשיחות הבאות.


פרק 1: יוצרים הוראות לפרויקט

כדי לשמור על כללי העבודה גם בשיחה הבאה, יוצרים CLAUDE.md בתיקיית הפרויקט המקומית.

 

  1. פתחו את Claude Desktop בלשונית Code ובחרו את תיקיית הפרויקט שלכם.
  2. בקשו ליצור או לעדכן את CLAUDE.md לפי הפרומפט הבא, בלי לבנות עדיין תהליך.

 

הפרומפט ליצירת CLAUDE.md

 

עבריתEnglish


בדוק אם קיים CLAUDE.md בתיקייה הנוכחית. אם הוא חסר צור אותו. אם הוא קיים הצע עדכון ושמור על כללים קיימים שאינם סותרים את הדרישות. אל תדרוס אותו. בשלב הזה אל תבנה תהליך ואל תיצור קבצים נוספים.

הקובץ הוא קובץ הכללים הקבוע שלך לפרויקט הזה. כתוב בו את ההנחיות הבאות בצורה ברורה:

# כללי עבודה לפרויקט

## ארכיטקטורה ב-n8n
- השתמש ב-OpenRouter בלבד לקריאות למודל שפה.
- השתמש בקריאות LLM רגילות באמצעות Basic LLM Chain יחד עם OpenRouter Chat Model.
- אל תשתמש ב-AI Agent ואל תשתמש בבלוקים של סוכנים.

## נתונים והוראות
- הוראות המערכת נשמרות בנפרד מנתוני הבקשה.
- נתון חסר נשאר חסר. שואלים כשחסר מידע הדרוש להחלטה הנוכחית, ולא מנחשים.

## עבודה בטוחה
- עבוד תמיד בעותק ייחודי ושמור את המקור.
- אל תשמור מפתחות או סודות בתוך הקובץ הזה או בכל קובץ אחר.

## איכות ותיעוד
- הוסף פתקים מסבירים ליד השלבים.
- בדוק פלט אמיתי ולא תוצאה מדומה.
- ציין במפורש מה לא נבדק.

לאחר שתיצור או תעדכן באישורי את הקובץ, הצג לי את תוכנו המלא ואל תעשה דבר נוסף.


Check whether CLAUDE.md exists in the current directory. If missing, create it. If present, propose an update and preserve existing rules that do not conflict with these requirements. Do not overwrite it. Do not build a workflow or create other files yet.

This file is your permanent rule set for this project. Write the following guidelines in it clearly:

# Project Work Rules

## n8n Architecture
- Use OpenRouter only for language model calls.
- Use plain LLM calls via Basic LLM Chain together with OpenRouter Chat Model.
- Do not use AI Agent and do not use agent blocks.

## Data and Instructions
- System instructions are kept separate from request data.
- Missing data stays missing. Ask when information needed for the current decision is missing, and do not guess.

## Safe Work
- Always work on a unique copy and preserve the original.
- Do not store keys or secrets inside this file or any other file.

## Quality and Documentation
- Add explanatory notes next to the steps.
- Verify real output, not a mock result.
- State explicitly what was not tested.

After creating the file or updating it with my approval, show me its full contents and do nothing further.

 

  1. קראו את הקובץ: בדקו שיש כללים לקריאות LLM רגילות דרך OpenRouter, שמירת חוסרים, עבודה בעותק ובדיקת פלט אמיתי.
  2. פתחו שיחה חדשה בלשונית Code, באותה תיקייה. הריצו /context ובדקו ש-CLAUDE.md מופיע ב-Memory files. אם לא, בדקו את שם הקובץ ותיקיית העבודה.

 

הקובץ מספק הקשר ל-Claude Code. הוראות המודל בתוך n8n מוגדרות בנפרד. בדקו בהמשך גם שהתהליך עומד בכללים.


פרק 2: בונים חילוץ ממייל לטופס


 

בחרו מקרה אחד בלבד: המקרה המוכן כאן, או מייל וקטלוג קטן מהעבודה שלכם. במקרה אישי הגדירו עם Claude את השדה להשלמה ואת שלוש בדיקות ההתאמה של פרק 3.

 

המייל המוכן, נשלח ב-2026-10-22: נתוני התרגול מדומים.

רוני, נוכל לבדוק בשבוע הבא מה קורה כשהעגלות עוברות בין שני הקוראים? חשוב לי לראות מתי שניהם מדווחים על אותו תג. נתחיל בעגלה אחת ואחר כך נוסיף עוד שתיים. תשמרו את הקריאות והזמנים מכל קורא בנפרד, כדי שנוכל להשוות אחר כך. עדיף ביום שלישי בבוקר. המיקום עוד לא סגור. שני הקוראים יישארו קבועים בעמדות המעבר. רק העגלות ינועו ביניהם.

 

את הקטלוג תיצרו בפרק 3 כטבלת Data Table ב-n8n. שם תמצאו את כל תשע העמודות ואת שלוש הרשומות המלאות מההדגמה.

 

לפני הבנייה: סמנו במייל שני פרטים לשדות קבועים, פרט נוסף שכדאי לשמור ונתון שחסר.

 

בקשו מ-Claude תוכנית קצרה לחילוץ ב-n8n. צרפו את המייל המלא ותאריך השליחה, ודרשו:

 

  • קלט ופלט: Chat Trigger, קריאת Basic LLM Chain עם OpenRouter Chat Model ופלט מובנה דרך Structured Output Parser. ללא AI Agent וללא זיכרון שיחה.
  • שדות: test_name, objective, equipment_description, equipment, site, requested_time_text, additional_details.
  • שמירת המקור: equipment נשאר null עד לפרק 3. מיקום חסר נשאר null. שומרים את ניסוח הזמן ואת כל פרטי העגלות והתיעוד. ל-test_name מותר ליצור כותרת קצרה מתוך המטרה בלבד.

 

עזרה: פרומפט לבניית החילוץ

 

עבריתEnglish


קרא קודם את CLAUDE.md ופעל לפי הכללים שבו.

צרפתי להודעה זו את המייל המלא מפרק 2, כולל תאריך השליחה. אם הוא לא צורף, בקש אותו לפני בנייה.

הצע תוכנית קצרה בלבד, בלי לבנות עדיין, לתהליך קליטה ב-n8n שעושה את הדברים הבאים:

- מתחיל ב-Chat Trigger. כל הודעה חדשה כוללת טקסט מייל חופשי, מפעילה ריצה נפרדת ומחזירה תשובה לצאט. השתמש ב-chatInput כקלט, בלי זיכרון שיחה.
- משתמש ב-Basic LLM Chain יחד עם OpenRouter Chat Model וב-Structured Output Parser לפלט לפי הסכמה. ללא AI Agent.
- מחלץ את השדות הבאים לאובייקט מובנה:
  test_name, objective, equipment_description, equipment, site, requested_time_text, additional_details
- השדה equipment נשאר null בשלב הזה, כי השם המדויק מגיע רק מהקטלוג בשלב מאוחר יותר.
- שדה עובדתי שלא נמסר נשאר null. גם "המיקום עוד לא סגור" פירושו site=null. ל-test_name מותר לתת כותרת קצרה הנגזרת מהמטרה שבמקור, ללא פרטים חדשים.
- המידע שאינו נכנס לשדות המובנים נשמר תחת additional_details.

הצג לי את התוכנית. בנה רק אחרי שאאשר. השתמש בשם ייחודי בתיקיית Module 3, והתחל בקלט חי דרך Chat Trigger, בלי חיבור למייל אמיתי. שמור דוגמאות קבועות רק לבדיקות חוזרות. ציין איזה מודל זמין תבחר ב-OpenRouter ולמה. אל תמציא מזהה מודל. החזר הסברים, ערכי שדות טקסט ושאלות בעברית. שמור ציטוטים מדויקים בשפת המקור ושמות שדות וערכי החלטה כפי שהוגדרו.


Read CLAUDE.md first and follow its rules.

I have appended the full email from chapter 2, including its sent date, to this message. If it is absent, ask for it before building.

Propose a short plan only, without building yet, for an intake workflow in n8n that does the following:

- Starts with a Chat Trigger. Each new message contains free text email, starts a separate execution and returns a chat response. Use chatInput as input, without conversation memory.
- Uses Basic LLM Chain with OpenRouter Chat Model and Structured Output Parser for schema-based output. No AI Agent.
- Extracts the following fields into a structured object:
  test_name, objective, equipment_description, equipment, site, requested_time_text, additional_details
- The equipment field stays null at this stage, because the exact name comes only from the catalog at a later step.
- A factual field not provided stays null. "The location is not final yet" means site=null. For test_name you may derive a short display title from the stated objective, without new facts.
- Information that does not fit the structured fields is kept under additional_details.

Show me the plan. Build only after I approve. Use a unique name in the Module 3 folder and start with live input through Chat Trigger, without connecting to real email. Keep fixed examples only for repeatable tests. State which available OpenRouter model you will select and why. Do not invent a model ID. Return explanations, text field values and questions in Hebrew. Keep verbatim quotations in the source language, and preserve defined field names and decision values.

 

אשרו את התוכנית ובקשו לבנות בעותק ייחודי בתיקיית Module 3 ב-n8n. זו תיקייה נפרדת מתיקיית הפרויקט במחשב. השתמשו בחיבור OpenRouter הקיים.

 

הריצו: פתחו Open chat בתהליך ושלחו את המייל המלא כהודעה אחת.

 

הציגו ובדקו: המטרה ושלבי העגלות נשמרו, פרטים נוספים מופיעים ב-additional_details, ו-equipment ו-site הם null. אם מידע אבד או הומצא, החזירו ל-Claude את המקור והפלט לתיקון ובדיקה חוזרת.

 

ה-Parser בודק מבנה. את נכונות המידע בודקים מול המייל.

 


פרק 3: מתאימים ציוד מהקטלוג

החילוץ השאיר את הציוד ריק. עכשיו מצרפים למודל את המייל ואת הקטלוג כחבילת הקשר, כדי לבחור ציוד על סמך מקור.

 

יוצרים את טבלת הקטלוג ב-n8n

הקטלוג צריך להיות טבלת Data Table אצלכם ב-n8n. הטקסט בעמוד אינו יוצר אותה. הטבלה הבאה והפרומפט כוללים את כל העמודות והרשומות מההדגמה.

 

  1. באותה שיחת Code בקשו מ-Claude ליצור את הטבלה באמצעות הפרומפט שבהמשך. שלוש הרשומות המלאות כבר כלולות בו.
  2. ב-n8n פתחו את הפרויקט שלכם ואת לשונית Data tables. פתחו את הטבלה ש-Claude יצר.
  3. בדקו שיש 9 עמודות נתונים ו-3 רשומות בלבד: scanner-rig, mobile-reader ו-antenna-array. עמודות המערכת id, createdAt ו-updatedAt נוספות אוטומטית.

 

במקרה אישי: השתמשו באותו מבנה טבלה, והחליפו את רשומות הדוגמא בקטלוג שלכם לפני השליחה. התאימו בפרומפטים ובבדיקות את מספר הרשומות, מזהי המקור ותוצאות ההתאמה לנתונים שלכם. אל תשלבו נתונים אישיים עם שלוש רשומות הדוגמא.

 

שם הטבלה: 18x | Module 3 | Equipment Catalog. כל תשע עמודות הנתונים הן מסוג string.

 

שם העמודה סוג
equipment string
label string
source_id string
source_version string
description string
capabilities string
purpose string
form_test_type string
provenance string

 

אפשר לבקש מ-Claude לדייק את הפרומפט כרצונכם. במסלול המוכן שמרו על שמות העמודות ועל כל ערכי הקטלוג.

 

פרומפט ליצירת הטבלה עם כל הנתונים

 

עבריתEnglish


קרא את CLAUDE.md. צור בפרויקט n8n שלי Data Table בשם "18x | Module 3 | Equipment Catalog". הטבלה צריכה להיות באותו פרויקט n8n שבו נמצא תהליך התרגול.

צור בדיוק 9 עמודות מסוג string, בסדר הזה:
equipment, label, source_id, source_version, description, capabilities, purpose, form_test_type, provenance

הכנס בדיוק את שלוש הרשומות הבאות, ללא שינוי בשמות השדות או בטקסט. ערך form_test_type ברשומה השלישית הוא מחרוזת ריקה. אל תיצור ידנית id, createdAt או updatedAt, n8n יוצר אותם.

[
  {
    "equipment": "scanner-rig",
    "label": "מערכת נייחת",
    "source_id": "M3-CAT-01",
    "source_version": "demo-v1",
    "description": "שני קוראים נייחים ליד מעבר. העגלות עם התגיות נעות בין אזורי הקריאה.",
    "capabilities": "שמירת מזהה תג, מזהה קורא וחותמת זמן בנפרד לכל קריאה. מתאים להשוואת קריאות חופפות. המקור אינו מגדיר מהירות, מרחק או סף הצלחה.",
    "purpose": "movement-tracking",
    "form_test_type": "מערכת נייחת | מעקב תנועה",
    "provenance": "נתוני הוראה מדומים למודול 3. מזהי ציוד ומטרה תואמים לטבלת מודול 2. התיאור והיכולות נוספו לצורך התרחיש ואינם מפרט יצרן."
  },
  {
    "equipment": "mobile-reader",
    "label": "קורא נייד",
    "source_id": "M3-CAT-02",
    "source_version": "demo-v1",
    "description": "הקורא נישא בידי מפעיל ונע עם הציוד. אפשר לבצע קריאות של תגיות תוך כדי תנועה.",
    "capabilities": "מזהה תג וחותמת זמן. מתאים לבדיקה שבה הקורא עצמו נע. המקור אינו מגדיר ספי הצלחה.",
    "purpose": "movement-trial",
    "form_test_type": "קורא נייד | ניסוי בתנועה",
    "provenance": "נתוני הוראה מדומים למודול 3. אינו מפרט יצרן."
  },
  {
    "equipment": "antenna-array",
    "label": "מערך אנטנות",
    "source_id": "M3-CAT-03",
    "source_version": "demo-v1",
    "description": "מערך אנטנות לכיוון ולבדיקת יישור לפני ניסוי.",
    "capabilities": "בדיקת יישור של המערך. אין במקור תמיכה בזיהוי קוראים במעבר עגלות.",
    "purpose": "alignment-check",
    "form_test_type": "",
    "provenance": "נתוני הוראה מדומים למודול 3. אינו מפרט יצרן."
  }
]

אם קיימת טבלה בשם הזה, קרא אותה לפני כל שינוי. השתמש בה רק אם כל 9 העמודות וכל 3 הרשומות זהות לנתונים כאן. אחרת צור טבלה נפרדת בשם ייחודי ואל תשנה את הקיימת. אל תוסיף רשומות כפולות.

בסיום קרא בחזרה את הטבלה ושווה את כל הערכים לנתונים שסיפקתי. הצג שם טבלה, מזהה, מספר רשומות ורשימת העמודות. שמור את שם הטבלה והמזהה בתיעוד הפרויקט והפנה אליהם מ-CLAUDE.md. בשלב הזה אל תשנה את תהליך החילוץ.


Read CLAUDE.md. Create a Data Table named "18x | Module 3 | Equipment Catalog" in my n8n project, the same n8n project as the exercise workflow.

Create exactly 9 string columns in this order:
equipment, label, source_id, source_version, description, capabilities, purpose, form_test_type, provenance

Insert exactly these three records. Preserve all field names and source text verbatim. The third record's form_test_type is an empty string. Do not manually create id, createdAt or updatedAt, n8n generates them.

[
  {
    "equipment": "scanner-rig",
    "label": "מערכת נייחת",
    "source_id": "M3-CAT-01",
    "source_version": "demo-v1",
    "description": "שני קוראים נייחים ליד מעבר. העגלות עם התגיות נעות בין אזורי הקריאה.",
    "capabilities": "שמירת מזהה תג, מזהה קורא וחותמת זמן בנפרד לכל קריאה. מתאים להשוואת קריאות חופפות. המקור אינו מגדיר מהירות, מרחק או סף הצלחה.",
    "purpose": "movement-tracking",
    "form_test_type": "מערכת נייחת | מעקב תנועה",
    "provenance": "נתוני הוראה מדומים למודול 3. מזהי ציוד ומטרה תואמים לטבלת מודול 2. התיאור והיכולות נוספו לצורך התרחיש ואינם מפרט יצרן."
  },
  {
    "equipment": "mobile-reader",
    "label": "קורא נייד",
    "source_id": "M3-CAT-02",
    "source_version": "demo-v1",
    "description": "הקורא נישא בידי מפעיל ונע עם הציוד. אפשר לבצע קריאות של תגיות תוך כדי תנועה.",
    "capabilities": "מזהה תג וחותמת זמן. מתאים לבדיקה שבה הקורא עצמו נע. המקור אינו מגדיר ספי הצלחה.",
    "purpose": "movement-trial",
    "form_test_type": "קורא נייד | ניסוי בתנועה",
    "provenance": "נתוני הוראה מדומים למודול 3. אינו מפרט יצרן."
  },
  {
    "equipment": "antenna-array",
    "label": "מערך אנטנות",
    "source_id": "M3-CAT-03",
    "source_version": "demo-v1",
    "description": "מערך אנטנות לכיוון ולבדיקת יישור לפני ניסוי.",
    "capabilities": "בדיקת יישור של המערך. אין במקור תמיכה בזיהוי קוראים במעבר עגלות.",
    "purpose": "alignment-check",
    "form_test_type": "",
    "provenance": "נתוני הוראה מדומים למודול 3. אינו מפרט יצרן."
  }
]

If a table with this name exists, read it before making any change. Reuse it only if all 9 columns and all 3 records exactly match the supplied data. Otherwise create a separate table with a unique name and leave the existing table unchanged. Do not insert duplicate records.

Read the table back and compare every value with the supplied data. Show its name, ID, row count and column names. Save its name and ID in the project documentation and add a reference in CLAUDE.md. Do not change the extraction workflow yet. Return explanations and project documentation in Hebrew.

 

אם אתם יוצרים ידנית: בלשונית Data tables בחרו Create Data table ויצירה מאפס. הוסיפו את תשע העמודות שלמעלה מסוג string, ואז הזינו שלוש שורות לפי אובייקטי ה-JSON שבפרומפט. כל אובייקט הוא שורה, וכל מפתח הוא עמודה. השאירו את form_test_type של antenna-array ריק. מסרו ל-Claude את שם הטבלה ובקשו ממנו לאתר אותה, לשמור את השם והמזהה בתיעוד הפרויקט ולהפנות אליהם מ-CLAUDE.md. ערכי הקטלוג הם נתוני הוראה מדומים, לא מפרט יצרן.

 

בדיקת סיום: פתחו את שלוש השורות והשוו גם description, capabilities ושדות המקור לפרומפט. מקור M3-CAT-01 שייך ל-scanner-rig, מקור M3-CAT-02 ל-mobile-reader ומקור M3-CAT-03 ל-antenna-array. בכולן source_version הוא demo-v1.

 

מחברים את הטבלה לתהליך

בקשו מ-Claude לקרוא את הטבלה שיצרתם באמצעות Data Table בפעולת Get row(s) עם Return All, ולצרף את כל שלוש הרשומות למייל המקורי ולשדות החילוץ. אשרו תוכנית קצרה ורק אז בנו. שלב ההתאמה צריך לקבל את הרשומות מהטבלה בכל ריצה, ולא עותק קבוע בתוך הפרומפט.

 

  • resolved: ציוד מדויק מהקטלוג, source_id וציטוטים מהבקשה ומהקטלוג שמצדיקים את הבחירה.
  • ambiguous: חסר פרט מכריע. מחזירים שאלת הבהרה ומשאירים equipment ו-source_id כ-null.
  • no_match: אין ציוד מתאים בקטלוג. מחזירים שאלה ומשאירים את אותם שדות כ-null.

 

הוסיפו בדיקות בקוד: מזהה המקור קיים והציטוטים מופיעים במקורות. נתבו באמצעות If לפי ההחלטה. מיקום חסר אינו חוסם התאמת ציוד.

 

עזרה: פרומפט להוספת ההתאמה לקטלוג

 

עבריתEnglish


קרא את CLAUDE.md ופעל לפי הכללים שבו.

הוסף לתהליך הקליטה הקיים קריאת LLM רגילה נוספת להשלמת ציוד דרך OpenRouter, עם Basic LLM Chain ו-OpenRouter Chat Model. אל תמחק את שלב החילוץ, הוסף שלב אחריו.

קרא את טבלת הקטלוג שיצרנו ותיעדנו בפרק 3, באותו פרויקט n8n. הוסף Data Table בפעולת Get row(s), בחר את הטבלה שלי והפעל Return All ללא סינון. אסוף את כל שלוש הרשומות למערך catalog וחבר אותו למייל המקורי ולשדות החילוץ באותו פריט קלט, כדי שתתבצע קריאת התאמה אחת לכל בקשה. אל תפעיל קריאת מודל נפרדת לכל שורה. אל תכתוב את נתוני הקטלוג כטקסט קבוע בפרומפט ואל תשתמש במזהה הטבלה של המנחה.

הקטלוג כולל בדיוק את 9 השדות שהוגדרו בפרק 3. אם הטבלה ריקה או הקריאה נכשלת, עצור עם הודעה שאין מקור זמין. אל תסווג זאת כ-no_match ואל תמציא קטלוג.

השלב מקבל את המייל המקורי, את שדות החילוץ ואת הקטלוג. הוא בוחן את תיאור הציוד ומחזיר אחת משלוש התוצאות:
- resolved, עם equipment מהשורה המתאימה, source_id, וציטוטים מהבקשה ומהקטלוג שמראים למה הם תואמים.
- ambiguous, עם שאלת הבהרה, כאשר התיאור יכול להתאים ליותר מפריט אחד או שחסר פרט מכריע.
- no_match, עם שאלה, כאשר אין בקטלוג פריט שמתאים.

ההחלטה נעשית ביחס לשאלת הציוד בלבד. מידע חסר אחר בבקשה, כמו מיקום שלא נסגר, יכול להישאר פתוח ואינו פוסל התאמת ציוד נכונה.

נתב בעזרת If לפי התוצאה. בלי ראיה מספקת נתב לשאלה ולא להתאמה שרירותית.

אם ההחלטה אינה resolved, השאר equipment ו-source_id בערך null והחזר שאלה. בדוק שהמזהה קיים בקטלוג ושהציטוטים מופיעים במקורות המקוריים. הוסף פתקים. הצג תוכנית קצרה, בנה אחרי אישור, והצג פלט אמיתי משלושת מקרי הבדיקה.


Read CLAUDE.md and follow its rules.

Add a separate plain LLM equipment resolution call to the existing intake workflow via OpenRouter using Basic LLM Chain and OpenRouter Chat Model. Do not delete the extraction step, add a step after it.

Read the catalog table created and documented in chapter 3 in the same n8n project. Add a Data Table node using Get row(s), select my table and enable Return All with no filters. Collect all three rows in a catalog array and combine it with the original email and extracted fields in one input item, so there is one matching LLM call per request. Do not call the model once per row. Do not hardcode the catalog text in the prompt or use the instructor's table ID.

The catalog contains exactly the 9 fields specified in chapter 3. If the table is empty or cannot be read, stop with an unavailable-source message. Do not classify this as no_match and do not invent a catalog.

The step receives the original email, extracted fields, and catalog. It examines the equipment description and returns one of three outcomes:
- resolved, with equipment from the matching row, source_id, and quotes from the request and catalog showing why they match.
- ambiguous, with a clarifying question, when the description could fit more than one item or a decisive detail is missing.
- no_match, with a question, when no catalog item fits.

The decision is made with respect to the equipment question only. Other missing information in the request, such as an unsettled location, may stay open and does not invalidate a correct equipment match.

Route with If based on the outcome. Without sufficient evidence, route to a question and not to an arbitrary match.

If the decision is not resolved, leave equipment and source_id null and return a question. Check that the ID exists in the catalog and that the quotes occur in the original sources. Add notes. Show a short plan, build after approval, and show actual output for all three test cases.

 

בדקו לפני בדיקות ההתאמה: הריצו את שלב קריאת הקטלוג וודאו שהוא מחזיר 3 רשומות. פתחו את הקלט לקריאת ההתאמה ובדקו שיש בו מערך catalog עם שלושת הפריטים, לצד המייל ושדות החילוץ. בקריאת ההתאמה צריכה להופיע ריצה אחת בלבד לכל הודעת צאט.

 

למה להחזיר ראיות?

הציטוטים מאפשרים לבדוק על מה הבחירה נשענת, לזהות טעויות ולהוסיף בדיקות אוטומטיות.

 

בדקו גם שהציטוט מצדיק את הבחירה. אזכור של עגלות נעות אינו מוכיח שהקוראים ניידים.

 

מריצים שלושה מקרים

שלחו כל מקרה כהודעה חדשה. בכל מקרה החליפו את המייל כולו.

 

1. התאמה ברורה: שלחו את המייל המלא מפרק 2.

הציגו ובדקו: resolved, ציוד scanner-rig, מקור M3-CAT-01 וציטוטים שתומכים בהתאמה.

 

2. עמימות: שלחו את הטקסט הבא:

רוני, נרצה להשוות קריאות של תגיות בזמן תנועה באמצעות קוראים. נתחיל בעגלה אחת ואז נוסיף עוד שתיים. לא החלטנו אם הקוראים יהיו קבועים או ינועו עם מפעיל. המיקום עוד לא סגור.

הציגו ובדקו: ambiguous ושאלה אם הקוראים קבועים או ניידים, בלי בחירת ציוד.

 

3. אין התאמה: שלחו את הטקסט הבא:

רוני, נצטרך מצלמה תרמית כדי למדוד חום של מנוע בזמן עבודה. המיקום עוד לא סגור.

הציגו ובדקו: no_match ושאלה על ציוד או מקור מתאים, בלי התאמה שרירותית.

 

במקרה אישי: הכינו עם Claude שלושה קלטים מקבילים ובדקו את השדות שלכם מול המקור שלכם.

 

סיימתם את הבדיקה כששלוש הריצות התנהגו כמצופה. השוו ב-Executions את הבחירה, הראיות והניתוב. אין צורך לשמור קישורים או להכין דוח. אם תוצאה שגויה, תקנו ובדקו שוב.


פרק 4: שומרים לקח לפרויקט

כדי שלא להסביר שוב את אותו תיקון, מעדכנים כלל ב-CLAUDE.md ובודקים אותו בשיחה חדשה.

 

  1. בחרו ממצא: צרפו ל-Claude את המקור המלא ואת הפלט בפועל. בקשו לבדוק את הפער, לתקן ולבדוק שוב.
  2. אם לא התגלתה טעות: השתמשו במייל המוכן ובפלט מדומה {"site":"חיפה"}. סמנו שזהו פגם מכוון לתרגול, ולא טעות שהמודל עשה.
  3. עדכנו כלל: בקשו לשמור מקור, כלל קצר ותוצאת בדיקה אמיתית. עדכנו כלל קיים כשאפשר, בלי כפילות.

 

עזרה: פרומפט לעדכון ידע ולקחים

 

עבריתEnglish


קרא את CLAUDE.md ואת המקור והפלט של הבדיקה שאצרף. אם חסר אחד מהם, בקש אותו לפני הסקת מסקנות.

בדוק את הפער מול המקור. הצע תיקון ובדיקה חוזרת. אחרי שנאמת את התיקון, עדכן את CLAUDE.md ב-Markdown:
- ידע מאומת עם הפניה למקור.
- הטעות או הסיכון שהתגלו. תעד סיבה רק אם נבדקה. אחרת ציין שהסיבה טרם הוכחה ושהסיכון הודגם בבדיקה מכוונת, אם זו הבדיקה שנעשתה.
- כלל קצר שאפשר לבדוק כדי למנוע הישנות.
- מקרה הבדיקה והתוצאה שנצפתה. אם לא הורץ, ציין זאת.

בדוק אם כבר קיים כלל מתאים. עדכן אותו במקום ליצור כפילות. שמור כללים קיימים שאינם סותרים את התיקון. אל תהפוך השערה לעובדה ואל תתעד נתון מקרי מהבדיקה ככלל לכל בקשה.
הצג את השינוי בקובץ. אל תטען שהקובץ מאמן את המודל.


Read CLAUDE.md and the test source and output I append. If any is missing, request it before drawing conclusions.

Check the discrepancy against the source. Propose a fix and a repeat test. After we verify the fix, update CLAUDE.md in Markdown:
- Verified knowledge with a source reference.
- The observed error or risk. Record a cause only if verified. Otherwise state that the cause is not established, and that a seeded test demonstrated the risk if that was the test performed.
- A short, testable rule to prevent recurrence.
- The test case and observed result. State explicitly if it was not run.

Check whether a suitable rule already exists. Update it instead of duplicating it. Preserve existing rules that do not conflict with the fix. Do not turn a hypothesis into a fact or generalize incidental test data to every request.
Show the file changes. Do not claim that this file trains the model. Keep the project documentation and explanations in Hebrew.

 

אם התהליך כבר פועל נכון: אין צורך לשנות קוד. בדקו שהוא מחזיר null למייל ללא מיקום, ותעדו שהכלל הקיים עבר בדיקה.

 

לדוגמא: תחת הכותרת "לקחים שנבדקו" שמרו את הכלל: "ללא מיקום במקור, site נשאר null". תעדו מה בדקתם ומה התקבל.

 

בדקו בשיחה חדשה באותה תיקייה:

 

  1. הריצו /context וודאו שהקובץ נטען.
  2. צרפו שוב את המקור המלא ואת מקרה הבדיקה, או בקשו לקרוא אותם מקובץ מוגדר. הפניה בקובץ ההוראות אינה מבטיחה שהמקור נטען.
  3. בדקו מייל ללא מיקום, וגם מייל שבו יש מיקום מפורש. הכלל צריך לשמור מידע תקין.

 

אם שיניתם את תהליך n8n, הריצו גם אותו שוב ותעדו את התוצאה.

 

מה שומרים ולמה: CLAUDE.md נשאר בתיקיית הפרויקט כדי שהכללים והידע יעמדו לרשותכם בשיחה הבאה. אין צורך בהגשה או בדוח נוסף.


תרגול פתוח

שתי הרחבות קצרות לבחירתכם, להעמקה. אינכם חייבים לבצע את שתיהן.

 

  1. כדי להתאים את הטופס לצורך שלכם, הוסיפו שדה חדש לחילוץ, לדוגמא priority או requester_name. הגדירו קודם מה הוא מתאר. במייל המוכן אין עדיפות או שם שולח, ולכן שני השדות האלה צריכים להישאר null. רוני היא הנמענת, לא שם השולח.
  2. נסחו מייל חדש משלכם שבו הציוד מתואר בעמימות מכוונת, והריצו אותו כדי לבדוק אם התהליך מנתב ל-ambiguous עם שאלה סבירה במקום לבחור פריט כלשהו.

שאלות להמשך מחקר

שתי שאלות מעשיות לבחירתכם להעמקה. אינכם חייבים לענות על שתיהן.

 

  1. כדי לבדוק השפעה של גודל ההקשר, הוסיפו לקטלוג כמה פריטים מדומים שאינם מתאימים לאף בקשה. השוו את ההתאמות והציטוטים לפני ואחרי. מה נשמר ומה השתנה?
  2. כדי להבחין בין הנחיה לאכיפה, השוו בקשה שחסר בה מיקום לבקשה שחסר בה תיאור ציוד. התייעצו עם קלוד קוד איזה חוסר צריך לעצור כל שלב, ובדקו את הפלט בפועל.