ทุกสิ่งคือไฟล์: ปรัชญาการออกแบบจาก Unix สู่ AI Agent
ทุกสิ่งคือไฟล์: ปรัชญาการออกแบบจาก Unix สู่ AI Agent
ต้นฉบับ Ethan 业成


เสียงสะท้อนข้ามครึ่งศตวรรษ
ย้อนกลับไปในต้นทศวรรษ 1970 ที่ Bell Labs เคน ทอมป์สัน (Ken Thompson) และ เดนนิส ริตชี (Dennis Ritchie) บิดาแห่ง Unix ได้เสนอหลักการออกแบบที่กล้าหาญจนเกือบจะหมกมุ่น: Everything is a file – ทุกสิ่งคือไฟล์
กว่าห้าสิบปีต่อมา เฟรมเวิร์ก AI Agent ก็ผุดขึ้นมาอย่างรวดเร็ว Manus, Claude Code, OpenClaw... พวกเขามาจากทีมที่แตกต่างกัน สแต็กเทคโนโลยีที่แตกต่างกัน เป้าหมายทางธุรกิจที่แตกต่างกัน แต่กลับเลือกสิ่งเดียวกันโดยไม่ได้นัดหมาย: ใช้ระบบไฟล์เป็นกระดูกสันหลังแห่งความรู้ความเข้าใจของ Agent
Manus มอบเครื่องเสมือน (Virtual Machine) ให้กับ Agent ผลลัพธ์ของงานจะถูกบันทึกลงดิสก์เป็นไฟล์ Claude Code อ่านและเขียนโดยตรงบนระบบไฟล์ในเครื่องของผู้ใช้ โดยใช้ไฟล์ CLAUDE.md ไฟล์เดียวเพื่อรองรับคำสั่งและบริบททั้งหมด เฟรมเวิร์กโอเพนซอร์สอย่าง OpenClaw ก็จัดระเบียบการแยกย่อยงานและสถานะกลางด้วยโครงสร้างไดเรกทอรีเช่นกัน
เมื่อวิศวกรที่ห่างกันครึ่งศตวรรษ เผชิญกับปัญหาทางเทคนิคที่แตกต่างกันอย่างสิ้นเชิง แต่กลับมาบรรจบกันที่ทางออกเดียวกัน – นี่ไม่ใช่เรื่องบังเอิญ แต่เป็นเสียงสะท้อนของปรัชญาการออกแบบ
การตัดสินใจของ Unix ในครั้งนั้น
เพื่อให้เข้าใจถึงความสำคัญของเรื่องนี้ เราต้องย้อนกลับไปดูสิ่งที่ Unix ทำ
การออกแบบระบบไฟล์ของ Unix ได้รับการยอมรับว่าเป็นหนึ่งในการออกแบบที่สง่างามที่สุดในประวัติศาสตร์วิทยาการคอมพิวเตอร์ มันแก้ปัญหาที่ซับซ้อนอย่างยิ่ง: จะจัดการทรัพยากรฮาร์ดแวร์และทรัพยากรข้อมูลที่แตกต่างกันอย่างมากได้อย่างไร ด้วยอินเทอร์เฟซที่เป็นหนึ่งเดียวและเรียบง่าย
ก่อนทศวรรษ 1970 ระบบปฏิบัติการทำงานดังนี้: หากคุณต้องการอ่านดิสก์ คุณต้องเรียกใช้อินเทอร์เฟซดิสก์ หากคุณต้องการอ่านเทป คุณต้องเรียกใช้อินเทอร์เฟซเทป หากคุณต้องการเข้าถึงเทอร์มินัล คุณต้องเรียกใช้อินเทอร์เฟซเทอร์มินัล อุปกรณ์แต่ละชนิดมี API ของตัวเอง แต่ละ API มีความหมายของตัวเอง หากคุณมีอุปกรณ์ N ชนิด และการดำเนินการ M ชนิด ความซับซ้อนของระบบคือ N × M
Thompson และ Ritchie ทำสิ่งที่ดูเหมือนง่ายจนโง่:
เปลี่ยนทุกสิ่งให้เป็นไฟล์ ใช้วิธีการ open, read, write, close สี่คำเพื่อดำเนินการทุกอย่าง
ความหมายหลักของมันคือ: ทรัพยากรทั้งหมดในระบบปฏิบัติการ – เอกสาร ไดเรกทอรี ไดรฟ์ฮาร์ดดิสก์ โมเด็ม คีย์บอร์ด เครื่องพิมพ์ หรือแม้แต่การเชื่อมต่อเครือข่ายและข้อมูลกระบวนการ – สามารถถูกนามธรรม (Abstract) ให้เป็นสตรีมของไบต์ (Stream of Bytes) ได้
ซึ่งหมายความว่า คุณเพียงแค่เรียนรู้ชุด API เดียว – open(), read(), write(), close() – คุณก็สามารถดำเนินการทรัพยากรทั้งหมดของคอมพิวเตอร์ได้
จากนั้น ความซับซ้อนก็ลดลงจาก N × M เหลือ 4 × 1 สี่คำกริยา หนึ่งชั้นของการนามธรรม
ความอัจฉริยะของเรื่องนี้ไม่ได้อยู่ที่คำนาม "ไฟล์" แต่อยู่ที่ความเข้าใจที่ลึกซึ้งยิ่งกว่า:
คุณไม่จำเป็นต้องรู้ว่าอะไรอยู่เบื้องหลังตัวอธิบายไฟล์ (File Descriptor) อินเทอร์เฟซคือสัญญา
fd (ตัวอธิบายไฟล์) คือตัวจัดการที่ไม่โปร่งใส (Opaque Handle) เมื่อคุณ read() มัน สตรีมไบต์จะออกมา ไม่ว่าไบต์เหล่านี้จะมาจากเซกเตอร์ฮาร์ดดิสก์ บัฟเฟอร์การ์ดเครือข่าย หรือเอาต์พุตมาตรฐานของกระบวนการอื่น – คุณไม่สนใจ และคุณไม่ควรสนใจ
นี่คือพลังของอินเทอร์เฟซที่เป็นหนึ่งเดียว: มันทำให้ความไม่รู้กลายเป็นข้อได้เปรียบ

