<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI Agent &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<atom:link href="https://myifew.com/tag/ai-agent/feed/" rel="self" type="application/rss+xml" />
	<link>https://myifew.com</link>
	<description></description>
	<lastBuildDate>Fri, 24 Jul 2026 07:38:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>

<image>
	<url>https://myifew.com/wp-content/uploads/2018/07/cropped-logo6-ts-32x32.png</url>
	<title>AI Agent &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<link>https://myifew.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Working Agreement กับ AI: กติกาเล็กๆ ที่ทำให้ Coding Agent ไม่หลุดทาง</title>
		<link>https://myifew.com/7871/working-agreement-with-ai/</link>
					<comments>https://myifew.com/7871/working-agreement-with-ai/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Fri, 24 Jul 2026 07:38:34 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Working Agreement]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=7871</guid>

					<description><![CDATA[ทำไมทีมที่ใช้ AI coding agent ควรมีกติกาการทำงานร่วมกัน เช่น test ก่อน push, create issue หลังตกลง plan และห้าม merge dev โดยไม่ขอ approve]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ผมใช้ AI มาพักใหญ่ๆ แล้วเริ่มรู้สึกว่ามีเรื่องหนึ่งที่ตอนแรกดูเหมือนเล็ก แต่พอใช้งานจริงไปเรื่อยๆ กลับสำคัญมาก คือการมี <strong>Working Agreement กับ AI</strong> หรือข้อตกลงวิธีทำงานร่วมกันระหว่างเรากับ AI</p>



<p class="wp-block-paragraph">ช่วงแรกๆ ผมก็สั่งเป็นรอบๆ ไปเหมือนกันครับ วันนี้ให้ช่วยแก้ bug พรุ่งนี้ให้ช่วย refactor อีกวันให้ช่วยเขียน test แต่พอใช้ไปนานๆ จะเริ่มเห็น pattern ว่า หลายเรื่องเราสั่งซ้ำๆ อยู่ตลอด เช่น ก่อน push ต้อง test ก่อน, ถ้าตกลง plan แล้วให้ create task เป็น issue, ห้าม merge dev เอง ต้องขอ approve ก่อน</p>



<p class="wp-block-paragraph">จนวันหนึ่งผมสังเกตน้องในทีมใช้งาน AI แล้วไม่ได้คุยเรื่องข้อตกลงกันก่อน ผลคือ AI ทำบ้างไม่ทำบ้าง บางรอบจำได้ บางรอบลืม พอปิด session ก็เหมือนต้องเริ่มใหม่ ทั้งที่ขั้นตอนส่วนใหญ่เป็นเรื่องเดิมๆ นั่นแหละครับ</p>



<p class="wp-block-paragraph"><em>หมายเหตุ: บทความนี้เป็นงานเขียนร่วมกันระหว่างผมกับ AI agent โดยอิงจากประสบการณ์ใช้งานจริงของผมเอง ส่วนข้อมูลเชิงอ้างอิงนำมาประกอบจากเอกสารและแหล่งที่มาที่ลิงก์ไว้ท้ายบทความ</em></p>




<span id="more-7871"></span>




<h2 class="wp-block-heading">Working Agreement กับ AI คืออะไร</h2>



<p class="wp-block-paragraph">ถ้าแปลตรงตัว Working Agreement คือข้อตกลงในการทำงานร่วมกัน ในทีมคน เราอาจตกลงกันว่า pull request ต้องมี review, ต้องเขียน test, ห้าม push เข้า main ตรงๆ หรือถ้างานใหญ่ต้องแตก task ก่อนทำ</p>



<p class="wp-block-paragraph">พอมาเป็น AI coding agent แนวคิดเดียวกันก็ใช้ได้ครับ เพียงแต่คู่สนทนาของเราเป็น AI ที่อ่าน instruction แล้วพยายามทำตาม ถ้าเราไม่เขียนกติกาไว้ให้ชัด มันก็จะใช้ default behavior ของตัวเอง หรือเดาจาก prompt รอบนั้นๆ</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Working Agreement กับ AI คือการเปลี่ยนสิ่งที่เราต้องสั่งซ้ำทุกวัน ให้กลายเป็นกติกาประจำโปรเจกต์</p></blockquote>



<p class="wp-block-paragraph">สำหรับผม มันไม่ใช่เรื่องสวยหรูหรือ process หนักๆ แต่เป็น trick เล็กๆ ที่ช่วยลดการหลุด ลดการลืม และทำให้ AI ทำงานใกล้เคียงกับวิธีที่ทีมต้องการมากขึ้น</p>



<h2 class="wp-block-heading">ทำไมสั่งเป็นรอบๆ แล้ว AI ถึงหลุดง่าย</h2>



<p class="wp-block-paragraph">AI เก่งขึ้นมากก็จริง แต่การคุยแบบ chat มีข้อจำกัดตามธรรมชาติอยู่ครับ เช่น context ยาวขึ้นเรื่อยๆ, session ถูกปิด, prompt รอบใหม่ไม่เหมือนรอบเดิม หรือบางคำสั่งถูกกลืนไปกับรายละเอียดอื่น</p>



<p class="wp-block-paragraph">ถ้าเราบอกแค่รอบนี้ว่า “ช่วยแก้ให้แล้ว test ด้วยนะ” AI ก็อาจทำตามในรอบนี้ แต่ไม่ได้แปลว่ารอบหน้ามันจะจำได้ว่า project นี้ต้อง test ก่อน push เสมอ หรือห้าม merge เองทุกครั้ง</p>



<p class="wp-block-paragraph">เอกสารของ <strong>Claude Code</strong> มีแนวคิดเรื่อง memory files เช่น <code>CLAUDE.md</code> ที่ใช้เก็บ project instructions และบอกด้วยว่าสามารถใช้คำสั่ง <code>/init</code> เพื่อสร้างไฟล์เริ่มต้นจาก project ได้ ส่วน <strong>OpenAI Codex</strong> ก็มีแนวทางใช้ <code>AGENTS.md</code> เพื่อให้ coding agent รู้กติกา repo เช่น setup, test และ convention ของโปรเจกต์</p>



<p class="wp-block-paragraph">พอผมเห็นแนวทางนี้แล้ว มันทำให้คิดง่ายขึ้นว่า เราไม่ควรเอากติกาประจำโปรเจกต์ไปซ่อนอยู่ใน chat ชั่วคราว แต่ควรยกมันขึ้นมาเป็นไฟล์หรือ instruction ที่ AI อ่านซ้ำได้ทุกครั้ง</p>



<h2 class="wp-block-heading">เริ่มง่ายสุด: init project แล้วเขียนกติกาไว้</h2>



<p class="wp-block-paragraph">วิธีที่ง่ายที่สุดสำหรับคนใช้ Claude Code คือเริ่มจาก <code>/init</code> เพื่อให้ Claude อ่าน repo แล้วสร้าง <code>CLAUDE.md</code> เป็น project memory ตั้งต้นก่อน จากนั้นค่อยเติม Working Agreement ของทีมลงไป</p>



<pre class="wp-block-code"><code>/init</code></pre>



<p class="wp-block-paragraph">สำหรับเครื่องมืออื่น แนวคิดเหมือนกันครับ เช่น Codex ใช้ <code>AGENTS.md</code>, บางทีมใช้ <code>.cursorrules</code>, บางทีมใช้ project instructions หรือ docs เฉพาะของตัวเอง ชื่อไฟล์อาจต่างกัน แต่หน้าที่คล้ายกัน คือบอก AI ว่า “โปรเจกต์นี้ทำงานกันแบบนี้นะ”</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>อย่าปล่อยให้ rule สำคัญอยู่ในหัวคน หรืออยู่ใน chat รอบเดียว ถ้ามันเป็นกติกาซ้ำๆ ให้เขียนลง project instruction</p></blockquote>



<h2 class="wp-block-heading">ควรเขียน Working Agreement อะไรไว้บ้าง</h2>



<p class="wp-block-paragraph">จากที่ผมใช้มา กติกาที่ควรเขียนไว้ไม่จำเป็นต้องเยอะมาก แต่ควรครอบคลุมจุดที่ถ้า AI หลุดแล้วจะกระทบ workflow หรือทำให้ทีมเสียเวลา</p>



<figure class="wp-block-table"><table><thead><tr><th>หมวด</th><th>ตัวอย่างข้อตกลง</th><th>ทำไมสำคัญ</th></tr></thead><tbody><tr><td>Safety</td><td>ห้าม merge dev/main อัตโนมัติ ต้องขอ approve ก่อน</td><td>กัน side effect ที่กระทบ repo จริง</td></tr><tr><td>Testing</td><td>ก่อน push ต้องรัน test ที่เกี่ยวข้อง และรายงานผลจริง</td><td>ลด bug จาก patch ที่ยังไม่ verify</td></tr><tr><td>Task management</td><td>หลังตกลง plan แล้วให้ create issue/task เสมอ</td><td>กันงานหายและทำให้ทีมตามต่อได้</td></tr><tr><td>Code change</td><td>แก้แบบ minimal diff ไม่ rewrite ทั้งไฟล์ถ้าไม่จำเป็น</td><td>ลด regression และลด review cost</td></tr><tr><td>Communication</td><td>ถ้า scope ไม่ชัด ให้ถามก่อนแก้ส่วนที่เสี่ยง</td><td>กัน AI เดาแล้วแตะผิดจุด</td></tr><tr><td>Verification</td><td>ทุก final response ต้องบอกไฟล์ที่แก้และ command ที่รัน</td><td>ทำให้ตรวจสอบย้อนหลังได้</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">ตัวอย่าง CLAUDE.md / AGENTS.md แบบสั้น</h2>



<p class="wp-block-paragraph">ตัวอย่างนี้เป็นแนวทางที่ผมคิดว่าเริ่มใช้ได้ทันที แล้วค่อยปรับตามทีมครับ</p>



<pre class="wp-block-code"><code># AI Working Agreement

## Goal
ช่วยพัฒนา project นี้แบบปลอดภัย ตรวจสอบได้ และไม่ทำ side effect โดยไม่ขออนุญาต

## Before coding
- ถ้างานเกิน 1 ไฟล์ ให้เสนอ plan สั้นๆ ก่อนแก้
- ถ้า scope ไม่ชัด ให้ถามก่อน ไม่เดาเองในจุดเสี่ยง
- หลังตกลง plan แล้ว ให้สร้างหรืออัปเดต issue/task เสมอ

## Coding rules
- แก้แบบ minimal diff
- ห้าม rewrite ทั้งไฟล์ถ้าไม่จำเป็น
- ทำตาม style เดิมของ repo
- ถ้าเปลี่ยน behavior ต้องเพิ่มหรือแก้ test ที่เกี่ยวข้อง

## Verification
- ก่อนเสนอว่าเสร็จ ต้องรัน targeted test ที่เกี่ยวข้อง
- ถ้าแก้หลายส่วน ให้รัน lint/typecheck ตามที่เหมาะสม
- final response ต้องบอก command ที่รันและผลจริง

## Git safety
- ห้าม merge dev/main/master อัตโนมัติ
- ห้าม push โดยไม่ขอ approve
- ห้ามลบไฟล์หรือ migration สำคัญโดยไม่ถามก่อน

## Output
- สรุป changed files
- สรุป tests ที่รัน
- บอก risk หรือสิ่งที่ยังไม่ได้ verify</code></pre>



<p class="wp-block-paragraph">แค่นี้ก็ช่วยได้เยอะแล้วครับ เพราะมันเปลี่ยนจากการสั่งซ้ำทุกครั้ง เป็นข้อตกลงที่ AI อ่านก่อนเริ่มงาน</p>



<h2 class="wp-block-heading">Working Agreement ไม่ใช่ prompt ยาวๆ แต่คือ guardrail</h2>



<p class="wp-block-paragraph">จุดที่ต้องระวังคืออย่าเขียน instruction ยาวจนกลายเป็น manual ที่ไม่มีใครอ่าน ทั้งคนและ AI ควรเขียนให้สั้น ชัด และ actionable</p>



<ul class="wp-block-list"><li>เขียนเป็น bullet</li><li>แยกหมวดชัดเจน</li><li>ระบุ command ที่ต้องใช้จริง</li><li>แยกสิ่งที่ทำได้เอง กับสิ่งที่ต้องขอ approve</li><li>มี verification rule ทุกงาน</li></ul>



<p class="wp-block-paragraph">ผมชอบคิดว่ามันคือ guardrail ไม่ใช่ prompt สวยๆ หน้าที่ของมันคือกันไม่ให้ AI หลุดออกจากวิธีทำงานที่ทีมตกลงกันไว้</p>



<h2 class="wp-block-heading">แยกกติกาเป็น 3 ระดับ</h2>



<p class="wp-block-paragraph">ถ้าใช้จริงในทีม ผมแนะนำให้แยก rule เป็น 3 ระดับ จะดูแลง่ายกว่าเขียนทุกอย่างกองไว้ที่เดียว</p>



<figure class="wp-block-table"><table><thead><tr><th>ระดับ</th><th>ตัวอย่าง</th><th>ควรอยู่ที่ไหน</th></tr></thead><tbody><tr><td>Team rule</td><td>ห้าม merge เอง, ต้องขอ approve ก่อน push</td><td>global/team instruction</td></tr><tr><td>Project rule</td><td>วิธีรัน test, build, lint, naming convention</td><td>CLAUDE.md / AGENTS.md ใน repo</td></tr><tr><td>Task rule</td><td>งานนี้แก้เฉพาะ payment flow ห้ามแตะ auth</td><td>prompt หรือ issue ของงานนั้น</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">การแยกแบบนี้ช่วยให้ rule ที่ถาวรไม่ปนกับรายละเอียดงานชั่วคราว และช่วยลดโอกาสที่ AI จะเอา instruction เฉพาะ task ไปใช้ผิดบริบทในงานอื่น</p>



<h2 class="wp-block-heading">ตัวอย่าง rule ที่ผมว่าน่าใส่แทบทุก repo</h2>



<p class="wp-block-paragraph">ถ้าจะเริ่มแบบ practical ผมว่าสามารถ copy แนวนี้ไปปรับได้เลยครับ</p>



<ul class="wp-block-list"><li><strong>ต้อง search ก่อนอ่านไฟล์เยอะๆ</strong> เพื่อประหยัด token และลด noise</li><li><strong>ต้องอ่านไฟล์ที่เกี่ยวข้องจริงก่อน patch</strong> ห้ามเดา code จากชื่อไฟล์อย่างเดียว</li><li><strong>ต้องเสนอ plan ก่อนงานใหญ่</strong> โดยเฉพาะงานที่แตะหลาย module</li><li><strong>ต้องทำ minimal diff</strong> ถ้าไม่ได้สั่ง refactor ใหญ่</li><li><strong>ต้องรัน test ก่อนบอกว่าเสร็จ</strong> และรายงาน output จริง</li><li><strong>ห้าม push/merge/delete/migrate โดยไม่ขอ approve</strong></li><li><strong>ถ้า command fail ต้องรายงานตรงๆ</strong> ห้ามบอกว่าสำเร็จจากการเดา</li><li><strong>ถ้าเจอ requirement ใหม่ ให้บันทึกเป็น issue/task</strong> ไม่ปล่อยหายใน chat</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>AI ที่เก่งแต่ไม่มี working agreement จะทำงานเร็ว แต่ทีมอาจต้องเสียเวลาตามเก็บทีหลัง</p></blockquote>



<h2 class="wp-block-heading">ควรทบทวนกติกานี้เมื่อไร</h2>



<p class="wp-block-paragraph">Working Agreement ไม่ควรเขียนครั้งเดียวแล้วจบครับ เพราะวิธีทำงานของทีมเปลี่ยนได้ตลอด เครื่องมือ AI ก็เปลี่ยนเร็วมากเหมือนกัน</p>



<p class="wp-block-paragraph">ผมคิดว่าน่าทบทวนเมื่อมีเหตุการณ์พวกนี้</p>



<ul class="wp-block-list"><li>AI หลุด rule เดิมซ้ำๆ</li><li>ทีมเริ่มใช้ AI agent หลายตัวพร้อมกัน</li><li>มี incident จากการแก้ code โดยไม่ได้ verify</li><li>เปลี่ยน test command หรือ build pipeline</li><li>มีคนใหม่เข้าทีมแล้วใช้ AI ไม่เหมือนคนอื่น</li><li>เริ่มใช้เครื่องมือใหม่ เช่น Claude Code, Codex, Cursor หรือ Gemini CLI</li></ul>



<p class="wp-block-paragraph">พูดง่ายๆ คือถ้าเป็นบทเรียนที่ไม่อยากให้เกิดซ้ำ ให้ย้ายมันเข้า Working Agreement ครับ</p>



<h2 class="wp-block-heading">ข้อควรระวัง: อย่าเชื่อว่าเขียน rule แล้ว AI จะไม่พลาดอีกเลย</h2>



<p class="wp-block-paragraph">การมี Working Agreement ช่วยได้มาก แต่ไม่ได้ทำให้ AI กลายเป็นระบบ deterministic 100% ครับ เรายังต้องมี verification, test, review และ approval gate อยู่ดี</p>



<p class="wp-block-paragraph">โดยเฉพาะ rule ที่มีผลกับ production หรือ source control เช่น merge, push, deploy, migration, delete data อันนี้ไม่ควรปล่อยให้ AI ตัดสินใจเองจาก prompt อย่างเดียว ต้องมี human approval หรือ branch protection ช่วยล็อกอีกชั้น</p>



<p class="wp-block-paragraph">ผมมองว่า Working Agreement เป็นชั้นแรกที่ช่วยให้ AI ทำถูกทางมากขึ้น ส่วน test, CI, review และ approval เป็นชั้นถัดมาที่ช่วยจับความผิดพลาดก่อนกระทบของจริง</p>



<h2 class="wp-block-heading">สรุป</h2>



<p class="wp-block-paragraph">หลังจากใช้ AI มาพักใหญ่ ผมเริ่มรู้สึกว่าเราไม่ควรมอง AI เป็นแค่ chatbot ที่สั่งทีละรอบ แต่ควรมองเป็นผู้ช่วยทำงานที่ต้องมี working agreement เหมือนสมาชิกทีมคนหนึ่ง</p>



<p class="wp-block-paragraph">ถ้ามีเรื่องที่เราต้องสั่งซ้ำๆ เช่น test ก่อน push, create issue หลังตกลง plan, ห้าม merge dev เอง หรือรายงานผล verify ทุกครั้ง ก็ไม่ควรปล่อยให้มันอยู่ในความทรงจำชั่วคราวของ session ครับ เขียนมันลง project instruction ไปเลย</p>



<p class="wp-block-paragraph">เริ่มจากเล็กๆ ก็พอ เช่นใช้ <code>/init</code> ใน Claude Code เพื่อสร้าง <code>CLAUDE.md</code> แล้วเติมกติกาของทีมลงไป หรือถ้าใช้ Codex ก็ทำ <code>AGENTS.md</code> ใน repo ให้ชัด แค่นี้ก็ช่วยลดการหลุด ลดการสั่งซ้ำ และทำให้ AI ทำงานเข้ากับทีมได้ดีขึ้นมากแล้วครับ</p>



<h2 class="wp-block-heading">แหล่งอ้างอิง</h2>



<ul class="wp-block-list"><li><a href="https://code.claude.com/docs/en/memory" target="_blank" rel="noreferrer noopener">Claude Code Docs: How Claude remembers your project</a></li><li><a href="https://developers.openai.com/codex/guides/agents-md" target="_blank" rel="noreferrer noopener">OpenAI Codex: Custom instructions with AGENTS.md</a></li><li><a href="https://agents.md/" target="_blank" rel="noreferrer noopener">AGENTS.md: open format for coding agent instructions</a></li><li><a href="https://www.augmentcode.com/guides/ai-agent-pre-merge-verification" target="_blank" rel="noreferrer noopener">Augment Code: AI Agent Pre-Merge Verification</a></li></ul>

]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/7871/working-agreement-with-ai/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Open Knowledge Format ฟอร์แมตกลางของ Knowledge/Dataset สำหรับ AI จาก Google Cloud</title>
		<link>https://myifew.com/7843/open-knowledge-format-okf-llm-wiki/</link>
					<comments>https://myifew.com/7843/open-knowledge-format-okf-llm-wiki/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Tue, 21 Jul 2026 17:29:47 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[Data Analytics]]></category>
		<category><![CDATA[Google Cloud]]></category>
		<category><![CDATA[LLM Wiki]]></category>
		<category><![CDATA[OKF]]></category>
		<category><![CDATA[Open Knowledge Format]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=7843</guid>

					<description><![CDATA[Open Knowledge Format (OKF) คือความพยายามของ Google Cloud ในการทำให้ LLM Wiki และคลังความรู้แบบ markdown กลายเป็น format กลางที่ AI agent และมนุษย์ใช้ร่วมกันได้]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ช่วงนี้ผมสนใจเรื่อง knowledge base สำหรับ AI agent มากขึ้น อาจจะต้องใช้ในเรื่องส่วนตัว และใช้เอาไปทำงานด้วย โดยเฉพาะปัญหาที่เอามาคิดว่า ถ้าองค์กรมีข้อมูล business condition, schema, document, changelog และเอกสารกระจัดกระจายอยู่เต็มไปหมด เราจะทำให้ AI เข้าใจ context เหล่านี้ได้อย่างไร</p>



<p class="wp-block-paragraph">หนึ่งในแนวคิดที่น่าสนใจคือ <strong>Open Knowledge Format</strong> หรือ OKF จาก Google Cloud ที่เพิ่งเผยแพร่เป็นบทความเมื่อ 13 มิ.ย. ที่ผ่านมานี่เองครับ ซึ่งผมมองว่าแก่นของมันไม่ใช่การสร้าง LLM Wiki ตัวใหม่ แบบของ Karpathy แต่คือการเสนอ <strong>ฟอร์แมตกลางสำหรับชุด </strong><strong> knowledge/context ให้ AI, agent, data catalog และเครื่องมืออื่นๆ อ่านร่วมกันได้</strong></p>



<span id="more-7843"></span>



<p class="wp-block-paragraph"><em>หมายเหตุ: บทความนี้ฟิวส์กับเอเจ้นชมพูช่วยกันเรียบเรียงจากเรื่อง <a href="https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing">Introducing the Open Knowledge Format</a> ของ Google Cloud Blog ที่เล่าถึงหลักการและมุมมองการนำ OKF ไปใช้กับงาน AI / knowledge base</em></p>



<h2 class="wp-block-heading">สรุปสั้นๆ ก่อน: OKF คืออะไร</h2>



<p class="wp-block-paragraph">OKF หรือ <strong>Open Knowledge Format</strong> คือ รูปแบบ specification ที่ Google Cloud เสนอให้ใช้จัดเก็บ “knowledge” ให้อยู่ในรูปที่ทั้งคนและ AI อ่านได้ง่าย โดยใช้หลักการง่ายๆ และวิธีง่ายๆ  คือ:</p>



<ul class="wp-block-list">
<li>เก็บข้อมูลความรู้เป็น Markdown file</li>



<li>กำหนดรูปแบบด้วย YAML frontmatter</li>



<li>จัดการโครงสร้าง Directory structure</li>



<li>จัดทำ Markdown links หาเรื่องที่เกี่ยวข้อง</li>



<li>และมีไฟล์เสริมอย่าง <code>index.md</code> และ <code>log.md เพื่อบันทึกการทำงาน</code></li>
</ul>



<p class="wp-block-paragraph">ถ้าอธิบายแบบบ้านๆ OKF คือการบอกว่า “ถ้าเราจะส่ง knowledge ก้อนหนึ่งให้ AI หรือระบบอื่นเอาไปอ่านต่อ เราควรแพ็กมันเป็นไฟล์แบบไหนดี”</p>



<p class="wp-block-paragraph">และคำตอบของ Google คือ ไม่ต้องสร้างฐานข้อมูลใหม่ ไม่ต้องมี SDK เฉพาะ ไม่ต้องบีบอัดเป็น format แปลกๆ แต่ให้ใช้ markdown + YAML + link + folder แบบที่คนอ่านก็ได้ เครื่องอ่านก็ดี</p>



<p class="wp-block-paragraph">ถ้าสังเกตให้ดี  LLM Wiki ของ Karpathy ก็ใช้หลักการแบบนี้เช่นกัน แต่แค่มันไม่เคยมีใคร (แม้แต่ Andrej Karpathy) ออกมาบอกว่ามันเป็นสิ่งที่ดีหรือควรเป็นมาตรฐานนะ และคราวนี้ Google เลยออกมาบอกแทน ว่า เออ ทำแบบนี้ก็ดีแล้ว ง่ายๆ ได้ใจความ และขอเสนอเพิ่มเติมนิดหน่อยเพื่อให้มันดีขึ้น ประมาณนั้นครับ</p>



<h2 class="wp-block-heading">จุดที่ต้องแยกให้ชัด: OKF กับ LLM Wiki ไม่ใช่สิ่งเดียวกัน</h2>



<p class="wp-block-paragraph">เพื่อความกระจ่างขึ้น ขอชี้แจงเพิ่มเติมอีกนิดว่า OKF กับ LLM Wiki มีหน้าตาคล้ายกันมาก เพราะทั้งคู่ใช้ markdown, มี link, มี index, มี log และให้ AI อ่านความรู้ที่คนหรือ agent รวบรวมไว้ แต่บทบาทของสองอย่างนี้ไม่เหมือนกัน</p>



<p class="wp-block-paragraph">แต่พอคิดดีๆ แล้วมันคนละระดับกัน</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>LLM Wiki คือ แนวทางหรือระบบการสะสมความรู้ระยะยาว</strong><br><strong>OKF คือ ฟอร์แมตกลางสำหรับแลกเปลี่ยน knowledge/context บางชนิด</strong></p>
</blockquote>



<p class="wp-block-paragraph">พูดอีกแบบคือ LLM Wiki เป็นเหมือน “คลังความรู้ที่ AI ช่วยดูแล” ส่วน OKF เป็นเหมือน “กล่องมาตรฐานสำหรับแพ็กความรู้บางส่วนให้ส่งต่อได้” และเอาจริงๆ ส่วนตัวผมคิดว่า Google เน้นให้ใช้ในเชิงการเก็บชุดข้อมูล (dateset) และความสัมพันธ์ด้วยซ้ำ เดี๋ยวลองดูจากตัวอย่างด้านล่างได้</p>



<p class="wp-block-paragraph">ดังนั้น OKF ไม่ได้เกิดมาเพื่อแทน Notion, Obsidian, Wiki หรือ LLM Wiki ทั้งระบบ แต่มันเกิดมาเพื่อแก้ปัญหาว่า dateset หรือ knowledge ที่กระจัดกระจายอยู่ตาม data catalog, schema, runbook, doc, wiki, notebook หรือในหัว senior engineer จะถูกแพ็กให้อยู่ในรูปที่ AI ใช้ได้อย่างไร</p>



<h2 class="wp-block-heading">ที่มาของ OKF: ปัญหาไม่ใช่ model ไม่เก่ง แต่ context กระจัดกระจาย</h2>



<p class="wp-block-paragraph">ในบทความ Google Cloud เขาเปิดด้วยประเด็นที่ผมเห็นด้วยมาก คือ foundation model เก่งขึ้นเรื่อยๆ แต่พอใช้งานจริง โดยเฉพาะงานแบบ agentic system ปัญหามักไม่ใช่ model ทำไม่ได้ แต่เป็น model ไม่มี context ที่ถูกต้องพอ</p>



<p class="wp-block-paragraph">ตัวอย่างเช่น ถ้า AI agent ต้องตอบคำถามว่า “จะคำนวณ weekly active users จาก event stream ยังไง” มันไม่ได้ต้องการแค่ SQL syntax แต่มันต้องรู้หลายอย่างพร้อมกัน:</p>



<ul class="wp-block-list">
<li>table ไหนเก็บ event</li>



<li>field ไหนคือ user id จริง</li>



<li>business definition ของ active user คืออะไร</li>



<li>join กับ table ไหนได้บ้าง</li>



<li>metric นี้เคยเปลี่ยนนิยามหรือไม่</li>



<li>มี runbook หรือ caveat อะไร</li>



<li>ข้อมูลนี้ deprecated หรือยัง</li>
</ul>



<p class="wp-block-paragraph">ข้อมูลพวกนี้ในองค์กรจริงมักกระจายอยู่หลายที่มาก บางส่วนอยู่ใน data catalog บางส่วนอยู่ใน wiki บางส่วนอยู่ใน code comment บางส่วนอยู่ใน dashboard บางส่วนอยู่ใน ticket และบางส่วนอยู่ในหัวคน</p>



<p class="wp-block-paragraph">OKF จึงพยายามเสนอ format กลางให้ knowledge เหล่านี้กลายเป็นก้อนที่ส่งต่อได้ อ่านได้ และเชื่อมโยงกันได้</p>



<h2 class="wp-block-heading">ภาพที่เข้าใจง่าย: producer กับ consumer</h2>



<p class="wp-block-paragraph">ภาพที่เข้าใจง่ายคือ OKF คล้ายกับ NotebookLM, Notion หรือ Obsidian ที่ช่วงหลังเริ่มเชื่อม AI เข้ามาอ่านและสรุปเนื้อหา</p>



<p class="wp-block-paragraph">ประเด็นสำคัญคือโลกเริ่มแยกเป็นสองฝั่ง:</p>



<ul class="wp-block-list">
<li><strong>Producer</strong> คือ คนหรือระบบที่สร้างและเก็บ knowledge</li>



<li><strong>Consumer</strong> คือ AI, agent, app หรือเครื่องมือที่อ่าน knowledge นั้นไปใช้งานต่อ</li>
</ul>



<p class="wp-block-paragraph">ปัญหาคือแต่ละแอพมีวิธีเก็บของตัวเอง พอจะย้ายข้ามแอพหรือให้ agent คนละตัวอ่านร่วมกัน ก็ต้องแปลงไปแปลงมา ดังนั้น OKF จึงเข้ามาเสนอว่าอย่างน้อยเราควรมีฟอร์แมตไฟล์กลางที่ทุกฝ่ายเข้าใจร่วมกันได้</p>



<h2 class="wp-block-heading">OKF หน้าตาเป็นอย่างไร</h2>



<p class="wp-block-paragraph">Google บอกว่า OKF v0.1 แทน knowledge เป็น directory ของ markdown files ที่มี YAML frontmatter กำกับรูปแบบการเก็บ และข้อมูลแต่ละไฟล์คือ concept document หนึ่งเรื่อง</p>



<p class="wp-block-paragraph">ตัวอย่างแบบง่ายๆ อาจเป็นแบบนี้:</p>



<pre class="wp-block-code"><code>knowledge-bundle/
├── index.md
├── log.md
├── datasets/
│   └── ecommerce.md
├── tables/
│   ├── orders.md
│   └── customers.md
└── metrics/
    └── weekly-active-users.md</code></pre>



<p class="wp-block-paragraph">และในไฟล์หนึ่งอาจมี frontmatter ประมาณนี้:</p>



<pre class="wp-block-code"><code>---
type: table
title: orders
description: Orders table for ecommerce transactions
resource: bigquery://project.dataset.orders
tags: &#91;ecommerce, transaction, order]
timestamp: 2026-06-13
---

# orders

ตารางนี้เก็บ order transaction ของลูกค้า

## Important fields

| Field | Meaning |
|---|---|
| order_id | unique order identifier |
| customer_id | reference to customers |
| status | order lifecycle status |

## Relationships

- Join with &#91;customers](../tables/customers.md) by `customer_id`
- Used by &#91;weekly-active-users](../metrics/weekly-active-users.md)</code></pre>



<p class="wp-block-paragraph">สิ่งที่น่าสนใจคือ OKF ไม่ได้บังคับ schema ลึกมาก เขาบังคับพื้นฐานน้อยมาก โดย Google บอกว่าทุก concept ต้องมีอย่างน้อย <code>type</code> ส่วน field อื่นๆ เช่น <code>title</code>, <code>description</code>, <code>resource</code>, <code>tags</code>, <code>timestamp</code> เป็นส่วนที่ช่วยให้ query และ consume ได้ง่ายขึ้น</p>



<p class="wp-block-paragraph">จากตัวอย่าง ถ้าใครเป็นโปรแกรมเมอร์และทำเรื่อง database มาก่อน จะพอมองภาพออกได้ไม่ยาก</p>



<h2 class="wp-block-heading">สามหลักการสำคัญของ OKF</h2>



<h3 class="wp-block-heading">1. Minimally opinionated</h3>



<p class="wp-block-paragraph">OKF ไม่ได้พยายามบอกว่าองค์กรต้องมี type อะไรบ้าง หรือแต่ละไฟล์ต้องมี section อะไรบ้าง มันบอกแค่ขอมูลขั้นต่ำที่ทำให้ระบบอื่นอ่านได้ นี่เป็นจุดสำคัญ เพราะถ้ากำหนดมาตรฐานเป๊ะจนเกินไป เราก็อาจจะใช้ยากมาก</p>



<h3 class="wp-block-heading">2. Producer กับ Consumer แยกจากกัน</h3>



<p class="wp-block-paragraph">ความรู้ก้อนหนึ่งอาจถูกเขียนโดยคน, export จาก metadata catalog, generate จาก LLM, หรือสรุปจากเอกสารเดิม ส่วนคนอ่านอาจเป็น AI agent, search index, visualizer หรือระบบ catalog คนละตัวกัน OKF ทำหน้าที่เป็น contract ระหว่างสองฝั่งนี้</p>



<h3 class="wp-block-heading">3. Format ไม่ใช่ platform</h3>



<p class="wp-block-paragraph">OKF ไม่ผูกกับ Google Cloud, database, model provider หรือ agent framework ใดๆ สิ่งนี้สำคัญมาก เพราะถ้าจะเป็นฟอร์แมตกลางจริง มันต้องอ่านเขียนได้โดยไม่ต้องมีบัญชีเฉพาะหรือ SDK เฉพาะ</p>



<h2 class="wp-block-heading">แล้ว OKF เกี่ยวอะไรกับ LLM Wiki</h2>



<p class="wp-block-paragraph">ผมคิดว่า OKF เกี่ยวกับ LLM Wiki ในฐานะ “หยิบ pattern บางอย่างมา formalize” ไม่ใช่ “เอา LLM Wiki ทั้งระบบมาทำเป็นมาตรฐาน”</p>



<p class="wp-block-paragraph">LLM Wiki ของ Karpathy เน้นแนวคิดว่าเราควรให้ LLM ช่วย build knowledge base แบบสะสมไปเรื่อยๆ จาก source ต่างๆ แล้วเชื่อมโยงเป็น wiki ที่ query ได้ ไม่ต้อง RAG จากศูนย์ทุกครั้ง ผมเคยเขียนเรื่องนี้ไว้ในบทความ <a href="https://myifew.com/7636/llm-wiki-karpathy/" target="_blank" rel="noreferrer noopener">LLM Wiki: คลังความรู้ส่วนตัว ตามแบบฉบับของ Karpathy</a></p>



<p class="wp-block-paragraph">ส่วน OKF เอารูปแบบที่คล้ายกัน เช่น markdown, frontmatter, link, directory, index, log มาใช้เป็นฟอร์แมตกลางสำหรับ knowledge bundle โดยเฉพาะสำหรับเรื่อง metadata, data catalog, dataset context และความรู้ที่ต้องส่งต่อข้าม tool หรือข้าม agent</p>



<figure class="wp-block-table"><table><thead><tr><th></th><th>LLM Wiki</th><th>OKF</th></tr></thead><tbody><tr><td>หลักการ</td><td>แนวทางทำ knowledge base ที่ LLM ช่วยดูแล</td><td>ฟอร์แมตกลางสำหรับแพ็ก knowledge/context</td></tr><tr><td>เป้าหมาย</td><td>สะสม, สรุป, cross-link และ query ความรู้ระยะยาว</td><td>ทำให้ knowledge ส่งต่อและ consume ข้ามระบบได้</td></tr><tr><td>ขอบเขต</td><td>กว้างมาก ใช้กับบทความ, paper, notes, project memory, research ได้</td><td>เหมาะมากกับ metadata, dataset, schema, metric, runbook, catalog</td></tr><tr><td>หน่วยหลัก</td><td>wiki page / concept page / source summary</td><td>concept document ใน bundle</td></tr><tr><td>schema</td><td>ขึ้นกับ repo หรือทีมที่ออกแบบ</td><td>มีข้อมูลพื้นฐานขั้นต่ำ เช่น type และ frontmatter</td></tr><tr><td>คนสร้างและคนใช้</td><td>มักอยู่ใน workflow เดียวกัน เช่น agent ช่วย maintain wiki</td><td>producer และ consumer แยกกันชัดเจนกว่า</td></tr><tr><td>การนำไปใช้</td><td>ทำ second brain, research wiki, project knowledge, internal KB</td><td>ทำ exchange format สำหรับ data catalog, enrichment pipeline, AI agent context</td></tr><tr><td>สรุปสั้น</td><td>ระบบความรู้</td><td>ฟอร์แมตแลกเปลี่ยนความรู้ หรือแลกเปลี่ยน dataset</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">OKF เหมาะกับ knowledge แบบไหน</h2>



<p class="wp-block-paragraph">จากที่อ่าน ผมว่า use case ที่ตรงที่สุดของ OKF คือ knowledge ที่มีลักษณะ “เป็น context ให้ AI ใช้ reasoning ต่อ” โดยเฉพาะ knowledge ที่มาเป็นชุด data เช่น</p>



<ul class="wp-block-list">
<li>dataset description</li>



<li>table schema</li>



<li>field meaning</li>



<li>business metric definition</li>



<li>join path</li>



<li>runbook</li>



<li>API deprecation note</li>



<li>data lineage</li>



<li>usage guide ของ table หรือ report</li>



<li>context สำหรับ agent ที่ต้องทำงานกับข้อมูล</li>
</ul>



<p class="wp-block-paragraph">ตัวอย่างที่ Google ปล่อยมาก็ไปทางนี้ชัดเจน เช่น enrichment agent ที่เดิน BigQuery dataset แล้วร่าง OKF concept document สำหรับ table และ view จากนั้นใช้ LLM อีกส่วน ไปหา documentation มา enrich ด้วย citation, schema และ join path</p>



<p class="wp-block-paragraph">เขายังมี static HTML visualizer ที่เปลี่ยน OKF bundle เป็น graph view ได้ในไฟล์เดียว และมี sample bundle เช่น <a href="https://developers.google.com/analytics/bigquery/web-ecommerce-demo-dataset" target="_blank" rel="noreferrer noopener">GA4 e-commerce</a>, <a href="https://console.cloud.google.com/bigquery?ws=!1m4!1m3!3m2!1sbigquery-public-data!2sstackoverflow" target="_blank" rel="noreferrer noopener">Stack Overflow</a>, และ <a href="https://cloud.google.com/blog/topics/public-datasets/bitcoin-in-bigquery-blockchain-analytics-on-public-data?e=48754805">Bitcoin public datasets</a></p>



<h2 class="wp-block-heading">ตัวอย่างการใช้ในองค์กร</h2>



<p class="wp-block-paragraph">สมมติองค์กรมี data warehouse และมี table ชื่อ <code>orders</code>, <code>customers</code>, <code>events</code> อยู่แล้ว ปัญหาคือคนรู้จริงว่า table ไหนใช้ทำอะไรอาจมีไม่กี่คน และนิยาม business metric อาจอยู่กระจัดกระจาย</p>



<p class="wp-block-paragraph">ถ้าใช้แนว OKF เราอาจ export หรือเขียน knowledge bundle แบบนี้:</p>



<pre class="wp-block-code"><code>company-data-context/
├── index.md
├── log.md
├── datasets/
│   └── ecommerce.md
├── tables/
│   ├── orders.md
│   ├── customers.md
│   └── events.md
├── metrics/
│   ├── gross-merchandise-value.md
│   └── weekly-active-users.md
└── runbooks/
    └── data-quality-incident.md</code></pre>



<p class="wp-block-paragraph">พอ agent ต้องเขียน SQL, ตรวจ data quality, อธิบาย dashboard หรือช่วย analyst หา join path มันก็ไม่ได้อ่านแค่ schema ดิบ แต่ได้อ่าน business context ที่ curated แล้วด้วย</p>



<p class="wp-block-paragraph">นี่คือจุดที่ผมคิดว่า OKF มีประโยชน์มาก เพราะมันไม่ได้พยายามเป็น app ใหม่ แต่มันเป็น format ที่อยู่ตรงกลางระหว่าง data source, documentation, catalog และ AI agent</p>



<h2 class="wp-block-heading">ถ้าจะเอา OKF มาใช้กับ LLM Wiki ควรทำยังไง</h2>



<p class="wp-block-paragraph">ความเห็นผมตอนนี้คือ ไม่ควรเอา OKF ไปครอบ LLM Wiki ทั้งหมด แต่ควรใช้ OKF เป็น subset หรือ format สำหรับ knowledge บางกลุ่ม</p>



<p class="wp-block-paragraph">ตัวอย่างเช่น LLM Wiki ส่วนตัวหรือของทีมอาจมีหลายเรื่องมาก:</p>



<ul class="wp-block-list">
<li>บทความที่อ่าน</li>



<li>paper summary</li>



<li>project notes</li>



<li>decision log</li>



<li>people/company/entity</li>



<li>research synthesis</li>



<li>requirement spec</li>



<li>API/database/UX knowledge</li>
</ul>



<p class="wp-block-paragraph">ส่วนที่ควรทำให้ OKF-compatible อาจเป็นเฉพาะส่วนที่ต้องแลกเปลี่ยนกับระบบอื่น เช่น:</p>



<ul class="wp-block-list">
<li>dataset catalog</li>



<li>API catalog</li>



<li>data dictionary</li>



<li>business metric glossary</li>



<li>requirement knowledge graph</li>



<li>runbook ที่ agent ต้องใช้ทำงาน</li>
</ul>



<p class="wp-block-paragraph">พูดง่ายๆ คือ LLM Wiki เป็นระบบใหญ่ ส่วน OKF เป็น format ที่ช่วยให้บางส่วนของระบบใหญ่ส่งต่อได้ง่ายขึ้น</p>



<h2 class="wp-block-heading">แล้ว Requirement Spec Center ใช้แนวนี้ได้ไหม</h2>



<p class="wp-block-paragraph">ผมว่าตรงนี้น่าสนใจมาก เพราะช่วงนี้ผมกำลังคิดเรื่อง requirement/spec center ที่ให้ AI ช่วย maintain ความรู้ของระบบ เช่น product, change, API, database, table, field, UX/UI, test case, approval และ release</p>



<p class="wp-block-paragraph">สำหรับงานแบบนี้ ผมไม่คิดว่า OKF คือคำตอบทั้งหมด แต่แนวคิด OKF เอามาใช้ได้เยอะมาก โดยเฉพาะการทำให้แต่ละ entity เป็น markdown file ที่มี frontmatter และ link ถึงกัน</p>



<p class="wp-block-paragraph">เช่น change หนึ่งอาจเชื่อมไปหา API, table, field, UX screen, test case และ approval record:</p>



<pre class="wp-block-code"><code>product-change-kb/
├── changes/
│   └── HOME-25Q3-FEA-01.md
├── apis/
│   └── API-HOME-POST-BOOKINGS.md
├── databases/
│   └── HOME/tables/bookings.md
├── ux-ui/
│   └── HOME/booking-form.md
└── tests/
    └── HOME-25Q3-FEA-01-test-case.md</code></pre>



<p class="wp-block-paragraph">สิ่งนี้ไม่ใช่ OKF ตาม Google ตรงๆ ทั้งหมด แต่มันใช้แนวเดียวกัน คือ knowledge เป็น file, มี metadata, มี link, มี graph และ AI อ่านความสัมพันธ์ได้</p>



<p class="wp-block-paragraph">และจากที่ผมเอา LLM Wiki มาดัดแปลงเพื่อลองทำ Requirement Spec Center ก็พบว่าคล้ายกับสิ่งที่ OKF กำหนดมาก แต่ก็ยังพบว่าต้องปรับอะไรอีกหลายอย่าง ถ้าจะใช้งานจริงๆ ซึ่ง OKF พอมาเสริมไอเดียได้</p>



<h2 class="wp-block-heading">ความเห็นส่วนตัวของผม</h2>



<p class="wp-block-paragraph">สิ่งที่ทำให้ OKF น่าสนใจไม่ใช่เพราะมันมีเทคนิคซับซ้อน แต่เพราะมันเรียบง่ายมากจนมีโอกาสถูกใช้จริง</p>



<p class="wp-block-paragraph">โลก AI ตอนนี้มีปัญหาใหญ่คือทุกคนพยายามสร้าง agent แต่ context ที่ agent ต้องใช้กลับกระจัดกระจายและไม่ portable เท่าไร ถ้าแต่ละองค์กรเริ่มมีวิธีแพ็ก context เป็น markdown bundle ที่มี metadata และ link ชัดเจน AI จะทำงานกับ knowledge ได้ดีขึ้นมาก</p>



<p class="wp-block-paragraph">แต่ผมก็ยังคิดว่า OKF v0.1 ยังเป็นจุดเริ่มต้นมากๆ ต้องดูต่อว่าจะมี tool, producer, consumer และ adoption จริงแค่ไหน โดยเฉพาะนอก Google Cloud</p>



<p class="wp-block-paragraph">สำหรับผม takeaway ที่สำคัญที่สุดคือ:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>OKF ไม่ได้มาแทน LLM Wiki แต่มาช่วยให้ knowledge บางส่วนของ LLM Wiki หรือ data catalog ถูกแลกเปลี่ยนและใช้งานโดย AI ได้ง่ายขึ้น</strong></p>
</blockquote>



<p class="wp-block-paragraph">ถ้าจะใช้จริง ผมจะเริ่มจาก use case ที่ชัดก่อน เช่น data dictionary, metric glossary, API catalog หรือ requirement traceability แล้วค่อยดูว่าควร เชื่อมโยงกันอย่างไร และนำไปปลั๊กกับ AI อย่างไรต่อ</p>



<h2 class="wp-block-heading">แหล่งอ้างอิง</h2>



<ul class="wp-block-list">
<li><a href="https://cloud.google.com/blog/products/data-analytics/how-the-open-knowledge-format-can-improve-data-sharing" target="_blank" rel="noreferrer noopener">Google Cloud: How the Open Knowledge Format can improve data sharing</a></li>



<li><a href="https://www.blognone.com/node/150909" target="_blank" rel="noreferrer noopener">Blognone: กูเกิลเปิดตัว Open Knowledge Format (OKF)</a></li>



<li><a href="https://www.facebook.com/peesamac/posts/google-%E0%B9%80%E0%B8%9E%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%9B%E0%B8%A5%E0%B9%88%E0%B8%AD%E0%B8%A2%E0%B8%A1%E0%B8%B2%E0%B8%95%E0%B8%A3%E0%B8%90%E0%B8%B2%E0%B8%99%E0%B9%83%E0%B8%AB%E0%B8%A1%E0%B9%88%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%8A%E0%B8%B7%E0%B9%88%E0%B8%AD-open-knowledge-format-okf-%E0%B9%81%E0%B8%A5%E0%B9%89%E0%B8%A7%E0%B8%9E%E0%B8%AD%E0%B8%9C%E0%B8%A1%E0%B9%84%E0%B8%9B%E0%B8%AD%E0%B9%88%E0%B8%B2%E0%B8%99%E0%B8%88%E0%B8%A3%E0%B8%B4%E0%B8%87/122167457078655322/" target="_blank" rel="noreferrer noopener">โพสต์อธิบาย OKF จาก AI กับ Peesamac</a></li>



<li><a href="https://myifew.com/7636/llm-wiki-karpathy/" target="_blank" rel="noreferrer noopener">บทความเดิมของผมเรื่อง LLM Wiki ของ Andrej Karpathy</a></li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/7843/open-knowledge-format-okf-llm-wiki/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>วิธีใช้ Fable 5 แบบประหยัด Token</title>
		<link>https://myifew.com/7793/how-optimize-token-use-fable5-advisor/</link>
					<comments>https://myifew.com/7793/how-optimize-token-use-fable5-advisor/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Thu, 09 Jul 2026 16:18:24 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[Anthropic]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Fable 5]]></category>
		<category><![CDATA[Token Optimization]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=7793</guid>

					<description><![CDATA[ผมไปเจอโพสต์ของ ClaudeDevs เรื่องการใช้ Fable 5 เป็น advisor ให้ Sonnet 5 ทำงานหลัก แล้วรู้สึกว่านี่คือ pattern ที่ตอบโจทย์ agent workload มาก เพราะเราไม่จำเป็นต้องเอาโมเดลแพงที่สุดไปเผา token กับงานอ่าน/ทำทุกบรรทัด]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">โพสต์ใน X ของ ClaudeDevs ที่พูดถึง pattern การใช้ Fable 5 แบบประหยัด token ผมรู้สึกว่าน่าสนใจมาก เพราะมันแตะปัญหาที่คนทำ AI agent เจอกันจริงๆ คือถ้าเราใช้โมเดลฉลาดสุดทำทุกอย่าง ทั้งคิด อ่านไฟล์ อ่านเว็บ เรียก tool แก้โค้ด รัน test และสรุปผล จะใช้โทเค็นเยอะมาก (ต้นทุนสูงมาก) ทั้งที่หลาย step ไม่ได้ต้องใช้ความฉลาดระดับสูงตลอดเวลา</p>



<p class="wp-block-paragraph">แนวคิดที่ Anthropic ยกมาคือ ให้ Sonnet 5 เป็น executor ทำงานหลักใน loop ปกติ แล้วให้ Fable 5 เป็น advisor ที่ถูกเรียกเฉพาะตอนต้องใช้ judgment สูง เช่น วางแผน ตัดสินใจ architecture แก้ทางเมื่อเริ่มหลุด หรือ review ก่อนจบงาน ผมว่ามันเป็น pattern ที่ practical มาก เพราะมันไม่ได้พยายามลดคุณภาพด้วยการใช้โมเดลเล็กอย่างเดียว แต่ใช้โมเดลฉลาดให้ถูกจังหวะมากกว่า</p>



<span id="more-7793"></span>



<p class="wp-block-paragraph"><em>หมายเหตุ: บทความนี้ฟิวส์กับเอเจ้นชมพูช่วยกันเรียบเรียง โดยอิงจาก<a href="https://x.com/claudedevs/status/2074606058128224365" target="_blank" rel="noreferrer noopener">โพสต์ของ ClaudeDevs บน X</a>, เอกสาร Advisor tool ของ Anthropic และ Claude Cookbook แล้วนำมาตีความเป็นแนวทางใช้งานจริงสำหรับคนทำ AI agent / coding agent</em></p>



<p class="wp-block-paragraph">ต้นทางของเรื่องนี้สรุปไว้สั้นมากว่า หนึ่งใน pattern ที่ Anthropic ใช้กับ Fable 5 คือ “ใช้ Fable 5 เป็น advisor” โดย executor อย่าง Sonnet 5 จะเรียก Fable 5 เพื่อขอคำแนะนำ ดังนั้นการทำงานส่วนใหญ่จะใช้ token ไปกับ executor ที่ Sonnet 5 ทำมากกว่า</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1992" height="872" src="https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern.jpg" alt="Fable 5 advisor pattern จากโพสต์ ClaudeDevs" class="wp-image-7791" srcset="https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern.jpg 1992w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-1024x448.jpg 1024w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-1200x525.jpg 1200w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-768x336.jpg 768w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-1536x672.jpg 1536w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-542x237.jpg 542w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-1084x475.jpg 1084w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-792x347.jpg 792w, https://myifew.com/wp-content/uploads/2026/07/fable5-advisor-pattern-1230x538.jpg 1230w" sizes="(max-width: 1992px) 100vw, 1992px" /><figcaption class="wp-element-caption">ภาพจากโพสต์ ClaudeDevs: Sonnet 5 ทำหน้าที่ executor ใน main loop และเรียก Fable 5 เป็น advisor แบบ on-demand</figcaption></figure>



<h2 class="wp-block-heading">ต้องเข้าใจก่อนว่า agent workload ไม่ต้องใช้โมเดลฉลาดทุกงาน</h2>



<p class="wp-block-paragraph">เวลาพูดถึง AI coding agent หรือ agent ที่ทำงานหลาย step ผมคิดว่าหลายคนมักติดกับดักว่า “ใช้โมเดลฉลาดสุดไปเลยจะได้จบ” ซึ่งจริงในบางงาน แต่ไม่จริงเสมอไป โดยเฉพาะงานยาวๆ ที่มี token จำนวนมากถูกใช้ไปกับงาน mechanical มากกว่า reasoning</p>



<p class="wp-block-paragraph">ในงานหนึ่งๆ มักมี 2 ส่วนปนกัน:</p>



<ul class="wp-block-list">
<li><strong>ส่วนที่ต้องคิดจริง:</strong> แตกโจทย์, ตีความ requirement, เลือก architecture, ประเมิน trade-off, หาทางออกตอนติดปัญหา</li>



<li><strong>ส่วนที่ต้องทำเยอะ:</strong> อ่านไฟล์, อ่านเว็บ, grep โค้ด, ดู log, แก้ไฟล์, รัน test, สรุป output จาก tool</li>
</ul>



<p class="wp-block-paragraph">ถ้าใช้โมเดลระดับ frontier ทำทั้งสองส่วนทั้งหมด ก็โครตจะเปลือง token เลยครับ เพราะถูกใช้ไปกับงานทั่วไปที่ไม่ต้องการ frontier reasoning ทุกบรรทัด เช่น อ่านหน้าเว็บยาวๆ หรือไล่ log หลายพันบรรทัด ตรงนี้เองที่ทำให้ค่าใช้จ่ายสูงโดยไม่จำเป็น</p>



<p class="wp-block-paragraph">ผมขอเปรียบให้เห็นภาพง่ายๆ เหมือนเอา senior engineer ไปนั่งอ่าน log ทุกบรรทัดเอง ซึ่งงานเขาควรเข้ามาตอนวางทิศทาง ตรวจจุดเสี่ยง หรือช่วยตัดสินใจเรื่องที่ถ้าผิดแล้วจะเสียเวลาเยอะ ส่วนงานอ่าน/เก็บข้อมูล/ทำตามขั้นตอนให้คนที่เร็วกว่าและต้นทุนต่ำกว่าช่วยทำได้</p>



<p class="wp-block-paragraph">หรือเทียบในงานก่อสร้าง ก็เหมือนเอาวิศะไปก่ออิฐฉาบปูนแทนคนงานก่อสร้าง แทนที่วิศวะจะออกแบบ วางแผน และคนงานจะเป็นคนทำ</p>



<figure class="wp-block-image size-large"><img alt="" decoding="async" width="1200" height="622" src="https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-1200x622.jpg" alt="" class="wp-image-7797" srcset="https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-1200x622.jpg 1200w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-1024x531.jpg 1024w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-768x398.jpg 768w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-1536x797.jpg 1536w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-2048x1062.jpg 2048w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-542x281.jpg 542w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-1084x562.jpg 1084w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-792x411.jpg 792w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ-1230x638.jpg 1230w, https://myifew.com/wp-content/uploads/2026/07/HMp6DWEa4AE10vQ.jpg 2194w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption">วิธ๊พื้นฐานหน่อย คือ ใช้ Fable 5 ทำหน้าที่วางแผน แล้วมอบหมายงานให้ worker Sonnet 5 ทำ</figcaption></figure>



<h2 class="wp-block-heading">เแนวคิด: Sonnet 5 เป็นคนทำงานหลัก ส่วน Fable 5 เป็นคนให้คำปรึกษา</h2>



<p class="wp-block-paragraph">จาก diagram ในโพสต์ของ ClaudeDevs โครงสร้างคือ Sonnet 5 ทำหน้าที่ executor และรัน main loop ทุก turn ส่วน Fable 5 เป็น advisor ที่ถูกเรียกผ่าน tool call เฉพาะเมื่อจำเป็น พูดง่ายๆ คือ Sonnet ทำงานหนัก แต่ Fable ช่วยคิดตอนที่ต้องคิดอย่างมีเหตุมีผล</p>



<p class="wp-block-paragraph">เอกสาร <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool" target="_blank" rel="noreferrer noopener">Advisor tool ของ Anthropic</a> อธิบายแนวคิดนี้ว่า executor model ที่เร็วกว่า/ต้นทุนต่ำกว่า สามารถ consult advisor model ที่ฉลาดกว่า mid-generation ได้ โดย advisor จะเห็น conversation transcript ทั้งหมด แล้วส่งคำแนะนำกลับมาให้ executor ทำงานต่อ</p>



<p class="wp-block-paragraph">จุดที่ผมว่าสำคัญคือ advisor ไม่ได้มาแทน executor แต่เป็นเหมือน reviewer หรือ architect ที่ถูกเรียกในจังหวะที่ควรเรียก ทำให้เรายังได้คุณภาพจากโมเดลใหญ่ในการตัดสินใจสำคัญๆ แต่ไม่ต้องจ่ายราคาโมเดลใหญ่กับทุกการทำงานง่ายๆ หลายงาน</p>



<h2 class="wp-block-heading">แล้ว Advisor tool ทำงานยังไง?</h2>



<p class="wp-block-paragraph">เมื่อเราเพิ่ม advisor tool เข้าไปใน <code>tools</code> array แล้ว ตัว executor จะตัดสินใจเองว่าจะเรียก advisor เมื่อไรเหมือน tool อื่นๆ แต่การ call นี้เกิดฝั่ง server ภายใน request เดียว ไม่ใช่ client ต้อง orchestration เองหลายรอบ</p>



<ul class="wp-block-list">
<li>executor สร้าง <code>server_tool_use</code> ชื่อ <code>advisor</code></li>



<li>server ส่ง transcript ทั้งหมดให้ advisor model</li>



<li>advisor ส่งคำแนะนำกลับมาเป็น <code>advisor_tool_result</code></li>



<li>executor ใช้คำแนะนำนี้ทำงานต่อจนจบ</li>
</ul>



<p class="wp-block-paragraph">ตัวอย่างแบบย่อจากเอกสาร Anthropic:</p>



<pre class="wp-block-code"><code>client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=4096,
    betas=&#91;"advisor-tool-2026-03-01"],
    tools=&#91;
        {
            "type": "advisor_20260301",
            "name": "advisor",
            "model": "claude-opus-4-8",
        }
    ],
    messages=&#91;
        {
            "role": "user",
            "content": "Build a concurrent worker pool in Go with graceful shutdown.",
        }
    ],
)</code></pre>



<p class="wp-block-paragraph">ถ้านำ concept นี้มาเทียบกับโพสต์ Fable 5 ภาพในหัวจะประมาณนี้:</p>



<pre class="wp-block-code"><code>tools=&#91;
    {
        "type": "advisor_20260301",
        "name": "advisor",
        "model": "claude-fable-5",
        "max_tokens": 2048,
        "max_uses": 2,
    }
]</code></pre>



