Skip to content

แนวคิดหลักโดยสังเขป ​

OpenSpec คือชั้นการตกลงที่เบา (lightweight agreement layer) ระหว่างคุณกับ AI ของคุณ คุณเขียนสิ่งที่การเปลี่ยนแปลงควรทำ AI จะร่างรายละเอียดออกไป ทั้งสองฝ่ายจะดูแผนเดียวกัน และเมื่อถึงตอนนั้นจึงจะมีการเขียนโค้ด หน้านี้คือแบบจำลองทางความคิดทั้งหมดในหน้าจอเดียว หากคุณต้องการฉบับเต็ม Concepts มีไว้ให้

นี่คือแนวคิดทั้งหมดในห้าคำ: ตกลงก่อน แล้วจึงสร้างได้อย่างมั่นใจ

แนวคิดทั้งห้า ​

ทุกสิ่งใน OpenSpec สร้างขึ้นจากแนวคิดทั้งห้า เรียนรู้สิ่งเหล่านี้ แล้วส่วนที่เหลือจะเป็นรายละเอียด

1. Specs คือความจริง Spec อธิบายว่าระบบของคุณทำงานอย่างไร ณ ตอนนี้ มันอาศัยอยู่ใน openspec/specs/ จัดเรียงตามโดเมน (auth/, payments/, ui/) Specs ประกอบด้วยข้อกำหนด (requirements) ("the system SHALL expire sessions after 30 minutes") และสถานการณ์ (scenarios) ตัวอย่าง given/when/then ลองคิดว่า specs คือคำตอบเดียวที่ตกลงร่วมกันสำหรับคำถามที่ว่า "ซอฟต์แวร์นี้ทำอะไร?"

2. การเปลี่ยนแปลงคือหน่วยงานหนึ่งหน่วย เมื่อคุณต้องการเพิ่ม แก้ไข หรือลบพฤติกรรม คุณจะสร้างการเปลี่ยนแปลง (change) ซึ่งเป็นโฟลเดอร์ใน openspec/changes/ ที่บรรจุทุกสิ่งเกี่ยวกับงานนั้นไว้ในที่เดียว ได้แก่ proposal, design, task list และ spec edits การเปลี่ยนแปลงหนึ่งครั้ง โฟลเดอร์หนึ่งอัน ฟีเจอร์หนึ่งอย่าง

3. Delta specs อธิบายสิ่งที่กำลังเปลี่ยน ไม่ใช่โลกทั้งใบ ภายในการเปลี่ยนแปลง คุณไม่จำเป็นต้องเขียน spec ทั้งหมดใหม่ แต่คุณจะเขียน delta เล็กๆ: ADDED ข้อกำหนดนี้, MODIFIED อันนั้น, REMOVED อีกอัน นี่คือเคล็ดลับที่ทำให้ OpenSpec เก่งในการแก้ไขระบบที่มีอยู่ ไม่ใช่แค่ระบบที่สร้างขึ้นใหม่เท่านั้น คุณอธิบายความแตกต่าง (diff) ไม่ใช่อธิบายปลายทาง

4. Artifacts สร้างต่อกัน การเปลี่ยนแปลงประกอบด้วยเอกสารบางส่วน ซึ่งถูกสร้างตามลำดับที่เป็นธรรมชาติ โดยแต่ละส่วนจะป้อนข้อมูลให้กับส่วนถัดไป:

text
proposal ──► specs ──► design ──► tasks ──► implement
   why        what       how       steps      do it

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

5. การเก็บถาว (Archiving) จะรวมการเปลี่ยนแปลงกลับเข้ากับความจริง เมื่องานเสร็จสิ้น คุณจะทำการเก็บถาว (archive) การเปลี่ยนแปลง Delta specs ของมันจะถูกผสานเข้ากับ specs หลัก และโฟลเดอร์การเปลี่ยนแปลงจะย้ายไปยัง changes/archive/ พร้อมกับการประทับวันที่ ตอนนี้ specs ของคุณจึงอธิบายความเป็นจริงใหม่ และคุณก็พร้อมสำหรับการเปลี่ยนแปลงครั้งต่อไป วงจรได้ปิดลง

ภาพรวม ​

text
┌─────────────────────────────────────────────────────────────────┐
│                          openspec/                              │
│                                                                 │
│   ┌──────────────────┐         ┌──────────────────────────┐    │
│   │     specs/       │         │        changes/          │    │
│   │                  │ ◄─────  │                          │    │
│   │ source of truth  │  merge  │ one folder per change    │    │
│   │ how things work  │  on     │ proposal · design ·      │    │
│   │ today            │ archive │ tasks · delta specs      │    │
│   └──────────────────┘         └──────────────────────────┘    │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

สองโฟลเดอร์ specs/ คือสิ่งที่จริง changes/ คือสิ่งที่คุณกำลังเสนอ การเก็บถาว (Archiving) จะย้ายข้อเสนอให้กลายเป็นความจริง

ลูปที่คุณจะใช้งานจริง ​

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

text
/opsx:explore                   →  (optional) think it through with the AI first
/opsx:propose add-dark-mode     →  AI drafts proposal, specs, design, tasks
        (you read and adjust the plan)
/opsx:apply                     →  AI builds it, checking off tasks
/opsx:archive                   →  specs updated, change archived

