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

מודול 3 | תרגול 3: ביקורת ושכתוב עם Claude Code

תוכן עניינים

תוכן עניינים

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

 

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

 

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

 

Draft and sources go to a Reviewer. n8n routes the result to human review, a Rewriter and another review, or a stop.

 

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


פרק 1: מגיעים לנקודת פתיחה

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

 

פתחו את לשונית Code ב-Claude Desktop ובחרו את תיקיית הפרויקט שלכם.

 

פרומפט להקמת בסיס חדש והמקורות המלאים

 

הפרומפט שומר קבצים ומקורות בלבד. הקטלוג הוא מקור הוראה מדומה.

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

 

עבריתEnglish


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

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

# דרישות להמשך, לשמירה ב-REVIEW_START.md
## תהליך יצירת טיוטה עתידי
בהמשך נבנה תהליך בסיסי שמתחיל ב-Chat Trigger. כל הודעה היא מקרה בדיקה שלם ב-JSON וכוללת request, מערך sources, שדה draft שיכול להיות null, ו-max_rewrites שמתחיל ב-2. request מכיל את טקסט המייל המלא. sources מכיל רק את רשומות הקטלוג, עם source_id ותוכן המקור. המייל אינו פריט ב-sources. כש-sources ריק, המייל נשאר ב-request. כתוב קוד פענוח ובדיקת קלט, ללא קריאת LLM נוספת לשלב הזה. אם draft הוא null, צור טיוטה באמצעות המודל. אם סופקה טיוטה, העבר אותה כפי שהיא לבדיקה. הכן לי הודעת בדיקה מלאה להעתקה מתוך החומרים שב-REVIEW_START.md. אל תסתמך על זיכרון הצאט. החזר את הטיוטה לצאט. החלטת ביקורת תתווסף רק בשלב הבא.
- השתמש ב-Basic LLM Chain מחובר ל-OpenRouter Chat Model במחבר ה-Model של השרשרת.
- אכוף פלט מובנה באמצעות Structured Output Parser: title ו-objective כמחרוזות, steps ו-open_questions כמערכי מחרוזות, success_criteria כמחרוזת או null, ו-source_ids כמערך מחרוזות.
- מקור שלא מגדיר סף הצלחה משאיר success_criteria בערך null.
- נתון חסר הופך לשאלה פתוחה ב-open_questions, לא להמצאה.
- התייחס לבודק עתידי כאל קריאת LLM נפרדת, לא כאל סוכן. אל תבנה אותו עכשיו.

# תיקיית העבודה ב-n8n
השתמש בתיקיית המודול שלי ב-n8n עם שם ייחודי, לדוגמא: 18x | Module 3 | Practice | Review.
אל תזהה את התיקייה המקומית במחשב עם התיקייה ב-n8n.

# המקורות לבדיקה
השתמש במקורות הבאים כקלט דוגמה:

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

מקור קטלוגי:
- source_id: M3-CAT-01
- equipment: scanner-rig
- purpose: movement-tracking
- description: שני קוראים נייחים ליד מעבר. העגלות עם התגיות נעות בין אזורי הקריאה.
- capabilities: שמירת מזהה תג, מזהה קורא וחותמת זמן בנפרד לכל קריאה.
- source_version: demo-v1
- provenance: מקור הוראה מדומה

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


Prepare an n8n drafting project base. For now create only CLAUDE.md and REVIEW_START.md, without building a workflow. Save the base requirements and the complete sources below in REVIEW_START.md. After inspecting the files I will open a new session and ask you to read them and propose a plan.

# Step one: the context file
Check whether a CLAUDE.md file exists in the current project folder.
If it is missing, create it. If it exists, propose an update instead of overwriting.
Write these fixed working rules into it:
- For LLM calls use OpenRouter only.
- Build simple LLM calls using a Basic LLM Chain together with an OpenRouter Chat Model. No AI Agent and no agent blocks.
- Keep system instructions separate from request data.
- A missing value stays missing and leads to a question, not to invention.
- Work in a unique copy and preserve the source.
- Do not store keys or secrets in the file. The OpenRouter connection is configured in n8n Credentials only.
- Add explanatory notes on nodes, check real output, and state explicitly what was not tested.