<p class="wp-block-paragraph">ตรงนี้ <code>max_tokens</code> กับ <code>max_uses</code> สำคัญมาก เพราะถ้าเปิด advisor ไว้แบบไม่จำกัด มันอาจกลายเป็น “เรียกโมเดลแพงบ่อยขึ้น” แทนที่จะช่วยประหยัด token</p>



<figure class="wp-block-image size-large"><img alt="" decoding="async" width="1200" height="1072" src="https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-1200x1072.jpg" alt="" class="wp-image-7796" srcset="https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-1200x1072.jpg 1200w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-1024x915.jpg 1024w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-768x686.jpg 768w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-542x484.jpg 542w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-1084x968.jpg 1084w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-792x707.jpg 792w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q-1230x1099.jpg 1230w, https://myifew.com/wp-content/uploads/2026/07/HMp4vKMakAAEa3Q.jpg 1274w" sizes="(max-width: 1200px) 100vw, 1200px" /><figcaption class="wp-element-caption">การใช้ Sonnet 5 เป็น Excutor แล้วมี Fable 5 เป็น advisor ทำคะแนนได้ 92% จากการใช้ Fable 5 อย่างเดียว แต่จะใช้เงินแค่ 63% เมื่อเทียบกับใช้ Fable 5 อย่างเดียวเช่นกัน</figcaption></figure>



