Skip to content

สำรวจก่อน ​

/opsx:explore คือคู่คิดในการวิเคราะห์ของคุณ ให้ใช้เมื่อคุณพบปัญหาแต่ยังไม่มีแผน การสำรวจจะตรวจสอบโค้ดเบสของคุณ พิจารณาทางเลือกต่างๆ ร่วมกัน และชี้แจงว่าคุณต้องการอะไรจริงๆ ก่อนที่จะมีการสร้างอาร์ติแฟกต์หรือเขียนโค้ดแม้แต่บรรทัดเดียว เมื่อภาพรวมชัดเจนแล้ว มันจะส่งต่อให้ /opsx:propose

หากคุณจำคำแนะนำจากเอกสารนี้เพียงข้อเดียว ให้จำไว้ว่า เมื่อไม่แน่ใจ ให้สำรวจก่อนเสนอแผน

นี่คือเหตุผลที่สิ่งนี้สำคัญ ผู้ช่วยเขียนโค้ดด้วย AI มีความกระตือรือร้น หากถามอย่างคลุมเครือ พวกมันอาจ confidently สร้าง บางอย่าง ขึ้นมา แต่อาจไม่ใช่สิ่งที่จำเป็นจริงๆ การสำรวจคือวิธีแก้ไข มันเป็นบทสนทนาที่ไม่มีความเสี่ยง ซึ่งคุณและ AI จะช่วยกันหาแนวทางที่ถูกต้อง ดังนั้นเมื่อถึงเวลาเสนอแผน คุณจะได้เสนอในสิ่งที่ถูกต้อง

เมื่อใดควรสำรวจ ​

การสำรวจเป็นขั้นตอนแรกที่เหมาะสมบ่อยกว่าที่คุณคาด ใช้เมื่อเงื่อนไขใดเงื่อนไขหนึ่งต่อไปนี้จริง:

  • คุณรู้ ปัญหา แต่ไม่รู้ วิธีแก้ ("หน้าเว็บโหลดช้า", "ระบบยืนยันตัวตนยุ่งเหยิง", "เราได้รับคำสั่งซื้อซ้ำๆ")
  • คุณกำลังเลือกระหว่างแนวทางต่างๆ และต้องการเห็นข้อดีข้อเสีย (tradeoffs) ที่เทียบกับโค้ดจริงของคุณ
  • คุณเพิ่งเริ่มทำงานกับโค้ดเบสใหม่ และต้องการเข้าใจการทำงานบางอย่างก่อนที่จะทำการเปลี่ยนแปลง
  • ข้อกำหนดยังไม่ชัดเจน และคุณต้องการทำให้ข้อกำหนดคมชัดขึ้นก่อนตัดสินใจ
  • คุณสงสัยว่างานนี้มีขนาดใหญ่หรือเล็กกว่าที่ปรากฏ และต้องการประเมินขอบเขตงานอย่างตรงไปตรงมา

ข้ามการสำรวจได้ก็ต่อเมื่อคุณรู้แน่ชัดแล้วว่าต้องการอะไรและทำอย่างไร ในกรณีนั้น ให้ไปที่ /opsx:propose ได้เลย

สิ่งที่มันทำ (และไม่ทำ) ​

การสำรวจคือ บทสนทนา ไม่ใช่ตัวสร้างเนื้อหา

สิ่งที่มันทำ:

  • อ่านและค้นหาในโค้ดเบสของคุณเพื่อตอบคำถามจริง
  • เปรียบเทียบตัวเลือกและระบุข้อดีข้อเสียของแต่ละทาง
  • วาดไดอะแกรมเพื่อให้การออกแบบเข้าใจง่าย
  • ช่วยคุณบีบอัดไอเดียที่คลุมเครือให้กลายเป็นขอบเขตงานที่จับต้องได้และนำไปสร้างได้
  • ส่งต่อไปยัง /opsx:propose เมื่อคุณพร้อม

สิ่งที่มันไม่ทำ:

  • สร้างโฟลเดอร์สำหรับการเปลี่ยนแปลง (change folder)
  • เขียนอาร์ติแฟกต์ใดๆ (ไม่มีการเสนอแผน, สเปค, การออกแบบ หรืองานย่อย)
  • เขียนหรือแก้ไขโค้ด

นั่นคือจุดประสงค์ของการสำรวจ การสำรวจไม่เสียค่าใช้จ่ายและไม่ผูกมัดคุณ คุณสามารถสำรวจจนเจอทางตันสามครั้ง เรียนรู้จากแต่ละครั้ง แล้วจึงเสนอเส้นทางที่ผ่านพ้นมาได้

