บริบทระดับ Global ควรอยู่นอก APC
APC คือเลเยอร์บริบทแบบพกพา (portable context layer) ส่วน APX คือเลเยอร์รันไทม์ในเครื่อง (local runtime layer)
เพื่อรักษาความสมบูรณ์ของทั้งสองส่วน ให้ปฏิบัติตามกฎเพียงข้อเดียว: หากสิ่งใดจำเป็นต้องคงอยู่แม้จะทำการ clone ใหม่ ให้ใส่ไว้ใน APC แต่หากสิ่งนั้นขึ้นอยู่กับผู้ใช้ เครื่อง หรือกระบวนการเฉพาะเจาะจง ให้เก็บไว้ภายนอก APC
เมื่อโปรเจกต์ขยายใหญ่ขึ้น ความเย้ายวนใจก็จะตามมา คุณอาจอยากเพิ่มการตั้งค่าอีกสักอย่างหรือพาธในเครื่องอีกสักที่ หากคุณไม่เคร่งครัดพอ repository ของคุณจะกลายเป็นที่ทิ้งข้อมูลของเครื่อง ซึ่งจะทำให้ repo เปราะบาง
APC เก็บความหมายที่เป็นของโปรเจกต์โดยเฉพาะ มันคือข้อตกลงร่วมกัน (shared contract) ที่ repository ถือครองไว้
เนื้อหา APC ที่ดีประกอบด้วย:
- อัตลักษณ์ของโปรเจกต์ (Project identity)
- บทบาทของ Agent
- ทักษะที่นำกลับมาใช้ใหม่ได้
- หน่วยความจำโปรเจกต์ที่ผ่านการคัดสรรแล้ว
- คำใบ้ MCP ระดับโปรเจกต์
- คำแนะนำทั่วทั้ง repo ใน AGENTS.md
เพื่อนร่วมทีมหรือเครื่องใหม่ควรจะได้รับข้อมูลเหล่านี้ทันทีหลังจากทำการ checkout
บริบทระดับ Global นั้นแตกต่างออกไป เพราะมันเป็นของตัวผู้ใช้หรือเวิร์กสเตชัน
ตัวอย่างของบริบทระดับ Global:
- API keys
- การตั้งค่า Editor
- Local aliases
- พาธของเครื่องมือเฉพาะเครื่อง
- หน่วยความจำรันไทม์ส่วนตัว
- แคช (Caches)
- บันทึกการสนทนาในเซสชัน (Session transcripts)
- บันทึกข้อความ (Message logs)
APX จะเก็บสถานะเหล่านี้ไว้ในเครื่อง โดยจะเก็บสถานะรันไทม์ไว้ภายใต้ ~/.apx/ ซึ่งช่วยให้โปรเจกต์สามารถแชร์ต่อได้
การผสมผสานเลเยอร์เหล่านี้เข้าด้วยกันจะทำให้เกิดปัญหา 3 ประการ:
- ความสามารถในการพกพาเสียไป (Portability breaks) Repo ที่ต้องพึ่งพาการตั้งค่าในเครื่องจะขาดความน่าเชื่อถือ
- การรีวิวจะวุ่นวาย (Reviews get noisy) Pull request ควรแสดงการตัดสินใจของโปรเจกต์ ไม่ใช่ภาระส่วนตัวจากเวิร์กสเตชัน
- ข้อมูลลับรั่วไหล (Secrets leak) การเก็บรายละเอียดในเครื่องทำให้เสี่ยงต่อการ commit ไฟล์ที่ผิดพลาดได้ง่าย
ก่อนที่คุณจะเพิ่มการตั้งค่า ให้ถามตัวเองว่า: ผู้ร่วมพัฒนาคนอื่นจำเป็นต้องใช้สิ่งนี้ทันทีหลังจาก clone หรือไม่?
ถ้าใช่ ให้ใช้ APC
- Agent สำหรับการรีวิวในทุกการ clone? ใช้ APC
- API key ส่วนตัว? ไม่ใช่ APC
- การตัดสินใจของโปรเจกต์เกี่ยวกับสิทธิ์การใช้งาน? ใช้ APC
- พาธของเบราว์เซอร์ในเครื่อง? ไม่ใช่ APC
- คำใบ้ MCP ที่ใช้ร่วมกัน? ใช้ APC
- แคชจากการรัน (Run cache)? ไม่ใช่ APC
กฎนี้จะทำให้ระบบอัตโนมัติมีความยั่งยืน APC มอบความหมายที่พกพาได้ ส่วน APX มอบสถานะในเครื่อง (local state)
รักษาเส้นแบ่งนี้ให้ชัดเจน มันจะช่วยให้ stack ของคุณดีบั๊กได้ง่ายขึ้น แชร์ได้ง่ายขึ้น และย้ายไปมาระหว่างเครื่องมือต่างๆ ได้สะดวกขึ้น
ใช้ APC สำหรับบริบทที่ต้องไปพร้อมกับ repo หากเป็นเรื่องส่วนตัวหรือเป็นเรื่องชั่วคราว ให้เก็บไว้ในเครื่อง
Source: https://dev.to/agentprojectcontext/global-context-belongs-outside-apc-4fg8
Optional learning community: https://t.me/GyaanSetuAi