<h2 class="wp-block-heading">วิธีใช้ให้ประหยัด token จริง</h2>



<h3 class="wp-block-heading">1. ให้ executor อ่านบริบทก่อน แล้วค่อยเรียก advisor</h3>



<p class="wp-block-paragraph">ผมคิดว่าเราไม่ควรเรียก Fable 5 ตั้งแต่ครั้งแรกที่ยังไม่รู้อะไรเลย เพราะคำแนะนำจะกว้างเกินไป วิธีที่ดีกว่าคือให้ Sonnet 5 อ่านทำความเข้าใจบริบทแรกของเราก่อน เช่น requirement, โครง repo, error log หรือไฟล์หลัก แล้วค่อยเรียก Fable 5 เพื่อช่วยวางแผน</p>



<h3 class="wp-block-heading">2. ใช้ advisor ในจุดที่ตัดสินใจผิดแล้วแพง</h3>



<p class="wp-block-paragraph">จุดที่คุ้มจะเรียก advisor คือจุดที่ถ้าคิดผิดแล้วต้องแก้งานเยอะ เช่น:</p>



<ul class="wp-block-list">
<li>เลือก architecture หรือ migration strategy</li>



<li>ตีความ requirement ที่กำกวม</li>



<li>เจอ test fail ซ้ำๆ แล้วแนวทางเดิมแก้ไม่ได้ หรือไม่ครอบคลุม</li>