ติดตั้งเรียบร้อยแล้ว ​

ข่าวดี: /opsx:explore มาพร้อมกับโปรไฟล์ core โดยค่าเริ่มต้น อยู่ alongside propose, apply, update, sync, และ archive คุณไม่ต้องเปิดใช้งานอะไรเพิ่มเติม หาก OpenSpec ถูกตั้งค่าไว้ในโปรเจกต์ของคุณ การสำรวจก็พร้อมใช้งานในแชท AI ของคุณ (เช่นเดียวกับคำสั่ง /opsx:* อื่นๆ คุณพิมพ์ในแชทของผู้ช่วย ไม่ใช่ในเทอร์มินัล ดู วิธีการทำงานของคำสั่ง)

ตัวอย่างแบบเต็ม ​

ดูว่าความกังวลที่คลุมเครือกลายเป็นการเปลี่ยนแปลงที่คมชัดและนำไปสร้างได้อย่างไร

text
คุณ: /opsx:explore

AI:  คุณต้องการสำรวจเรื่องอะไร?

คุณ: ระบบเช็คเอาท์ของเราบางครั้งสร้างคำสั่งซื้อซ้ำ ฉันไม่รู้ว่าทำไม
     และไม่รู้ว่าต้องแก้ไขอย่างไรอย่างปลอดภัย