# Future requirements to save in REVIEW_START.md
## Future drafting process
Later we will build a base process starting with a Chat Trigger. Each message is a complete JSON test case containing request, a sources array, a draft field that can be null, and max_rewrites initially set to 2. request contains the complete email text. sources contains only catalog records with source_id and source content. The email is not an item in sources. When sources is empty, the email remains in request. Write parsing and input validation code without an additional LLM call for this step. If draft is null, generate a draft using the model. If a draft is supplied, pass it through unchanged for review. Prepare a complete copyable test message using the materials in REVIEW_START.md. Do not rely on chat memory. Return the draft to chat. A review decision will be added only in the next stage.
- Use a Basic LLM Chain connected to an OpenRouter Chat Model on the chain Model connector.
- Enforce structured output with a Structured Output Parser: title and objective are strings, steps and open_questions are string arrays, success_criteria is a string or null, and source_ids is a string array.
- A source that does not define a success threshold leaves success_criteria as null.
- A missing value becomes an open question in open_questions, not an invention.
- Treat a future reviewer as a separate LLM call, not an agent. Do not build it now.

# n8n working folder
Use my module folder in n8n with a unique name, for example: 18x | Module 3 | Practice | Review.
Do not identify the local folder on the machine with the folder in n8n.

# The sources for testing
Use the following sources as sample input:

Request email:
"Roni, can we test next week what happens when the carts pass between the two readers? It matters to me to see when both of them report the same tag.
We will start with one cart and then add two more. Save the reads and times from each reader separately, so we can compare afterwards. Tuesday morning is preferred. The location is not final yet.
Both readers will stay fixed at the crossing stations. Only the carts move between them."

Catalog source:
- source_id: M3-CAT-01
- equipment: scanner-rig
- purpose: movement-tracking
- description: Two fixed readers near a crossing. The carts with tags move between the reading zones.
- capabilities: Store tag id, reader id and timestamp separately for each read.
- source_version: demo-v1
- provenance: Simulated instructional source

# Working style
On the first run show me a short plan before you build. After I approve, build. Do not ask for approval on every single node.
Return narrative output in Hebrew. Select an accessible OpenRouter model from its available catalog, without inventing a model ID.
For now save only the two files, show their paths and contents, then stop. Do not build or run a workflow at this stage.

 

בדקו את הקבצים: CLAUDE.md כולל את כללי העבודה. REVIEW_START.md כולל את דרישות התהליך, המייל והמקור המלא M3-CAT-01.

 

פתחו שיחה חדשה בלשונית Code באותה תיקייה. הריצו /context וודאו ש-CLAUDE.md מופיע ב-Memory files.

 

פנייה קצרה לבניית הבסיס בשיחה החדשה

 

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

 

עבריתEnglish


קרא את CLAUDE.md ואת REVIEW_START.md בתיקייה הנוכחית. הצע תוכנית קצרה לבסיס יצירת הטיוטה בלבד. לאחר שאאשר בנה והריץ אותו ב-n8n.


Read CLAUDE.md and REVIEW_START.md in the current folder. Propose a short plan for the drafting base only. After I approve, build and run it in n8n.

 

אשרו את התוכנית. ב-n8n פתחו את התהליך ולחצו Open chat. בקשו מ-Claude להכין מ-REVIEW_START.md הודעת JSON מלאה עם request, sources, draft ו-max_rewrites. הריצו ובדקו: draft=null יוצר טיוטה, וטיוטה שסופקה נשמרת ללא יצירה מחדש.


פרק 2: מתייעצים ומוסיפים ביקורת


 

קראו את המקור וטיוטה מפרק 3. סמנו טענה שצריך לבדוק ופרט שאסור להמציא.

 

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

 

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

 

שאלות עזר להתייעצות, אם נתקעתם

 

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


פרק 3: בודקים שההחלטות שלכם עובדות

השאירו את המייל המלא ב-request ואת M3-CAT-01 ב-sources. בקשו מ-Claude להכין הודעת בדיקה מלאה לכל מקרה. כל ריצה מתחילה במונה שכתובים מאופס. ב-Executions בדקו טיוטה, ביקורת, מספר שכתובים וסיבת עצירה.

 