<li>ก่อนจบงาน เพื่อ review ว่าหลุด security, edge case หรือ test อะไรไหม</li>
</ul>



<h3 class="wp-block-heading">3. จำกัดจำนวนครั้งด้วย <code>max_uses</code></h3>



<p class="wp-block-paragraph">ถ้างานหนึ่งควรเรียก advisor แค่ 1–2 ครั้ง ก็ตั้ง <code>max_uses</code> ไว้เลย จะช่วยไม่ให้ executor เรียก advisor ถี่เกินไปใน request เดียว</p>



<h3 class="wp-block-heading">4. จำกัดคำตอบของ advisor ด้วย <code>max_tokens</code></h3>



<p class="wp-block-paragraph">เอกสาร Anthropic แนะนำจุดเริ่มต้นที่ <code>max_tokens: 2048</code> สำหรับ advisor output cap โดยระบุว่าในการทดสอบของเขา การตั้ง cap นี้ลด output ของ advisor ได้มากเมื่อเทียบกับการไม่ตั้ง และยังไม่เห็นว่าคุณภาพลดลงเท่าไรอย่างชัดเจน (quality degradation) แต่ประโยคสำคัญคือ เราต้องตรวจสอบกับ workload ของตัวเองเสมอนะ เพื่อป้องกันความผิดพลาด เนื่องจากจำกัด token (ผมเคยเจอบ่อยว่า output งานออกมาได้ไม่ถูกต้อง หรือโค้ดไม่ครบ)</p>