เมื่อสงสัย ให้เริ่มต้นด้วยการสำรวจ (exploring) /opsx:explore เป็นคู่คิดในการคิดที่ไม่มีความเสี่ยงาน: มันจะอ่านโค้ดของคุณ วางทางเลือก และเปลี่ยนแนวคิดที่ไม่ชัดเจนให้กลายเป็นแผนที่เป็นรูปธรรมก่อนที่จะมี artifact ใดๆ เกิดขึ้น นี่คือยาแก้พิษที่ดีที่สุดสำหรับ AI ที่อาจสร้าง บางสิ่ง จาก prompt ที่คลุมเครือ คุณรู้แล้วว่าต้องการอะไรอย่างแน่นอนหรือไม่? ข้ามไปที่ /opsx:propose ได้เลย ไม่ว่าจะด้วยวิธีใด การสำรวจก็ยังคงอยู่ในโปรไฟล์เริ่มต้น ดังนั้นมันจึงมีอยู่เสมอ ดู Explore guide

สิ่งเหล่านี้คือคำสั่งสแลช (slash commands) ที่พิมพ์ในแชทของ AI assistant การตั้งค่า (openspec init) เกิดขึ้นในเทอร์มินัลของคุณ หากการแยกส่วนนี้เป็นเรื่องใหม่สำหรับคุณ โปรดอ่าน How Commands Work ก่อน เพราะเป็นจุดที่สร้างความสับสนมากที่สุด

"ตัวช่วยให้เกิดการทำงาน ไม่ใช่สิ่งกีดขวาง" ​

วลีนี้ปรากฏอยู่ทุกที่ใน OpenSpec ดังนั้นนี่คือความหมายของมันในแง่ที่เข้าใจง่าย

กระบวนการกำหนดสเปคแบบดั้งเดิมเป็นเหมือนน้ำตก: จบการวางแผน แล้วจึง ได้รับอนุญาตให้ดำเนินการ และการย้อนกลับนั้นเจ็บปวด OpenSpec ปฏิเสธสิ่งนี้ ลำดับ proposal → specs → design → tasks แสดงให้เห็นว่าอะไรที่ เป็นไปได้ ต่อไป ไม่ใช่สิ่งที่คุณ ถูกบังคับ ให้ทำต่อไป

ค้นพบระหว่างการดำเนินการว่าดีไซน์ผิดพลาดหรือไม่? แก้ไข design.md และทำต่อไป ตระหนักว่าขอบเขตควรเล็กลงหรือไม่? อัปเดต proposal สิ่งใดก็ไม่ถูกล็อก ความสัมพันธ์ (dependencies) มีอยู่เพื่อให้ AI มีบริบทที่จำเป็นเท่านั้น (คุณไม่สามารถเขียนงานที่ดีได้หากไม่มี specs เป็นพื้นฐาน) ไม่ใช่เพื่อจำกัดคุณ

จุดแข็งแกร่งที่นี่คือความซื่อสัตย์: งานจริงนั้นยุ่งเหยิงและเป็นแบบวนซ้ำ (iterative) และ OpenSpec ก็อนุญาตให้เป็นเช่นนั้น การแลกเปลี่ยนคือวินัย: เนื่องจากไม่มีสิ่งใดบังคับให้คุณเดินหน้า จึงขึ้นอยู่กับคุณที่จะต้องทำให้การเปลี่ยนแปลงนั้นมีจุดโฟกัสแทนที่จะปล่อยให้มันขยายตัวไประยะไกล คู่มือ Workflows มีนิสัยที่ดีสำหรับเรื่องนี้

ทำไม่อย่างไรจึงคุ้มค่ากับภาระที่เพิ่มขึ้นเล็กน้อยนี้ ​

ความจริงที่ตรงไปตรงมา: OpenSpec เพิ่มขั้นตอน คุณเขียนแผนสั้นๆ ก่อนการสร้าง แล้วคุณจะได้อะไรจากมัน?

  • คุณจะจับได้ว่ามีทิศทางที่ผิดก่อนที่จะทำให้คุณเสียค่าใช้จ่าย การแก้ไขความเข้าใจผิดใน proposal หนึ่งย่อหน้านั้นไม่มีค่าใช้จ่าย แต่การแก้ไขหลังจากที่ AI เขียนไปแล้ว 400 บรรทัดนั้นไม่ใช่
  • แผนและโค้ดยังคงอยู่ใน repository เดียวกัน หกเดือนต่อมา specs จะบอกคุณ (และเซสชัน AI ถัดไป) ว่าทำไมาระบบจึงทำงานแบบที่เป็นอยู่
  • การเปลี่ยนแปลงสามารถตรวจสอบได้ โฟลเดอร์การเปลี่ยนแปลงคือแพ็คเกจที่เรียบร้อย: อ่าน proposal กวาดดู delta ตรวจสอบ tasks ไม่ต้องขุดค้นจากประวัติแชท
  • มันเข้ากันได้กับ codebase ที่มีอยู่ Deltas หมายความว่าคุณสามารถระบุการเปลี่ยนแปลงสำหรับแอปพลิเคชัน 50,000 บรรทัดโดยไม่ต้องจัดทำเอกสารทั้งหมดก่อน

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

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

  • เพิ่งเริ่มต้น? Getting Started อธิบายการเปลี่ยนแปลงแรกแบบเต็มรูปแบบ
  • ยังไม่แน่ใจว่าจะสร้างอะไรดี? Explore First คือจุดเริ่มต้น
  • สับสนว่าคำสั่งทำงานที่ใด? How Commands Work
  • ต้องการฉบับเจาะลึกของทุกสิ่งที่กล่าวมาข้างต้นหรือไม่? Concepts
  • เรียนรู้จากตัวอย่าง? Examples & Recipes
  • ต้องการนิยามคำศัพท์ใดๆ หรือไม่? Glossary