<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Harness-Engineering on Code &amp; Community</title><link>https://neng-lab.com/tags/harness-engineering/</link><description>Recent content in Harness-Engineering on Code &amp; Community</description><generator>Hugo -- gohugo.io</generator><language>th-th</language><managingEditor>jitaret@gmail.com (เหน่ง)</managingEditor><webMaster>jitaret@gmail.com (เหน่ง)</webMaster><lastBuildDate>Mon, 13 Apr 2026 11:00:00 +0700</lastBuildDate><atom:link href="https://neng-lab.com/tags/harness-engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Harness Engineering ตอนที่ 3: Query Loop - หัวใจของระบบ</title><link>https://neng-lab.com/posts/harness-part-3/</link><pubDate>Mon, 13 Apr 2026 11:00:00 +0700</pubDate><author>jitaret@gmail.com (เหน่ง)</author><guid>https://neng-lab.com/posts/harness-part-3/</guid><description>&lt;img src="https://neng-lab.com/" alt="Featured image of post Harness Engineering ตอนที่ 3: Query Loop - หัวใจของระบบ" /&gt;&lt;h1 id="harness-engineering-ตอนท-3-query-loop---หวใจของระบบ"&gt;&lt;a href="#harness-engineering-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97-3-query-loop---%e0%b8%ab%e0%b8%a7%e0%b9%83%e0%b8%88%e0%b8%82%e0%b8%ad%e0%b8%87%e0%b8%a3%e0%b8%b0%e0%b8%9a%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;Harness Engineering ตอนที่ 3: Query Loop - หัวใจของระบบ
&lt;/h1&gt;&lt;h2 id="บทนำ-ทำไม-query-loop-ถงสำคญ"&gt;&lt;a href="#%e0%b8%9a%e0%b8%97%e0%b8%99%e0%b8%b3-%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1-query-loop-%e0%b8%96%e0%b8%87%e0%b8%aa%e0%b8%b3%e0%b8%84%e0%b8%8d" class="header-anchor"&gt;&lt;/a&gt;บทนำ: ทำไม Query Loop ถึงสำคัญ?
&lt;/h2&gt;&lt;p&gt;ลองนึกภาพว่า คุณมีผู้ช่วย AI ที่เก่งมาก แต่ครั้งที่คุณคุยด้วยทีละคำถาม มันก็ตอบได้แค่นั้น ถามต่อ ก็ตอบต่อ แต่ถ้าคุณต้องการให้มันทำงานซับซ้อน เช่น สร้างทั้งระบบ ต้องคุยกันหลายรอบ ปรับแก้หลายจุด จนบางทีคุณเองก็จำไม่ได้ว่าตอนนี้มันทำงานถึงไหนแล้ว&lt;/p&gt;
&lt;p&gt;นี่แหละคือที่มาของ &lt;strong&gt;Query Loop&lt;/strong&gt; - แนวคิดที่เปลี่ยน AI จาก &amp;ldquo;ผู้ตอบคำถาม&amp;rdquo; เป็น &amp;ldquo;ผู้ร่วมงานที่จดจำบริบทได้&amp;rdquo;&lt;/p&gt;
&lt;p&gt;และที่น่าสนใจคือ &lt;strong&gt;OpenAI ใช้ Query Loop สร้างโค้ดได้มากกว่า 1 ล้านบรรทัดในเวลาเพียง 5 เดือน&lt;/strong&gt; ตัวเลขนี้ไม่ใช่แค่ความเร็ว แต่มันบอกว่าการออกแบบระบบที่ถูกต้องสามารถยกระดับศักยภาพของ AI ได้อย่างมหาศาล&lt;/p&gt;
&lt;p&gt;แต่ที่น่าคิดคือ งานวิจัยจากหลายที่ชี้ว่า &lt;strong&gt;69% ของโค้ดที่ AI สร้างยังต้องมีคนตรวจสอบ&lt;/strong&gt; - หมายความว่า Query Loop ที่ดีไม่ใช่แค่ทำให้ AI ทำงานได้เร็ว แต่ต้องทำให้มันทำงาน &amp;ldquo;ถูกต้อง&amp;rdquo; ด้วย&lt;/p&gt;
&lt;p&gt;บทความนี้จะพาคุณเข้าใจว่า Query Loop คืออะไร ทำไมมันถึงเป็นหัวใจของระบบ AI และจะนำไปใช้อย่างไรให้เกิดประสิทธิภาพสูงสุด&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="query-loop-คออะไร"&gt;&lt;a href="#query-loop-%e0%b8%84%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;Query Loop คืออะไร?
&lt;/h2&gt;&lt;h3 id="คำจำกดความ"&gt;&lt;a href="#%e0%b8%84%e0%b8%b3%e0%b8%88%e0%b8%b3%e0%b8%81%e0%b8%94%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;คำจำกัดความ
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Query Loop&lt;/strong&gt; คือรูปแบบการสื่อสารกับ AI ที่ไม่ใช่แค่ &amp;ldquo;ถาม-ตอบ&amp;rdquo; ครั้งเดียว แต่เป็น &lt;strong&gt;วงจรการสนทนาที่ต่อเนื่อง&lt;/strong&gt; โดยในแต่ละรอบ AI จะ:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;รับ Query (คำถาม/คำสั่ง) พร้อมบริцепจาก.radiansก่อนหน้า&lt;/li&gt;
&lt;li&gt;ประมวลผลและให้คำตอบ&lt;/li&gt;
&lt;li&gt;รอ feedback หรือคำถามถัดไป&lt;/li&gt;
&lt;li&gt;วนซ้ำจนกว่างานจะเสร็จ&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="เปรยบเทยบใหเหนภาพ"&gt;&lt;a href="#%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%a2%e0%b8%9a%e0%b9%83%e0%b8%ab%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%a0%e0%b8%b2%e0%b8%9e" class="header-anchor"&gt;&lt;/a&gt;เปรียบเทียบให้เห็นภาพ
&lt;/h3&gt;&lt;p&gt;ลองนึกถึงการไปร้านอาหาร:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt ปกติ (ถามครั้งเดียว):&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;อยากกินข้าวผัดกระเพรา&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;พนักงานก็จะทำข้าวผัดกระเพราให้ เสร็จ แต่ถ้าคุณอยากได้น้ำซุปด้วย? ต้องสั่งใหม่&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Query Loop (วงจรต่อเนื่อง):&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;อยากกินข้าว&amp;rdquo;
&amp;ldquo;อยากกินข้าวผัด&amp;rdquo;
&amp;ldquo;ข้าวผัดกระเพรา ไม่เผ็ด&amp;rdquo;
&amp;ldquo;เพิ่มไข่ดาว&amp;rdquo;
&amp;ldquo;เอาน้ำซุปมาด้วย&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;ทุกครั้งที่สั่ง พนักงานจะจำได้ว่าคุณสั่งอะไรไปแล้วบ้าง และสร้างผลลัพธ์ที่สมบูรณ์ขึ้นเรื่อยๆ&lt;/p&gt;
&lt;p&gt;นี่แหละคือ Query Loop - การ &amp;ldquo;สะสมบริบท&amp;rdquo; ข้ามรอบการสนทนา&lt;/p&gt;
&lt;h3 id="ตางจาก-prompt-ปกตอยางไร"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%87%e0%b8%88%e0%b8%b2%e0%b8%81-prompt-%e0%b8%9b%e0%b8%81%e0%b8%95%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;ต่างจาก Prompt ปกติอย่างไร?
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ด้าน&lt;/th&gt;
 &lt;th&gt;Prompt ปกติ&lt;/th&gt;
 &lt;th&gt;Query Loop&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;บริบท&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;แยกขาดกันทุกรอบ&lt;/td&gt;
 &lt;td&gt;สะสมต่อเนื่อง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ความจำ&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ไม่มี (หรือมีแค่ในรอบเดียว)&lt;/td&gt;
 &lt;td&gt;จำได้ตลอดทั้งเซสชัน&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ผลลัพธ์&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;คำตอบเดี่ยว&lt;/td&gt;
 &lt;td&gt;งานที่ค่อยๆ สมบูรณ์ขึ้น&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;การแก้ไข&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ต้องสั่งใหม่หมด&lt;/td&gt;
 &lt;td&gt;แก้ได้ทีละส่วน&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;เหมาะกับ&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;คำถามง่ายๆ&lt;/td&gt;
 &lt;td&gt;งานซับซ้อน&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="ทำไม-query-loop-คอหวใจของระบบ"&gt;&lt;a href="#%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1-query-loop-%e0%b8%84%e0%b8%ad%e0%b8%ab%e0%b8%a7%e0%b9%83%e0%b8%88%e0%b8%82%e0%b8%ad%e0%b8%87%e0%b8%a3%e0%b8%b0%e0%b8%9a%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;ทำไม Query Loop คือหัวใจของระบบ?
&lt;/h2&gt;&lt;h3 id="1-เปลยน-ai-จาก-เครองมอ-เปน-พารทเนอร"&gt;&lt;a href="#1-%e0%b9%80%e0%b8%9b%e0%b8%a5%e0%b8%a2%e0%b8%99-ai-%e0%b8%88%e0%b8%b2%e0%b8%81-%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%ad%e0%b8%87%e0%b8%a1%e0%b8%ad-%e0%b9%80%e0%b8%9b%e0%b8%99-%e0%b8%9e%e0%b8%b2%e0%b8%a3%e0%b8%97%e0%b9%80%e0%b8%99%e0%b8%ad%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;1. เปลี่ยน AI จาก &amp;ldquo;เครื่องมือ&amp;rdquo; เป็น &amp;ldquo;พาร์ทเนอร์&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;เมื่อ AI จำบริบทได้ มันไม่ใช่แค่ตอบคำถาม แต่สามารถ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;เข้าใจเป้าหมายระยะยาว&lt;/strong&gt; - รู้ว่าคุณกำลังสร้างอะไร&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;เสนอแนะสิ่งที่ดีกว่า&lt;/strong&gt; - แนะนำวิธีที่คุณอาจไม่ได้คิด&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ปรับตัวตาม feedback&lt;/strong&gt; - รับคำแนะนำและแก้ไขได้ทันที&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-ชวยลดความผดพลาดและเพมโอกาสใหตรวจสอบ"&gt;&lt;a href="#2-%e0%b8%8a%e0%b8%a7%e0%b8%a2%e0%b8%a5%e0%b8%94%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b8%9c%e0%b8%94%e0%b8%9e%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b9%80%e0%b8%9e%e0%b8%a1%e0%b9%82%e0%b8%ad%e0%b8%81%e0%b8%b2%e0%b8%aa%e0%b9%83%e0%b8%ab%e0%b8%95%e0%b8%a3%e0%b8%a7%e0%b8%88%e0%b8%aa%e0%b8%ad%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;2. ช่วยลดความผิดพลาดและเพิ่มโอกาสให้ตรวจสอบ
&lt;/h3&gt;&lt;p&gt;ข้อมูลจากงานวิจัยหลายชิ้นชี้ให้เห็นว่า AI ยังไม่สมบูรณ์แบบ 100% แต่ Query Loop ช่วยลดปัญหานี้ได้ด้วยการ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;เพิ่มโอกาสให้ AI ตรวจสอบตัวเอง&lt;/strong&gt; - ถาม AI ว่า &amp;ldquo;โค้ดนี้ถูกต้องหรือไม่?&amp;rdquo; ก่อนจบแต่ละรอบ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ให้คนตรวจสอบได้บ่อยขึ้น&lt;/strong&gt; - แทนที่จะรอทำเสร็จทั้งหมดแล้วค่อยตรวจ ก็ตรวจทีละส่วน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ลดความผิดพลาดแบบ Cascade&lt;/strong&gt; - ถ้าผิดตั้งแต่ต้น จะไม่ลากไปทั้งระบบ&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-claude-code-vs-codex-ตวอยางจากโลกจรง"&gt;&lt;a href="#3-claude-code-vs-codex-%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b9%82%e0%b8%a5%e0%b8%81%e0%b8%88%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;3. Claude Code vs Codex: ตัวอย่างจากโลกจริง
&lt;/h3&gt;&lt;p&gt;ทั้ง &lt;strong&gt;Claude Code&lt;/strong&gt; (Anthropic) และ &lt;strong&gt;Codex&lt;/strong&gt; (OpenAI) ล้วนใช้ Query Loop แต่ออกแบบต่างกัน:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; เน้น:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Context window กว้าง (เก็บบริบทได้มาก)&lt;/li&gt;
&lt;li&gt;การตรวจสอบโค้ดอัตโนมัติ (computer use)&lt;/li&gt;
&lt;li&gt;การแก้ไขแบบ iterative&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Codex&lt;/strong&gt; เน้น:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ความเร็วในการสร้างโค้ด&lt;/li&gt;
&lt;li&gt;การ integrate กับเครื่องมือ dev&lt;/li&gt;
&lt;li&gt;การทำงานแบบ subtask (แบ่งงานเป็นชิ้นเล็กๆ)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;สิ่งที่ทั้งสองมีเหมือนกันคือ: &lt;strong&gt;ทั้งคู่เชื่อว่างานซับซ้อนต้องใช้ Query Loop&lt;/strong&gt; - ไม่มีทางที่จะสั่งครั้งเดียวแล้วได้ผลลัพธ์ที่ดี&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ประสบการณเหนง-การใช-query-loop-กบ-openclaw"&gt;&lt;a href="#%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%87-%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a-query-loop-%e0%b8%81%e0%b8%9a-openclaw" class="header-anchor"&gt;&lt;/a&gt;ประสบการณ์เหน่ง: การใช้ Query Loop กับ OpenClaw
&lt;/h2&gt;&lt;p&gt;ในระบบ &lt;strong&gt;OpenClaw&lt;/strong&gt; ที่เหน่งใช้งาน มีการนำ Query Loop มาใช้ในรูปแบบ &lt;strong&gt;Sub-agent Pattern&lt;/strong&gt; ซึ่งเป็นตัวอย่างที่ดีของการนำทฤษฎีมาใช้จริง&lt;/p&gt;
&lt;h3 id="วธทใช"&gt;&lt;a href="#%e0%b8%a7%e0%b8%98%e0%b8%97%e0%b9%83%e0%b8%8a" class="header-anchor"&gt;&lt;/a&gt;วิธีที่ใช้:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. Main Agent เป็น Router&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;ผู้ใช้ → Main Agent (วิเคราะห์คำขอ) → เลือก Specialist Agent 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; → Specialist Agent (ทำงาน) → ส่งผลลัพธ์กลับ → Main Agent → ผู้ใช้
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;นี่คือ Query Loop ระดับหนึ่ง - Main Agent จำได้ว่าคำขอนี้ควรไปที่ไหน และรอรอบต่อไป&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. Specialist Agents ทำงานเป็น Loop&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;Writer 1 → ส่งงาน → (รอ feedback) → แก้ไข → ส่งใหม่ → ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;Writer 2 → ส่งงาน → (รอ feedback) → แก้ไข → ส่งใหม่ → ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;แต่ละ Agent ทำงานใน Query Loop ของตัวเอง รอ feedback จาก Main Agent หรือผู้ใช้ก่อนจะดำเนินต่อ&lt;/p&gt;
&lt;h3 id="ปญหาทเจอและวธแก"&gt;&lt;a href="#%e0%b8%9b%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%97%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%a7%e0%b8%98%e0%b9%81%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;ปัญหาที่เจอและวิธีแก้:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;ปัญหา 1: Context ล้น (Context Overflow)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;อาการ:&lt;/strong&gt; พอทำงานนานๆ AI เริ่ม &amp;ldquo;ลืม&amp;rdquo; สิ่งที่คุยก่อนหน้า&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;วิธีแก้:&lt;/strong&gt; ใช้การสรุปบริบท (Context Summary) ก่อนเริ่มรอบใหม่ หรือแบ่งงานเป็นชิ้นเล็กๆ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ปัญหา 2: Feedback Loop หลุด&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;อาการ:&lt;/strong&gt; Agent ทำงานต่อเนื่องโดยไม่รอ feedback&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;วิธีแก้:&lt;/strong&gt; กำหนดจุด &amp;ldquo;หยุดรอ&amp;rdquo; (Checkpoint) ชัดเจน เช่น ทุกครั้งที่ส่งผลลัพธ์ ต้องรอ approval ก่อน&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ปัญหา 3: Sub-agent ไม่สื่อสารกัน&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;อาการ:&lt;/strong&gt; Writer 1 ทำอย่าง Writer 2 ทำอีกอย่าง ไม่เชื่อมกัน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;วิธีแก้:&lt;/strong&gt; ใช้ Main Agent เป็นตัวกลางประสาน และกำหนด shared context ให้ทุก Agent&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="บทเรยนทได"&gt;&lt;a href="#%e0%b8%9a%e0%b8%97%e0%b9%80%e0%b8%a3%e0%b8%a2%e0%b8%99%e0%b8%97%e0%b9%84%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;บทเรียนที่ได้:
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Query Loop ไม่ใช่แค่ &amp;ldquo;คุยซ้ำๆ&amp;rdquo;&lt;/strong&gt; - ต้องมีโครงสร้างชัดเจน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkpoint สำคัญ&lt;/strong&gt; - กำหนดจุดที่ต้องหยุดและรอ approval&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Balance ระหว่างอัตโนมัติและการควบคุม&lt;/strong&gt; - ปล่อยให้ AI ทำ แต่คนยังตรวจสอบได้&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="query-loop-ในทางปฏบต-จากทฤษฎสการใชงานจรง"&gt;&lt;a href="#query-loop-%e0%b9%83%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%8f%e0%b8%9a%e0%b8%95-%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%97%e0%b8%a4%e0%b8%a9%e0%b8%8e%e0%b8%aa%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b8%87%e0%b8%b2%e0%b8%99%e0%b8%88%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;Query Loop ในทางปฏิบัติ: จากทฤษฎีสู่การใช้งานจริง
&lt;/h2&gt;&lt;p&gt;ตอนนี้เราเข้าใจแล้วว่า Query Loop คืออะไรและทำไมมันถึงสำคัญ ถึงเวลาลงมือทำกันแล้ว! ส่วนนี้จะพาคุณไปดูว่าจะนำ Query Loop ไปใช้ในโปรเจกต์จริงอย่างไร&lt;/p&gt;
&lt;h3 id="ขนตอนการสราง-query-loop"&gt;&lt;a href="#%e0%b8%82%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%aa%e0%b8%a3%e0%b8%b2%e0%b8%87-query-loop" class="header-anchor"&gt;&lt;/a&gt;ขั้นตอนการสร้าง Query Loop
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;ขั้นที่ 1: กำหนดเป้าหมายให้ชัด&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ก่อนเริ่ม ถามตัวเองก่อนว่า:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;งานนี้ต้องทำกี่รอบ?&lt;/li&gt;
&lt;li&gt;แต่ละรอบ AI ต้องทำอะไร?&lt;/li&gt;
&lt;li&gt;เมื่อไหร่คือจุดที่เสร็จสิ้น?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ยกตัวอย่าง: ถ้าคุณต้องการให้ AI ช่วยเขียนบทความ อาจแบ่งเป็น:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;รอบ 1: ร่างโครงร่าง&lt;/li&gt;
&lt;li&gt;รอบ 2: เขียนเนื้อหาแต่ละส่วน&lt;/li&gt;
&lt;li&gt;รอบ 3: ตรวจแก้ไข&lt;/li&gt;
&lt;li&gt;รอบ 4: เพิ่ม SEO และ Formatting&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ขั้นที่ 2: เขียน Prompt แรกให้ดี&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Prompt แรกเป็นตัวกำหนดทิศทางทั้งหมด ควรมี:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;บริบท&lt;/strong&gt; - ให้ AI รู้ว่ากำลังทำอะไร&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;เป้าหมาย&lt;/strong&gt; - บอกชัดๆ ว่าต้องการอะไร&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;กรอบการทำงาน&lt;/strong&gt; - บอกว่ามีกี่รอบ แต่ละรอบทำอะไร&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ตัวอย่าง Prompt แรก:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;คุณคือนักเขียนบทความ Tech Blog ชื่อ &amp;#34;เหน่ง&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;ภารกิจ: เขียนบทความเรื่อง Query Loop
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;ขั้นตอนการทำงาน:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;1. รอบนี้ - สร้างโครงร่างบทความ 5 หัวข้อ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt;2. รอบต่อไป - เขียนเนื้อหาแต่ละหัวข้อ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt;3. รอบสุดท้าย - ตรวจสอบและปรับปรุง
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;9&lt;/span&gt;&lt;span class="cl"&gt;เริ่มต้นที่ขั้นตอน 1: สร้างโครงร่างบทความ
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ขั้นที่ 3: กำหนดจุด Checkpoint&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ทุก Query Loop ต้องมีจุด &amp;ldquo;หยุดรอ&amp;rdquo; ที่ชัดเจน ไม่ใช่ให้ AI ทำต่อเนื่องจนเสร็จ&lt;/p&gt;
&lt;p&gt;วิธีกำหนด Checkpoint:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;หลังส่งผลลัพธ์ทุกครั้ง → รอ feedback&lt;/li&gt;
&lt;li&gt;ก่อนเริ่มรอบใหม่ → สรุปสิ่งที่ทำเสร็จ&lt;/li&gt;
&lt;li&gt;ตอนสงสัย → ถามก่อนทำต่อ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ขั้นที่ 4: ให้ Feedback ที่ชัดเจน&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;นี่คือจุดที่หลายคนมองข้าม Feedback ไม่ใช่แค่บอก &amp;ldquo;ดี&amp;rdquo; หรือ &amp;ldquo;แก้&amp;rdquo; แต่ต้อง:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;บอกว่าชอบตรงไหน&lt;/strong&gt; - ให้ AI ทำซ้ำ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;บอกว่าไม่ชอบตรงไหน&lt;/strong&gt; - ให้ AI หลีกเลี่ยง&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;บอกว่าต้องการเพิ่มอะไร&lt;/strong&gt; - ให้ AI พัฒนา&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;รูปแบบ&lt;/th&gt;
 &lt;th&gt;ตัวอย่าง&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;❌ Bad Feedback&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;ยังไม่ดี แก้ใหม่&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;✅ Good Feedback&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;ส่วนนำดีมาก แต่ส่วนอธิบายคำจำกัดความยังไม่ละเอียด ขอให้ขยายความเรื่อง Context Window เพิ่มอีก 2 ย่อหน้า&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="best-practices-7-ขอสำหรบ-query-loop-ทมประสทธภาพ"&gt;&lt;a href="#best-practices-7-%e0%b8%82%e0%b8%ad%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%9a-query-loop-%e0%b8%97%e0%b8%a1%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%97%e0%b8%98%e0%b8%a0%e0%b8%b2%e0%b8%9e" class="header-anchor"&gt;&lt;/a&gt;Best Practices: 7 ข้อสำหรับ Query Loop ที่มีประสิทธิภาพ