<h3 class="wp-block-heading">5. เปิด caching เฉพาะงานที่เรียก advisor หลายครั้ง</h3>



<p class="wp-block-paragraph">ใน docs ระบุว่า advisor-side caching จะเริ่มคุ้มเมื่อคาดว่าจะมี advisor call ประมาณ 3 ครั้งขึ้นไปใน conversation เดียว ถ้างานสั้นๆ เรียกครั้งเดียวหรือสองครั้ง การเปิด cache อาจไม่คุ้ม เพราะ cache write ก็มีต้นทุนของมันเอง</p>



<h2 class="wp-block-heading">อีกแนวคิดที่คล้ายกัน คือ Plan big, execute small</h2>



<p class="wp-block-paragraph">ใน <a href="https://github.com/anthropics/claude-cookbooks/blob/main/managed_agents/CMA_plan_big_execute_small.ipynb" target="_blank" rel="noreferrer noopener">Claude Cookbook เรื่อง Coordinator pattern</a> Anthropic อธิบายอีก pattern ที่คล้ายกันมาก คือให้โมเดลใหญ่เป็น coordinator สำหรับวางแผนและสังเคราะห์คำตอบ ส่วน worker model ที่ถูกกว่าเป็นคนอ่านเว็บหรือดึงข้อมูลจำนวนมากใน context ของตัวเอง</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="2560" height="1309" src="https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-scaled.png" alt="Coordinator pattern: Fable 5 coordinator และ Sonnet 5 workers" class="wp-image-7792" srcset="https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-scaled.png 2560w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-1024x524.png 1024w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-1200x614.png 1200w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-768x393.png 768w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-1536x785.png 1536w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-2048x1047.png 2048w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-542x277.png 542w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-1084x554.png 1084w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-792x405.png 792w, https://myifew.com/wp-content/uploads/2026/07/anthropic-coordinator-pattern-1230x629.png 1230w" sizes="auto, (max-width: 2560px) 100vw, 2560px" /><figcaption class="wp-element-caption">ภาพจาก Anthropic Claude Cookbook: Fable 5 เป็น coordinator วางแผนและสังเคราะห์ ส่วน Sonnet 5 workers อ่านเว็บและส่ง distilled findings กลับมา</figcaption></figure>