โจทย์เดียวกันที่ Agent เผชิญ
ตอนนี้ลองมองย้อนกลับไปที่สถานการณ์ของ AI Agent
ในการทำงานที่ซับซ้อนให้สำเร็จ Agent เผชิญกับสถานการณ์ที่คล้ายคลึงกับระบบปฏิบัติการในทศวรรษ 1970 อย่างน่าประหลาดใจ:
- หน่วยความจำถาวร: หน้าต่างบริบทของ LLM นั้นไม่คงทน การเชื่อมโยงความคิดจะหายไปพร้อมกับ session เหมือนกับหน่วยความจำที่ถูกเรียกคืนหลังจากโปรแกรมปิดตัวลง คุณต้องมีที่สำหรับเก็บสถานะกลางไว้ มิฉะนั้นการสนทนาแต่ละครั้งจะต้องเริ่มต้นจากศูนย์
- บริบทแบบค่อยเป็นค่อยไป: งานที่ซับซ้อนไม่สามารถทำได้ในขั้นตอนเดียว Agent จำเป็นต้องสะสมบริบททีละน้อยในการอนุมานหลายรอบ เหมือนกับโปรเซส Unix ที่ส่งต่อสถานะระหว่างการดำเนินการหลายครั้งโดยการอ่านและเขียนไฟล์ ระบบไฟล์มีรูปแบบการทำงานแบบค่อยเป็นค่อยไปที่ว่า "เขียนนิดหน่อย อ่านนิดหน่อย แล้วเขียนอีกนิดหน่อย" โดยธรรมชาติ
- การจัดตารางเครื่องมือและทักษะแบบรวมศูนย์: Agent ต้องเรียกใช้เครื่องมือที่แตกต่างกัน เช่น การค้นหา การดำเนินการโค้ด การสร้างภาพ (Tools/Skills) เหมือนกับ Unix ที่ต้องจัดการอุปกรณ์ที่แตกต่างกัน เช่น ดิสก์ เครือข่าย เครื่องพิมพ์ คุณต้องมีนามธรรมที่เป็นหนึ่งเดียว มิฉะนั้นคุณจะต้องเขียนตรรกะการรวมระบบใหม่ทุกครั้งที่คุณเพิ่มเครื่องมือใหม่
- ขอบเขตสิทธิ์ในการใช้คอมพิวเตอร์: เมื่อ Agent มีความสามารถในการใช้งานคอมพิวเตอร์ คำถามที่ว่า "มันสามารถแตะต้องอะไรได้บ้าง และอะไรที่มันแตะต้องไม่ได้" กลายเป็นเรื่องสำคัญอย่างยิ่ง ระบบสิทธิ์ไฟล์ (rwx) ของ Unix มีรูปแบบแซนด์บ็อกซ์ที่พร้อมใช้งานอยู่แล้ว ไดเรกทอรีคือขอบเขต สิทธิ์คือสัญญา
สี่ความต้องการ ฟังดูคุ้นเคยไหม?
นี่คือปัญหาที่ระบบปฏิบัติการเผชิญอยู่ในช่วงทศวรรษ 1970
หน่วยความจำถาวร - ระบบไฟล์แก้ไขได้โดยธรรมชาติ การเขียนคือความคงทน บริบทแบบค่อยเป็นค่อยไป - โครงสร้างไดเรกทอรีนั้นถูกสร้างขึ้นทีละน้อย mkdir, touch, append บริบทเติบโตไปพร้อมกับไฟล์ การจัดตารางเครื่องมือแบบรวมศูนย์ - สาระสำคัญของไปป์ไลน์ Unix: stdout ของโปรเซสหนึ่งคือ stdin ของอีกโปรเซสหนึ่ง สื่อกลางคือสตรีมไบต์ ห่วงโซ่เครื่องมือของ Agent ก็เช่นกัน: ไฟล์เอาต์พุตของขั้นตอนก่อนหน้าคืออินพุตของขั้นตอนถัดไป ขอบเขตสิทธิ์ - สิทธิ์ rwx ของระบบไฟล์ แซนด์บ็อกซ์ chroot กำหนด "วงกลมความสามารถ" ให้กับ Agent โดยธรรมชาติ
ดังนั้นเมื่อผู้ออกแบบ Agent framework เผชิญกับคำถามที่ว่า "สถานะการทำงานของ Agent ควรอยู่ที่ไหน" คำตอบก็เกือบจะถูกกำหนดไว้ล่วงหน้าแล้ว: ในระบบไฟล์ เพราะไม่มีวิธีที่ง่ายกว่าที่จะตอบสนองข้อจำกัดทั้งสี่นี้ได้ในเวลาเดียวกัน
เมื่อระบบต้องการ "จัดการการโต้ตอบของทรัพยากรที่แตกต่างกันจำนวนมาก" คุณมีสองทางเลือก:
เส้นทาง A: ออกแบบอินเทอร์เฟซเฉพาะสำหรับแต่ละทรัพยากร ทรัพยากร N ชนิด × การดำเนินการ M ชนิด = อินเทอร์เฟซ NM ชนิด แม่นยำแต่ระเบิด
เส้นทาง B: ค้นหานามธรรมที่บางพอที่จะให้ทรัพยากรทั้งหมดสวมเสื้อผ้าชิ้นเดียวกัน การดำเนินการ 4 ชนิด × นามธรรม 1 ชั้น หยาบแต่สามารถรวมกันได้
Unix เลือก B ห้าสิบปีต่อมา Agent framework เลือก B อีกครั้ง