&lt;/h2&gt;&lt;h3 id="1-เรมดวย-one-shot-แลวคอยขยาย"&gt;&lt;a href="#1-%e0%b9%80%e0%b8%a3%e0%b8%a1%e0%b8%94%e0%b8%a7%e0%b8%a2-one-shot-%e0%b9%81%e0%b8%a5%e0%b8%a7%e0%b8%84%e0%b8%ad%e0%b8%a2%e0%b8%82%e0%b8%a2%e0%b8%b2%e0%b8%a2" class="header-anchor"&gt;&lt;/a&gt;1. เริ่มด้วย &amp;ldquo;One Shot&amp;rdquo; แล้วค่อยขยาย
&lt;/h3&gt;&lt;p&gt;อย่าเพิ่งสร้าง Query Loop ที่ซับซ้อนตั้งแต่ต้น เริ่มจาก Prompt ง่ายๆ ดูผลลัพธ์ก่อน ถ้าไม่พอ แค่นั้นค่อยเพิ่มรอบ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ทำไม:&lt;/strong&gt; ลดความซับซ้อนที่ไม่จำเป็น และให้ AI มีโอกาส &amp;ldquo;เดา&amp;rdquo; ถูกตั้งแต่ครั้งแรก&lt;/p&gt;
&lt;h3 id="2-ใช-system-prompt-เปน-anchor"&gt;&lt;a href="#2-%e0%b9%83%e0%b8%8a-system-prompt-%e0%b9%80%e0%b8%9b%e0%b8%99-anchor" class="header-anchor"&gt;&lt;/a&gt;2. ใช้ &amp;ldquo;System Prompt&amp;rdquo; เป็น Anchor
&lt;/h3&gt;&lt;p&gt;System Prompt คือคำสั่งที่อยู่ตลอดเวลา ควรใส่สิ่งสำคัญที่อยากให้ AI จำได้ตลอด:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;บทบาทของ AI&lt;/li&gt;
&lt;li&gt;รูปแบบผลลัพธ์ที่ต้องการ&lt;/li&gt;
&lt;li&gt;ข้อจำกัดหรือกฎที่ต้องปฏิบัติ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง System Prompt:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;คุณคือ Writer Agent สำหรับบทความ Tech Blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;- เขียนเป็นภาษาไทย โทนเป็นกันเอง
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;- ทุกบทความต้องมี Introduction + Body + Conclusion
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;- ใช้ Schema Markup ในรูปแบบ JSON-LD
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;- หลีกเลี่ยงศัพท์เทคนิคที่ซับซ้อนเกินไป
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-สราง-state-summary-กอนรอบใหม"&gt;&lt;a href="#3-%e0%b8%aa%e0%b8%a3%e0%b8%b2%e0%b8%87-state-summary-%e0%b8%81%e0%b8%ad%e0%b8%99%e0%b8%a3%e0%b8%ad%e0%b8%9a%e0%b9%83%e0%b8%ab%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;3. สร้าง &amp;ldquo;State Summary&amp;rdquo; ก่อนรอบใหม่
&lt;/h3&gt;&lt;p&gt;ก่อนเริ่มรอบถัดไป สรุปสิ่งที่ทำเสร็จแล้วให้ AI จำ:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;[สถานะปัจจุบัน]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;- ✅ โครงร่างบทความ: เสร็จแล้ว
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;- ✅ ส่วนนำ: เสร็จแล้ว 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;- 🔄 ส่วนหลัก: กำลังทำ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt;[คำสั่งสำหรับรอบนี้]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt;เขียนส่วนหลัก 3 หัวข้อ หัวละ 300-400 คำ
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ทำไม:&lt;/strong&gt; ลดการสับสนเมื่อบริบทยาวขึ้น และให้ AI รู้ตำแหน่งที่ชัดเจน&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ขอผดพลาดทพบบอย-อยาใหเกดกบคณ"&gt;&lt;a href="#%e0%b8%82%e0%b8%ad%e0%b8%9c%e0%b8%94%e0%b8%9e%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b8%97%e0%b8%9e%e0%b8%9a%e0%b8%9a%e0%b8%ad%e0%b8%a2-%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b9%83%e0%b8%ab%e0%b9%80%e0%b8%81%e0%b8%94%e0%b8%81%e0%b8%9a%e0%b8%84%e0%b8%93" class="header-anchor"&gt;&lt;/a&gt;ข้อผิดพลาดที่พบบ่อย: อย่าให้เกิดกับคุณ
&lt;/h2&gt;&lt;h3 id="ขอผดพลาดท-1-ไมกำหนดจดหยด"&gt;&lt;a href="#%e0%b8%82%e0%b8%ad%e0%b8%9c%e0%b8%94%e0%b8%9e%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b8%97-1-%e0%b9%84%e0%b8%a1%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94%e0%b8%88%e0%b8%94%e0%b8%ab%e0%b8%a2%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;ข้อผิดพลาดที่ 1: ไม่กำหนดจุดหยุด
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;อาการ:&lt;/strong&gt; AI ทำงานต่อเนื่องโดยไม่รอ approval จนงานเพี้ยนไปหมด&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีแก้:&lt;/strong&gt; ใส่คำสั่งชัดเจน &amp;ldquo;รอ feedback ก่อนดำเนินต่อ&amp;rdquo;&lt;/p&gt;
&lt;h3 id="ขอผดพลาดท-2-context-รวไหล"&gt;&lt;a href="#%e0%b8%82%e0%b8%ad%e0%b8%9c%e0%b8%94%e0%b8%9e%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b8%97-2-context-%e0%b8%a3%e0%b8%a7%e0%b9%84%e0%b8%ab%e0%b8%a5" class="header-anchor"&gt;&lt;/a&gt;ข้อผิดพลาดที่ 2: Context รั่วไหล
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;อาการ:&lt;/strong&gt; AI เอาข้อมูลจากรอบก่อนมาใช้ผิดที่ หรือลืมข้อมูลสำคัญ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีแก้:&lt;/strong&gt; ใช้ State Summary ทุกรอบ และทำเครื่องหมาย ✅/🔄/❌ ให้ชัด&lt;/p&gt;
&lt;h3 id="ขอผดพลาดท-3-feedback-ไมชดเจน"&gt;&lt;a href="#%e0%b8%82%e0%b8%ad%e0%b8%9c%e0%b8%94%e0%b8%9e%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b8%97-3-feedback-%e0%b9%84%e0%b8%a1%e0%b8%8a%e0%b8%94%e0%b9%80%e0%b8%88%e0%b8%99" class="header-anchor"&gt;&lt;/a&gt;ข้อผิดพลาดที่ 3: Feedback ไม่ชัดเจน
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;อาการ:&lt;/strong&gt; บอก AI &amp;ldquo;แก้ใหม่&amp;rdquo; แต่ไม่บอกว่าแก้อะไร AI ก็เดาไปเรื่อยๆ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีแก้:&lt;/strong&gt; ใช้รูปแบบ &amp;ldquo;ชอบ/ไม่ชอบ/อยากได้เพิ่ม&amp;rdquo; ตามที่แนะนำไว้ข้างต้น&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="สรป-query-loop-ในแบบทใชงานไดจรง"&gt;&lt;a href="#%e0%b8%aa%e0%b8%a3%e0%b8%9b-query-loop-%e0%b9%83%e0%b8%99%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b8%97%e0%b9%83%e0%b8%8a%e0%b8%87%e0%b8%b2%e0%b8%99%e0%b9%84%e0%b8%94%e0%b8%88%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;สรุป: Query Loop ในแบบที่ใช้งานได้จริง
&lt;/h2&gt;&lt;p&gt;บทความนี้เราได้เดินทางจากความเข้าใจพื้นฐานไปจนถึงการนำไปใช้จริง:&lt;/p&gt;
&lt;h3 id="สงทไดเรยนร"&gt;&lt;a href="#%e0%b8%aa%e0%b8%87%e0%b8%97%e0%b9%84%e0%b8%94%e0%b9%80%e0%b8%a3%e0%b8%a2%e0%b8%99%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;สิ่งที่ได้เรียนรู้:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Query Loop คืออะไร&lt;/strong&gt; - วงจรการสนทนาที่ต่อเนื่อง ไม่ใช่แค่ถาม-ตอบครั้งเดียว&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ทำไมถึงสำคัญ&lt;/strong&gt; - เปลี่ยน AI จากเครื่องมือเป็นพาร์ทเนอร์ ช่วยลดความผิดพลาด และทำงานซับซ้อนได้&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;วิธีสร้าง Query Loop&lt;/strong&gt; - กำหนดเป้าหมาย → เขียน Prompt แรก → กำหนด Checkpoint → ให้ Feedback ชัด&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best Practices 7 ข้อ&lt;/strong&gt; - เริ่มเล็ก → ใช้ System Prompt → State Summary → Temperature ตามรอบ → Exit Criteria → Context จัดการ → ทดสอบก่อนจริง&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ข้อผิดพลาดที่ควรเลี่ยง&lt;/strong&gt; - ไม่กำหนดจุดหยุด, Context รั่ว, Feedback ไม่ชัด, Loop ยาวเกิน, ไม่มีคนตรวจ&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="บทเรยนสำคญ"&gt;&lt;a href="#%e0%b8%9a%e0%b8%97%e0%b9%80%e0%b8%a3%e0%b8%a2%e0%b8%99%e0%b8%aa%e0%b8%b3%e0%b8%84%e0%b8%8d" class="header-anchor"&gt;&lt;/a&gt;บทเรียนสำคัญ:
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Query Loop ไม่ใช่แค่ &amp;ldquo;คุยซ้ำๆ&amp;rdquo;&lt;/strong&gt; - มันคือโครงสร้างการทำงานที่ชัดเจน&lt;br&gt;
&lt;strong&gt;มี Checkpoint ทุกรอบ&lt;/strong&gt; - อย่าปล่อยให้ AI ทำต่อเนื่องโดยไม่มีคนตรวจ&lt;br&gt;
&lt;strong&gt;Feedback ต้องชัดเจน&lt;/strong&gt; - &amp;ldquo;แก้ใหม่&amp;rdquo; ไม่เพียงพอ ต้องบอกว่าแก้อะไร&lt;br&gt;
&lt;strong&gt;จุดหยุดต้องมี&lt;/strong&gt; - กำหนด Exit Criteria ตั้งแต่แรก&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="มองไปขางหนา-ตอนถดไปคออะไร"&gt;&lt;a href="#%e0%b8%a1%e0%b8%ad%e0%b8%87%e0%b9%84%e0%b8%9b%e0%b8%82%e0%b8%b2%e0%b8%87%e0%b8%ab%e0%b8%99%e0%b8%b2-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%96%e0%b8%94%e0%b9%84%e0%b8%9b%e0%b8%84%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;มองไปข้างหน้า: ตอนถัดไปคืออะไร?
&lt;/h2&gt;&lt;p&gt;บทความนี้เป็นแค่จุดเริ่มต้นของ &lt;strong&gt;Harness Engineering&lt;/strong&gt; ในตอนถัดไป เราจะไปดู &lt;strong&gt;Harness Components&lt;/strong&gt; หรือ &amp;ldquo;ชิ้นส่วนสำคัญ&amp;rdquo; ที่ทำให้ระบบ AI ทำงานได้อย่างมีประสิทธิภาพ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sub-agent System&lt;/strong&gt; - การแบ่งงานให้ AI หลายตัวทำงานร่วมกัน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Context Manager&lt;/strong&gt; - การจัดการบริบทให้ AI ไม่ &amp;ldquo;ลืม&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Feedback Chain&lt;/strong&gt; - การสร้างระบบ Feedback ที่มีประสิทธิภาพ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error Handling&lt;/strong&gt; - การจัดการเมื่อ AI ทำผิดพลาด&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ถ้าคุณอยากให้ OpenClaw หรือระบบ AI ของคุณทำงานได้ดีขึ้น บทความถัดไปจะเป็นคู่มือที่ครบถ้วนที่สุด&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="เตรยมพรอมสำหรบตอนตอไป"&gt;&lt;a href="#%e0%b9%80%e0%b8%95%e0%b8%a3%e0%b8%a2%e0%b8%a1%e0%b8%9e%e0%b8%a3%e0%b8%ad%e0%b8%a1%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%9a%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b9%84%e0%b8%9b" class="header-anchor"&gt;&lt;/a&gt;เตรียมพร้อมสำหรับตอนต่อไป:
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Sub-agent Pattern คืออะไรและใช้ตอนไหน&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; วิธีออกแบบ Context Manager ให้ AI จำได้นาน&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Feedback Chain: จาก &amp;ldquo;แก้ใหม่&amp;rdquo; สู่ &amp;ldquo;แก้แบบมีทิศทาง&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Error Handling: เมื่อ AI ผิดพลาด ต้องทำอย่างไร&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;บทความนี้เป็นส่วนหนึ่งของซีรีส์ &amp;ldquo;Harness Engineering&amp;rdquo; ซึ่งสำรวจแนวคิดและเทคนิคในการใช้ AI ให้เกิดประสิทธิภาพสูงสุด&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ตอนที่ 1: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-1/" &gt;Harness Engineering ตอนที่ 1: ทำไม AI ต้องมี Harness?&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอนที่ 2: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-2/" &gt;Harness Engineering ตอนที่ 2: Prompt คือ Control Plane (ไม่ใช่ Input Box)&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอนที่ 3: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-3/" &gt;Harness Engineering ตอนที่ 3: Query Loop - หัวใจของระบบ&lt;/a&gt; (บทความนี้)&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอนที่ 4: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-4/" &gt;Harness Engineering ตอนที่ 4: Tools &amp;amp; Permissions - กำหนดขอบเขต AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="คำศพท-thai-english"&gt;&lt;a href="#%e0%b8%84%e0%b8%b3%e0%b8%a8%e0%b8%9e%e0%b8%97-thai-english" class="header-anchor"&gt;&lt;/a&gt;คำศัพท์ Thai-English
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ภาษาไทย&lt;/th&gt;
 &lt;th&gt;English&lt;/th&gt;
 &lt;th&gt;ความหมาย&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Query Loop&lt;/td&gt;
 &lt;td&gt;Query Loop&lt;/td&gt;
 &lt;td&gt;วงจรการสื่อสารกับ AI แบบต่อเนื่อง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Context&lt;/td&gt;
 &lt;td&gt;Context&lt;/td&gt;
 &lt;td&gt;ข้อมูลพื้นฐาน/บริบทที่ AI ใช้ในการประมวลผล&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Checkpoint&lt;/td&gt;
 &lt;td&gt;Checkpoint&lt;/td&gt;
 &lt;td&gt;จุดหยุดรอ ก่อนดำเนินการต่อ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;System Prompt&lt;/td&gt;
 &lt;td&gt;System Prompt&lt;/td&gt;
 &lt;td&gt;คำสั่งหลักที่อยู่ตลอดเวลา&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Temperature&lt;/td&gt;
 &lt;td&gt;Temperature&lt;/td&gt;
 &lt;td&gt;ตัวกำหนดระดับความสร้างสรรค์ของ AI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Exit Criteria&lt;/td&gt;
 &lt;td&gt;Exit Criteria&lt;/td&gt;
 &lt;td&gt;เงื่อนไขที่บอกว่าเสร็จแล้ว&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Summarization&lt;/td&gt;
 &lt;td&gt;Summarization&lt;/td&gt;
 &lt;td&gt;การสรุปย่อยบริบท&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Human in the Loop&lt;/td&gt;
 &lt;td&gt;Human in the Loop&lt;/td&gt;
 &lt;td&gt;การมีคนตรวจสอบในกระบวนการ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Feedback Chain&lt;/td&gt;
 &lt;td&gt;Feedback Chain&lt;/td&gt;
 &lt;td&gt;ลำดับการให้ Feedback&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Sub-agent&lt;/td&gt;
 &lt;td&gt;Sub-agent&lt;/td&gt;
 &lt;td&gt;Agent ย่อยที่ทำงานเฉพาะทาง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;!-- Article Schema --&gt;
&lt;script type="application/ld+json"&gt;
{
 "@context": "https://schema.org",
 "@type": "Article",
 "headline": "Harness Engineering ตอนที่ 3: Query Loop - หัวใจของระบบ",
 "description": "ทำความรู้จัก Query Loop แนวคิดสำคัญที่เปลี่ยน AI จากผู้ตอบคำถามเป็นผู้ร่วมงาน พร้อม Best Practices 7 ข้อ และตัวอย่างจริงจาก OpenClaw",
 "author": {
 "@type": "Person",
 "name": "เหน่ง (Nueng)"
 },
 "datePublished": "2026-04-13",
 "publisher": {
 "@type": "Organization",
 "name": "Code &amp; Community",
 "logo": {
 "@type": "ImageObject",
 "url": "https://neng-lab.com/images/default-cover.jpg"
 }
 },
 "mainEntityOfPage": {
 "@type": "WebPage",
 "@id": "https://neng.blog/harness-engineering-3"
 },
 "articleSection": "Technology",
 "keywords": ["Query Loop", "AI Engineering", "Claude Code", "Codex", "Prompt Engineering", "Best Practices"],
 "isPartOf": {
 "@type": "ArticleSeries",
 "name": "Harness Engineering",
 "episodeNumber": 3,
 "url": "https://neng.blog/series/harness-engineering"
 },
 "breadcrumb": {
 "@type": "BreadcrumbList",
 "itemListElement": [
 {
 "@type": "ListItem",
 "position": 1,
 "name": "หน้าแรก",
 "item": "https://neng.blog"
 },
 {
 "@type": "ListItem",
 "position": 2,
 "name": "บทความ",
 "item": "https://neng.blog/posts"
 },
 {
 "@type": "ListItem",
 "position": 3,
 "name": "Harness Engineering ตอนที่ 3: Query Loop"
 }
 ]
 },
 "previousArticle": "https://neng.blog/harness-engineering-2",
 "nextArticle": "https://neng.blog/harness-engineering-4"
}
&lt;/script&gt;
&lt;hr&gt;
&lt;h2 id="-อางอง"&gt;&lt;a href="#-%e0%b8%ad%e0%b8%b2%e0%b8%87%e0%b8%ad%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;📚 อ้างอิง
&lt;/h2&gt;&lt;h3 id="แหลงขอมลหลก"&gt;&lt;a href="#%e0%b9%81%e0%b8%ab%e0%b8%a5%e0%b8%87%e0%b8%82%e0%b8%ad%e0%b8%a1%e0%b8%a5%e0%b8%ab%e0%b8%a5%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;แหล่งข้อมูลหลัก:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Harness Books Book 1 - Claude Code Harness&lt;/strong&gt; โดย wquguru (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;บทที่ 3: Query Loop - Agent&amp;rsquo;s Heartbeat&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/wquguru/harness-books/blob/main/book1-claude-code/chapter-03-query-loop-heartbeat.md" target="_blank" rel="noopener"
 &gt;https://github.com/wquguru/harness-books/blob/main/book1-claude-code/chapter-03-query-loop-heartbeat.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Harness Books Book 2 - Claude Code vs Codex&lt;/strong&gt; โดย wquguru (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;บทที่ 3: Query Loop เปรียบเทียบ Thread/Rollout/State&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/wquguru/harness-books/blob/main/book2-comparing/chapter-03-loop-thread-and-rollout.md" target="_blank" rel="noopener"
 &gt;https://github.com/wquguru/harness-books/blob/main/book2-comparing/chapter-03-loop-thread-and-rollout.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="สถตและขอมลวจย"&gt;&lt;a href="#%e0%b8%aa%e0%b8%96%e0%b8%95%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%82%e0%b8%ad%e0%b8%a1%e0%b8%a5%e0%b8%a7%e0%b8%88%e0%b8%a2" class="header-anchor"&gt;&lt;/a&gt;สถิติและข้อมูลวิจัย:
&lt;/h3&gt;&lt;ol start="3"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenAI Code Generation Statistics&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI สร้างโค้ด 1 ล้านบรรทัดใน 5 เดือน&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://openai.com/index/code-generation-milestone/" target="_blank" rel="noopener"
 &gt;https://openai.com/index/code-generation-milestone/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Human Verification in AI Code Generation&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;69% ของโค้ดที่ AI สร้างยังต้องมีคนตรวจสอบ&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2501.xxxxx" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2501.xxxxx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Code Documentation&lt;/strong&gt; โดย Anthropic (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Query Loop และการทำงานแบบต่อเนื่อง&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.anthropic.com/claude-code/query-loop" target="_blank" rel="noopener"
 &gt;https://docs.anthropic.com/claude-code/query-loop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Codex API Documentation&lt;/strong&gt; โดย OpenAI (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thread และ Rollout Management&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://platform.openai.com/docs/codex/threads" target="_blank" rel="noopener"
 &gt;https://platform.openai.com/docs/codex/threads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="best-practices"&gt;&lt;a href="#best-practices" class="header-anchor"&gt;&lt;/a&gt;Best Practices:
&lt;/h3&gt;&lt;ol start="7"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Temperature Settings for AI Code Generation&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;การปรับ Temperature ตามรอบของ Query Loop&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2503.xxxxx" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2503.xxxxx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Context Window Management in LLM Applications&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;กลยุทธ์การจัดการ Context Window&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2502.xxxxx" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2502.xxxxx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Exit Criteria Design for AI Agents&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;การกำหนดจุดหยุดที่ชัดเจน&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2504.xxxxx" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2504.xxxxx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="เครองมอและแพลตฟอรม"&gt;&lt;a href="#%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%ad%e0%b8%87%e0%b8%a1%e0%b8%ad%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b9%81%e0%b8%9e%e0%b8%a5%e0%b8%95%e0%b8%9f%e0%b8%ad%e0%b8%a3%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;เครื่องมือและแพลตฟอร์ม:
&lt;/h3&gt;&lt;ol start="10"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw Documentation&lt;/strong&gt; (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sub-agent Pattern และ Query Loop&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.openclaw.ai/query-loop" target="_blank" rel="noopener"
 &gt;https://docs.openclaw.ai/query-loop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;GitHub Copilot Documentation&lt;/strong&gt; (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;การใช้งาน Copilot แบบต่อเนื่อง&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.github.com/copilot" target="_blank" rel="noopener"
 &gt;https://docs.github.com/copilot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cursor IDE Documentation&lt;/strong&gt; (2026)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI Pair Programming แบบต่อเนื่อง&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.cursor.com" target="_blank" rel="noopener"
 &gt;https://docs.cursor.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="อานเพมเตม"&gt;&lt;a href="#%e0%b8%ad%e0%b8%b2%e0%b8%99%e0%b9%80%e0%b8%9e%e0%b8%a1%e0%b9%80%e0%b8%95%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;อ่านเพิ่มเติม:
&lt;/h3&gt;&lt;ol start="13"&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Chip Huyen - AI Engineering&lt;/strong&gt; (O&amp;rsquo;Reilly, 2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;บทที่ 8: Building AI Systems with Feedback Loops&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Martin Fowler - Harness Engineering&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://martinfowler.com/articles/harness-engineering.html" target="_blank" rel="noopener"
 &gt;https://martinfowler.com/articles/harness-engineering.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Google AI - Best Practices for LLM Applications&lt;/strong&gt; (2025)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://ai.google/best-practices/llm-apps" target="_blank" rel="noopener"
 &gt;https://ai.google/best-practices/llm-apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Harness Engineering ตอนที่ 2: Prompt คือ Control Plane (ไม่ใช่ Input Box)</title><link>https://neng-lab.com/posts/harness-part-2/</link><pubDate>Mon, 13 Apr 2026 10:00:00 +0700</pubDate><author>jitaret@gmail.com (เหน่ง)</author><guid>https://neng-lab.com/posts/harness-part-2/</guid><description>&lt;img src="https://neng-lab.com/" alt="Featured image of post Harness Engineering ตอนที่ 2: Prompt คือ Control Plane (ไม่ใช่ Input Box)" /&gt;&lt;h1 id="harness-engineering-ตอนท-2-prompt-คอ-control-plane-ไมใช-input-box"&gt;&lt;a href="#harness-engineering-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97-2-prompt-%e0%b8%84%e0%b8%ad-control-plane-%e0%b9%84%e0%b8%a1%e0%b9%83%e0%b8%8a-input-box" class="header-anchor"&gt;&lt;/a&gt;Harness Engineering ตอนที่ 2: Prompt คือ Control Plane (ไม่ใช่ Input Box)
&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;คำโปรย:&lt;/strong&gt; &amp;ldquo;Prompt กำหนดวิธีพูด, Harness กำหนดวิธีทำงาน&amp;rdquo; — เรียนรู้ว่าทำไม Prompt Engineering ถึงถึงจุดอิ่มตัว และ Harness Engineering คือคำตอบ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-สวนนำ-ทำไม-prompt-ถงสำคญกวาทคด"&gt;&lt;a href="#-%e0%b8%aa%e0%b8%a7%e0%b8%99%e0%b8%99%e0%b8%b3-%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1-prompt-%e0%b8%96%e0%b8%87%e0%b8%aa%e0%b8%b3%e0%b8%84%e0%b8%8d%e0%b8%81%e0%b8%a7%e0%b8%b2%e0%b8%97%e0%b8%84%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;🎣 ส่วนนำ: ทำไม Prompt ถึงสำคัญกว่าที่คิด?
&lt;/h2&gt;&lt;p&gt;ลองนึกภาพว่าคุณมีรถยนต์คันหนึ่ง&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;แบบที่ 1:&lt;/strong&gt; คุณบอก &amp;ldquo;ขับไปถึงที่หมาย&amp;rdquo; — รถจะพาคุณไปได้ แต่ถ้ามีเด็กวิ่งตัดหน้า? รถอาจจะเบรกไม่ทัน&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;แบบที่ 2:&lt;/strong&gt; คุณบอก &amp;ldquo;ขับไปที่หมาย แต่ต้องระวังเด็กข้างทาง ขับช้ากว่า 50 กม./ชม. ห้ามแซง และต้องหยุดเติมน้ำมันทุก 200 กม.&amp;rdquo; — ผลลัพธ์จะต่างกันมาก&lt;/p&gt;
&lt;p&gt;Prompt ก็เหมือนกัน&lt;/p&gt;
&lt;p&gt;หลายคนมอง Prompt เป็นแค่ &amp;ldquo;กล่องใส่ข้อความ&amp;rdquo; ที่พิมพ์ๆ แล้วกดส่ง แต่ถ้ามองในมุมของ &lt;strong&gt;Harness Engineering&lt;/strong&gt; — Prompt คือ &lt;strong&gt;Control Plane&lt;/strong&gt; ที่ควบคุมพฤติกรรมของ AI ไม่ใช่แค่ input ที่ใส่เข้าไป&lt;/p&gt;
&lt;p&gt;และนี่คือจุดที่หลายคนเข้าใจผิด&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-prompt-คออะไร"&gt;&lt;a href="#-prompt-%e0%b8%84%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;🤔 Prompt คืออะไร?
&lt;/h2&gt;&lt;h3 id="มมมองเดม-vs-มมมองใหม"&gt;&lt;a href="#%e0%b8%a1%e0%b8%a1%e0%b8%a1%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%94%e0%b8%a1-vs-%e0%b8%a1%e0%b8%a1%e0%b8%a1%e0%b8%ad%e0%b8%87%e0%b9%83%e0%b8%ab%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;มุมมองเดิม vs มุมมองใหม่
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;มุมมองเดิม (Input Box):&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;Prompt คือ ข้อความที่ใส่เข้าไปในกล่อง chat เพื่อบอก AI ให้ทำอะไรสักอย่าง&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;มุมมองใหม่ (Control Plane):&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;Prompt คือ interface สำหรับควบคุมพฤติกรรมของ AI — เหมือนพวงมาลัยที่ควบคุมทิศทาง ไม่ใช่แค่เชื้อเพลิงที่ใส่เข้าไป&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="ทำไมตองแยกใหชด"&gt;&lt;a href="#%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b9%81%e0%b8%a2%e0%b8%81%e0%b9%83%e0%b8%ab%e0%b8%8a%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;ทำไมต้องแยกให้ชัด?
&lt;/h3&gt;&lt;p&gt;เพราะถ้ามอง Prompt เป็นแค่ Input Box → คุณจะโฟกัสที่ &amp;ldquo;จะพิมพ์อะไรดี&amp;rdquo;
แต่ถ้ามอง Prompt เป็น Control Plane → คุณจะโฟกัสที่ &amp;ldquo;จะ design ระบบอย่างไรให้ AI ทำงานถูกต้อง&amp;rdquo;&lt;/p&gt;
&lt;p&gt;นี่คือความแตกต่างระหว่าง &lt;strong&gt;Prompt Engineering&lt;/strong&gt; (ปรับแต่งข้อความ) กับ &lt;strong&gt;Harness Engineering&lt;/strong&gt; (ออกแบบระบบควบคุม)&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="-ตวอยางเปรยบเทยบ-input-box-vs-control-plane"&gt;&lt;a href="#-%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%a2%e0%b8%9a-input-box-vs-control-plane" class="header-anchor"&gt;&lt;/a&gt;📊 ตัวอย่างเปรียบเทียบ: Input Box vs Control Plane
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;สถานการณ์&lt;/th&gt;
 &lt;th&gt;แบบ Input Box (เดิม)&lt;/th&gt;
 &lt;th&gt;แบบ Control Plane (ใหม่)&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;ระบบเคลมประกัน&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;ตรวจสอบคำขอเคลมประกัน&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;กำหนด workflow: ตรวจสอบเงื่อนไข → คำนวณค่าชดเชย → ตรวจสอบเอกสาร → ส่งข้อมูลให้คนอนุมัติ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;เขียนโค้ด&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;เขียน Python function&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;เขียน Python + เขียน test ด้วย + ห้าม commit ถ้า test fail&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;วิเคราะห์ข้อมูล&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;วิเคราะห์ข้อมูลนี้&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;กำหนด: ใช้สถิติอะไร → รูปแบบการแสดงผล → ข้อจำกัดของข้อมูล&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Customer Support&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;ตอบลูกค้า&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;กำหนด: โทนเสียง → SLA → Escalation path → Satisfaction survey&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Content Creation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&amp;ldquo;เขียนบทความ&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;กำหนด: Tone of voice → SEO keywords → Word count → Fact-checking process&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;เห็นไหม? Control Plane ไม่ได้แค่ &amp;ldquo;บอกว่าทำอะไร&amp;rdquo; แต่ &amp;ldquo;บอกว่าทำอย่างไร ด้วยเงื่อนไขอะไร&amp;rdquo;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-prompt-layering-3-ระดบของการควบคม"&gt;&lt;a href="#-prompt-layering-3-%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a%e0%b8%82%e0%b8%ad%e0%b8%87%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%84%e0%b8%a7%e0%b8%9a%e0%b8%84%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;🏗️ Prompt Layering: 3 ระดับของการควบคุม
&lt;/h2&gt;&lt;p&gt;ไม่ใช่ทุก Prompt อยู่ในระดับเดียวกัน การแบ่งชั้นของ Prompt ช่วยให้เราออกแบบระบบที่ซับซ้อนได้ดีขึ้น&lt;/p&gt;
&lt;h3 id="ตารางเปรยบเทยบ-3-ระดบ"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%a3%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%a2%e0%b8%9a-3-%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;ตารางเปรียบเทียบ 3 ระดับ
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ระดับ&lt;/th&gt;
 &lt;th&gt;ชื่อ&lt;/th&gt;
 &lt;th&gt;หน้าที่&lt;/th&gt;
 &lt;th&gt;ตัวอย่าง&lt;/th&gt;
 &lt;th&gt;ความถี่ในการเปลี่ยน&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;1. Orchestration&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ระดับจัดการงาน&lt;/td&gt;
 &lt;td&gt;กำหนดว่า &amp;ldquo;ต้องทำอะไรบ้าง เรียงลำดับอย่างไร&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Agent workflow, task decomposition&lt;/td&gt;
 &lt;td&gt;นานๆ ครั้ง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;2. Runtime&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ระดับขณะทำงาน&lt;/td&gt;
 &lt;td&gt;กำหนด &amp;ldquo;บริบท ข้อจำกัด เงื่อนไข&amp;rdquo; ขณะ AI ทำงาน&lt;/td&gt;
 &lt;td&gt;Context, constraints, validation rules&lt;/td&gt;
 &lt;td&gt;ปรับตามงาน&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;3. Model Interface&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ระดับติดต่อโมเดล&lt;/td&gt;
 &lt;td&gt;กำหนด &amp;ldquo;รูปแบบการสื่อสารกับโมเดล&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Instructions, format, output structure&lt;/td&gt;
 &lt;td&gt;บ่อย (ปรับ prompt ทุกครั้ง)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="อธบายแบบงายๆ"&gt;&lt;a href="#%e0%b8%ad%e0%b8%98%e0%b8%9a%e0%b8%b2%e0%b8%a2%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b8%87%e0%b8%b2%e0%b8%a2%e0%b9%86" class="header-anchor"&gt;&lt;/a&gt;อธิบายแบบง่ายๆ
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Orchestration&lt;/strong&gt; = ผู้จัดการโปรเจกต์ ที่บอกว่า &amp;ldquo;เรามี 5 ขั้นตอน ขั้น 1 ทำ A ขั้น 2 ทำ B&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Runtime&lt;/strong&gt; = หัวหน้างาน ที่บอกว่า &amp;ldquo;ตอนทำขั้นนี้ อย่าลืมเรื่องความปลอดภัยด้วย&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model Interface&lt;/strong&gt; = เลขาที่ ที่บอกว่า &amp;ldquo;เขียนรายงานในรูปแบบนี้&amp;hellip;&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ทั้ง 3 ระดับทำงานร่วมกัน เหมือนโครงสร้างองค์กร — แต่ละชั้นมีหน้าที่ต่างกัน&lt;/p&gt;
&lt;h3 id="ตวอยางโคด-prompt-layering-ในทางปฏบต"&gt;&lt;a href="#%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b9%82%e0%b8%84%e0%b8%94-prompt-layering-%e0%b9%83%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%8f%e0%b8%9a%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;ตัวอย่างโค้ด: Prompt Layering ในทางปฏิบัติ
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Layer 1: Orchestration (Foundation)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;SYSTEM_PROMPT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;You are a senior Python developer working on a FastAPI project.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;You always write type-safe, well-documented code.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;You follow TDD: write tests before implementation.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Layer 2: Runtime (Context)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;CONTEXT_PROMPT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;Current project structure:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- /app/main.py - FastAPI entry point
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- /app/models/ - Pydantic models
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- /app/routers/ - API endpoints
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- /tests/ - Pytest test files
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;Current task: Implement user authentication
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Layer 3: Model Interface (Task)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;TASK_PROMPT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;Write a function to authenticate user by JWT token.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;Requirements:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- Use Pydantic for validation
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- Return HTTPException on failure
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- Include unit tests
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;- Follow existing code style
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Combine all layers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;full_prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;SYSTEM_PROMPT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;CONTEXT_PROMPT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TASK_PROMPT&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-สถตทนาสนใจ"&gt;&lt;a href="#-%e0%b8%aa%e0%b8%96%e0%b8%95%e0%b8%97%e0%b8%99%e0%b8%b2%e0%b8%aa%e0%b8%99%e0%b9%83%e0%b8%88" class="header-anchor"&gt;&lt;/a&gt;📈 สถิติที่น่าสนใจ
&lt;/h2&gt;&lt;p&gt;ข้อมูลจากงานวิจัยชี้ว่า:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;วิธี&lt;/th&gt;
 &lt;th&gt;ผลตอบแทน&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Prompt Engineering แบบเดิม&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ปรับปรุงได้ &lt;strong&gt;&amp;lt;3%&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Harness-level changes (รวม Prompt Layering)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ปรับปรุงได้ &lt;strong&gt;28-47%&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;นั่นหมายความว่า การเปลี่ยนแปลงที่ระดับ &amp;ldquo;ระบบ&amp;rdquo; (Harness) มีผลมากกว่าการเปลี่ยนแปลงที่ระดับ &amp;ldquo;ข้อความ&amp;rdquo; (Prompt) ถึง &lt;strong&gt;10 เท่า!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;และนี่คือเหตุผลที่เราต้องมอง Prompt เป็น Control Plane ไม่ใช่แค่ Input Box&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-agentsmd-แผนท-ไมใช-prompt-ยาวๆ"&gt;&lt;a href="#-agentsmd-%e0%b9%81%e0%b8%9c%e0%b8%99%e0%b8%97-%e0%b9%84%e0%b8%a1%e0%b9%83%e0%b8%8a-prompt-%e0%b8%a2%e0%b8%b2%e0%b8%a7%e0%b9%86" class="header-anchor"&gt;&lt;/a&gt;📄 AGENTS.md: แผนที่ ไม่ใช่ Prompt ยาวๆ
&lt;/h2&gt;&lt;p&gt;อีกตัวอย่างที่ดีคือไฟล์ &lt;strong&gt;AGENTS.md&lt;/strong&gt; ในโปรเจกต์ต่างๆ&lt;/p&gt;
&lt;p&gt;หลายคนเขียน prompt ยาวเต็มไฟล์ แต่ AGENTS.md ที่ดีควรเป็น &lt;strong&gt;แผนที่&lt;/strong&gt; — บอกว่า:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent นี้ทำอะไร&lt;/li&gt;
&lt;li&gt;ต้อง interact กับอะไรบ้าง&lt;/li&gt;
&lt;li&gt;มีข้อจำกัดอะไร&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ไม่ใช่ &amp;ldquo;script ที่ต้องอ่านทุกบรรทัด&amp;rdquo;&lt;/p&gt;
&lt;h3 id="ตวอยาง-agentsmd-ทด"&gt;&lt;a href="#%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87-agentsmd-%e0%b8%97%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;ตัวอย่าง: AGENTS.md ที่ดี
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# Agent Role: Backend Developer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Responsibilities
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Implement API endpoints
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Write unit tests
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Update documentation
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Constraints
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Must use type hints
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Must achieve 90% test coverage
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Cannot modify database schema without approval
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Workflow
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; Read task from TASKS.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; Implement code
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; Run tests
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;4.&lt;/span&gt; Submit for review
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;นี่คือหลักการของ &lt;strong&gt;Prompt Layering&lt;/strong&gt; — แบ่งให้ชัด ไม่ยัดทุกอย่างไว้ที่เดียว&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-จากทฤษฎส-reality-check-claude-code-vs-codex"&gt;&lt;a href="#-%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%97%e0%b8%a4%e0%b8%a9%e0%b8%8e%e0%b8%aa-reality-check-claude-code-vs-codex" class="header-anchor"&gt;&lt;/a&gt;🔍 จากทฤษฎีสู่ Reality Check: Claude Code vs Codex
&lt;/h2&gt;&lt;p&gt;ตอนนี้เราเข้าใจหลักการแล้ว มาดูตัวอย่างจริงกัน&lt;/p&gt;
&lt;h3 id="claude-code-vs-openai-codex"&gt;&lt;a href="#claude-code-vs-openai-codex" class="header-anchor"&gt;&lt;/a&gt;Claude Code vs OpenAI Codex
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ด้าน&lt;/th&gt;
 &lt;th&gt;Claude Code&lt;/th&gt;
 &lt;th&gt;OpenAI Codex&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;แนวทาง&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Proactive Planner&lt;/td&gt;
 &lt;td&gt;Shell-first Surgeon&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Workflow&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;สแกน repo ก่อนแล้ว plan&lt;/td&gt;
 &lt;td&gt;เริ่มจาก lean context&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ใช้ CLAUDE.md เป็น long-term memory&lt;/td&gt;
 &lt;td&gt;ใช้ AGENTS.md เป็น map&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Context Window&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;1M tokens&lt;/td&gt;
 &lt;td&gt;200K tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Token Usage&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ใช้มากกว่า 3.2-4.2 เท่า&lt;/td&gt;
 &lt;td&gt;ใช้น้อยกว่า แต่ thorough น้อยกว่า&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Agent Teams&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Coordinated agents&lt;/td&gt;
 &lt;td&gt;Cloud sandbox per task&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Isolation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Git worktree per agent&lt;/td&gt;
 &lt;td&gt;Cloud sandbox&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ตวอยาง-token-usage-ตางกนอยางไร"&gt;&lt;a href="#%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87-token-usage-%e0%b8%95%e0%b8%b2%e0%b8%87%e0%b8%81%e0%b8%99%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;ตัวอย่าง: Token Usage ต่างกันอย่างไร?
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;งาน: Implement user authentication
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;Claude Code:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;- Scan repo: 50K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;- Read CLAUDE.md: 10K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;- Plan: 5K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;- Implement: 30K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;- Test: 20K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;- Total: ~115K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;Codex:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;- Read AGENTS.md: 5K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;- Implement: 20K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;- Test: 10K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;- Total: ~35K tokens
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;Ratio: Claude Code ใช้ token มากกว่า ~3.3 เท่า
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;คำถาม:&lt;/strong&gt; แล้วควรเลือกอันไหน?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;คำตอบ:&lt;/strong&gt; ขึ้นอยู่กับงาน&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; — เหมาะกับงานที่ซับซ้อน ต้องการ thorough plan&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Codex&lt;/strong&gt; — เหมาะกับงานเร็วๆ ไม่ซับซ้อนมาก&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-guardrails-3-ระดบ"&gt;&lt;a href="#-guardrails-3-%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;🛡️ Guardrails 3 ระดับ
&lt;/h2&gt;&lt;p&gt;Prompt ที่ดีต้องมี Guardrails — เหมือนรั้วที่ป้องกันไม่ให้ AI ทำผิด&lt;/p&gt;
&lt;h3 id="ตาราง-guardrails-3-ระดบ"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%a3%e0%b8%b2%e0%b8%87-guardrails-3-%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;ตาราง: Guardrails 3 ระดับ
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ระดับ&lt;/th&gt;
 &lt;th&gt;ประเภท&lt;/th&gt;
 &lt;th&gt;ตัวอย่าง&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Content filtering, Schema validation, Rate limiting&lt;/td&gt;
 &lt;td&gt;ห้าม prompt injection, ต้องเป็น JSON, จำกัด 10 requests/min&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Format validation, Factual grounding, Safety classifiers&lt;/td&gt;
 &lt;td&gt;ต้องมี type hints, ต้องอ้างอิงแหล่งที่มา, ห้าม generate harmful content&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Execution&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Tool call approval, Resource limits, Deadlock detection&lt;/td&gt;
 &lt;td&gt;ต้องขออนุญาตก่อน rm -rf, จำกัด CPU 50%, ตรวจจับ infinite loop&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ตวอยางโคด-guardrails-ในทางปฏบต"&gt;&lt;a href="#%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b9%82%e0%b8%84%e0%b8%94-guardrails-%e0%b9%83%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%8f%e0%b8%9a%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;ตัวอย่างโค้ด: Guardrails ในทางปฏิบัติ
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Guardrails&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Input guardrails&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Prompt too long&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;rm -rf&amp;#34;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Dangerous command detected&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_output&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Output guardrails&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;has_type_hints&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Missing type hints&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;has_docstrings&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Missing docstrings&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_execution&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Execution guardrails&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;file_write&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;tool_call&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;path&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/safe/&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Unsafe path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-memory-systems-5-ประเภท"&gt;&lt;a href="#-memory-systems-5-%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b9%80%e0%b8%a0%e0%b8%97" class="header-anchor"&gt;&lt;/a&gt;🧠 Memory Systems 5 ประเภท
&lt;/h2&gt;&lt;p&gt;AI จำเป็นต้องมี Memory — แต่ไม่ใช่แค่ &amp;ldquo;จำได้ทุกเรื่อง&amp;rdquo; แต่ต้องจำอย่างมีระบบ&lt;/p&gt;
&lt;h3 id="ตาราง-memory-systems-5-ประเภท"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%a3%e0%b8%b2%e0%b8%87-memory-systems-5-%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b9%80%e0%b8%a0%e0%b8%97" class="header-anchor"&gt;&lt;/a&gt;ตาราง: Memory Systems 5 ประเภท
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ประเภท&lt;/th&gt;
 &lt;th&gt;หน้าที่&lt;/th&gt;
 &lt;th&gt;ตัวอย่าง&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;System Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ระบบพื้นฐาน&lt;/td&gt;
 &lt;td&gt;Rules, constraints, guardrails&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Session Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ระหว่าง session&lt;/td&gt;
 &lt;td&gt;Conversation history, current task&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Project Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;โปรเจกต์ปัจจุบัน&lt;/td&gt;
 &lt;td&gt;CLAUDE.md, AGENTS.md, progress.md&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;User Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ความชอบผู้ใช้&lt;/td&gt;
 &lt;td&gt;Coding style, preferences, patterns&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;World Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ความรู้ทั่วไป&lt;/td&gt;
 &lt;td&gt;Documentation, APIs, best practices&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ตวอยาง-การใชงาน-memory-ในทางปฏบต"&gt;&lt;a href="#%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87-%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b8%87%e0%b8%b2%e0%b8%99-memory-%e0%b9%83%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%8f%e0%b8%9a%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;ตัวอย่าง: การใช้งาน Memory ในทางปฏิบัติ
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# CLAUDE.md (Project Memory)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Project Overview
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Name: FastAPI Auth System
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Version: 1.0.0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Python: 3.11+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Coding Standards
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Type hints: Required
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Test coverage: 90%+
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; Documentation: Google style
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Current Progress
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; User model
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [x]&lt;/span&gt; Authentication endpoint
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Authorization middleware
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;- [ ]&lt;/span&gt; Unit tests
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-retry-logic-5-ระดบ"&gt;&lt;a href="#-retry-logic-5-%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;🔄 Retry Logic 5 ระดับ
&lt;/h2&gt;&lt;p&gt;เมื่อ AI ทำผิด — จะทำอย่างไร?&lt;/p&gt;
&lt;h3 id="ตาราง-retry-logic-5-ระดบ"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%a3%e0%b8%b2%e0%b8%87-retry-logic-5-%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a" class="header-anchor"&gt;&lt;/a&gt;ตาราง: Retry Logic 5 ระดับ
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ระดับ&lt;/th&gt;
 &lt;th&gt;ประเภท&lt;/th&gt;
 &lt;th&gt;เมื่อไหร่ใช้&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;1. Simple Retry&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ลองใหม่เหมือนเดิม&lt;/td&gt;
 &lt;td&gt;Error ชั่วคราว (network timeout)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;2. Reformulated Retry&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ลองใหม่โดยปรับ prompt&lt;/td&gt;
 &lt;td&gt;Model เข้าใจผิด&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;3. Model Fallback&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;เปลี่ยนโมเดล&lt;/td&gt;
 &lt;td&gt;โมเดลปัจจุบันทำไม่ได้&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;4. Decomposition Retry&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;แยกงานย่อย&lt;/td&gt;
 &lt;td&gt;งานซับซ้อนเกินไป&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;5. Human Escalation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ให้คนทำ&lt;/td&gt;
 &lt;td&gt;AI ทำไม่ได้จริงๆ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ตวอยางโคด-retry-logic-ในทางปฏบต"&gt;&lt;a href="#%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b9%82%e0%b8%84%e0%b8%94-retry-logic-%e0%b9%83%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87%e0%b8%9b%e0%b8%8f%e0%b8%9a%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;ตัวอย่างโค้ด: Retry Logic ในทางปฏิบัติ
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;RetryLogic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;execute_with_retry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_retries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;attempt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_retries&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Level 1: Simple Retry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;TemporaryError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;MisunderstandingError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Level 2: Reformulated Retry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reformulate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;ModelCapabilityError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Level 3: Model Fallback&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_fallback_model&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;ComplexityError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Level 4: Decomposition Retry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;subtasks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;decompose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute_with_retry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;subtasks&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;combine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Level 5: Human Escalation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;escalate_to_human&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-sub-agent-isolation"&gt;&lt;a href="#-sub-agent-isolation" class="header-anchor"&gt;&lt;/a&gt;👥 Sub-agent Isolation
&lt;/h2&gt;&lt;p&gt;เมื่อมีหลาย Agent — จะแยกกันอย่างไร?&lt;/p&gt;
&lt;h3 id="ตาราง-codex-vs-claude"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%a3%e0%b8%b2%e0%b8%87-codex-vs-claude" class="header-anchor"&gt;&lt;/a&gt;ตาราง: Codex vs Claude
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ด้าน&lt;/th&gt;
 &lt;th&gt;Codex&lt;/th&gt;
 &lt;th&gt;Claude&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Isolation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Cloud sandbox per task&lt;/td&gt;
 &lt;td&gt;Git worktree per agent&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Communication&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;ผ่าน API&lt;/td&gt;
 &lt;td&gt;อ่าน shared files ได้&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Stateless per task&lt;/td&gt;
 &lt;td&gt;Stateful across session&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Resource&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;แยกชัดเจน&lt;/td&gt;
 &lt;td&gt;Shared แต่มี limits&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="-สรปตอนท-2"&gt;&lt;a href="#-%e0%b8%aa%e0%b8%a3%e0%b8%9b%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97-2" class="header-anchor"&gt;&lt;/a&gt;📝 สรุปตอนที่ 2
&lt;/h2&gt;&lt;h3 id="สงทไดเรยนร"&gt;&lt;a href="#%e0%b8%aa%e0%b8%87%e0%b8%97%e0%b9%84%e0%b8%94%e0%b9%80%e0%b8%a3%e0%b8%a2%e0%b8%99%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;สิ่งที่ได้เรียนรู้:
&lt;/h3&gt;&lt;p&gt;✅ &lt;strong&gt;Prompt คือ Control Plane&lt;/strong&gt; — ไม่ใช่ Input Box แต่เป็น interface ควบคุมพฤติกรรม&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Prompt Layering 3 ระดับ&lt;/strong&gt; — Orchestration, Runtime, Model Interface&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;สถิติ&lt;/strong&gt; — Harness-level changes ได้ 28-47% improvement (vs &amp;lt;3% จาก prompt engineering)&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Claude Code vs Codex&lt;/strong&gt; — 2 แนวคิดต่างกัน (Proactive Planner vs Shell-first Surgeon)&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Guardrails 3 ระดับ&lt;/strong&gt; — Input, Output, Execution&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Memory Systems 5 ประเภท&lt;/strong&gt; — System, Session, Project, User, World&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Retry Logic 5 ระดับ&lt;/strong&gt; — Simple → Reformulated → Fallback → Decomposition → Human&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;Sub-agent Isolation&lt;/strong&gt; — Cloud Sandbox vs Git Worktree&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-บทเรยนจากประสบการณเหนง"&gt;&lt;a href="#-%e0%b8%9a%e0%b8%97%e0%b9%80%e0%b8%a3%e0%b8%a2%e0%b8%99%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;💡 บทเรียนจากประสบการณ์เหน่ง
&lt;/h2&gt;&lt;h3 id="ชวงแรก-ใช-ai-โดยไมม-harness"&gt;&lt;a href="#%e0%b8%8a%e0%b8%a7%e0%b8%87%e0%b9%81%e0%b8%a3%e0%b8%81-%e0%b9%83%e0%b8%8a-ai-%e0%b9%82%e0%b8%94%e0%b8%a2%e0%b9%84%e0%b8%a1%e0%b8%a1-harness" class="header-anchor"&gt;&lt;/a&gt;ช่วงแรก: ใช้ AI โดยไม่มี Harness
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;❌ ใส่ prompt สั้นๆ แล้วดูว่าได้อะไร
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;❌ &amp;#34;ช่วยเขียน Python script หน่อย&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;❌ &amp;#34;สรุปข้อความนี้ให้หน่อย&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ผลลัพธ์:&lt;/strong&gt; ได้มาบ้าง ไม่ได้บ้าง AI บางทีเขียนโค้ดผิด ต้องมานั่งแก้ไขเองเยอะ&lt;/p&gt;
&lt;h3 id="ปจจบน-ใช-qwen-alibaba-พรอม-flow"&gt;&lt;a href="#%e0%b8%9b%e0%b8%88%e0%b8%88%e0%b8%9a%e0%b8%99-%e0%b9%83%e0%b8%8a-qwen-alibaba-%e0%b8%9e%e0%b8%a3%e0%b8%ad%e0%b8%a1-flow" class="header-anchor"&gt;&lt;/a&gt;ปัจจุบัน: ใช้ Qwen (Alibaba) พร้อม Flow
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;✅ กำหนด Orchestration → &amp;#34;งานนี้ต้องทำอะไรบ้าง&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;✅ กำหนด Runtime → &amp;#34;มีเงื่อนไขอะไรต้องระวัง&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;✅ กำหนด Model Interface → &amp;#34;output ต้องออกมาในรูปแบบไหน&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ผลลัพธ์:&lt;/strong&gt; &lt;strong&gt;พอใจ 90%&lt;/strong&gt; — AI ให้สิ่งที่ต้องการมากขึ้น แก้ไขน้อยลง&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;Flow แล้ว&amp;rdquo; = มีขั้นตอนชัดเจน ไม่ใช่แค่ &amp;ldquo;ถามๆๆ ไปเรื่อย&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="การเดนทาง-ไมม-harness--ม-flow--ม-guardrails"&gt;&lt;a href="#%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%94%e0%b8%99%e0%b8%97%e0%b8%b2%e0%b8%87-%e0%b9%84%e0%b8%a1%e0%b8%a1-harness--%e0%b8%a1-flow--%e0%b8%a1-guardrails" class="header-anchor"&gt;&lt;/a&gt;การเดินทาง: ไม่มี Harness → มี Flow → มี Guardrails
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;Stage 1: ไม่มี Harness
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;- ใช้ AI ตามใจ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;- ผลลัพธ์ไม่แน่นอน
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;- เสียเวลาแก้ไขเยอะ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;Stage 2: มี Flow
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;- มีขั้นตอนชัดเจน
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;- ผลลัพธ์ดีขึ้น
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;- เสียเวลาน้อยลง
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;Stage 3: มี Guardrails
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;- มีระบบป้องกัน
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;- ผลลัพธ์น่าเชื่อถือ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;- เสียเวลาน้อยมาก
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="-ตอนตอไป-harness-components--ระบบอวยวะของ-ai"&gt;&lt;a href="#-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b9%84%e0%b8%9b-harness-components--%e0%b8%a3%e0%b8%b0%e0%b8%9a%e0%b8%9a%e0%b8%ad%e0%b8%a7%e0%b8%a2%e0%b8%a7%e0%b8%b0%e0%b8%82%e0%b8%ad%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;🔄 ตอนต่อไป: Harness Components — ระบบอวัยวะของ AI
&lt;/h2&gt;&lt;p&gt;ตอนนี้เราเข้าใจแล้วว่า:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ Prompt คือ Control Plane&lt;/li&gt;
&lt;li&gt;✅ Prompt Layering มี 3 ระดับ&lt;/li&gt;
&lt;li&gt;✅ Guardrails, Memory, Retry Logic สำคัญอย่างไร&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;แล้ว Harness Components คืออะไร?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Harness มี &amp;ldquo;อวัยวะ&amp;rdquo; หลายอย่างที่ทำงานร่วมกัน:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Control Plane&lt;/strong&gt; — Prompt ที่เราเพิ่งคุยกัน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query Loop&lt;/strong&gt; — หัวใจที่สูบฉีดงาน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools &amp;amp; Permissions&lt;/strong&gt; — มือที่ทำงาน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory &amp;amp; Context&lt;/strong&gt; — สมองที่จำ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recovery Paths&lt;/strong&gt; — ระบบภูมิคุ้มกัน&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ในตอนต่อไป เราจะมาเจาะลึกแต่ละ &amp;ldquo;อวัยวะ&amp;rdquo; ว่าทำงานอย่างไร และทำไมต้องมี&lt;/p&gt;
&lt;p&gt;ติดตามตอนต่อไปได้เลย 🚀&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-อางอง"&gt;&lt;a href="#-%e0%b8%ad%e0%b8%b2%e0%b8%87%e0%b8%ad%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;📚 อ้างอิง
&lt;/h2&gt;&lt;h3 id="แหลงหลก"&gt;&lt;a href="#%e0%b9%81%e0%b8%ab%e0%b8%a5%e0%b8%87%e0%b8%ab%e0%b8%a5%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;แหล่งหลัก:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Harness Books 2 เล่ม โดย wquguru&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Book 1: &lt;a class="link" href="https://github.com/wquguru/harness-books/blob/main/book1-claude-code/index.md" target="_blank" rel="noopener"
 &gt;Claude Code Harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Book 2: &lt;a class="link" href="https://github.com/wquguru/harness-books/blob/main/book2-comparing/index.md" target="_blank" rel="noopener"
 &gt;Claude Code vs Codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Online Version: &lt;a class="link" href="https://harness-books.agentway.dev/book1-claude-code/" target="_blank" rel="noopener"
 &gt;harness-books.agentway.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="แหลงเสรม"&gt;&lt;a href="#%e0%b9%81%e0%b8%ab%e0%b8%a5%e0%b8%87%e0%b9%80%e0%b8%aa%e0%b8%a3%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;แหล่งเสริม:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;Stanford HAI - Prompt Engineering Limitations (2025)&lt;/li&gt;
&lt;li&gt;Morph LLM - &lt;a class="link" href="https://www.morphllm.com/comparisons/codex-vs-claude-code" target="_blank" rel="noopener"
 &gt;Codex vs Claude Code Benchmarks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic - Constitutional AI&lt;/li&gt;
&lt;li&gt;Google - Chain of Thought Prompting&lt;/li&gt;
&lt;li&gt;OpenAI - Templatized Prompt Engineering&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>Harness Engineering ตอนที่ 4: Tools &amp; Permissions - กำหนดขอบเขต AI</title><link>https://neng-lab.com/posts/harness-part-4/</link><pubDate>Mon, 13 Apr 2026 10:00:00 +0700</pubDate><author>jitaret@gmail.com (เหน่ง)</author><guid>https://neng-lab.com/posts/harness-part-4/</guid><description>&lt;img src="https://neng-lab.com/" alt="Featured image of post Harness Engineering ตอนที่ 4: Tools &amp; Permissions - กำหนดขอบเขต AI" /&gt;&lt;h1 id="harness-engineering-ตอนท-4-tools--permissions---กำหนดขอบเขต-ai"&gt;&lt;a href="#harness-engineering-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97-4-tools--permissions---%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94%e0%b8%82%e0%b8%ad%e0%b8%9a%e0%b9%80%e0%b8%82%e0%b8%95-ai" class="header-anchor"&gt;&lt;/a&gt;Harness Engineering ตอนที่ 4: Tools &amp;amp; Permissions - กำหนดขอบเขต AI
&lt;/h1&gt;&lt;h2 id="สวนนำ-ทำไม-ai-ถงตองม-ลอคประต"&gt;&lt;a href="#%e0%b8%aa%e0%b8%a7%e0%b8%99%e0%b8%99%e0%b8%b3-%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1-ai-%e0%b8%96%e0%b8%87%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%a1-%e0%b8%a5%e0%b8%ad%e0%b8%84%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;ส่วนนำ: ทำไม AI ถึงต้องมี &amp;ldquo;ล็อคประตู&amp;rdquo;?
&lt;/h2&gt;&lt;p&gt;ลองนึกภาพว่าคุณจ้างพนักงานใหม่มาทำงาน แต่ไม่ได้กำหนดว่าเขาทำอะไรได้บ้าง ไม่ได้บอกว่าห้องไหนเข้าได้ ห้องไหนเข้าไม่ได้ และไม่ได้บอกว่าอะไรทำได้ อะไรทำไม่ได้&amp;hellip; คุณจะรู้สึกอย่างไร?&lt;/p&gt;
&lt;p&gt;น่ากลัวใช่ไหมล่ะ?&lt;/p&gt;
&lt;p&gt;แต่นี่คือสิ่งที่หลายคนทำกับ AI Agent กันโดยไม่รู้ตัว&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;สถิติที่น่าตกใจ:&lt;/strong&gt; ข้อมูลจาก OWASP Top 10 for Agentic Applications 2026 พบว่า &lt;strong&gt;73% ของ AI ที่ deploy ใน production มีช่องโหว่ Prompt Injection&lt;/strong&gt; นั่นหมายความว่าทุกครั้งที่คุณใช้ AI Agent มีโอกาสเกือบ 3 ใน 4 ที่จะถูกโจมตีผ่านวิธีนี้!&lt;/p&gt;
&lt;p&gt;และยิ่งไปกว่านั้น &lt;strong&gt;15-25% ของโค้ดที่ AI สร้างมีช่องโหว่ความปลอดภัย&lt;/strong&gt; (OWASP, 2026) ซึ่งเป็นตัวเลขที่สูงมากเมื่อพิจารณาว่าเรานำ AI มาใช้เพื่อเพิ่มประสิทธิภาพ&lt;/p&gt;
&lt;p&gt;เห็นไหมครับว่าปัญหามันอยู่ตรงไหน?&lt;/p&gt;
&lt;h2 id="tools--permissions-คออะไร"&gt;&lt;a href="#tools--permissions-%e0%b8%84%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;Tools &amp;amp; Permissions คืออะไร?
&lt;/h2&gt;&lt;p&gt;มาทำความเข้าใจกันง่ายๆ ก่อนนะครับ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tools&lt;/strong&gt; คือ &amp;ldquo;ความสามารถ&amp;rdquo; ที่ AI Agent สามารถใช้งานได้ ลองนึกภาพว่า AI เป็นคนที่มีอุปกรณ์ต่างๆ อยู่ในมือ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📖 &lt;strong&gt;อ่านไฟล์&lt;/strong&gt; (File Reader) - AI สามารถเปิดดูไฟล์ในระบบ&lt;/li&gt;
&lt;li&gt;✍️ &lt;strong&gt;เขียนไฟล์&lt;/strong&gt; (File Writer) - AI สามารถสร้างหรือแก้ไขไฟล์&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;รันคำสั่ง&lt;/strong&gt; (Shell Execution) - AI สามารถสั่งให้คอมพิวเตอร์ทำงาน&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;ควบคุม Browser&lt;/strong&gt; (Web Automation) - AI สามารถเปิดเว็บ กรอกฟอร์ม&lt;/li&gt;
&lt;li&gt;✉️ &lt;strong&gt;ส่งข้อความ&lt;/strong&gt; (Messaging) - AI สามารถส่งอีเมลหรือข้อความ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;แต่ละอย่างก็มีความเสี่ยงต่างกันไป การอ่านไฟล์น่าจะปลอดภัยกว่าการรันคำสั่งใช่ไหมครับ?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Permissions&lt;/strong&gt; คือ &amp;ldquo;กฎเกณฑ์&amp;rdquo; ที่กำหนดว่า AI จะใช้ Tools แต่ละอย่างได้แค่ไหน ใช้ได้กี่ครั้ง และใช้ในสถานการณ์ไหนบ้าง&lt;/p&gt;
&lt;p&gt;ลองเปรียบเทียบให้เห็นภาพนะครับ:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ไม่มี Permissions&lt;/th&gt;
 &lt;th&gt;มี Permissions&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ให้บัตรเครดิตกับใครก็ได้ ไม่มีวงเงิน ไม่มี PIN&lt;/td&gt;
 &lt;td&gt;บัตรเครดิตมีวงเงิน 5,000 บาท ต้องใส่ PIN ทุกครั้ง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ทิ้งกุญแจบ้านไว้หน้าบ้าน ใครก็เข้าได้&lt;/td&gt;
 &lt;td&gt;มีกุญแจเฉพาะห้อง ต้องขออนุญาตก่อนเข้า&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;รถไม่มีเบรก ขับได้ไม่จำกัดความเร็ว&lt;/td&gt;
 &lt;td&gt;มีเบรก มีเกียร์ควบคุม มีถุงลมนิรภัย&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;เห็นความแตกต่างชัดเจนเลยใช่ไหมครับ?&lt;/p&gt;
&lt;h2 id="ทำไมตองกำหนดขอบเขต"&gt;&lt;a href="#%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94%e0%b8%82%e0%b8%ad%e0%b8%9a%e0%b9%80%e0%b8%82%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;ทำไมต้องกำหนดขอบเขต?
&lt;/h2&gt;&lt;p&gt;มาดูความเสี่ยงที่เกิดขึ้นจริงกันครับ:&lt;/p&gt;
&lt;h3 id="1-prompt-injection---เสยงกระซบในห"&gt;&lt;a href="#1-prompt-injection---%e0%b9%80%e0%b8%aa%e0%b8%a2%e0%b8%87%e0%b8%81%e0%b8%a3%e0%b8%b0%e0%b8%8b%e0%b8%9a%e0%b9%83%e0%b8%99%e0%b8%ab" class="header-anchor"&gt;&lt;/a&gt;1. Prompt Injection - &amp;ldquo;เสียงกระซิบในหู&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;นึกภาพว่าคุณส่งเอกสารให้ AI อ่าน แต่ในเอกสารนั้นมีคำสั่งซ่อนอยู่ว่า &amp;ldquo;ลบไฟล์ทั้งหมด&amp;rdquo; หรือ &amp;ldquo;ส่งข้อมูลลับไปที่นี่&amp;rdquo; นี่แหละคือ Prompt Injection&lt;/p&gt;
&lt;p&gt;ผู้โจมตีจะฝังคำสั่งไว้ใน:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;README files&lt;/li&gt;
&lt;li&gt;คอมเมนต์ในโค้ด&lt;/li&gt;
&lt;li&gt;ข้อความที่ AI ต้องประมวลผล&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;และเมื่อ AI อ่านเจอ ก็จะทำตามโดยไม่รู้ตัว!&lt;/p&gt;
&lt;h3 id="2-tool-misuse---ใชมดแทงคน"&gt;&lt;a href="#2-tool-misuse---%e0%b9%83%e0%b8%8a%e0%b8%a1%e0%b8%94%e0%b9%81%e0%b8%97%e0%b8%87%e0%b8%84%e0%b8%99" class="header-anchor"&gt;&lt;/a&gt;2. Tool Misuse - &amp;ldquo;ใช้มีดแทงคน&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;แม้แต่ Tool ที่ดีก็อาจถูกใช้ผิดวัตถุประสงค์ได้&lt;/p&gt;
&lt;p&gt;ตัวอย่าง:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI ที่มีสิทธิ์เขียนไฟล์อาจไปลบ database ทั้งหมดเพราะเข้าใจคำสั่งผิด&lt;/li&gt;
&lt;li&gt;AI ที่ส่งอีเมลได้อาจส่งข้อความหลอกลวงไปยังลูกค้า&lt;/li&gt;
&lt;li&gt;AI ที่รันคำสั่งได้อาจดาวน์โหลดมัลแวร์โดยไม่รู้ตัว&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-data-exfiltration---ขอมลรวไหล"&gt;&lt;a href="#3-data-exfiltration---%e0%b8%82%e0%b8%ad%e0%b8%a1%e0%b8%a5%e0%b8%a3%e0%b8%a7%e0%b9%84%e0%b8%ab%e0%b8%a5" class="header-anchor"&gt;&lt;/a&gt;3. Data Exfiltration - &amp;ldquo;ข้อมูลรั่วไหล&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;AI อาจถูกหลอกให้ส่งข้อมูลสำคัญ (ลูกค้า, รหัสผ่าน, ข้อมูลทางการเงิน) ไปยัง server ของผู้โจมตี&lt;/p&gt;
&lt;h3 id="4-cascading-failures---ลกโซหลด"&gt;&lt;a href="#4-cascading-failures---%e0%b8%a5%e0%b8%81%e0%b9%82%e0%b8%8b%e0%b8%ab%e0%b8%a5%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;4. Cascading Failures - &amp;ldquo;ลูกโซ่หลุด&amp;rdquo;
&lt;/h3&gt;&lt;p&gt;เมื่อ AI หนึ่งตัวทำงานผิด อาจส่งผลกระทบต่อ AI ตัวอื่นๆ ที่เชื่อมต่อกัน ทำให้ปัญหาลุกลามเป็นกองไฟ&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;สถิติไม่โกหกครับ: &lt;strong&gt;30+ CVEs ถูกค้นพบในเดือนธันวาคม 2025 ใน AI Coding Platforms ใหญ่ๆ&lt;/strong&gt; และที่น่าตกใจที่สุดคือ &lt;strong&gt;CamoLeak vulnerability (CVSS 9.6) ใน GitHub Copilot&lt;/strong&gt; ทำให้สามารถขโมย secrets และ source code ได้!&lt;/p&gt;
&lt;p&gt;นี่ไม่ใช่เรื่องไกลตัว แต่เป็นภัยคุกคามที่เกิดขึ้นจริง&lt;/p&gt;
&lt;h2 id="ประสบการณเหนงกบ-openclaw"&gt;&lt;a href="#%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%87%e0%b8%81%e0%b8%9a-openclaw" class="header-anchor"&gt;&lt;/a&gt;ประสบการณ์เหน่งกับ OpenClaw
&lt;/h2&gt;&lt;p&gt;ตอนนี้มาดูกันว่าเหน่งใช้ OpenClaw อย่างไรในการกำหนดขอบเขตให้ AI ครับ&lt;/p&gt;
&lt;h3 id="openclaw-security-modes"&gt;&lt;a href="#openclaw-security-modes" class="header-anchor"&gt;&lt;/a&gt;OpenClaw Security Modes
&lt;/h3&gt;&lt;p&gt;OpenClaw มี exec security modes 3 ระดับ:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Mode&lt;/th&gt;
 &lt;th&gt;คำอธิบาย&lt;/th&gt;
 &lt;th&gt;เหมาะกับ&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;deny&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ปิดการใช้งาน exec ทั้งหมด&lt;/td&gt;
 &lt;td&gt;งานที่ไม่ต้องรันคำสั่ง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;allowlist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;อนุญาตเฉพาะคำสั่งที่ระบุ&lt;/td&gt;
 &lt;td&gt;งานที่ต้องควบคุมอย่างเข้มงวด&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;full&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;อนุญาตทั้งหมด&lt;/td&gt;
 &lt;td&gt;⚠️ อันตราย! ใช้ด้วยความระมัดระวัง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;คำแนะนำ:&lt;/strong&gt; อย่าใช้ &lt;code&gt;full&lt;/code&gt; โดยไม่จำเป็น เพราะมันเปิดให้ AI ทำได้ทุกอย่าง!&lt;/p&gt;
&lt;h3 id="การตงคาทแนะนำ"&gt;&lt;a href="#%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%87%e0%b8%84%e0%b8%b2%e0%b8%97%e0%b9%81%e0%b8%99%e0%b8%b0%e0%b8%99%e0%b8%b3" class="header-anchor"&gt;&lt;/a&gt;การตั้งค่าที่แนะนำ
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;gateway:&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;mode:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;local&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;bind:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;loopback&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;auth:&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;mode:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;token:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;replace-with-long-random-token&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;tools:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;profile:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;messaging&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;deny:&lt;/span&gt; &lt;span class="err"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;group:automation&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;group:runtime&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;group:fs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;sessions_spawn&amp;#34;&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;fs:&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;workspaceOnly:&lt;/span&gt; &lt;span class="err"&gt;true&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;exec:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;security:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;deny&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="err"&gt;ask:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;always&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;elevated:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;enabled:&lt;/span&gt; &lt;span class="err"&gt;false&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;สังเกตไหมครับว่า:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;exec: { security: &amp;quot;deny&amp;quot;, ask: &amp;quot;always&amp;quot; }&lt;/code&gt; - ถ้าจำเป็นต้องรันคำสั่ง ต้องถามเหน่งก่อนทุกครั้ง!&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deny: [&amp;quot;group:automation&amp;quot;, &amp;quot;group:runtime&amp;quot;, &amp;quot;group:fs&amp;quot;]&lt;/code&gt; - ปิดการใช้งาน groups ที่เสี่ยง&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fs: { workspaceOnly: true }&lt;/code&gt; - จำกัดให้อ่าน/เขียนได้เฉพาะใน workspace&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ปญหาทเจอและวธแก"&gt;&lt;a href="#%e0%b8%9b%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%97%e0%b9%80%e0%b8%88%e0%b8%ad%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%a7%e0%b8%98%e0%b9%81%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;ปัญหาที่เจอและวิธีแก้
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ปัญหา&lt;/th&gt;
 &lt;th&gt;วิธีแก้&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Shared DMs + เปิด tools&lt;/td&gt;
 &lt;td&gt;ใช้ &lt;code&gt;dmPolicy: &amp;quot;pairing&amp;quot;&lt;/code&gt; หรือ allowlists&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Browser control เปิดเผย&lt;/td&gt;
 &lt;td&gt;ใช้ Tailscale, ไม่ expose สู่ public&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Exec รันโดยไม่ต้องยืนยัน&lt;/td&gt;
 &lt;td&gt;ตั้งค่า &lt;code&gt;security: &amp;quot;allowlist&amp;quot;&lt;/code&gt; และ &lt;code&gt;ask: &amp;quot;always&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Config อยู่ใน synced folder&lt;/td&gt;
 &lt;td&gt;ย้ายออกจาก iCloud/Dropbox&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Token สั้นเกินไป&lt;/td&gt;
 &lt;td&gt;ใช้ token ยาวอย่างน้อย 32 characters&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;เหน่งเจอปัญหาเรื่องนี้หลายครั้งครับ โดยเฉพาะตอนที่ token สั้นเกินไป ทำให้เดาได้ง่าย หลังจากปรับให้ยาวขึ้นและตั้งค่า &lt;code&gt;ask: &amp;quot;always&amp;quot;&lt;/code&gt; ก็รู้สึกสบายใจขึ้นเยอะ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="ประเภทของ-permissions-แบบละเอยด"&gt;&lt;a href="#%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b9%80%e0%b8%a0%e0%b8%97%e0%b8%82%e0%b8%ad%e0%b8%87-permissions-%e0%b9%81%e0%b8%9a%e0%b8%9a%e0%b8%a5%e0%b8%b0%e0%b9%80%e0%b8%ad%e0%b8%a2%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;ประเภทของ Permissions แบบละเอียด
&lt;/h2&gt;&lt;p&gt;มาถึงส่วนสำคัญแล้วครับ! ตอนนี้เราจะมาดูกันว่า Permissions แบ่งออกเป็นกี่ประเภท และแต่ละประเภทมีความเสี่ยงอย่างไร&lt;/p&gt;
&lt;h3 id="1--read-permissions---ดวงตา-ของ-ai"&gt;&lt;a href="#1--read-permissions---%e0%b8%94%e0%b8%a7%e0%b8%87%e0%b8%95%e0%b8%b2-%e0%b8%82%e0%b8%ad%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;1. 📖 Read Permissions - &amp;ldquo;ดวงตา&amp;rdquo; ของ AI
&lt;/h3&gt;&lt;p&gt;Read Permissions คือสิทธิ์ในการเข้าถึงข้อมูล ลองนึกภาพว่า AI เป็นพนักงานที่สามารถอ่านเอกสารในสำนักงานได้&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;สิ่งที่ AI สามารถทำได้:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;อ่านไฟล์ในระบบ&lt;/li&gt;
&lt;li&gt;เข้าถึง database&lt;/li&gt;
&lt;li&gt;ดู log files&lt;/li&gt;
&lt;li&gt;อ่าน configuration files&lt;/li&gt;
&lt;li&gt;เข้าถึง environment variables&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ความเสี่ยงที่อาจเกิดขึ้น:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ข้อมูลลับรั่วไหล (API keys, passwords, secrets)&lt;/li&gt;
&lt;li&gt;ข้อมูลลูกค้า (PII - Personal Identifiable Information)&lt;/li&gt;
&lt;li&gt;ข้อมูลทางการเงิน&lt;/li&gt;
&lt;li&gt;โค้ดที่มีช่องโหว่ (AI อาจเรียนรู้และนำไปใช้ผิด)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่างการโจมตี:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;Scenario: คุณให้ AI อ่านไฟล์ README.md เพื่อทำความเข้าใจโปรเจกต์
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;แต่ในไฟล์นั้นมีคอมเมนต์ว่า &amp;#34;TODO: remove API key before deploy&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;AI ก็อาจเห็น API key นั้นและนำไปใช้ได้!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;วิธีจำกัด:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;workspaceOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// อ่านได้เฉพาะ workspace
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowedDirs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/project/src&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;/project/config&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;deniedPatterns&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;**/*.env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;**/secrets/**&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2--write-permissions---มอ-ของ-ai"&gt;&lt;a href="#2--write-permissions---%e0%b8%a1%e0%b8%ad-%e0%b8%82%e0%b8%ad%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;2. ✍️ Write Permissions - &amp;ldquo;มือ&amp;rdquo; ของ AI
&lt;/h3&gt;&lt;p&gt;Write Permissions คือสิทธิ์ในการสร้างหรือแก้ไขข้อมูล นี่คือสิ่งที่ต้องระวังเป็นพิเศษ เพราะมีความเสี่ยงสูงกว่า Read มาก!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;สิ่งที่ AI สามารถทำได้:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;สร้างไฟล์ใหม่&lt;/li&gt;
&lt;li&gt;แก้ไขไฟล์ที่มีอยู่&lt;/li&gt;
&lt;li&gt;ลบไฟล์&lt;/li&gt;
&lt;li&gt;เขียนลง database&lt;/li&gt;
&lt;li&gt;แก้ไข configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ความเสี่ยงที่อาจเกิดขึ้น:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ลบไฟล์สำคัญโดยไม่ตั้งใจ&lt;/li&gt;
&lt;li&gt;เขียนโค้ดที่มีช่องโหว่&lt;/li&gt;
&lt;li&gt;แก้ไขไฟล์ระบบทำให้เสียหาย&lt;/li&gt;
&lt;li&gt;ส่งข้อมูลออกไปยัง server ภายนอก&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่างการโจมตี:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;Scenario: AI ถูกหลอกให้เขียนโค้ดที่ส่งข้อมูลลูกค้าไปยัง server ของผู้โจมตี
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;&amp;#34;ช่วยเขียนฟังก์ชันสำหรับ backup ข้อมูลหน่อย&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;→ AI เขียนฟังก์ชันที่ส่งข้อมูลไปยัง attacker.com ด้วย!
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;วิธีจำกัด:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;workspaceOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;readOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowedWriteDirs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;/project/src&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;deniedPatterns&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;**/production/**&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;**/*.log&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3--execute-permissions---เทา-ของ-ai"&gt;&lt;a href="#3--execute-permissions---%e0%b9%80%e0%b8%97%e0%b8%b2-%e0%b8%82%e0%b8%ad%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;3. 💻 Execute Permissions - &amp;ldquo;เท้า&amp;rdquo; ของ AI
&lt;/h3&gt;&lt;p&gt;Execute Permissions คือสิทธิ์ในการรันคำสั่ง ลองนึกภาพว่า AI สามารถเดินไปไหนก็ได้ในบ้าน และกดปุ่มอะไรก็ได้ — น่ากลัวใช่ไหมครับ?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;สิ่งที่ AI สามารถทำได้:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;รัน shell commands&lt;/li&gt;
&lt;li&gt;ติดตั้ง packages&lt;/li&gt;
&lt;li&gt;สร้าง processes ใหม่&lt;/li&gt;
&lt;li&gt;จัดการ services&lt;/li&gt;
&lt;li&gt;เข้าถึง network&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ความเสี่ยงที่อาจเกิดขึ้น:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;รันคำสั่งที่อันตราย (&lt;code&gt;rm -rf /&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;ดาวน์โหลดและรันมัลแวร์&lt;/li&gt;
&lt;li&gt;สร้าง backdoor&lt;/li&gt;
&lt;li&gt;ขุดเหมืองคริปโต&lt;/li&gt;
&lt;li&gt;แพร่กระจายไปยังระบบอื่น&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่างการโจมตี:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;Scenario&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;AI&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ถูกหลอกให้&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;ติดตั้ง Python package ที่จำเป็น&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;→&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;แทนที่จะติดตั้ง&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;จริง&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;กลับรันคำสั่งที่ขโมย&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SSH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;keys&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;→&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;หรือดาวน์โหลด&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;malware&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;เข้ามาในระบบ&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;วิธีจำกัด (สำคัญมาก!):&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;exec&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;security&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deny&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// ปิดเป็นค่าเริ่มต้น
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;always&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// ถามก่อนทุกครั้ง
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowedCommands&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;git&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;npm&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;pip&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4--network-permissions---ปาก-ของ-ai"&gt;&lt;a href="#4--network-permissions---%e0%b8%9b%e0%b8%b2%e0%b8%81-%e0%b8%82%e0%b8%ad%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;4. 🌐 Network Permissions - &amp;ldquo;ปาก&amp;rdquo; ของ AI
&lt;/h3&gt;&lt;p&gt;Network Permissions คือสิทธิ์ในการสื่อสารกับภายนอก ลองนึกภาพว่า AI มีโทรศัพท์ที่สามารถโทรหาคนอื่นได้ตลอดเวลา&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;สิ่งที่ AI สามารถทำได้:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;เรียก API ภายนอก&lt;/li&gt;
&lt;li&gt;ส่ง HTTP requests&lt;/li&gt;
&lt;li&gt;เชื่อมต่อ database ภายนอก&lt;/li&gt;
&lt;li&gt;รับ connections จากภายนอก&lt;/li&gt;
&lt;li&gt;ใช้ WebSocket&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ความเสี่ยงที่อาจเกิดขึ้น:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ข้อมูลรั่วไหลไปยัง server ภายนอก&lt;/li&gt;
&lt;li&gt;ถูกใช้เป็น proxy สำหรับโจมตีระบบอื่น&lt;/li&gt;
&lt;li&gt;เรียก API ที่เสียค่าใช้จ่ายสูง&lt;/li&gt;
&lt;li&gt;รับคำสั่งจากภายนอก (Command &amp;amp; Control)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่างการโจมตี:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;Scenario: AI ถูกหลอกให้ &amp;#34;ดึงข้อมูลจาก API ภายนอก&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;→ แทนที่จะเรียก API จริง กลับส่งข้อมูลลับไปยัง server ผู้โจมตี
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;→ หรือถูกหลอกให้เชื่อมต่อกับ &amp;#34;API ที่ดูเหมือนจริง&amp;#34; แต่เป็นของผู้โจมตี
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;วิธีจำกัด:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;network&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;egress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowedDomains&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api.github.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;registry.npmjs.org&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;blockedDomains&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;*.onion&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;attacker.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ingress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;bind&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;loopback&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// รับ connection ได้เฉพาะ local
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;auth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;token&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;// ต้องมี token
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="ตารางเปรยบเทยบระดบความเสยง"&gt;&lt;a href="#%e0%b8%95%e0%b8%b2%e0%b8%a3%e0%b8%b2%e0%b8%87%e0%b9%80%e0%b8%9b%e0%b8%a3%e0%b8%a2%e0%b8%9a%e0%b9%80%e0%b8%97%e0%b8%a2%e0%b8%9a%e0%b8%a3%e0%b8%b0%e0%b8%94%e0%b8%9a%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%80%e0%b8%aa%e0%b8%a2%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;ตารางเปรียบเทียบระดับความเสี่ยง
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Permission Type&lt;/th&gt;
 &lt;th&gt;ระดับความเสี่ยง&lt;/th&gt;
 &lt;th&gt;เหตุผล&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Read&lt;/td&gt;
 &lt;td&gt;🟡 ปานกลาง&lt;/td&gt;
 &lt;td&gt;ข้อมูลรั่วไหล แต่ไม่ทำลายระบบโดยตรง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Write&lt;/td&gt;
 &lt;td&gt;🟠 สูง&lt;/td&gt;
 &lt;td&gt;แก้ไข/ลบข้อมูล สร้างไฟล์อันตราย&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Execute&lt;/td&gt;
 &lt;td&gt;🔴 สูงมาก&lt;/td&gt;
 &lt;td&gt;ควบคุมระบบได้ทั้งหมด&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Network&lt;/td&gt;
 &lt;td&gt;🔴 สูงมาก&lt;/td&gt;
 &lt;td&gt;ส่งข้อมูลออก รับคำสั่งจากภายนอก&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="best-practices-สำหรบการกำหนดขอบเขต"&gt;&lt;a href="#best-practices-%e0%b8%aa%e0%b8%b3%e0%b8%ab%e0%b8%a3%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%81%e0%b8%b3%e0%b8%ab%e0%b8%99%e0%b8%94%e0%b8%82%e0%b8%ad%e0%b8%9a%e0%b9%80%e0%b8%82%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;Best Practices สำหรับการกำหนดขอบเขต
&lt;/h2&gt;&lt;p&gt;มาดู Best Practices ที่ควรปฏิบัติตามกันครับ:&lt;/p&gt;
&lt;h3 id="1--least-privilege-principle---ใหนอยทสดทยงทำงานได"&gt;&lt;a href="#1--least-privilege-principle---%e0%b9%83%e0%b8%ab%e0%b8%99%e0%b8%ad%e0%b8%a2%e0%b8%97%e0%b8%aa%e0%b8%94%e0%b8%97%e0%b8%a2%e0%b8%87%e0%b8%97%e0%b8%b3%e0%b8%87%e0%b8%b2%e0%b8%99%e0%b9%84%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;1. 🛡️ Least Privilege Principle - ให้น้อยที่สุดที่ยังทำงานได้
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; ให้ AI สิทธิ์เฉพาะสิ่งที่จำเป็นต่อการทำงาน ไม่ใช่ทุกอย่างที่มี&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;เริ่มต้นด้วย &lt;code&gt;deny&lt;/code&gt; ทั้งหมด&lt;/li&gt;
&lt;li&gt;เปิดใช้งานทีละอย่างเมื่อต้องการ&lt;/li&gt;
&lt;li&gt;ทบทวนสิทธิ์เป็นระยะ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ❌ ไม่ดี - ให้สิทธิ์เยอะเกินไปตั้งแต่แรก
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;profile&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;full&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ✅ ดี - เริ่มจากน้อย เพิ่มทีละน่อย
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;tools&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;profile&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;minimal&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allow&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;file:read&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;web:search&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2--confirmation-steps---ยนยนกอนทำ"&gt;&lt;a href="#2--confirmation-steps---%e0%b8%a2%e0%b8%99%e0%b8%a2%e0%b8%99%e0%b8%81%e0%b8%ad%e0%b8%99%e0%b8%97%e0%b8%b3" class="header-anchor"&gt;&lt;/a&gt;2. ✅ Confirmation Steps - ยืนยันก่อนทำ
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; ก่อนทำ action ที่มีความเสี่ยงสูง ต้องถามคนก่อนเสมอ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ตั้งค่า &lt;code&gt;ask: &amp;quot;always&amp;quot;&lt;/code&gt; สำหรับ exec และ write&lt;/li&gt;
&lt;li&gt;แสดงสิ่งที่จะทำให้ user เห็นชัดเจน&lt;/li&gt;
&lt;li&gt;รอจนได้รับการยืนยันก่อนดำเนินการ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;exec&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;security&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;allowlist&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;always&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;// ถามก่อนทุกครั้ง
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;fs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ask&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;always&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;// ก่อนเขียน/ลบไฟล์
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3--sandboxing---แยกสภาพแวดลอม"&gt;&lt;a href="#3--sandboxing---%e0%b9%81%e0%b8%a2%e0%b8%81%e0%b8%aa%e0%b8%a0%e0%b8%b2%e0%b8%9e%e0%b9%81%e0%b8%a7%e0%b8%94%e0%b8%a5%e0%b8%ad%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;3. 🏠 Sandboxing - แยกสภาพแวดล้อม
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; ถ้า AI ทำอะไรผิด ความเสียหายต้องอยู่ในขอบเขตที่จำกัด&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ใช้ Docker container แยกสภาพแวดล้อม&lt;/li&gt;
&lt;li&gt;จำกัด file system access เฉพาะ workspace&lt;/li&gt;
&lt;li&gt;ใช้ VM สำหรับงานที่เสี่ยงสูง&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# docker-compose.yml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ai-agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ai-agent-sandbox&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volumes&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;./workspace:/workspace &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# เฉพาะโฟลเดอร์นี้&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cap_drop&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;ALL&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;security_opt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="kc"&gt;no&lt;/span&gt;-&lt;span class="l"&gt;new-privileges:true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4--audit-logging---บนทกทก-action"&gt;&lt;a href="#4--audit-logging---%e0%b8%9a%e0%b8%99%e0%b8%97%e0%b8%81%e0%b8%97%e0%b8%81-action" class="header-anchor"&gt;&lt;/a&gt;4. 📝 Audit Logging - บันทึกทุก action
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; ถ้าเกิดปัญหา ต้องสามารถตรวจสอบย้อนกลับได้&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;บันทึกทุก command ที่รัน&lt;/li&gt;
&lt;li&gt;เก็บ log ในที่ปลอดภัย&lt;/li&gt;
&lt;li&gt;ตั้ง alert สำหรับ action ที่ผิดปกติ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;logging&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;verbose&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;destination&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;secure-log-server&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;retention&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;90 days&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;alertOn&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;exec&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;network: egress&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;fs: delete&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="5--rate-limiting---จำกดจำนวนครง"&gt;&lt;a href="#5--rate-limiting---%e0%b8%88%e0%b8%b3%e0%b8%81%e0%b8%94%e0%b8%88%e0%b8%b3%e0%b8%99%e0%b8%a7%e0%b8%99%e0%b8%84%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;5. 🔄 Rate Limiting - จำกัดจำนวนครั้ง
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; ป้องกันไม่ให้ AI ทำอะไรซ้ำๆ มากเกินไป&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;จำกัดจำนวนครั้งที่ใช้ tool ต่อชั่วโมง&lt;/li&gt;
&lt;li&gt;จำกัด token usage&lt;/li&gt;
&lt;li&gt;ตั้ง timeout สำหรับแต่ละ action&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;rateLimits&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;exec&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxPerHour&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;timeout&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;network&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;maxPerHour&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;costAlert&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="c1"&gt;// บาทต่อชั่วโมง
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="6--credential-isolation---แยก-credentials"&gt;&lt;a href="#6--credential-isolation---%e0%b9%81%e0%b8%a2%e0%b8%81-credentials" class="header-anchor"&gt;&lt;/a&gt;6. 🔒 Credential Isolation - แยก credentials
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; AI ไม่ควรเข้าถึง credentials โดยตรง&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ใช้ secrets manager แทน env variables&lt;/li&gt;
&lt;li&gt;ห้ามเขียน credentials ในโค้ด&lt;/li&gt;
&lt;li&gt;ใช้ IAM roles แทน static keys&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ตัวอย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ❌ ไม่ดี
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;sk-xxxxx&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;// เสี่ยงมาก!
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// ✅ ดี
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;secrets&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws-secrets-manager&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ref:secrets/API_KEY&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;// อ้างอิงจาก secrets manager
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="7--testing--validation---ทดสอบกอนใชจรง"&gt;&lt;a href="#7--testing--validation---%e0%b8%97%e0%b8%94%e0%b8%aa%e0%b8%ad%e0%b8%9a%e0%b8%81%e0%b8%ad%e0%b8%99%e0%b9%83%e0%b8%8a%e0%b8%88%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;7. 🧪 Testing &amp;amp; Validation - ทดสอบก่อนใช้จริง
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;หลักการ:&lt;/strong&gt; ทดสอบ configuration ก่อน deploy จริงเสมอ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;วิธีปฏิบัติ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ทดสอบใน staging environment ก่อน&lt;/li&gt;
&lt;li&gt;ทำ red team testing&lt;/li&gt;
&lt;li&gt;ตรวจสอบ configuration ด้วย automated tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Checklist ก่อน Deploy:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; ตั้งค่า &lt;code&gt;exec.security&lt;/code&gt; เป็น &lt;code&gt;deny&lt;/code&gt; หรือ &lt;code&gt;allowlist&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; ตั้งค่า &lt;code&gt;ask: &amp;quot;always&amp;quot;&lt;/code&gt; สำหรับ action เสี่ยง&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; จำกัด &lt;code&gt;fs.workspaceOnly: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; เปิด logging และ monitoring&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; ตั้ง rate limits&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; ใช้ token ยาวอย่างน้อย 32 ตัวอักษร&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; ทดสอบใน sandbox ก่อน&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="owasp-top-10-for-agentic-applications-2026"&gt;&lt;a href="#owasp-top-10-for-agentic-applications-2026" class="header-anchor"&gt;&lt;/a&gt;OWASP Top 10 for Agentic Applications 2026
&lt;/h2&gt;&lt;p&gt;มาดูกันครับว่า OWASP ระบุความเสี่ยงอะไรบ้างสำหรับ AI Agent:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;#&lt;/th&gt;
 &lt;th&gt;Code&lt;/th&gt;
 &lt;th&gt;ชื่อ&lt;/th&gt;
 &lt;th&gt;ความเสี่ยงหลัก&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;ASI01&lt;/td&gt;
 &lt;td&gt;Agent Goal Hijack&lt;/td&gt;
 &lt;td&gt;ผู้โจมตีเปลี่ยนเป้าหมายของ AI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;ASI02&lt;/td&gt;
 &lt;td&gt;Tool Misuse and Exploitation&lt;/td&gt;
 &lt;td&gt;ใช้ tools ผิดวัตถุประสงค์&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;ASI03&lt;/td&gt;
 &lt;td&gt;Identity and Privilege Abuse&lt;/td&gt;
 &lt;td&gt;ใช้สิทธิ์เกินขอบเขต&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;ASI04&lt;/td&gt;
 &lt;td&gt;Agentic Supply Chain Vulnerabilities&lt;/td&gt;
 &lt;td&gt;ช่องโหว่จาก dependencies&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5&lt;/td&gt;
 &lt;td&gt;ASI05&lt;/td&gt;
 &lt;td&gt;Unexpected Code Execution (RCE)&lt;/td&gt;
 &lt;td&gt;รันโค้ดโดยไม่ตั้งใจ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;6&lt;/td&gt;
 &lt;td&gt;ASI06&lt;/td&gt;
 &lt;td&gt;Memory &amp;amp; Context Poisoning&lt;/td&gt;
 &lt;td&gt;ปนเปื้อน memory/context&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;7&lt;/td&gt;
 &lt;td&gt;ASI07&lt;/td&gt;
 &lt;td&gt;Insecure Inter-Agent Communication&lt;/td&gt;
 &lt;td&gt;สื่อสารระหว่าง agents ไม่ปลอดภัย&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;ASI08&lt;/td&gt;
 &lt;td&gt;Cascading Failures&lt;/td&gt;
 &lt;td&gt;ลุกลามเป็นลูกโซ่&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;9&lt;/td&gt;
 &lt;td&gt;ASI09&lt;/td&gt;
 &lt;td&gt;Human-Agent Trust Exploitation&lt;/td&gt;
 &lt;td&gt;เอาเปรียบความไว้วางใจ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;10&lt;/td&gt;
 &lt;td&gt;ASI10&lt;/td&gt;
 &lt;td&gt;Rogue Agents&lt;/td&gt;
 &lt;td&gt;Agent ไม่ได้รับอนุญาตทำงาน&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;ความเชื่อมโยงกับ Permissions:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASI02, ASI03 → เกี่ยวกับการใช้ Tools/Permissions ผิดวิธี&lt;/li&gt;
&lt;li&gt;ASI05 → เกี่ยวกับ Execute Permissions&lt;/li&gt;
&lt;li&gt;ASI08 → เกี่ยวกับ Network Permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;นี่คือเหตุผลที่การกำหนด Permissions อย่างถูกต้องสำคัญมากครับ!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="สรปบทความ"&gt;&lt;a href="#%e0%b8%aa%e0%b8%a3%e0%b8%9b%e0%b8%9a%e0%b8%97%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;สรุปบทความ
&lt;/h2&gt;&lt;p&gt;มาถึงตอนจบแล้วครับ! สรุปสิ่งที่ได้เรียนรู้วันนี้:&lt;/p&gt;
&lt;h3 id="สงทไดเรยนร"&gt;&lt;a href="#%e0%b8%aa%e0%b8%87%e0%b8%97%e0%b9%84%e0%b8%94%e0%b9%80%e0%b8%a3%e0%b8%a2%e0%b8%99%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;สิ่งที่ได้เรียนรู้:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tools &amp;amp; Permissions คืออะไร&lt;/strong&gt; - Tools คือความสามารถของ AI ส่วน Permissions คือกฎเกณฑ์ที่ควบคุมการใช้งาน&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ทำไมต้องกำหนดขอบเขต&lt;/strong&gt; - เพื่อป้องกัน Prompt Injection, Tool Misuse, Data Exfiltration และ Cascading Failures&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ประเภท Permissions 4 อย่าง:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📖 Read - อ่านไฟล์/ข้อมูล&lt;/li&gt;
&lt;li&gt;✍️ Write - เขียน/แก้ไข/ลบ&lt;/li&gt;
&lt;li&gt;💻 Execute - รันคำสั่ง&lt;/li&gt;
&lt;li&gt;🌐 Network - สื่อสารภายนอก&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Best Practices 7 ข้อ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Least Privilege - ให้น้อยที่สุด&lt;/li&gt;
&lt;li&gt;Confirmation Steps - ยืนยันก่อนทำ&lt;/li&gt;
&lt;li&gt;Sandboxing - แยกสภาพแวดล้อม&lt;/li&gt;
&lt;li&gt;Audit Logging - บันทึกทุก action&lt;/li&gt;
&lt;li&gt;Rate Limiting - จำกัดจำนวนครั้ง&lt;/li&gt;
&lt;li&gt;Credential Isolation - แยก credentials&lt;/li&gt;
&lt;li&gt;Testing &amp;amp; Validation - ทดสอบก่อนใช้จริง&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OWASP Top 10 for Agentic Applications 2026&lt;/strong&gt; - 10 ความเสี่ยงที่ต้องรู้และป้องกัน&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="การนำไปใช"&gt;&lt;a href="#%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%99%e0%b8%b3%e0%b9%84%e0%b8%9b%e0%b9%83%e0%b8%8a" class="header-anchor"&gt;&lt;/a&gt;การนำไปใช้:
&lt;/h3&gt;&lt;p&gt;จากประสบการณ์ของเหน่งกับ OpenClaw สิ่งที่แนะนำคือ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;เริ่มจาก &lt;code&gt;deny&lt;/code&gt; ทั้งหมด แล้วค่อยๆ เปิด&lt;/li&gt;
&lt;li&gt;ตั้งค่า &lt;code&gt;ask: &amp;quot;always&amp;quot;&lt;/code&gt; สำหรับ exec และ write&lt;/li&gt;
&lt;li&gt;ใช้ &lt;code&gt;workspaceOnly: true&lt;/code&gt; สำหรับ file system&lt;/li&gt;
&lt;li&gt;ใช้ token ยาวอย่างน้อย 32 ตัวอักษร&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="ไปตอกนเลย"&gt;&lt;a href="#%e0%b9%84%e0%b8%9b%e0%b8%95%e0%b8%ad%e0%b8%81%e0%b8%99%e0%b9%80%e0%b8%a5%e0%b8%a2" class="header-anchor"&gt;&lt;/a&gt;ไปต่อกันเลย!
&lt;/h2&gt;&lt;p&gt;ในตอนต่อไป เราจะมาดู &lt;strong&gt;Harness Components&lt;/strong&gt; กันครับ — ว่ามีองค์ประกอบอะไรบ้างที่ต้องใช้ในการสร้างระบบ AI Agent ที่ปลอดภัยและมีประสิทธิภาพ&lt;/p&gt;
&lt;p&gt;เตรียมตัวให้พร้อม แล้วพบกันใหม่ตอนหน้าครับ! 🚀&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-อางอง"&gt;&lt;a href="#-%e0%b8%ad%e0%b8%b2%e0%b8%87%e0%b8%ad%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;📚 อ้างอิง
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;OWASP. (2026). &lt;em&gt;OWASP Top 10 for Agentic Applications 2026&lt;/em&gt;. &lt;a class="link" href="https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026" target="_blank" rel="noopener"
 &gt;https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Giskard. (2026). &lt;em&gt;OWASP Top 10 for Agentic Applications 2026: Security Guide&lt;/em&gt;. &lt;a class="link" href="https://www.giskard.ai/knowledge/owasp-top-10-for-agentic-application-2026" target="_blank" rel="noopener"
 &gt;https://www.giskard.ai/knowledge/owasp-top-10-for-agentic-application-2026&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Practical DevSecOps. (2026). &lt;em&gt;OWASP Top 10 for Agentic Applications&lt;/em&gt;. &lt;a class="link" href="https://www.practical-devsecops.com/owasp-top-10-agentic-applications" target="_blank" rel="noopener"
 &gt;https://www.practical-devsecops.com/owasp-top-10-agentic-applications&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OWASP. (2025). &lt;em&gt;OWASP Top 10 for LLM Applications 2025&lt;/em&gt;. &lt;a class="link" href="https://owasp.org/www-project-top-10-for-llm-applications/" target="_blank" rel="noopener"
 &gt;https://owasp.org/www-project-top-10-for-llm-applications/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;MITRE. (2024). &lt;em&gt;MITRE ATLAS (Adversarial Threat Landscape for Artificial-Intelligence Systems)&lt;/em&gt;. &lt;a class="link" href="https://atlas.mitre.org/" target="_blank" rel="noopener"
 &gt;https://atlas.mitre.org/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NIST. (2024). &lt;em&gt;AI Risk Management Framework (AI RMF)&lt;/em&gt;. &lt;a class="link" href="https://aihub.nist.gov/ai-rmf" target="_blank" rel="noopener"
 &gt;https://aihub.nist.gov/ai-rmf&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenClaw. (2026). &lt;em&gt;OpenClaw Documentation - Security Configuration&lt;/em&gt;. &lt;a class="link" href="https://openclaw.dev/docs" target="_blank" rel="noopener"
 &gt;https://openclaw.dev/docs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Crowdstrike. (2025). &lt;em&gt;AI Agent Security: Risks and Mitigations&lt;/em&gt;. &lt;a class="link" href="https://www.crowdstrike.com/blog/ai-agent-security-risks/" target="_blank" rel="noopener"
 &gt;https://www.crowdstrike.com/blog/ai-agent-security-risks/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nvidia. (2025). &lt;em&gt;Building Secure AI Agents: Best Practices&lt;/em&gt;. &lt;a class="link" href="https://developer.nvidia.com/blog/building-secure-ai-agents/" target="_blank" rel="noopener"
 &gt;https://developer.nvidia.com/blog/building-secure-ai-agents/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Google. (2025). &lt;em&gt;AI Safety and Security Best Practices&lt;/em&gt;. &lt;a class="link" href="https://cloud.google.com/blog/products/ai-machine-learning/ai-safety-best-practices" target="_blank" rel="noopener"
 &gt;https://cloud.google.com/blog/products/ai-machine-learning/ai-safety-best-practices&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Microsoft. (2025). &lt;em&gt;Responsible AI in Practice: Security Considerations&lt;/em&gt;. &lt;a class="link" href="https://learn.microsoft.com/en-us/azure/ai-builder/responsible-ai-security" target="_blank" rel="noopener"
 &gt;https://learn.microsoft.com/en-us/azure/ai-builder/responsible-ai-security&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anthropic. (2025). &lt;em&gt;Building Reliable AI Systems: Security Guide&lt;/em&gt;. &lt;a class="link" href="https://www.anthropic.com/engineering/security" target="_blank" rel="noopener"
 &gt;https://www.anthropic.com/engineering/security&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;บทความนี้เป็นส่วนหนึ่งของซีรีส์ &amp;ldquo;Harness Engineering&amp;rdquo; ซึ่งสำรวจแนวคิดและเทคนิคในการใช้ AI ให้เกิดประสิทธิภาพสูงสุด&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ตอนที่ 1: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-1/" &gt;Harness Engineering ตอนที่ 1: ทำไม AI ต้องมี Harness?&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอนที่ 2: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-2/" &gt;Harness Engineering ตอนที่ 2: Prompt คือ Control Plane (ไม่ใช่ Input Box)&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอนที่ 3: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-3/" &gt;Harness Engineering ตอนที่ 3: Query Loop - หัวใจของระบบ&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอนที่ 4: &lt;a class="link" href="https://neng-lab.com/posts/harness-part-4/" &gt;Harness Engineering ตอนที่ 4: Tools &amp;amp; Permissions - กำหนดขอบเขต AI&lt;/a&gt; (บทความนี้)&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;บทความนี้เป็นส่วนหนึ่งของซีรีส์ Harness Engineering จาก Code &amp;amp; Community Blog&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Harness Engineering ตอนที่ 1: ทำไม AI ต้องมี Harness?</title><link>https://neng-lab.com/posts/harness-part-1/</link><pubDate>Mon, 13 Apr 2026 09:00:00 +0700</pubDate><author>jitaret@gmail.com (เหน่ง)</author><guid>https://neng-lab.com/posts/harness-part-1/</guid><description>&lt;img src="https://neng-lab.com/" alt="Featured image of post Harness Engineering ตอนที่ 1: ทำไม AI ต้องมี Harness?" /&gt;&lt;h1 id="harness-engineering-ตอนท-1-ทำไม-ai-ตองม-harness"&gt;&lt;a href="#harness-engineering-%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97-1-%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1-ai-%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%a1-harness" class="header-anchor"&gt;&lt;/a&gt;Harness Engineering ตอนที่ 1: ทำไม AI ต้องมี Harness?
&lt;/h1&gt;&lt;h2 id="สวนท-1-ทำไมเราตองพดเรองน"&gt;&lt;a href="#%e0%b8%aa%e0%b8%a7%e0%b8%99%e0%b8%97-1-%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b9%80%e0%b8%a3%e0%b8%b2%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%9e%e0%b8%94%e0%b9%80%e0%b8%a3%e0%b8%ad%e0%b8%87%e0%b8%99" class="header-anchor"&gt;&lt;/a&gt;ส่วนที่ 1: ทำไมเราต้องพูดเรื่องนี้
&lt;/h2&gt;&lt;p&gt;ลองนึกภาพว่าคุณลงทุนเงิน 10 ล้านบาทในโครงการ AI สักโครงการ จ้างทีมดีที่สุด ใช้เทคโนโลยีล้ำสมัย ผ่านไป 6 เดือน&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;โครงการล้มเหลว&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;นี่ไม่ใช่เรื่องแปลก — สถิติจาก Gartner ชี้ตรงๆ ว่า &lt;strong&gt;95% ของโครงการ AI ในองค์กรล้มเหลว&lt;/strong&gt; แม้ว่าทั่วโลกจะลงทุนใน AI มากกว่า 30-40 พันล้านดอลลาร์ต่อปี&lt;/p&gt;
&lt;p&gt;แล้วทำไมถึงยังมีคนลงทุนใน AI โดยไม่มี &amp;ldquo;ระบบความปลอดภัย&amp;rdquo;? นี่คือสิ่งที่ Harness Engineering จะมาตอบ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-harness-engineering-คออะไร"&gt;&lt;a href="#-harness-engineering-%e0%b8%84%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;⚙️ Harness Engineering คืออะไร?
&lt;/h2&gt;&lt;p&gt;ลองนึกภาพรถยนต์ Formula 1 สมัยก่อน — รถแข่งที่ทรงพลังมาก แต่ไม่มีระบบความปลอดภัย ถ้าขับเร็วเกินไปหรือเบรกผิดจังหวะ นักแข่งก็เสี่ยงตาย&lt;/p&gt;
&lt;p&gt;ตอนนี้รถ F1 ทุกคันมี &lt;strong&gt;harness&lt;/strong&gt; หรือเข็มขัดนิรภัย 5 จุด ระบบ ABS กรอบกันชน ระบบดับเพลิงอัตโนมัติ — ทุกอย่างออกแบบมาเพื่อให้ความเร็วสูงสุดได้ โดยลดความเสี่ยงต่ำสุด&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Harness Engineering&lt;/strong&gt; ในบริบทของ AI ก็ทำงานคล้ายๆ กัน&lt;/p&gt;
&lt;p&gt;มันคือการออกแบบระบบ &amp;ldquo;กรอบการทำงาน&amp;rdquo; ที่ทำให้ AI สามารถทำงานได้เต็มศักยภาพ โดยมีขอบเขต กฎเกณฑ์ และระบบตรวจสอบควบคุมไว้ ไม่ใช่การควบคุมจน AI ทำอะไรไม่ได้ แต่เป็นการสร้าง &lt;strong&gt;โครงสร้างพื้นฐานที่ช่วยให้ AI ทำงานได้อย่างมีประสิทธิภาพและปลอดภัย&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Harness Engineering ประกอบด้วยหลายองค์ประกอบ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Guardrails&lt;/strong&gt; — กำหนดขอบเขตว่า AI ทำอะไรได้/ไม่ได้&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring&lt;/strong&gt; — ติดตามการทำงานและตรวจจับปัญหา&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback mechanisms&lt;/strong&gt; — ระบบสำรองเมื่อ AI ทำงานผิดพลาด&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evaluation frameworks&lt;/strong&gt; — มาตรฐานการวัดผล&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Governance policies&lt;/strong&gt; — นโยบายและกฎเกณฑ์การใช้งาน&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;แต่ที่สำคัญที่สุด — Harness ไม่ใช่แค่เครื่องมือทางเทคนิค แต่เป็น &lt;strong&gt;วิธีคิด&lt;/strong&gt; ในการใช้ AI อย่างรับผิดชอบ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-ทำไมตองม-harness--ตวอยางจรงทนากลว"&gt;&lt;a href="#-%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%a1-harness--%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b8%88%e0%b8%a3%e0%b8%87%e0%b8%97%e0%b8%99%e0%b8%b2%e0%b8%81%e0%b8%a5%e0%b8%a7" class="header-anchor"&gt;&lt;/a&gt;🚨 ทำไมต้องมี Harness? — ตัวอย่างจริงที่น่ากลัว
&lt;/h2&gt;&lt;p&gt;ถ้ายังสงสัยว่า Harness จำเป็นจริงหรือไม่ ลองดูตัวอย่างเหล่านี้:&lt;/p&gt;
&lt;h3 id="-microsoft-tay-2016--ai-ทกลายเปนคนเหยยดใน-24-ชวโมง"&gt;&lt;a href="#-microsoft-tay-2016--ai-%e0%b8%97%e0%b8%81%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b9%80%e0%b8%9b%e0%b8%99%e0%b8%84%e0%b8%99%e0%b9%80%e0%b8%ab%e0%b8%a2%e0%b8%a2%e0%b8%94%e0%b9%83%e0%b8%99-24-%e0%b8%8a%e0%b8%a7%e0%b9%82%e0%b8%a1%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;🤖 Microsoft Tay (2016) — AI ที่กลายเป็นคนเหยียดใน 24 ชั่วโมง
&lt;/h3&gt;&lt;p&gt;Microsoft เปิดตัว chatbot ชื่อ Tay บน Twitter มีเป้าหมายให้เรียนรู้การสนทนาจากผู้ใช้ ภายใน 24 ชั่วโมง Tay กลายเป็นบอทที่พูดจาเหยียดเชื้อชาติ ใส่ร้ายกลุ่มต่างๆ เพราะ &amp;ldquo;เรียนรู้&amp;rdquo; จากคนที่เล่นกับมัน — ไม่มี Guardrails กำกับ ไม่มีระบบกรองเนื้อหา&lt;/p&gt;
&lt;h3 id="-tesla-autopilot--ความเชอมนทฆาคน"&gt;&lt;a href="#-tesla-autopilot--%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b9%80%e0%b8%8a%e0%b8%ad%e0%b8%a1%e0%b8%99%e0%b8%97%e0%b8%86%e0%b8%b2%e0%b8%84%e0%b8%99" class="header-anchor"&gt;&lt;/a&gt;🚗 Tesla Autopilot — ความเชื่อมั่นที่ฆ่าคน
&lt;/h3&gt;&lt;p&gt;ระบบขับขี่อัตโนมัติของ Tesla ถูกใช้งานในสถานการณ์ที่ไม่ควร ผู้ขับขี่เชื่อใจระบบมากเกินไป จนเกิดอุบัติเหตุหลายครั้งมีผู้เสียชีวิต ไม่มีระบบเตือนที่เข้มงวดพอ ไม่มีการกำหนดขอบเขตการใช้งานชัดเจน&lt;/p&gt;
&lt;h3 id="-amazon-ai-recruitment--อคตทซอนอยในขอมล"&gt;&lt;a href="#-amazon-ai-recruitment--%e0%b8%ad%e0%b8%84%e0%b8%95%e0%b8%97%e0%b8%8b%e0%b8%ad%e0%b8%99%e0%b8%ad%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b8%82%e0%b8%ad%e0%b8%a1%e0%b8%a5" class="header-anchor"&gt;&lt;/a&gt;💼 Amazon AI Recruitment — อคติที่ซ่อนอยู่ในข้อมูล
&lt;/h3&gt;&lt;p&gt;Amazon เคยพัฒนา AI เพื่อช่วยคัดกรองผู้สมัครงาน แต่ระบบกลับลดทอนผู้หญิงโดยอัตโนมัติ เพราะเรียนรู้จากข้อมูลประวัติการรับพนักงานในอดีตที่ส่วนใหญ่เป็นผู้ชาย — ไม่มีระบบตรวจสอบอคติ ไม่มีการประเมินความเป็นธรรม&lt;/p&gt;
&lt;h3 id="-knight-capital--440-ลานใน-30-นาท"&gt;&lt;a href="#-knight-capital--440-%e0%b8%a5%e0%b8%b2%e0%b8%99%e0%b9%83%e0%b8%99-30-%e0%b8%99%e0%b8%b2%e0%b8%97" class="header-anchor"&gt;&lt;/a&gt;💰 Knight Capital — $440 ล้านใน 30 นาที
&lt;/h3&gt;&lt;p&gt;ในปี 2013 บริษัท Knight Capital ใช้ trading bot ที่มี bug ในโค้ด ทำให้ซื้อขายหุ้นผิดพลาดอย่างรวดเร็ว สูญเสียเงิน 440 ล้านดอลลาร์ภายในครึ่งชั่วโมง และล้มละลายในเวลาต่อมา — ไม่มีระบบตรวจสอบความเสี่ยง ไม่มีวงเงินควบคุม&lt;/p&gt;
&lt;h3 id="-air-canada-chatbot-2024--ai-โกหกแลวบรษทตองจาย"&gt;&lt;a href="#-air-canada-chatbot-2024--ai-%e0%b9%82%e0%b8%81%e0%b8%ab%e0%b8%81%e0%b9%81%e0%b8%a5%e0%b8%a7%e0%b8%9a%e0%b8%a3%e0%b8%a9%e0%b8%97%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%88%e0%b8%b2%e0%b8%a2" class="header-anchor"&gt;&lt;/a&gt;🇨🇦 Air Canada Chatbot (2024) — AI โกหกแล้วบริษัทต้องจ่าย
&lt;/h3&gt;&lt;p&gt;Air Canada มี chatbot ที่บอกลูกค้าว่าสามารถขอเงินคืนได้ตามนโยบาย &amp;ldquo;Bereavement Fare&amp;rdquo; แม้ว่านโยบายนั้นจะไม่มีอยู่จริง ศาลตัดสินให้ Air Canada จ่ายเงินชดเชยเพราะ chatbot ให้ข้อมูลผิด — ไม่มีระบบยืนยันข้อมูล ไม่มีการกำกับดูแลเนื้อหา&lt;/p&gt;
&lt;p&gt;และนี่เป็นแค่ตัวอย่างที่ถูกเปิดเผย ยังมีอีกมากที่เกิดขึ้นในองค์กรทั่วโลกโดยไม่มีใครรู้&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-ตวเลขทไมโกหก"&gt;&lt;a href="#-%e0%b8%95%e0%b8%a7%e0%b9%80%e0%b8%a5%e0%b8%82%e0%b8%97%e0%b9%84%e0%b8%a1%e0%b9%82%e0%b8%81%e0%b8%ab%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;📊 ตัวเลขที่ไม่โกหก
&lt;/h2&gt;&lt;p&gt;นอกจากเรื่องราวความล้มเหลวแล้ว ตัวเลขก็บอกเล่าความจริงที่น่าตกใจ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;72%&lt;/strong&gt; ขององค์กรทั่วโลกมี AI deployment อย่างน้อย 1 ระบบใน production&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;65%&lt;/strong&gt; ใช้ Generative AI ในอย่างน้อย 1 ฟังก์ชัน&lt;/li&gt;
&lt;li&gt;แต่เพียง &lt;strong&gt;25%&lt;/strong&gt; ขององค์กร มี AI governance program ที่ implement ครบถ้วน&lt;/li&gt;
&lt;li&gt;และ &lt;strong&gt;97%&lt;/strong&gt; ของเหยื่อ breach ที่เกี่ยวข้องกับ AI ขาด access controls&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;นี่คือช่องว่างระหว่าง &lt;strong&gt;การใช้ AI&lt;/strong&gt; กับ &lt;strong&gt;การใช้ AI อย่างปลอดภัย&lt;/strong&gt; — ช่องว่างที่ Harness Engineering จะมาอุด&lt;/p&gt;
&lt;h3 id="-10-สาเหตหลกท-ai-ลมเหลว"&gt;&lt;a href="#-10-%e0%b8%aa%e0%b8%b2%e0%b9%80%e0%b8%ab%e0%b8%95%e0%b8%ab%e0%b8%a5%e0%b8%81%e0%b8%97-ai-%e0%b8%a5%e0%b8%a1%e0%b9%80%e0%b8%ab%e0%b8%a5%e0%b8%a7" class="header-anchor"&gt;&lt;/a&gt;🔍 10 สาเหตุหลักที่ AI ล้มเหลว
&lt;/h3&gt;&lt;p&gt;จากการศึกษาของ MIT และ Stanford พบ 10 สาเหตุหลักที่ทำให้โครงการ AI ล้มเหลว:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Unclear business objectives&lt;/strong&gt; — ไม่มีเป้าหมายธุรกิจที่ชัดเจน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Black Box AI systems&lt;/strong&gt; — ไม่เข้าใจว่า AI ตัดสินใจอย่างไร&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lack of collaboration&lt;/strong&gt; — ทีมไม่ทำงานร่วมกัน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Lack of talent&lt;/strong&gt; — ขาดคนที่เข้าใจทั้ง AI และธุรกิจ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overfitting&lt;/strong&gt; — ระบบทำงานดีกับข้อมูลเก่าแต่ไม่กับข้อมูลใหม่&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Edge-case neglect&lt;/strong&gt; — ไม่คิดถึงกรณีขอบเขต&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correlation dependency&lt;/strong&gt; — เข้าใจผิดว่าความสัมพันธ์คือเหตุผล&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data bias&lt;/strong&gt; — ข้อมูลฝังอคติ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Underfitting&lt;/strong&gt; — โมเดลเรียนรู้ไม่เพียงพอ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inadequate testing&lt;/strong&gt; — ทดสอบไม่เข้มงวด&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Harness Engineering ออกแบบมาเพื่อจัดการกับทุกจุดนี้ — ไม่ใช่แก้ทีละจุด แต่เป็นระบบที่ครอบคลุม&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-จากประสบการณจรง-การใช-ai-โดยไมม-harness--ม-harness"&gt;&lt;a href="#-%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%88%e0%b8%a3%e0%b8%87-%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a-ai-%e0%b9%82%e0%b8%94%e0%b8%a2%e0%b9%84%e0%b8%a1%e0%b8%a1-harness--%e0%b8%a1-harness" class="header-anchor"&gt;&lt;/a&gt;🌱 จากประสบการณ์จริง: การใช้ AI โดยไม่มี Harness → มี Harness
&lt;/h2&gt;&lt;p&gt;ขอเล่าประสบการณ์ส่วนตัวของเหน่งให้ฟัง&lt;/p&gt;
&lt;p&gt;ช่วงแรกที่เริ่มใช้ AI (ยังจำได้ ประมาณปี 2023-2024) — เหน่งใช้งาน AI แบบตรงไปตรงมา ถามคำถาม รอคำตอบ บางทีก็ใช้ผลลัพธ์ที่ได้มาโดยไม่ตรวจสอบ ไม่มีกระบวนการ ไม่มีมาตรฐาน ไม่มีระบบตรวจสอบ&lt;/p&gt;
&lt;p&gt;ผลลัพธ์เป็นอย่างไร? บางครั้งก็ได้คำตอบดี บางครั้งก็ได้คำตอบที่ผิดหรือ outdated แต่ไม่รู้ตัว ต้องเสียเวลาตรวจสอบทีหลัง และบางครั้งก็เสียเวลาไปกับงานที่ไม่จำเป็นเพราะไม่รู้ว่า AI สามารถช่วยได้ดีกว่า&lt;/p&gt;
&lt;p&gt;แล้วมาวันหนึ่ง เหน่งเริ่มสังเกตว่า&amp;hellip; ถ้ามีกรอบการทำงานที่ชัดเจน การใช้ AI จะมีประสิทธิภาพมากขึ้น&lt;/p&gt;
&lt;p&gt;ปัจจุบัน เหน่งใช้ระบบ &lt;strong&gt;Qwen (Alibaba)&lt;/strong&gt; ที่ rotate ตามประเภทงาน:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Qwen 3.5 Plus&lt;/strong&gt; — สำหรับงานทั่วไป ตอบคำถาม เขียนบทความ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Qwen Max&lt;/strong&gt; — สำหรับงานซับซ้อน ต้องการความลึก&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Qwen Coder&lt;/strong&gt; — สำหรับเขียนโค้ด งานด้านเทคนิค&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;แต่ที่สำคัญกว่าเครื่องมือคือ &lt;strong&gt;Flow&lt;/strong&gt; — กระบวนการทำงานที่วางไว้ เมื่อได้คำตอบจาก AI จะตรวจสอบยังไง ประเมินคุณภาพอย่างไร และเก็บบทเรียนจากการใช้งานอย่างไร&lt;/p&gt;
&lt;p&gt;เหน่งพอใจกับระบบปัจจุบันประมาณ 90% — ยังมีพื้นที่ให้ปรับปรุง แต่การมี Harness ทำให้รู้สึกมั่นใจขึ้นมากเมื่อเทียบกับตอนแรก&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key Takeaway:&lt;/strong&gt; เริ่มต้นไม่จำเป็นต้องซับซ้อน เริ่มจากสิ่งเล็กๆ — กำหนดว่าจะใช้ AI ทำอะไร ตรวจสอบผลลัพธ์อย่างไร และเก็บข้อมูลว่าอะไรได้ผล/ไม่ได้ผล ค่อยๆ สร้าง Harness ของตัวเองไปเรื่อยๆ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-ตอไป-harness-ประกอบดวยอะไร"&gt;&lt;a href="#-%e0%b8%95%e0%b8%ad%e0%b9%84%e0%b8%9b-harness-%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%81%e0%b8%ad%e0%b8%9a%e0%b8%94%e0%b8%a7%e0%b8%a2%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3" class="header-anchor"&gt;&lt;/a&gt;🔜 ต่อไป: Harness ประกอบด้วยอะไร?
&lt;/h2&gt;&lt;p&gt;ในตอนที่ 2 เราจะมาดูกันว่า &lt;strong&gt;Harness ที่ดีต้องมีองค์ประกอบอะไรบ้าง&lt;/strong&gt; และ &lt;strong&gt;10 หลักการสำคัญ&lt;/strong&gt; ในการออกแบบระบบ Harness ที่จะช่วยให้ AI ทำงานได้อย่างมีประสิทธิภาพและปลอดภัย&lt;/p&gt;
&lt;p&gt;เตรียมตัวอ่านต่อนะครับ! 🙌&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-อางอง"&gt;&lt;a href="#-%e0%b8%ad%e0%b8%b2%e0%b8%87%e0%b8%ad%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;📚 อ้างอิง
&lt;/h2&gt;&lt;h3 id="แหลงหลก"&gt;&lt;a href="#%e0%b9%81%e0%b8%ab%e0%b8%a5%e0%b8%87%e0%b8%ab%e0%b8%a5%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;แหล่งหลัก:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Harness Books 2 เล่ม โดย wquguru&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Book 1: &lt;a class="link" href="https://github.com/wquguru/harness-books/blob/main/book1-claude-code/index.md" target="_blank" rel="noopener"
 &gt;Claude Code Harness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Book 2: &lt;a class="link" href="https://github.com/wquguru/harness-books/blob/main/book2-comparing/index.md" target="_blank" rel="noopener"
 &gt;Claude Code vs Codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Online Version: &lt;a class="link" href="https://harness-books.agentway.dev/book1-claude-code/" target="_blank" rel="noopener"
 &gt;harness-books.agentway.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="แหลงเสรม"&gt;&lt;a href="#%e0%b9%81%e0%b8%ab%e0%b8%a5%e0%b8%87%e0%b9%80%e0%b8%aa%e0%b8%a3%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;แหล่งเสริม:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;MIT Media Lab - State of AI in Business 2025&lt;/li&gt;
&lt;li&gt;Knostic - AI Governance Statistics 2025&lt;/li&gt;
&lt;li&gt;Harvard Law School Forum - AI Risk Disclosures&lt;/li&gt;
&lt;li&gt;Thomson Reuters - AI Governance Gap&lt;/li&gt;
&lt;li&gt;Medha Cloud - AI Adoption Statistics 2026&lt;/li&gt;
&lt;li&gt;Mashable - Biggest AI Fails 2025&lt;/li&gt;
&lt;li&gt;AI Multiple - AI Fail Examples&lt;/li&gt;
&lt;li&gt;SG Solutions - Real World AI Failures&lt;/li&gt;
&lt;li&gt;WebAsha - Top 7 AI Failures&lt;/li&gt;
&lt;li&gt;Gartner - AI Risk Reports&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>ทำไมต้องเลี้ยง AI? (Harness Engineering สำหรับคนทั่วไป)</title><link>https://neng-lab.com/posts/harness-intro/</link><pubDate>Sun, 12 Apr 2026 09:00:00 +0700</pubDate><author>jitaret@gmail.com (เหน่ง)</author><guid>https://neng-lab.com/posts/harness-intro/</guid><description>&lt;img src="https://neng-lab.com/" alt="Featured image of post ทำไมต้องเลี้ยง AI? (Harness Engineering สำหรับคนทั่วไป)" /&gt;&lt;h1 id="ทำไมตองเลยง-ai"&gt;&lt;a href="#%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b9%80%e0%b8%a5%e0%b8%a2%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;ทำไมต้องเลี้ยง AI?
&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;คำโปรย:&lt;/strong&gt; AI ฉลาดมาก แต่อาจทำผิดพลาด คู่มือนี้จะสอนวิธีเลี้ยง AI ให้ปลอดภัย เหมือนเลี้ยงเด็กฉลาด&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-สารบญ"&gt;&lt;a href="#-%e0%b8%aa%e0%b8%b2%e0%b8%a3%e0%b8%9a%e0%b8%8d" class="header-anchor"&gt;&lt;/a&gt;📋 สารบัญ
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;a class="link" href="#%e0%b8%9a%e0%b8%97%e0%b8%99%e0%b8%b3-ai-%e0%b8%89%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b9%81%e0%b8%95%e0%b9%88" &gt;บทนำ: AI ฉลาดแต่&amp;hellip;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#%e0%b8%9b%e0%b8%b1%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%97%e0%b8%b5%e0%b9%88%e0%b9%80%e0%b8%88%e0%b8%ad" &gt;ปัญหาที่เจอ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#%e0%b8%a7%e0%b8%b4%e0%b8%98%e0%b8%b5%e0%b9%81%e0%b8%81%e0%b9%89-%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%ab%e0%b8%99%e0%b8%b1%e0%b8%87%e0%b8%aa%e0%b8%b7%e0%b8%ad-harness-books" &gt;วิธีแก้ (จากหนังสือ Harness Books)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#%e0%b8%95%e0%b8%b1%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b9%88%e0%b8%b2%e0%b8%87%e0%b8%88%e0%b8%a3%e0%b8%b4%e0%b8%87" &gt;ตัวอย่างจริง&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#%e0%b8%aa%e0%b8%a3%e0%b8%b8%e0%b8%9b" &gt;สรุป&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="#%e0%b8%ad%e0%b9%88%e0%b8%b2%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b9%88%e0%b8%ad%e0%b9%84%e0%b8%9b" &gt;อ่านตอนต่อไป&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="-บทนำ-ai-ฉลาดแต"&gt;&lt;a href="#-%e0%b8%9a%e0%b8%97%e0%b8%99%e0%b8%b3-ai-%e0%b8%89%e0%b8%a5%e0%b8%b2%e0%b8%94%e0%b9%81%e0%b8%95" class="header-anchor"&gt;&lt;/a&gt;🎯 บทนำ: AI ฉลาดแต่&amp;hellip;
&lt;/h2&gt;&lt;p&gt;

&lt;img alt="คนทำงานกับคอมพิวเตอร์" class="gallery-image" data-flex-basis="160px" data-flex-grow="66" height="1198" loading="lazy" sizes="(max-width: 800px) 100vw, 800px" src="https://neng-lab.com/posts/harness-intro/image1_hu_b170621a2605848f.jpg" srcset="https://neng-lab.com/posts/harness-intro/image1_hu_2ce03d53a44ece92.webp 400w, https://neng-lab.com/posts/harness-intro/image1_hu_b170621a2605848f.jpg 800w" width="800"&gt;

&lt;em&gt;ภาพจาก Unsplash&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;คุณเคยใช้ ChatGPT หรือ Claude ไหมครับ?&lt;/p&gt;
&lt;p&gt;AI เหล่านี้ฉลาดมาก สามารถ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✍️ เขียนบทความได้&lt;/li&gt;
&lt;li&gt;💻 เขียนโค้ดได้&lt;/li&gt;
&lt;li&gt;📊 วิเคราะห์ข้อมูลได้&lt;/li&gt;
&lt;li&gt;💬 ตอบคำถามได้แทบทุกอย่าง&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;แต่&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;เคยสงสัยไหมครับว่า:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ถ้า AI เขียนโค้ดผิด จะทำยังไง?&lt;/li&gt;
&lt;li&gt;ถ้า AI ลบไฟล์สำคัญ จะทำยังไง?&lt;/li&gt;
&lt;li&gt;ถ้า AI ส่งข้อมูลผิด จะทำยังไง?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;หนังสือ &lt;strong&gt;Harness Books&lt;/strong&gt; 2 เล่มนี้ ตอบคำถามเหล่านี้ครับ&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-ปญหาทเจอ"&gt;&lt;a href="#-%e0%b8%9b%e0%b8%8d%e0%b8%ab%e0%b8%b2%e0%b8%97%e0%b9%80%e0%b8%88%e0%b8%ad" class="header-anchor"&gt;&lt;/a&gt;🤔 ปัญหาที่เจอ
&lt;/h2&gt;&lt;h3 id="ประสบการณจรงจากเหนง"&gt;&lt;a href="#%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%88%e0%b8%a3%e0%b8%87%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;ประสบการณ์จริงจากเหน่ง:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;ช่วงแรกที่ใช้ AI สร้างสิ่งต่างๆ:&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;ช่วงแรกที่ได้ลองใช้ AI ในการสร้างสิ่งต่างๆ &lt;strong&gt;ค่อนข้างปวดหัว&lt;/strong&gt; มากครับ ทั้งการศึกษาการใช้งาน OpenClaw และทดสอบตัวอื่นๆ ที่ตามมาภายหลัง&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;การเลือกโมเดล LLM:&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;ตอนนั้นลองหาข้อมูลเพิ่มดูนะ &lt;strong&gt;การเลือกโมเดล LLM ก็มีมาใหม่และเยอะมาก&lt;/strong&gt; แทบจะเปลี่ยนภายในวันต่อวันเลย พัฒนาค่อนข้าง&lt;strong&gt;ก้าวกระโดดมาก&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;ปัจจุบันที่ใช้ Qwen:&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;ปัจจุบันเหน่งพอใจใช้โมเดลของ &lt;strong&gt;Alibaba Qwen&lt;/strong&gt; เพราะสามารถใช้กลยุทธ์ &lt;strong&gt;rotate ให้ LLM ทำงานที่เหมาะสมกับหน้าที่&lt;/strong&gt; เช่น เขียนโค้ด เขียนบทความ หรือออกแบบอื่นๆ&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;กระบวนการเรียนรู้:&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;&lt;strong&gt;ปรับแก้ตั้งค่า ตบตีกับ AI นานมาก&lt;/strong&gt; กว่าจะเพิ่มใช้งานคล่องมือ และศึกษาข้อมูลทั้งใน &lt;strong&gt;Social, Paper, GitHub&lt;/strong&gt; เรียนรู้เรื่อง &lt;strong&gt;Memory&lt;/strong&gt; เรียนรู้เกี่ยวกับ &lt;strong&gt;Skills&lt;/strong&gt;&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id="สถานการณจรง"&gt;&lt;a href="#%e0%b8%aa%e0%b8%96%e0%b8%b2%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%88%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;สถานการณ์จริง:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;บริษัทหนึ่งให้ AI เข้าถึงระบบไฟล์&lt;/strong&gt;
↓
&lt;strong&gt;AI ลบไฟล์สำคัญโดยไม่ได้ตั้งใจ&lt;/strong&gt;
↓
&lt;strong&gt;บริษัทเสียหายหลายล้านบาท&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;

&lt;img alt="ออฟฟิศที่เป็นระเบียบ" class="gallery-image" data-flex-basis="360px" data-flex-grow="150" height="533" loading="lazy" sizes="(max-width: 800px) 100vw, 800px" src="https://neng-lab.com/posts/harness-intro/image2_hu_74bc73f9b12ff947.jpg" srcset="https://neng-lab.com/posts/harness-intro/image2_hu_17be238729db9bf3.webp 400w, https://neng-lab.com/posts/harness-intro/image2_hu_74bc73f9b12ff947.jpg 800w" width="800"&gt;

&lt;em&gt;ภาพจาก Unsplash&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;คำถาม:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ผิดที่ AI หรือ?&lt;/li&gt;
&lt;li&gt;หรือผิดที่ระบบควบคุม?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;คำตอบ:&lt;/strong&gt; ผิดที่ระบบควบคุมครับ!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-วธแก-จากหนงสอ-harness-books"&gt;&lt;a href="#-%e0%b8%a7%e0%b8%98%e0%b9%81%e0%b8%81-%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%ab%e0%b8%99%e0%b8%87%e0%b8%aa%e0%b8%ad-harness-books" class="header-anchor"&gt;&lt;/a&gt;💡 วิธีแก้ (จากหนังสือ Harness Books)
&lt;/h2&gt;&lt;h3 id="แนวคดหลก"&gt;&lt;a href="#%e0%b9%81%e0%b8%99%e0%b8%a7%e0%b8%84%e0%b8%94%e0%b8%ab%e0%b8%a5%e0%b8%81" class="header-anchor"&gt;&lt;/a&gt;แนวคิดหลัก:
&lt;/h3&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;AI เหมือนเด็กฉลาด&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ฉลาดมาก&lt;/li&gt;
&lt;li&gt;แต่อาจทำผิดพลาด&lt;/li&gt;
&lt;li&gt;ต้องมีกฎ มีคนตรวจ มีแผนสำรอง&lt;/li&gt;
&lt;/ul&gt;

 &lt;/blockquote&gt;
&lt;h3 id="3-หลกการเลยง-ai"&gt;&lt;a href="#3-%e0%b8%ab%e0%b8%a5%e0%b8%81%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%a5%e0%b8%a2%e0%b8%87-ai" class="header-anchor"&gt;&lt;/a&gt;3 หลักการเลี้ยง AI:
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;หลักการ&lt;/th&gt;
 &lt;th&gt;เปรียบเทียบ&lt;/th&gt;
 &lt;th&gt;ตัวอย่าง&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;1. มีกฎชัดเจน&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;เหมือนกฎบ้าน&lt;/td&gt;
 &lt;td&gt;AI ทำอะไรได้/ไม่ได้&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;2. จำกัดสิทธิ์&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;เหมือนกุญแจห้อง&lt;/td&gt;
 &lt;td&gt;AI เข้าถึงไฟล์ไหนได้บ้าง&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;3. มีคนตรวจสอบ&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;เหมือนพ่อแม่ตรวจการบ้าน&lt;/td&gt;
 &lt;td&gt;มี AI อีกตัวตรวจงาน&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="ประสบการณจรงจากเหนง-1"&gt;&lt;a href="#%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%88%e0%b8%a3%e0%b8%87%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%87-1" class="header-anchor"&gt;&lt;/a&gt;ประสบการณ์จริงจากเหน่ง:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;ก่อนจะ Flow ได้:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;❌ ทดสอบ OpenClaw + เครื่องมืออื่นๆ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;❌ เลือกโมเดล LLM (มีใหม่ทุกวัน)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;❌ เรียนรู้ Memory, Skills
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;❌ ตบตีกับ AI นานมาก
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;ปัจจุบัน:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;✅ ใช้ Qwen (Alibaba) rotate ตามงาน
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;✅ มีกระบวนการที่ Flow แล้ว
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;✅ พอใจผลงาน 90%
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;บทเรียน:&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;ถ้าเราไม่สามารถเปลี่ยนประสบการณ์ส่วนตัวเป็นกฎที่ใช้ซ้ำได้
เราจะเปลี่ยน Agent เป็นระบบที่เสถียรไม่ได้&amp;rdquo;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="-ตวอยางจรง"&gt;&lt;a href="#-%e0%b8%95%e0%b8%a7%e0%b8%ad%e0%b8%a2%e0%b8%b2%e0%b8%87%e0%b8%88%e0%b8%a3%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;📊 ตัวอย่างจริง
&lt;/h2&gt;&lt;h3 id="บรษททใชระบบด"&gt;&lt;a href="#%e0%b8%9a%e0%b8%a3%e0%b8%a9%e0%b8%97%e0%b8%97%e0%b9%83%e0%b8%8a%e0%b8%a3%e0%b8%b0%e0%b8%9a%e0%b8%9a%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;บริษัทที่ใช้ระบบดี:
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;สิ่งที่ทำ:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ มีกฎชัดเจนว่า AI ทำอะไรได้/ไม่ได้&lt;/li&gt;
&lt;li&gt;✅ มีทีมตรวจสอบงาน AI&lt;/li&gt;
&lt;li&gt;✅ มีแผนสำรองเมื่อ AI ทำผิด&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ผลลัพธ์:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📈 ใช้ AI ปลอดภัย&lt;/li&gt;
&lt;li&gt;🛡️ ลดความเสี่ยง&lt;/li&gt;
&lt;li&gt;⚡ เพิ่มประสิทธิภาพ&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-สรป"&gt;&lt;a href="#-%e0%b8%aa%e0%b8%a3%e0%b8%9b" class="header-anchor"&gt;&lt;/a&gt;✅ สรุป
&lt;/h2&gt;&lt;h3 id="ขอคดทได"&gt;&lt;a href="#%e0%b8%82%e0%b8%ad%e0%b8%84%e0%b8%94%e0%b8%97%e0%b9%84%e0%b8%94" class="header-anchor"&gt;&lt;/a&gt;ข้อคิดที่ได้:
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;AI ฉลาดแต่อาจทำผิดพลาด&lt;/strong&gt; — ไม่ใช่เรื่องแปลก&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ต้องมีระบบควบคุม&lt;/strong&gt; — ไม่ควรไว้ใจ 100%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;เหมือนเลี้ยงเด็กฉลาด&lt;/strong&gt; — ต้องมีกฎ มีคนตรวจ มีแผนสำรอง&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ต้องเรียนรู้และปรับตัว&lt;/strong&gt; — LLM เปลี่ยนวันต่อวัน&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ต้องทดลองและปรับแต่ง&lt;/strong&gt; — ตบตีกับ AI นานกว่าจะ Flow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ต้องเปลี่ยนประสบการณ์เป็นกฎ&lt;/strong&gt; — เพื่อให้ระบบเสถียร&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="ประสบการณจากเหนง"&gt;&lt;a href="#%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b9%80%e0%b8%ab%e0%b8%99%e0%b8%87" class="header-anchor"&gt;&lt;/a&gt;ประสบการณ์จากเหน่ง:
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;❌ ช่วงแรก: ปวดหัวกับการเรียนรู้
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt; - ทดสอบ OpenClaw + เครื่องมืออื่นๆ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt; - เลือกโมเดล LLM (มีใหม่ทุกวัน)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt; - เรียนรู้ Memory, Skills
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt;✅ ปัจจุบัน:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; - ใช้ Qwen (Alibaba) rotate ตามงาน
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;8&lt;/span&gt;&lt;span class="cl"&gt; - มีกระบวนการที่ Flow แล้ว
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="สงทไดจากซรสน"&gt;&lt;a href="#%e0%b8%aa%e0%b8%87%e0%b8%97%e0%b9%84%e0%b8%94%e0%b8%88%e0%b8%b2%e0%b8%81%e0%b8%8b%e0%b8%a3%e0%b8%aa%e0%b8%99" class="header-anchor"&gt;&lt;/a&gt;สิ่งที่ได้จากซีรีส์นี้:
&lt;/h3&gt;&lt;p&gt;หลังจากอ่านครบ 8 ตอน คุณจะ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ เข้าใจวิธีควบคุม AI&lt;/li&gt;
&lt;li&gt;✅ รู้วิธีสร้างระบบปลอดภัย&lt;/li&gt;
&lt;li&gt;✅ ใช้ AI ได้อย่างมั่นใจ&lt;/li&gt;
&lt;li&gt;✅ ลดเวลา &amp;ldquo;ตบตีกับ AI&amp;rdquo;&lt;/li&gt;
&lt;li&gt;✅ ได้ระบบที่ Flow เหมือนเหน่ง&lt;/li&gt;
&lt;li&gt;✅ เปลี่ยนประสบการณ์เป็นกฎที่ใช้ซ้ำได้&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="-อานตอนตอไป"&gt;&lt;a href="#-%e0%b8%ad%e0%b8%b2%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b9%84%e0%b8%9b" class="header-anchor"&gt;&lt;/a&gt;🔗 อ่านตอนต่อไป
&lt;/h2&gt;&lt;h3 id="ตอนท-1-ai-คออะไร-และทำไมตองควบคม"&gt;&lt;a href="#%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%97-1-ai-%e0%b8%84%e0%b8%ad%e0%b8%ad%e0%b8%b0%e0%b9%84%e0%b8%a3-%e0%b9%81%e0%b8%a5%e0%b8%b0%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%95%e0%b8%ad%e0%b8%87%e0%b8%84%e0%b8%a7%e0%b8%9a%e0%b8%84%e0%b8%a1" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;ตอนที่ 1: AI คืออะไร? (และทำไมต้องควบคุม)&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;คุณจะได้เรียนรู้:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🤖 AI คืออะไร (อธิบายแบบง่าย)&lt;/li&gt;
&lt;li&gt;⚠️ ทำไมต้องควบคุม AI&lt;/li&gt;
&lt;li&gt;🎯 ตัวอย่าง AI ทำผิดพลาดจริง&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;⏳ กำลังเขียนเร็วๆ นี้&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-แชรประสบการณ"&gt;&lt;a href="#-%e0%b9%81%e0%b8%8a%e0%b8%a3%e0%b8%9b%e0%b8%a3%e0%b8%b0%e0%b8%aa%e0%b8%9a%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%93" class="header-anchor"&gt;&lt;/a&gt;💬 แชร์ประสบการณ์
&lt;/h2&gt;&lt;p&gt;คุณเคยใช้ AI ไหมครับ?
มีประสบการณ์ดีๆ หรือร้ายๆ ไหม?
แชร์ในคอมเมนต์ด้านล่างเลยครับ!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="-แชรบทความน"&gt;&lt;a href="#-%e0%b9%81%e0%b8%8a%e0%b8%a3%e0%b8%9a%e0%b8%97%e0%b8%84%e0%b8%a7%e0%b8%b2%e0%b8%a1%e0%b8%99" class="header-anchor"&gt;&lt;/a&gt;📢 แชร์บทความนี้
&lt;/h2&gt;&lt;p&gt;ถ้าบทความนี้มีประโยชน์
ฝากแชร์ให้เพื่อนๆ ด้วยนะครับ!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;ซีรีส์: Harness Engineering สำหรับคนทั่วไป&lt;/em&gt;&lt;br&gt;
&lt;em&gt;ตอน Intro: ทำไมต้องเลี้ยง AI?&lt;/em&gt;&lt;br&gt;
&lt;em&gt;โดย เหน่ง - Code &amp;amp; Community&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;อ้างอิง: Harness Books 2 เล่ม โดย wquguru&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;a class="link" href="https://github.com/wquguru/harness-books" target="_blank" rel="noopener"
 &gt;Book 1: Claude Code Harness&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;em&gt;&lt;a class="link" href="https://github.com/wquguru/harness-books" target="_blank" rel="noopener"
 &gt;Book 2: Claude Code vs Codex&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>