AI:  ให้ฉันขุดลึกลงไปในกระบวนการเช็คเอาท์...
     [อ่านบริการจัดการคำสั่งซื้อ ตัวจัดการ webhook การชำระเงิน และ
      ตรรกะการส่งข้อมูลจากไคลเอนต์]

     นี่คือสิ่งที่ฉันพบ มีสองสาเหตุที่ทำให้เกิดคำสั่งซื้อซ้ำ:

     1. ไคลเอนต์สามารถส่งข้อมูลซ้ำได้ (คลิกสองครั้ง, ลองใหม่เมื่อเครือข่ายช้า)
        ไม่มีกลไกป้องกัน (debounce)
     2. webhook การชำระเงินสามารถถูกเรียกมากกว่าหนึ่งครั้ง และตัวจัดการ
        จะสร้างคำสั่งซื้อทุกครั้ง ไม่มี key สำหรับ idempotency

     สาเหตุข้อ #2 เป็นอันตรายกว่า: อาจมีการหักเงินและดำเนินการจัดส่งซ้ำได้

     มีสามวิธีในการแก้ไข เรียงตามความแข็งแกร่งโดยประมาณ:
     - ใช้ idempotency key บน endpoint การสร้างคำสั่งซื้อ (จัดการได้ทั้งสองสาเหตุ)
     - ลบรายการซ้ำบน webhook โดยใช้ payment-intent id (จัดการได้เฉพาะข้อ #2)
     - ป้องกันการส่งซ้ำด้านไคลเอนต์ (จัดการได้เฉพาะข้อ #1 ซึ่งเป็นแค่การปิดบังบั๊กจริง)

     จากโค้ดปัจจุบันของคุณที่เก็บ payment-intent id ไว้แล้ว
     แนวทาง idempotency-key เป็นการเปลี่ยนแปลงเล็กน้อยแต่ได้ผลลัพธ์สูงสุด
     ต้องการให้ฉันกำหนดขอบเขตเรื่องนี้ไหม?

คุณ: ใช่ ให้ใช้ idempotency key

คุณ: /opsx:propose add-order-idempotency-key

AI:  สร้าง openspec/changes/add-order-idempotency-key/, พร้อมข้อเสนอแนะ
     และ delta spec ที่อิงจากสิ่งที่เราพบ刚刚 Ready for implementation.

สังเกตสิ่งที่เกิดขึ้น จุดเริ่มต้นคือ "มีบางอย่างผิดปกติและฉันกลัวที่จะแตะต้องมัน" การสำรวจยี่สิบวินาทีเปลี่ยนสิ่งนั้นให้เป็นสาเหตุรากเหง้าที่ระบุชื่อได้ ตัวเลือกสามอันดับ คำแนะนำที่เชื่อมโยงกับโค้ดที่มีอยู่ และการเปลี่ยนแปลงที่แม่นยำ ข้อเสนอแนะที่ตามมาจึงคมชัดเพราะมีการคิดวิเคราะห์มาก่อน

การส่งต่อให้ propose ​

การสำรวจไม่ได้ถูกจัดเก็บเป็นอาร์ติแฟกต์ใดๆ เมื่อคุณพร้อม คุณเพียงแค่เริ่มการเปลี่ยนแปลงใหม่ และ AI จะนำบริบทจากบทสนทนาก่อนหน้าไปใช้ในอาร์ติแฟกต์เหล่านั้น

text
explore  ──►  propose  ──►  apply  ──►  archive
 (think)     (agree)       (build)     (record)

คุณสามารถบอกเป็นภาษาธรรมดาได้ ("ให้เราแปลงสิ่งนี้เป็นงานเปลี่ยนแปลง") หรือรัน /opsx:propose <name> โดยตรง ไม่ว่ากรณีใด การสำรวจที่คุณเพิ่งทำเสร็จจะเป็นพื้นฐานของข้อเสนอแนะ ไม่ใช่แค่แชทที่ถูกลืมทิ้ง

หากคุณใช้ชุดคำสั่งแบบขยาย การสำรวจสามารถส่งต่อไปยัง /opsx:new แทนได้ เพื่อการสร้างอาร์ติแฟกต์ทีละขั้นตอน ดู Workflows

เคล็ดลับสำหรับการสำรวจที่ดี ​

  • นำปัญหาเข้ามา ไม่ใช่ทางแก้ "การเข้าสู่ระบบรู้สึกช้า" เปิดโอกาสให้ AI ตรวจสอบ ในขณะที่ "เพิ่ม Redis cache" เป็นการผูกมัดตัวเองกับคำตอบที่ยังไม่ได้ทดสอบ
  • ขอให้อธิบายข้อดีข้อเสียออกมาดังๆ "ข้อเสียของแต่ละตัวเลือกคืออะไร?" จะได้การเปรียบเทียบที่ซื่อสัตย์กว่า
  • ปล่อยให้มันอ่านโค้ดก่อน การสำรวจที่ดีที่สุดเริ่มต้นจากการที่ AI ดูโค้ดของคุณจริงๆ ไม่ใช่การเดา ชี้ไปยังพื้นที่ที่เกี่ยวข้องหากจำเป็น
  • การถอยออกมาก็ได้ หากการสำรวจเปิดเผยว่าไอเดียนั้นไม่คุ้มค่า นั่นคือชัยชนะ คุณเรียนรู้ได้ในต้นทุนที่ต่ำ
  • สำรวจอีกครั้งระหว่างดำเนินการเปลี่ยนแปลง ติดขัดระหว่าง /opsx:apply? คุณสามารถย้อนกลับไปสำรวจปัญหาย่อย แล้วกลับมาทำต่อได้

ข้อดีข้อเสียอย่างตรงไปตรงมา ​

สิ่งที่คุณได้รับ: การสำรวจช่วยจับทางผิดในช่วงเวลาที่ราคาถูกที่สุด ก่อนที่อาร์ติแฟกต์ใดๆ จะเกิดขึ้น มันทรงพลังเป็นพิเศษในโค้ดที่ไม่คุ้นเคย ซึ่งความสามารถของ AI ในการอ่านและสรุประบบช่วยให้คุณประหยัดเวลาทั้งบ่ายจากการคุ้ยเขี่ยโค้ด

สิ่งที่คุณเสีย: ความอดทนนิดหน่อย การสำรวจคือบทสนทนา ดังนั้นมันจึงช้ากว่าการสั่ง /opsx:propose ทันทีแล้วหวังผล สำหรับงานที่คุณเข้าใจอยู่แล้วจริงๆ ขั้นตอนเพิ่มเติมนี้อาจเป็นภาระเปล่าๆ และคุณควรข้ามมันไป

กฎทั่วไป: งานที่คลุมเครือมากเท่าไร การสำรวจยิ่งคุ้มค่ามากเท่านั้น งานที่ชัดเจนมากเท่าไร ยิ่งสามารถข้ามไปสู่การเสนอแผนได้ทันที

ไปต่อที่ไหน ​

  • Commands: /opsx:explore: เอกสารอ้างอิงที่แม่นยำ
  • Workflows: การสำรวจเป็นส่วนหนึ่งของวงจรประจำวัน
  • Examples & Recipes: การสำรวจในตัวอย่างแบบครบวงจร
  • Getting Started: คู่มือเริ่มต้นกับการเปลี่ยนแปลงครั้งแรก รวมถึงการสำรวจ