טיוטה לקויה לבדיקה, העתיקו לשדה draft

 

אפשר לבקש מ-Claude להתאים את נתוני הבדיקה, תוך שמירה על מטרת המקרה.

 

עבריתEnglish


{
  "title": "ניסוי קריאות חופפות",
  "objective": "בדיקת דיווח של שני קוראים על אותו תג",
  "steps": [
    "מתחילים מיד בשלוש עגלות בחיפה.",
    "שומרים קובץ קריאות אחד ללא מזהה קורא."
  ],
  "success_criteria": "דיוק של 99%",
  "open_questions": [],
  "source_ids": ["M3-CAT-01"]
}


{
  "title": "Overlapping reads experiment",
  "objective": "Check reporting of two readers on the same tag",
  "steps": [
    "Start immediately with three carts in Haifa.",
    "Save a single reads file without reader id."
  ],
  "success_criteria": "99% accuracy",
  "open_questions": [],
  "source_ids": ["M3-CAT-01"]
}

 

טיוטה תקינה לבדיקה, העתיקו לשדה draft

 

אפשר לבקש מ-Claude להתאים את נתוני הבדיקה, תוך שמירה על מטרת המקרה.

 

עבריתEnglish


{
  "title": "טיוטת ניסוי קריאות חופפות",
  "objective": "בדיקת דיווח של שני קוראים על אותו תג",
  "steps": [
    "צעד עבודה מוצע: לבקש אישור למיקום, לשעה המדויקת ולסף ההצלחה לפני תיאום.",
    "מתחילים בעגלה אחת בין שני קוראים קבועים, ואז מוסיפים עוד שתי עגלות.",
    "שומרים מזהה תג, מזהה קורא וחותמת זמן בנפרד לכל קריאה, ומשווים קריאות של שני הקוראים על אותו תג."
  ],
  "success_criteria": null,
  "open_questions": [
    "מה מיקום הניסוי?",
    "מה שעת ההתחלה המדויקת?",
    "מה סף ההצלחה המוסכם?"
  ],
  "source_ids": ["M3-CAT-01"]
}


{
  "title": "Overlapping reads experiment draft",
  "objective": "Check reporting of two readers on the same tag",
  "steps": [
    "Suggested work step: request approval for the location, exact time and success threshold before coordination.",
    "Start with one cart between two fixed readers, then add two more carts.",
    "Save tag id, reader id and timestamp separately for each read, and compare reads of both readers on the same tag."
  ],
  "success_criteria": null,
  "open_questions": [
    "What is the experiment location?",
    "What is the exact start time?",
    "What is the agreed success threshold?"
  ],
  "source_ids": ["M3-CAT-01"]
}

 

  1. תקינה: טיוטה תקינה, מקורות מלאים ומכסה 2. צפוי: מעבר לבדיקת אדם ללא שכתוב, גם כשיש שאלות פתוחות. התאימו את הטיוטה גם לקריטריון שבחרתם.
  2. לקויה: טיוטה לקויה, מקורות מלאים ומכסה 2. צפוי: תיקון סדר העגלות, שמירת מזהה קורא והסרת חיפה ו-99% שאינם במקור.
  3. מקור חסר: השאירו מייל מלא וטיוטה לקויה, והגדירו sources=[]. צפוי: עצירה ובקשת מקור או אדם, ללא שכתוב.
  4. מכסה: החזירו את המקור, השאירו טיוטה לקויה והגדירו max_rewrites=0. צפוי: ללא שכתוב. החזירו ל-2 בסיום. בדיקה זו בודקת חסימה בכניסה בלבד. אם לא נבדקה עצירה אחרי שני שכתובים כושלים, ציינו זאת.

 

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

 

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


פרק 4: הופכים תוצאת בדיקה לידע שנשמר בפרויקט

המטרה: לשמור ב-CLAUDE.md ידע וכלל עבודה מאומת, כדי ש-Claude יוכל להשתמש בהם בשיחה הבאה.

 

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

 

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

 

עברית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.

 

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

 

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

 

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


תרגול פתוח

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

 

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

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

 

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