<p class="wp-block-paragraph">ในการทดลองที่ Anthropic ยกตัวอย่าง ทีมแบบ split ราคาจะถูกลงกว่าประมาณ 2.5x และทำงานเร็วขึ้นประมาณ 3x โดยจำนวน input token 84–98% ถูกคิดที่ worker ที่ใช้ราคา Token ถูกกว่า </p>



<p class="wp-block-paragraph">แต่ๆๆ เขาบอกว่า นี่แค่ตัวอย่างนะ อย่าเอาตัวเลขนี้ไปใช้อ้างอิงว่าทุกงานจะประหยัดเท่านี้ เพราะมันขึ้นกับ workload แต่ละงาน </p>



<p class="wp-block-paragraph">แต่โครงสร้างวิธีการทำแบบนี้ก็ชัดเจนดี คือ งานอ่านเยอะๆ ให้ worker ทำ ส่วนโมเดลใหญ่แตะเฉพาะ planning/synthesis</p>



<h2 class="wp-block-heading">จากที่อ่าน ถ้าผมจะใช้จริง จะวาง flow แบบนี้</h2>



<ol class="wp-block-list">
<li><strong>เริ่มด้วย Sonnet 5:</strong> ให้ทำงานหลัก อ่านไฟล์ เรียก tool แก้โค้ด รัน test</li>



<li><strong>Orientation:</strong> เก็บบริบทขั้นต่ำก่อน เช่น requirement, repo structure, error หลัก</li>



<li><strong>Advisor call แรก:</strong> เรียก Fable 5 ให้ช่วยวางแผนและชี้ risk</li>



<li><strong>Execute:</strong> ให้ Sonnet 5 ลงมือทำตาม plan โดยไม่เรียก advisor ทุกจุด</li>



<li><strong>Replan เมื่อจำเป็น:</strong> ถ้า error วนหรือทางเดิมไม่ไปต่อ ค่อยเรียก Fable 5 อีกครั้ง</li>



<li><strong>Review ก่อนจบ:</strong> เรียก advisor ช่วยดูว่าตกหล่น test, security, edge case หรือ assumption อะไรไหม</li>



<li><strong>Finish:</strong> ให้ executor สรุปผลพร้อม evidence จาก test/diff/tool output</li>
</ol>



<p class="wp-block-paragraph">ต้องบอกว่า ผมยังแค่คิดนะ เพราะยังไม่มีโจทย์ซับซ้อนพอที่จะใช้ Fable ทำงาน และยังไม่อยากลองรันเทียบ เพราะต้องทำหลายครั้ง อาจจะเสีย Token เยอะ ฮาา, ไว้รอมีผลการทดสอบจากผู้กล้า หรือได้ลองจริงๆ แล้วจะเอามาเล่าให้ฟังอีกที หรือหากใครลองแล้วก็มาแชร์กันหน่อยครับ</p>



<h2 class="wp-block-heading">ข้อควรระวัง</h2>



<ul class="wp-block-list">
<li><strong>งานเล็กมากอาจไม่คุ้ม:</strong> ถ้าเป็น single-turn Q&amp;A หรือแก้ typo เล็กๆ advisor อาจเพิ่ม overhead มากกว่าประโยชน์</li>



<li><strong>ต้องวัดกับ workload จริง:</strong> ตัวเลขประหยัด token ไม่ใช่ค่าคงที่ ขึ้นกับชนิดงานและความยาวของ context</li>



<li><strong>อย่าแตกงานย่อยจนเกินพอดี:</strong> ใน cookbook เองก็เตือนว่าการแตก brief แคบเกินไปมี floor cost ของ worker thread (ขออธิบายเพิ่มเติมครับ: มันคือต้นทุนขั้นต่ำต่อ worker thread หมายถึง ทุกครั้งที่สร้าง worker หรือ sub-agent ใหม่ มันมี “ต้นทุนตั้งต้น” เสมอ ไม่ว่าจะงานเล็กหรือใหญ่ เช่น เปิด session ,รับ prompt, อ่าน context, เรียก Skill)</li>



<li><strong>advisor แก้โจทย์เท่าที่ได้รับจาก context:</strong> ถ้า executor ยังไม่ได้อ่านของสำคัญก่อนเรียก advisor คำแนะนำก็อาจกว้างหรือผิดทิศได้ เช่นเราใส่บริบทไม่ครบหรือไม่เข้าใจให้ advisor เองแต่แรก (นั่นคือเหตุผลของ Anthopic ว่าทำไมไม่ควรเอาตัวฉลาดมารับงานก่อน)</li>



<li><strong>ต้อง track cost แยก:</strong> usage ของ advisor อยู่ใน <code>usage.iterations</code> เป็น <code>advisor_message</code> เพราะถูก bill คนละ rate กับ executor</li>
</ul>



<p class="wp-block-paragraph">ผมขอขยายความข้อสุดท้ายนิดนึงคือ มันไม่สามารถคิด token cost แบบ usage.input_tokens + usage.output_tokens ทั่วไปนะ เพราะอาจจะเข้าใจผิดคิดว่าแพงทั้งหมด แต่ควรคิดจาก </p>



<p class="wp-block-paragraph">total_cost = executor_tokens × ราคา Sonnet 5 + advisor_tokens × ราคา Fable 5</p>



<p class="wp-block-paragraph">ดังนั้น ใน Anthropic API ที่ส่งค่า usage.iterations กลับมา เราต้องคิดราคาแยกตาม type ด้วย ว่าอะไรคือ executor (message) และอะไรคือ advisor (advisor_message)</p>



<h2 class="wp-block-heading">สรุป</h2>



