บริบทระดับ 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 ประการ:

  1. ความสามารถในการพกพาเสียไป (Portability breaks) Repo ที่ต้องพึ่งพาการตั้งค่าในเครื่องจะขาดความน่าเชื่อถือ
  2. การรีวิวจะวุ่นวาย (Reviews get noisy) Pull request ควรแสดงการตัดสินใจของโปรเจกต์ ไม่ใช่ภาระส่วนตัวจากเวิร์กสเตชัน
  3. ข้อมูลลับรั่วไหล (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