ลึกลงไปอีกขั้น: ไฟล์คือการแสดงออกภายนอกของการคิด
แต่ถ้าเราหยุดอยู่แค่ที่ "การบรรจบกันของโซลูชันทางเทคนิค" เราจะพลาดสิ่งที่สำคัญกว่านั้น
ลองนึกดูว่ามนุษย์จัดการกับงานที่ซับซ้อนได้อย่างไร
เมื่อคุณได้รับโครงการใหญ่ สิ่งแรกที่คุณทำไม่ใช่การเริ่มทำงาน แต่เป็นการ: สร้างโฟลเดอร์ ไดเรกทอรีรากของโครงการ ไดเรกทอรีย่อยของงาน ไดเรกทอรีอ้างอิง ไดเรกทอรีเอาต์พุต คุณใช้โครงสร้างไดเรกทอรีเพื่อแยกงานที่วุ่นวายออกเป็นหน่วยที่จัดการได้ คุณใช้ชื่อไฟล์เพื่อตั้งชื่อแต่ละหน่วย คุณใช้เนื้อหาไฟล์เพื่อบันทึกกระบวนการคิดและผลิตภัณฑ์กลาง
ระบบไฟล์ไม่ได้เป็นเพียงโซลูชันการจัดเก็บข้อมูล แต่เป็นเครื่องมือดั้งเดิมสำหรับการแสดงออกภายนอกของการคิดของมนุษย์
ข้อมูลเชิงลึกนี้อธิบายว่าทำไม Agent framework จึงมาบรรจบกันที่ระบบไฟล์: "การคิด" ของ LLM จำเป็นต้องแสดงออกภายนอก หน้าต่างบริบทของมันมีจำกัด การอนุมานระยะยาวต้องอาศัยหน่วยความจำภายนอก และระบบไฟล์เป็นรูปแบบ "หน่วยความจำภายนอก" ที่ใช้กันมากที่สุดที่มนุษย์เคยประดิษฐ์ขึ้น
จากมุมมองนี้ CLAUDE.md ของ Claude Code ไม่ใช่ไฟล์การกำหนดค่า แต่เป็นสัญญาการรับรู้ภายนอก มนุษย์เขียนความตั้งใจลงในไฟล์ Agent อ่านไฟล์เป็นความตั้งใจ ไฟล์กลายเป็นชั้นอินเทอร์เฟซระหว่างจิตใจของมนุษย์และปัญญาประดิษฐ์
สิ่งนี้สอดคล้องกับปรัชญาของไปป์ไลน์ Unix อย่างน่าทึ่ง:
Write programs to handle text streams, because that is a universal interface. (เขียนโปรแกรมเพื่อจัดการสตรีมข้อความ เพราะนั่นคืออินเทอร์เฟซสากล)การเปลี่ยน "programs" เป็น "agents" และ "text streams" เป็น "files" ประโยคนี้ยังคงเป็นจริงในปี 2026
กลับสู่หลักการพื้นฐาน
นามธรรมที่ยิ่งใหญ่ไม่เคยล้าสมัย มันเพียงแค่ค้นพบตัวอย่างใหม่ๆ ในโดเมนใหม่
"อินเทอร์เฟซที่เป็นหนึ่งเดียวช่วยลดความซับซ้อน" ไม่ใช่สิ่งประดิษฐ์ของ Unix แต่มันเป็นกฎเกณฑ์นิรันดร์ของการออกแบบระบบ Unix บังเอิญใช้ชื่อ "ไฟล์" เพื่อนำไปใช้ AI Agent บังเอิญนำไปใช้อีกครั้งในรูปแบบของ "working directory"
ระบบรุ่นต่อไปจะต้องเผชิญกับทางเลือกเดียวกันอีกครั้ง: ออกแบบอินเทอร์เฟซเฉพาะสำหรับทุกสิ่ง หรือค้นหานามธรรมที่บาง เบา ทั่วไป และสามารถประกอบกันได้
หากประวัติศาสตร์มีบทเรียนอะไรให้เรียนรู้ คำตอบก็เขียนไว้ข้าง /dev/null แล้ว:
Keep it simple. Make it compose. Everything is a file. (ทำให้มันเรียบง่าย ทำให้มันประกอบกันได้ ทุกสิ่งคือไฟล์)