<p class="wp-block-paragraph">ผมคิดว่า “Fable 5 เป็น advisor” เป็นแนวทางที่น่าลองมากสำหรับ agent workflow ที่เราจะให้มันทำงานยากๆ หรือต้องใช้การตัดสินใจอย่างมีเหตุมีผลสูงมาก ส่วนงานง่ายๆ อย่างการ อ่าน/ทำ/ตรวจซ้ำ ก็ให้ใช้โมเดลรองๆ ลงมา ทำก็คิดว่าเพียงพอแล้ว (อย่างน้องชมพูที่ผมให้แชต ก็ใช้แค่ ChatGPT mini แต่หาข้อมูลและเขียนบทความ ผมจะใช้ ChatGPT ปกติ</p>



<h2 class="wp-block-heading">อ้างอิง</h2>



<ul class="wp-block-list">
<li><a href="https://x.com/claudedevs/status/2074606058128224365" target="_blank" rel="noreferrer noopener">ClaudeDevs on X — Fable 5 as advisor pattern</a></li>



<li><a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/advisor-tool" target="_blank" rel="noreferrer noopener">Anthropic Claude Platform Docs — Advisor tool</a></li>



<li><a href="https://github.com/anthropics/claude-cookbooks/blob/main/managed_agents/CMA_plan_big_execute_small.ipynb" target="_blank" rel="noreferrer noopener">Anthropic Claude Cookbooks — Coordinator pattern: big models for planning, small models for execution</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/7793/how-optimize-token-use-fable5-advisor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Harness Design: ทำ AI Agent ให้ทำงานยาวๆ ได้โดยไม่ต้องมีคนเฝ้าตลอดเวลา</title>
		<link>https://myifew.com/7778/harness-design-by-anthopic/</link>
					<comments>https://myifew.com/7778/harness-design-by-anthopic/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Wed, 08 Jul 2026 17:16:55 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI Agent]]></category>
		<category><![CDATA[Anthropic]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Harness Design]]></category>
		<category><![CDATA[Long-running Agents]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=7778</guid>

					<description><![CDATA[ผมไปเจอบทความของ Anthropic เรื่อง harness design สำหรับ long-running application development ซึ่งตรงกับสิ่งที่กำลังทดลองอยู่ เลยเอามาเล่าในมุมที่นำไปพัฒนาต่อได้จริง]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">ไปเจอบทความของ Anthropic เรื่อง <a href="https://www.anthropic.com/engineering/harness-design-long-running-apps" target="_blank" rel="noopener">Harness design for long-running application development</a> แล้วรู้สึกว่าน่าสนใจมาก เพราะเขาพูดถึงการออกแบบ <strong>harness</strong> สำหรับให้ AI Agent ทำงานยาวๆ จนได้ของออกมา โดยไม่ต้องมีมนุษย์คอยเข้ามาเกี่ยวข้องตลอดเวลา</p>



<p class="wp-block-paragraph">เรื่องนี้ตรงกับสิ่งที่ผมเองก็กำลังทดลองและพัฒนาอยู่เหมือนกัน โจทย์คือจะทำยังไงให้ Agent ไม่ได้เป็นแค่ผู้ช่วยตอบคำถาม หรือช่วยเขียนโค้ดเป็นรอบๆ แต่สามารถรับโจทย์ยาวๆ วางแผน ทำงาน ตรวจงาน ส่งต่องาน และค่อยๆ ปรับปรุงผลลัพธ์ได้เองมากขึ้น (ยุคนี้เรียกว่า Loop Engineering)</p>



<p class="wp-block-paragraph">ผมเลยอยากเอาบทความนี้มาเล่าในมุมที่นำไปต่อยอดได้จริง โดยเฉพาะสำหรับคนที่กำลังสนใจเรื่อง AI Agent, coding agent, workflow automation หรือระบบที่ให้ AI ทำงานต่อเนื่องแทนการ prompt ทีละครั้ง</p>



<span id="more-7778"></span>



<p class="wp-block-paragraph"><em>หมายเหตุ: บทความนี้ฟิวส์กับเอเจ้นชมพู ได้เรียบเรียงและต่อยอดจากบทความต้นฉบับของ Anthropic Engineering เรื่อง <a href="https://www.anthropic.com/engineering/harness-design-long-running-apps" target="_blank" rel="noopener">Harness design for long-running application development</a> เขียนโดย Prithvi Rajasekaran</em></p>



<h2 class="wp-block-heading">Harness คืออะไรในบริบทของ AI Agent</h2>



<p class="wp-block-paragraph">ถ้าแปลแบบง่ายๆ harness คือชุดเครื่องมือที่หุ้ม AI Agent อีกทีเพื่อให้มันทำงานได้เป็นระบบ ไม่ใช่แค่โยน prompt ให้ model แล้วหวังว่ามันจะทำทุกอย่างถูกต้องเอง</p>



<p class="wp-block-paragraph">ซึ่งในโลกของการเขียนโปรแกรม เรามักคุ้นกับ test harness หรือ automation harness อยู่แล้ว คือชุดเครื่องมือที่ช่วยรัน ทดสอบ ตรวจผล และคุมการทำงานบางอย่างให้เป็นระบบ พอมาอยู่ในโลกของ AI Agent แนวคิดก็คล้ายกัน แต่ขยายใหญ่กว่าเดิม</p>



<p class="wp-block-paragraph">Harness ของ AI Agent อาจรวมหลายอย่าง เช่น</p>



<ul class="wp-block-list">
<li>วิธีแตกงานใหญ่ให้เล็กลง</li>



<li>วิธีให้ agent วางแผนก่อนลงมือทำ</li>



<li>วิธีเก็บ state ของงานไว้นอก context window</li>



<li>วิธีส่งต่องานระหว่าง agent หรือ session</li>



<li>วิธีตรวจคุณภาพของงานที่ทำเสร็จ</li>



<li>วิธีบังคับให้ agent แก้ไขงานตาม feedback</li>



<li>วิธีหยุดงานเมื่อถึงเงื่อนไขบางอย่าง</li>
</ul>



<p class="wp-block-paragraph">พูดอีกแบบคือ ถ้า model คือสมอง harness ก็คือระบบการทำงานรอบสมองนั้น</p>



<p class="wp-block-paragraph">และผมคิดว่านี่แหละคือประเด็นสำคัญมาก เพราะช่วงแรกๆ เรามักคิดกันว่า AI จะเก่งขึ้นเพราะ model ฉลาดขึ้นอย่างเดียว แต่พอเริ่มใช้งานจริงจะเห็นว่า model ที่เก่งมากๆ ถ้าไม่มีระบบคุมงานที่ดี ก็ยังหลุด ยังลืม ยังทำงานซ้ำ ยังประเมินตัวเองผิด และยังจบงานแบบไม่ครบได้เหมือนกัน</p>



<p class="wp-block-paragraph">จริงๆ ลองทดสอบได้ง่ายๆ ครับ ถ้าเอา prompt ใส่ใน Claude Web ตั้งโมเดลเป็น Opus 4.8 กับใส่ในระบบแชตแจกฟรีเช่น Langflow โดยต่อโมเดล Opus 4.8 ผ่าน Claude API, คำตอบที่ได้ออกมาจะไม่เหมือนกัน แม้ว่าใช้สมอง Opus 4.8 เหมือนกัน (เรื่องนี้ 9arm ก็มีเล่าให้ฟังตอนทำ 9arm AI Passport)</p>



<h2 class="wp-block-heading">ปัญหาของ Agent ที่ให้ทำงานยาวๆ</h2>



<p class="wp-block-paragraph">บทความนี้เริ่มจากโจทย์ที่ Anthropic ทดลองอยู่ 2 เรื่อง คือทำให้ Claude สร้าง frontend design ที่มีคุณภาพสูงขึ้น และทำให้ Claude สร้าง application เต็มรูปแบบได้โดยไม่ต้องมีมนุษย์เข้าไปช่วยระหว่างทาง</p>



<p class="wp-block-paragraph">สองงานนี้ดูเหมือนคนละเรื่อง งานแรกเป็นเรื่องรสนิยมและความสวยงาม งานหลังเป็นเรื่องซอฟต์แวร์ที่ใช้งานได้จริง แต่ทั้งคู่มีปัญหาร่วมกันอย่างหนึ่ง คือถ้าให้ AI ทำงานยาวๆ แบบ naive เกินไป คุณภาพจะเริ่มแกว่ง</p>



<h3 class="wp-block-heading">1. Context เต็มแล้วเริ่มหลุด</h3>



<p class="wp-block-paragraph">งานที่ยาวหลายชั่วโมงจะมีข้อมูลสะสมเยอะมาก ตั้งแต่ requirement, decision, bug, code, test result, feedback ไปจนถึงสิ่งที่ลองแล้วไม่เวิร์ก ถ้าทุกอย่างถูกกองอยู่ใน context window เดียว สุดท้าย agent จะเริ่มจับประเด็นไม่ครบ</p>



<p class="wp-block-paragraph">Anthropic ยังพูดถึงอาการที่น่าสนใจชื่อว่า <strong>context anxiety</strong> คือ model เริ่มเหมือนรู้ตัวว่าบริบทใกล้เต็ม แล้วพยายามรีบ wrap up งานก่อนเวลา ทั้งที่งานจริงยังไม่เสร็จดี</p>



<p class="wp-block-paragraph">ปัญหานี้ผมว่าคนที่ใช้ coding agent น่าจะเจอบ่อย บางทีมันทำงานดีมาตลอด แต่พอท้ายๆ เริ่มสรุปเองว่าทุกอย่างเรียบร้อย ทั้งที่ test ยังไม่ครบ หรือยังมี TODO ค้างอยู่</p>



<h3 class="wp-block-heading">2. Agent มักตรวจงานตัวเองใจดีเกินไป</h3>



<p class="wp-block-paragraph">อีกปัญหาหนึ่งที่ตรงมากคือ self-evaluation</p>



<p class="wp-block-paragraph">เวลาถาม agent ว่างานที่ตัวเองทำดีไหม มันมักตอบว่าดี ใช้ได้ พร้อมแล้ว หรือใกล้เสร็จแล้ว ทั้งที่ถ้ามนุษย์ลองใช้งานจริงอาจเห็นเลยว่ามีหลายจุดยังไม่ดีพอ</p>



<p class="wp-block-paragraph">งาน coding ยังพอมี test ช่วยจับได้บ้าง แต่งานอย่าง design, UX, product completeness หรือบทความนี่ตรวจยากกว่าเยอะ เพราะไม่มีคำตอบแบบ pass/fail ชัดเจน</p>



<p class="wp-block-paragraph">Anthropic เลยใช้แนวทางแยก agent ที่สร้างงาน ออกจาก agent ที่ตรวจงาน ซึ่งผมคิดว่าเป็น pattern ที่ควรใช้จริงในระบบ agent ที่ต้องการคุณภาพ</p>



<h2 class="wp-block-heading">แนวคิดหลัก: Planner, Generator, Evaluator</h2>



<p class="wp-block-paragraph">โครงสร้างที่บทความนี้พูดถึงคือการแบ่ง agent ออกเป็น 3 บทบาทหลัก</p>



<figure class="wp-block-table"><table><thead><tr><th>บทบาท</th><th>หน้าที่</th></tr></thead><tbody><tr><td><strong>Planner</strong></td><td>รับโจทย์สั้นๆ แล้วขยายเป็น product spec, plan, task list หรือแนวทางการทำงาน</td></tr><tr><td><strong>Generator</strong></td><td>ลงมือสร้าง feature, เขียนโค้ด หรือผลิต output ตามแผน</td></tr><tr><td><strong>Evaluator</strong></td><td>ตรวจงาน ทดลองใช้งาน ให้ feedback และบอกว่างานผ่านเกณฑ์หรือยัง</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ถ้ามองในเชิงทีมซอฟต์แวร์ มันก็คล้ายๆ การแยก role ในทีมจริง</p>



<ul class="wp-block-list">
<li>Planner ทำหน้าที่คล้าย product/tech lead</li>



<li>Generator ทำหน้าที่คล้าย developer</li>



<li>Evaluator ทำหน้าที่คล้าย QA, reviewer และ product tester</li>
</ul>



<p class="wp-block-paragraph">ข้อดีคือเราไม่ต้องหวังให้ agent ตัวเดียวทำทุกอย่างเก่งหมด เพราะในความเป็นจริง มนุษย์เองก็ยังไม่ค่อยทำงานแบบนั้น เรามีคนคิด คนทำ คนตรวจ และ feedback loop ที่ทำให้งานดีขึ้น</p>



<h2 class="wp-block-heading">ทำเรื่อง subjective ให้ตรวจได้</h2>



<p class="wp-block-paragraph">ส่วนที่ผมชอบมากในบทความคือการทดลองกับ frontend design เพราะ design เป็นเรื่องที่วัดยาก</p>



<p class="wp-block-paragraph">Anthropic พบว่า Claude มักสร้าง UI ที่ technically ใช้งานได้ แต่ดู generic มาก เช่น layout ปลอดภัย card เยอะๆ gradient เดิมๆ หรือหน้าตาที่ดูเหมือน AI สร้างแบบไม่มี character</p>



<p class="wp-block-paragraph">เขาเลยสร้าง evaluator ที่มี criteria ชัดเจน เช่น</p>



<ul class="wp-block-list">
<li><strong>Design quality</strong> งานดูเป็นภาพรวมเดียวกันไหม</li>



<li><strong>Originality</strong> มีความคิดสร้างสรรค์จริงไหม หรือเป็น template</li>



<li><strong>Craft</strong> typography, spacing, contrast, color harmony ดีไหม</li>



<li><strong>Functionality</strong> ผู้ใช้เข้าใจและใช้งานได้จริงไหม</li>
</ul>



<p class="wp-block-paragraph">จุดสำคัญคือเขาไม่ได้ถามกว้างๆ ว่า “สวยไหม” แต่แตกคำว่าสวยให้กลายเป็น rubric ที่ตรวจได้</p>



<p class="wp-block-paragraph">ผมว่านี่เอาไปใช้กับงานอื่นได้เยอะมาก เช่นบทความดีไหม requirement ชัดไหม dashboard ใช้งานง่ายไหม หรือแม้แต่ระบบ automation ที่ agent สร้างขึ้นมามี failure mode อะไรบ้าง ถ้าเราไม่มี rubric evaluator ก็จะตอบกว้างๆ และหลุดง่าย</p>



<h2 class="wp-block-heading">Context Reset ไม่ใช่แค่ล้างแชท แต่ต้องมี Handoff</h2>



<p class="wp-block-paragraph">อีกเรื่องที่สำคัญมากคือ structured handoff</p>



<p class="wp-block-paragraph">ถ้า agent ทำงานยาวจนต้องเริ่ม session ใหม่ หรือให้ agent ตัวใหม่มารับช่วงต่อ เราไม่ควรส่งต่อด้วย chat history ยาวๆ อย่างเดียว แต่ควรมี artifact ที่สรุปสถานะงานอย่างเป็นระบบ</p>



<p class="wp-block-paragraph">handoff ที่ดีควรบอกอย่างน้อยว่า</p>



<ul class="wp-block-list">
<li>เป้าหมายของงานคืออะไร</li>



<li>ทำอะไรเสร็จแล้ว</li>



<li>ไฟล์ไหนถูกแก้</li>



<li>คำสั่งไหนรันแล้ว</li>



<li>ผลลัพธ์จริงคืออะไร</li>



<li>ยังเหลือปัญหาอะไร</li>



<li>next step คืออะไร</li>
</ul>



<p class="wp-block-paragraph">ถ้าเป็นงาน coding ก็ควรมี test result, git diff, known issue และคำอธิบาย decision ที่สำคัญด้วย</p>



<p class="wp-block-paragraph">ในมุมผม นี่คือจุดที่ทำให้ agent system เริ่มจริงจังขึ้นมาก เพราะเราเริ่มย้าย source of truth จาก “บทสนทนา” ไปอยู่ใน “artifact” ที่อ่านซ้ำได้ ตรวจได้ และส่งต่อได้</p>



<h2 class="wp-block-heading">Sprint Contract: ก่อนทำ ต้องรู้ก่อนว่า Done คืออะไร</h2>



<p class="wp-block-paragraph">อีกไอเดียที่น่าสนใจคือก่อนแต่ละ sprint ให้ Generator และ Evaluator ตกลงกันก่อนว่า sprint นี้จะทำอะไร และจะตรวจยังไงถึงเรียกว่าสำเร็จ</p>



<p class="wp-block-paragraph">ผมมองว่านี่คือ acceptance criteria สำหรับ agent โดยเฉพาะ</p>



<p class="wp-block-paragraph">ถ้าให้ agent “สร้างระบบ task management” เฉยๆ มันอาจทำหน้าจอสวย แต่ข้อมูลไม่ persist หรือ filter ใช้ไม่ได้ แต่ถ้ามี sprint contract เช่น</p>



<ul class="wp-block-list">
<li>สร้าง task ได้</li>



<li>แก้สถานะ task ได้</li>



<li>filter ตาม status ได้</li>



<li>refresh แล้วข้อมูลยังอยู่</li>



<li>Evaluator ต้องทดสอบผ่าน browser จริง</li>
</ul>



<p class="wp-block-paragraph">แบบนี้งานจะตรวจได้ชัดขึ้นมาก และลดโอกาสที่ agent จะทำ feature แบบดูเหมือนเสร็จ แต่ใช้งานจริงไม่ได้</p>



<h2 class="wp-block-heading">ผลลัพธ์ที่ Anthropic เจอ</h2>



<p class="wp-block-paragraph">บทความยกตัวอย่างให้ Claude สร้าง 2D retro game maker แล้วเทียบระหว่าง solo agent กับ full harness</p>



<figure class="wp-block-table"><table><thead><tr><th>วิธี</th><th>เวลา</th><th>ต้นทุน</th></tr></thead><tbody><tr><td>Solo agent</td><td>ประมาณ 20 นาที</td><td>ประมาณ $9</td></tr><tr><td>Full harness</td><td>ประมาณ 6 ชั่วโมง</td><td>ประมาณ $200</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">full harness แพงกว่ามาก แต่คุณภาพต่างกันชัดเจน solo agent ทำหน้าตาได้บางส่วน แต่เกมเล่นจริงไม่ได้ดีนัก ส่วน full harness ทำ feature ได้ลึกกว่า polished กว่า และ play mode ใช้งานได้จริงกว่า</p>



<p class="wp-block-paragraph">นี่เป็น trade-off ที่ต้องจำไว้ ไม่ใช่ว่าเราควรใช้ harness หนักๆ กับทุกงาน เพราะบางงาน single agent ก็พอ แต่ถ้างานสำคัญ งานซับซ้อน หรืองานที่ต้องการคุณภาพสูงมาก harness แบบนี้อาจคุ้ม</p>



<h2 class="wp-block-heading">เมื่อ Model เก่งขึ้น Harness ก็ต้องเปลี่ยน</h2>



<p class="wp-block-paragraph">อีกประเด็นที่ผมชอบคือ Anthropic บอกว่าเมื่อ model รุ่นใหม่เก่งขึ้น บางส่วนของ harness ที่เคยจำเป็นอาจไม่จำเป็นอีกต่อไป</p>



<p class="wp-block-paragraph">นี่เป็นความจริงที่สำคัญมาก ทุก component ใน harness คือสมมติฐานบางอย่างว่า model ยังทำเองได้ไม่ดีพอ เช่น ยังวางแผนไม่ดีพอ ยัง review ตัวเองไม่ดีพอ ยังทำงานยาวไม่ได้พอ หรือยังต้องแตกงานเป็น sprint เล็กๆ</p>



<p class="wp-block-paragraph">แต่เมื่อ model ดีขึ้น สมมติฐานเหล่านี้อาจหมดอายุ</p>



<p class="wp-block-paragraph">ดังนั้น harness ที่ดีไม่ควรเป็น pipeline แข็งๆ แต่ควรเป็นระบบที่ปรับได้ เช่น</p>



<ul class="wp-block-list">
<li>เปิดหรือปิด planner ได้</li>



<li>เลือก evaluator แบบเบาหรือหนักได้</li>



<li>ปรับจำนวนรอบ iteration ได้</li>



<li>เลือกใช้ context reset หรือ compaction ได้</li>



<li>ถอด component ที่ไม่ load-bearing ออกได้</li>
</ul>



<p class="wp-block-paragraph">ผมคิดว่านี่คือแนวคิดที่ดีมากสำหรับคนทำ agent platform เพราะเราไม่ได้ออกแบบระบบเพื่อ model รุ่นเดียว แต่ต้องออกแบบให้ evolve ตาม model ได้</p>



<h2 class="wp-block-heading">ถ้าจะเอามาพัฒนาต่อ ผมจะเริ่มจากอะไร</h2>



<p class="wp-block-paragraph">ถ้าเอาแนวคิดนี้มาใช้กับระบบ agent ที่ผมกำลังทำอยู่ ผมคิดว่าสิ่งที่ควรเริ่มมีคือ 5 เรื่องนี้</p>



<h3 class="wp-block-heading">1. Artifact-first workflow</h3>



<p class="wp-block-paragraph">อย่าให้ chat เป็นที่เก็บ state หลักของงาน แต่ให้ agent ทำงานผ่านไฟล์หรือ object ที่ชัดเจน เช่น</p>



<ul class="wp-block-list">
<li><code>SPEC.md</code></li>



<li><code>PLAN.md</code></li>



<li><code>TASKS.md</code></li>



<li><code>STATE.md</code></li>



<li><code>EVAL.md</code></li>



<li><code>HANDOFF.md</code></li>
</ul>



<p class="wp-block-paragraph">ไฟล์เหล่านี้ทำให้ agent ตัวถัดไปอ่านต่อได้ และมนุษย์ก็ตรวจได้ด้วย</p>



<p class="wp-block-paragraph">ซึ่งหากใครใช้ skill พวกทำ Spec Driven มันจะสร้างเอกสาร spec/plan/adr ให้อัตโนมัติ คอนเซ็ปประมาณนี้เลย</p>



<h3 class="wp-block-heading">2. Maker กับ Checker ต้องแยกกัน</h3>



<p class="wp-block-paragraph">งานสำคัญไม่ควรให้ agent ตัวเดียวสร้างและรับรองงานตัวเอง ควรมี reviewer หรือ evaluator แยกออกมาเสมอ โดยเฉพาะงานที่ต้อง publish, deploy หรือกระทบข้อมูลจริง</p>



<h3 class="wp-block-heading">3. Evaluator ต้องมี Rubric</h3>



<p class="wp-block-paragraph">rubric คือชุดเกณฑ์การให้คะแนน หรือเครื่องมือประเมินผลที่อธิบายระดับคุณภาพของชิ้นงาน </p>



<p class="wp-block-paragraph">ดังนั้น Evaluator ที่ไม่มี rubric จะตรวจแบบลอยๆ และมักใจดีเกินไป rubric ที่ดีควรบอกว่าอะไรคือ pass, อะไรคือ fail, ต้องลอง edge case ไหน และอะไรที่ห้ามมองข้าม</p>



<h3 class="wp-block-heading">4. Context Reset ต้องเป็น Feature ไม่ใช่ปล่อยให้แก้ตอนเต็ม</h3>



<p class="wp-block-paragraph">ถ้างานยาวพอ เราควรออกแบบไว้เลยว่า agent จะ reset ตอนไหน ส่งต่ออะไร และ agent ตัวใหม่ต้องอ่านอะไรบ้าง ไม่ใช่รอให้ context เต็มแล้วค่อยหาทางรอด</p>



<h3 class="wp-block-heading">5. ต้องมี Stop Condition</h3>



<p class="wp-block-paragraph">Agent ที่ทำงานเองได้ต้องรู้ด้วยว่าเมื่อไรควรหยุด ถ้าไม่มี stop condition มันอาจวนแก้ไปเรื่อยๆ ใช้ token ใช้เวลา แต่คุณภาพไม่ได้ดีขึ้นตามสัดส่วน</p>



<h2 class="wp-block-heading">ข้อควรระวัง</h2>



<p class="wp-block-paragraph">แนวทางนี้น่าสนใจมาก แต่ก็มีข้อควรระวังเยอะเหมือนกัน</p>



<ul class="wp-block-list">
<li><strong>Cost สูงขึ้น</strong> เพราะใช้หลาย agent ทำงานหลายรอบ และต้องมี evaluation loop</li>



<li><strong>สร้างงานได้ช้าขึ้น</strong> เพราะงานบางอย่างต้องรอ browser test, QA หรือ iteration</li>



<li><strong>ซับซ้อนขึ้น</strong> เพราะต้องดูแล state, artifact, prompt, rubric และ orchestration</li>



<li><strong>Evaluator ก็พลาดได้</strong> ถ้า rubric ไม่ดีหรือทดสอบไม่ลึกพอ</li>



<li><strong>Handoff ที่ไม่ดีอันตรายมาก</strong> เพราะ agent รุ่นถัดไปอาจสานต่อจากข้อมูลผิด</li>
</ul>



<p class="wp-block-paragraph">ดังนั้นผมคิดว่าควรใช้ harness หนักๆ เฉพาะงานที่คุ้มจริง เช่นงานที่มีผลลัพธ์สำคัญ งานที่ต้องใช้ซ้ำ หรืองานที่ถ้าพลาดแล้วเสียเวลามาก</p>



<h2 class="wp-block-heading">สรุป</h2>



<p class="wp-block-paragraph">บทความนี้ทำให้ผมยิ่งเชื่อว่าอนาคตของ AI Agent ไม่ได้อยู่ที่ prompt อย่างเดียว แต่อยู่ที่การออกแบบ harness รอบๆ model ให้ดีพอ</p>



<p class="wp-block-paragraph">Agent ที่ทำงานยาวได้จริงต้องมี plan ต้องมี state ต้องมี handoff ต้องมี evaluator ต้องมี rubric และต้องมีวิธีรู้ว่าเมื่อไรควรทำต่อหรือหยุด</p>



<p class="wp-block-paragraph">ถ้าทำได้ดี เราจะเริ่มเปลี่ยนจากการใช้ AI เป็นผู้ช่วยทีละคำสั่ง ไปสู่การมี AI operator ที่รับโจทย์ซับซ้อน ทำงานต่อเนื่อง ตรวจตัวเอง ส่งต่องาน และปรับปรุงผลลัพธ์ได้มากขึ้นเรื่อยๆ</p>



<p class="wp-block-paragraph">สำหรับผม นี่เป็นทิศทางที่น่าทดลองมาก และน่าจะเป็นแกนสำคัญของระบบ agent รุ่นถัดไปที่ไม่ได้แค่ “ตอบเก่ง” แต่ “ทำงานเป็นระบบ” ได้จริง</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/7778/harness-design-by-anthopic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
