Claude Code สำหรับการคลาดเคลื่อนของเอกสาร: ทำให้เอกสารสอดคล้องกับโค้ด
เรียนรู้การใช้ Claude Code เพื่อตรวจจับการคลาดเคลื่อนของเอกสาร เพื่อให้ README, เอกสาร API และ runbook สอดคล้องกับโค้ด โดยการสร้าง diffs และชี้จุดข้อขัดแย้ง

การคลาดเคลื่อนของเอกสารคืออะไร (และทำไมมันยังเกิดขึ้นต่อเนื่อง)
การคลาดเคลื่อนของเอกสาร (documentation drift) คือการแยกตัวอย่างช้า ๆ ระหว่างสิ่งที่เอกสารบอกกับสิ่งที่โค้ดทำจริง มันเริ่มจากความไม่ตรงเล็ก ๆ แล้วกลายเป็นความสับสนแบบ “เราแน่ใจว่ามันทำงานเมื่อเดือนก่อน”
ในทีมจริง ๆ ลักษณะของ drift จะเป็นแบบนี้: README บอกให้รันบริการด้วยคำสั่งเดียว แต่ตอนนี้ต้องมีตัวแปรสภาพแวดล้อมใหม่ที่จำเป็น เอกสาร API แสดง endpoint ที่มีฟิลด์ชื่อเก่าอยู่ Runbook บอกให้ on-call รีสตาร์ท "worker-a" แต่ตอนนี้กระบวนการถูกแยกเป็นสองบริการ
Drift เกิดขึ้นแม้ทีมจะมีเจตนาดี เพราะซอฟต์แวร์เปลี่ยนเร็วกว่าแนวทางการเขียนเอกสาร ผู้คนปล่อยฟีเจอร์ภายใต้แรงกดดัน ก็อปปี้ตัวอย่างเก่า หรือสมมติว่าใครสักคนจะมาอัปเดตเอกสารทีหลัง มันยังเติบโตเมื่อคุณมีหลายที่ที่ดูเหมือน "แหล่งความจริง": ไฟล์ README, อ้างอิง API, หน้า wiki ภายใน, ตั๋ว และความรู้ที่ตกทอดในทีม
ต้นทุนของปัญหามีความชัดเจน:
- การรับคนเข้าทีมเจอปัญหา (คนใหม่เสียเวลาติดตั้งหลายวัน)
- การปล่อยงานล้มเหลว (ขั้นตอนไม่ตรงกับคอนฟิกปัจจุบัน)
- ภาระฝ่ายสนับสนุนเพิ่มขึ้น (ผู้ใช้ทำตามคำสั่งที่ล้าสมัย)
- เหตุการณ์ลากยาว (runbook พาผู้ตอบเหตุการณ์ไปทางผิด)
การขัดเกลาการเขียนไม่แก้ปัญหา drift ถ้าข้อเท็จจริงผิด สิ่งที่ช่วยคือการปฏิบัติต่อเอกสารเหมือนสิ่งที่ตรวจสอบได้: เปรียบเทียบกับโค้ด คอนฟิก และผลลัพธ์จริง แล้วชี้จุดความขัดแย้งเมื่อเอกสารสัญญาพฤติกรรมที่โค้ดไม่มีแล้ว
ที่ที่เกิด drift: README, เอกสาร API และ runbook
Drift มักเกิดในเอกสารที่คนใช้เป็น "ข้อมูลอ้างอิงด่วน" พวกมันได้รับการอัปเดตครั้งเดียว แล้วโค้ดก็เดินหน้าต่อ เริ่มจากสามจุดนี้เพราะมีคำสัญญาที่ตรวจสอบได้ชัดเจน
README: ที่แรกที่ผู้ใช้รู้สึกเจ็บปวด
README ล้าสมัยเมื่อคำสั่งประจำวันเปลี่ยน มี flag ใหม่เพิ่มเข้ามา flag เก่าถูกเอาออก หรือชื่อ env var ถูกเปลี่ยน แต่ส่วนการตั้งค่ากลับยังแสดงความเป็นจริงแบบเก่า สมาชิกใหม่ก็จะก็อปปี้คำสั่งแล้วเจอข้อผิดพลาด คิดว่าโปรเจกต์เสีย
เวอร์ชันที่แย่ที่สุดคือ "เกือบถูก" หนึ่ง env var หายไปอาจเสียเวลามากกว่า README ที่เก่าไปทั้งหมด เพราะคนจะลองวิธีเล็ก ๆ ซ้ำ ๆ แทนที่จะตั้งคำถามกับเอกสาร
เอกสาร API: รูปร่างข้อมูลและตัวอย่างที่ไม่ตรง
เอกสาร API ล้าสมัยเมื่อฟิลด์ของคำขอหรือคำตอบเปลี่ยน แม้แต่การเปลี่ยนเล็ก ๆ (เปลี่ยนชื่อคีย์ ค่าเริ่มต้นต่างกัน headers ใหม่ที่ต้องการ) ก็ทำให้ไคลเอนต์พัง บ่อยครั้งรายชื่อ endpoint ถูกต้องแต่ตัวอย่างผิด ซึ่งเป็นสิ่งที่ผู้ใช้ก็อปไปใช้จริง
สัญญาณทั่วไป:
- ตัวอย่าง payload มีฟิลด์ที่เซิร์ฟเวอร์ไม่รับแล้ว
- ตัวอย่าง response แสดงรูปแบบข้อผิดพลาดหรือรหัสสถานะแบบเก่า
- ตารางพารามิเตอร์บอกว่าฟิลด์เป็นทางเลือกแต่ตอนนี้บังคับ
- หมายเหตุการยืนยันตัวตนยังพูดถึง headers หรือนิยามสโคปที่ใช้ไม่ได้แล้ว
- กฎการแบ่งหน้า การจัดเรียง หรือกรองไม่ตรงกับความเป็นจริง
Runbook: การคลาดเคลื่อนเงียบที่ทำให้เหตุการณ์ดังขึ้น
Runbook ล้าสมัยเมื่อขั้นตอนการดีพลอย, ย้อนกลับ หรือการปฏิบัติการเปลี่ยน เพียงคำสั่งที่ล้าสมัย ชื่อบริการผิด หรือเงื่อนไขก่อนทำขั้นตอนหายไป ก็สามารถเปลี่ยนการซ่อมให้กลายเป็นเวลาหยุดชะงัก
มันอาจจะ "ถูกแต่ว่าไม่ครบ": ขั้นตอนยังใช้ได้ แต่ข้ามการย้ายฐานข้อมูลใหม่ การล้างแคช หรือการสลับฟีเจอร์แฟล็ก นั่นคือเวลาที่ผู้ตอบเหตุการณ์ทำตาม runbook แต่ยังคงประหลาดใจ
วิธีใช้ Claude Code: diffs และการชี้ข้อขัดแย้ง
การใช้ Claude Code เพื่อตรวจจับ drift ได้ผลดีที่สุดเมื่อคุณปฏิบัติต่อเอกสารเหมือนโค้ด: เสนอแพตช์ขนาดเล็กที่ตรวจสอบได้และอธิบายเหตุผล แทนที่จะสั่งให้มัน "อัปเดต README" ให้ขอให้มันสร้าง diff เทียบกับไฟล์ที่ระบุ ผู้รีวิวจะเห็นก่อน/หลังชัดเจนและจับการเปลี่ยนแปลงที่ไม่ตั้งใจได้เร็ว
การตรวจ drift ที่ดีให้ผลสองอย่าง:
- diff ที่เล็กที่สุดเท่าที่จำเป็น
- รายงานข้อขัดแย้งที่ตรงไปตรงมาและเฉพาะเจาะจง: "เอกสารบอก X แต่รีโปแสดง Y"
ขอให้มีหลักฐาน ไม่ใช่ความเห็น
เมื่อคุณพิมพ์พรอมต์ ให้ขอหลักฐานจากรีโป: เส้นทางไฟล์และรายละเอียดเช่น routes, ค่า config หรือเทสต์ที่พิสูจน์พฤติกรรมปัจจุบัน
นี่คือรูปแบบพรอมต์ที่ช่วยให้มีหลักฐานรองรับ:
Check these docs for drift: README.md, docs/api.md, runbooks/deploy.md.
Compare them to the current repo.
Output:
1) Contradictions list (doc claim -> repo evidence with file path and line range)
2) Unified diffs for the smallest safe edits
Rules: do not rewrite sections that are still accurate.
ถ้า Claude บอกว่า "API ใช้ /v2" ให้มันสำรองด้วยการชี้ไปที่ router, OpenAPI spec, หรือ integration test ถ้ามันหาไม่ได้ ควรแจ้งว่าไม่พบหลักฐาน
กำหนดขอบเขตก่อนแก้ไข
Drift มักเริ่มจากการเปลี่ยนโค้ดครั้งเดียวที่กระทบเอกสารหลายที่ ให้ Claude กำหนดขอบเขตก่อน: มีอะไรเปลี่ยน ที่ไหนเปลี่ยน เอกสารไหนน่าจะพัง และการกระทำของผู้ใช้จะได้รับผลกระทบอย่างไร
ตัวอย่าง: คุณเปลี่ยนชื่อ env var จาก API_KEY เป็น SERVICE_TOKEN รายงานที่มีประโยชน์จะค้นหาทุกที่ที่ชื่อเก่าอยู่ (การตั้งค่า README, ตัวอย่าง API, ส่วนความลับใน runbook) แล้วสร้าง diff กระชับที่อัปเดตเฉพาะบรรทัดเหล่านั้นและคำสั่งตัวอย่างที่ตอนนี้จะผิดพลาดเท่านั้น
ตั้ง workflow ง่าย ๆ ก่อนจะพิมพ์พรอมต์ใด ๆ
ถ้าคุณชี้โมเดลไปที่ "เอกสารทั้งหมด" โดยไม่มีกฎ มันมักจะเขียนใหม่ทั้งเอกสารแล้วยังมีข้อเท็จจริงผิด แนะนำ workflow ง่าย ๆ ที่ทำให้การเปลี่ยนแปลงเล็ก ทำซ้ำได้ และรีวิวได้ง่าย
เริ่มจากชุดเอกสารหนึ่งชุด: README, อ้างอิง API หรือ runbook หนึ่งชุดที่คนใช้จริง การแก้ปัญหาในหนึ่งพื้นที่ครบวงจรจะสอนสัญญาณที่เชื่อถือได้ก่อนขยายผล
ตัดสินใจว่าต้นทางข้อมูลคือที่ไหน
เขียนสิ่งที่ชัดเจนเป็นคำธรรมดาว่าข้อเท็จจริงควรมาจากไหนสำหรับชุดเอกสารนั้น
- สำหรับ README: ผลลัพธ์ CLI help และแอปลักษณ์ตัวอย่างที่ทำงานได้
- สำหรับเอกสาร API: คำนิยาม router พร้อม integration tests
- สำหรับ runbooks: คอนฟิกการดีพลอยและการแจ้งเตือนที่กระตุ้นขั้นตอนนั้น
เมื่อคุณระบุแหล่งเหล่านี้แล้ว พรอมต์จะคมขึ้น: "เปรียบเทียบ README กับผลลัพธ์ CLI ปัจจุบันและค่าเริ่มต้นในคอนฟิก แล้วสร้างแพตช์"
เลือกผลลัพธ์ที่รีวิวเร็ว
ตกลงรูปแบบผลลัพธ์ก่อนให้ใครสักคนรันการเช็คครั้งแรก การผสมรูปแบบทำให้ยากที่จะเห็นว่าอะไรเปลี่ยนและทำไม
กฎง่าย ๆ:
- ขอ diff สำหรับทุกการเปลี่ยนแปลงเอกสาร พร้อมเหตุผลสั้นหนึ่งประโยค
- อนุญาตรายการข้อขัดแย้งสั้น ๆ เฉพาะเมื่อเครื่องมือไม่สามารถแนะนำคำที่ปลอดภัยได้
- เก็บ diff ให้จำกัดที่ไฟล์เดียวต่อการเปลี่ยนเมื่อเป็นไปได้
- ให้ความสำคัญกับตัวอย่างที่ล้มเหลว (คำสั่ง, คำขอ, ตัวอย่างโค้ด) มากกว่าการเขียนโดยรวม
นิสัยปฏิบัติ: เพิ่มบันทึกเล็ก ๆ ใน PR เอกสารว่า "Source of truth checked: routes + tests" เพื่อให้ผู้รีวิวรู้ว่าเปรียบเทียบกับอะไร นั่นทำให้การอัปเดตเอกสารจาก "ดูโอเค" เป็น "ตรวจสอบแล้วกับสิ่งจริง"
ขั้นตอนทีละขั้น: ทำให้เอกสารสอดคล้องกับโค้ดทุกการเปลี่ยนแปลง
ปฏิบัติต่อแต่ละการเปลี่ยนโค้ดเหมือนเป็นการสืบสวนเอกสาร จุดประสงค์คือจับข้อขัดแย้งเร็วและสร้างแพตช์เล็กที่ผู้รีวิวเชื่อถือได้
เริ่มโดยเลือกไฟล์ที่ต้องตรวจสอบชัดเจนและคำถามเกี่ยวกับ drift ที่ชัดเจน เช่น: "เราเปลี่ยน env vars, flags ของ CLI, เส้นทาง HTTP, หรือรหัสข้อผิดพลาดที่เอกสารยังพูดถึงหรือไม่?" ความเฉพาะเจาะจงช่วยให้โมเดลไม่เขียนใหม่ทั้งส่วน
จากนั้นให้ Claude Code ดึงข้อเท็จจริงแข็ง ๆ จากโค้ดก่อน ขอให้มันแสดงรายการเฉพาะเท่านั้น: คำสั่งที่ผู้ใช้รัน, endpoints และเมธอด, ฟิลด์ของคำขอและคำตอบ, คีย์คอนฟิก, env vars ที่บังคับ, และขั้นตอนปฏิบัติการที่อ้างอิงโดยสคริปต์หรือคอนฟิก ถ้าไม่พบ ให้ระบุว่า "not found" แทนการเดา
แล้วขอเทเบิลเปรียบเทียบง่าย ๆ: ข้อกล่าวหาในเอกสาร, สิ่งที่โค้ดแสดง, และสถานะ (match, mismatch, missing, unclear) นั่นช่วยให้การอภิปรายมีพื้นฐาน
หลังจากนั้นขอ unified diff ที่แก้ไขเล็กที่สุด บอกให้เปลี่ยนเฉพาะบรรทัดที่จำเป็นเพื่อแก้ความไม่ตรงกัน รักษาสไตล์เอกสารเดิม และหลีกเลี่ยงการเพิ่มคำสัญญาที่ไม่มีหลักฐานจากโค้ด
จบด้วยสรุปสำหรับผู้รีวิวสั้น ๆ: อะไรเปลี่ยน ทำไมเปลี่ยน และสิ่งที่ต้องตรวจสอบเป็นพิเศษ (เช่น env var ที่ถูกเปลี่ยนชื่อ หรือ header ที่ต้องเพิ่ม)
เอกสาร API: วิธีปฏิบัติในการยืนยัน endpoints และตัวอย่าง
เอกสาร API ล้าสมัยเมื่อโค้ดเปลี่ยนเงียบ ๆ: เส้นทางถูกเปลี่ยนชื่อ ฟิลด์กลายเป็นบังคับ หรือรูปแบบข้อผิดพลาดเปลี่ยน ผลลัพธ์คือการผสานระบบพังและเวลา debugging สูญเสียไป
กับ Claude Code เป้าหมายคือพิสูจน์ว่า API ทำอะไรจากรีโป แล้วชี้ความไม่ตรงกันในเอกสาร ขอให้มันดึง inventory จาก routing และ handlers (paths, methods, request และ response models) แล้วเปรียบเทียบกับสิ่งที่เอกสาร API อ้าง
ให้ความสำคัญกับสิ่งที่คนมักก็อปปี้: คำสั่ง curl, headers, payload ตัวอย่าง, status codes, และชื่อฟิลด์ ในพรอมต์เดียวให้ตรวจ:
- ข้อกำหนดการยืนยันตัวตน (headers, ประเภทโทเคน, endpoints สาธารณะ)
- พารามิเตอร์ pagination และค่าเริ่มต้น
- รหัสสถานะข้อผิดพลาดและรูปแบบ JSON
- พฤติกรรมการเวอร์ชัน (v1 เทียบกับ v2)
- ตัวอย่างตรงกับกฎการ validate ปัจจุบันหรือไม่
เมื่อพบความไม่ตรงกัน ให้ยอมรับเฉพาะ diffs ที่สามารถอ้างอิงหลักฐานจากโค้ดได้ (เช่น นิยาม route, พฤติกรรม handler, หรือสคีมา) นั่นช่วยให้แพตช์เล็กและตรวจทานได้
ตัวอย่าง: โค้ดตอนนี้คืน 201 บน POST /widgets และเพิ่มฟิลด์ name ที่เป็นบังคับ เอกสารยังแสดง 200 และละไว้ไม่กล่าวถึง name ผลลัพธ์ที่ดีจะชี้ทั้งสองความขัดแย้งและอัปเดตแค่รหัสสถานะและ JSON ตัวอย่างของ endpoint นั้น ทิ้งส่วนอื่นไว้เหมือนเดิม
Runbook: ลดเวลาหยุดชะงักจากขั้นตอนที่ล้าสมัย
Runbook ล้มเหลวในแบบที่มีต้นทุนสูงที่สุด: มันดูครบถ้วนแต่ขั้นตอนไม่ตรงกับระบบปัจจุบัน การเปลี่ยนเล็ก ๆ เช่น การเปลี่ยนชื่อ env var หรือคำสั่งดีพลอยใหม่ สามารถทำให้เหตุการณ์ยืดเยื้อเพราะผู้ตอบเหตุการณ์ทำตามคำสั่งที่ใช้ไม่ได้
ปฏิบัติต่อ runbook เหมือนโค้ด: ขอ diff เทียบกับรีโปปัจจุบันและต้องมีการชี้ข้อขัดแย้ง เปรียบเทียบกับสิ่งที่ระบบใช้ตอนนี้: สคริปต์, ค่าเริ่มต้นคอนฟิก, และเครื่องมือที่ใช้จริง
เน้นจุดล้มเหลวที่ทำให้เกิดการวนซ้ำมากที่สุดในเหตุการณ์:
- คำสั่งที่ระบุตรงกับสคริปต์และ flags ปัจจุบันหรือไม่?
- ค่า config "เริ่มต้น" ตรงกับที่แอปส่งมาหรือไม่?
- env vars และ secrets ที่จำเป็นถูกอ้างอิงโดยโค้ดและคอนฟิกดีพลอยหรือไม่?
- ขั้นตอนดีพลอยและ rollback ตรงกับเครื่องมือปล่อยเวอร์ชันปัจจุบันและการตั้งชื่อหรือไม่?
- ค่า "ที่รู้ว่าดี" (พอร์ต, โซน, timeouts) ยังตรงกับความจริงหรือไม่?
ยังให้เพิ่มการตรวจสอบด่วนและผลลัพธ์ที่คาดหวังเพื่อให้ผู้ตอบเหตุการณ์รู้ว่ากำลังไปถูกทางหรือไม่ การบอกว่า "ตรวจสอบว่าทำงานได้" ไม่พอ ให้ระบุสัญญาณที่คาดหวังอย่างชัดเจน (เช่น status line, version string, หรือผล health check)
ถ้าคุณสร้างและดีพลอยแอปบนแพลตฟอร์มอย่าง Koder.ai เรื่องนี้ยิ่งสำคัญเพราะ snapshot และ rollback ใช้ได้ก็ต่อเมื่อ runbook ระบุการดำเนินการที่ถูกต้องและสะท้อนเส้นทางการกู้คืนปัจจุบัน
ความผิดพลาดที่พบบ่อยซึ่งทำให้ drift แย่ลง
วิธีที่เร็วที่สุดในการสร้าง drift คือการมองเอกสารเป็น "งานเขียนสวยงาม" แทนที่จะเป็นชุดข้อกล่าวหาที่ต้องตรงกับโค้ด
ความผิดพลาดที่ทำให้การสอดคล้องหายไปเงียบ ๆ
การขอให้โมเดลเขียนใหม่ก่อนตรวจข้อขัดแย้งเป็นความผิดพลาดทั่วไป เมื่อข้ามการตรวจสอบข้อขัดแย้ง คุณอาจได้ข้อความที่ลื่นขึ้นแต่ยังบรรยายพฤติกรรมผิดเสมอ ให้เริ่มด้วยการถามว่าเอกสารอ้างว่าอะไร โค้ดทำอะไร และจุดไหนไม่ตรงกัน
อีกความผิดพลาดคือปล่อยให้โมเดลเดา หากพฤติกรรมไม่ปรากฏในโค้ด เทสต์ หรือคอนฟิก ให้ถือว่าเป็นไม่ทราบ คำว่า "อาจจะ" เป็นวิธีที่ README มักสัญญาเกินจริงและ runbook กลายเป็นนิยาย
ปัญหาเหล่านี้มักปรากฏในการอัปเดตประจำวัน:
- อัปเดตส่วนหนึ่งแต่ปล่อยให้ตัวอย่าง ข้อความแสดงข้อผิดพลาด และกรณีพิเศษยังเป็นของเดิม
- เปลี่ยนชื่อแนวคิดในที่เดียว (README) แต่ไม่เปลี่ยนในเอกสาร API, คีย์คอนฟิก, หรือ runbook
- แก้คำอธิบาย endpoint แต่ลืมตัวอย่าง request/response
- เปลี่ยนพฤติกรรมแต่ไม่อัปเดตค่าเริ่มต้นหรือหมายเหตุข้อจำกัด
- ผสานการแก้ไขเอกสารโดยไม่มีบรรทัดสั้น ๆ ว่า "ทำไมเปลี่ยน" ในสรุป diff
ตัวอย่างสั้น ๆ
handler เปลี่ยนจากคืน 401 เป็น 403 สำหรับโทเคนหมดอายุ และชื่อ header เปลี่ยนจาก X-Token เป็น Authorization ถ้าคุณแก้เฉพาะส่วน auth คุณอาจพลาดว่าตัวอย่าง API ยังแสดง header เก่า และ runbook ยังคอยดูว่าเกิด spike ของ 401
เมื่อคุณสร้าง diffs ให้เพิ่มบรรทัดสรุปการตัดสินใจสั้น ๆ เช่น: "Auth failures now return 403 to distinguish invalid vs missing credentials." นั่นป้องกันไม่ให้คนถัดไป "แก้" เอกสารกลับเป็นพฤติกรรมเก่า
คำถามที่พบบ่อย
What is documentation drift in plain terms?
Documentation drift คือเมื่อเอกสารของคุณค่อย ๆ ไม่ตรงกับสิ่งที่โค้ดทำจริง โดยปกติเริ่มจากการเปลี่ยนแปลงเล็กน้อย (เช่น ชื่อ env var ถูกเปลี่ยน, ฟิลด์ที่จำเป็นเพิ่มขึ้น, หรือรหัสสถานะเปลี่ยน) ที่ไม่ได้อัปเดตใน README, ตัวอย่าง API หรือ runbook
Why does documentation drift keep happening even on good teams?
เพราะโค้ดเปลี่ยนภายใต้ความกดดัน แต่เอกสารไม่ได้รับการบังคับใช้อย่างเคร่งครัด
สาเหตุที่พบบ่อย:
- ทีมส่งการแก้ไขโดยคิดว่า “คงมีคนอัปเดตเอกสารทีหลัง”
- ตัวอย่างถูกก็อปปี้ไปข้างหน้าแม้พฤติกรรมจะเปลี่ยนแล้ว
- มีแหล่งความจริงมากเกินไป (README, wiki, ตั๋ว, runbook เก่า ๆ)
Which docs should I check first for drift?
เริ่มจากเอกสารที่คนใช้ปฏิบัติตามจริง ๆ ไม่ใช่เอกสารที่เป็นแค่ “nice to have” ลำดับที่แนะนำ:
- การตั้งค่าและคำสั่งรันใน README (ปัญหา onboarding)
- ตัวอย่างในเอกสาร API (การแตกของการผสานระบบ)
- Runbooks (ความเสี่ยงต่อเหตุการณ์ฉุกเฉิน)
การแก้จุดเหล่านี้ก่อนลดความเสียหายได้มากที่สุด
Why doesn’t “rewriting the docs” fix drift?
เพราะการแต่งประโยคให้สวยไม่ได้ทำให้ข้อมูลถูกต้องเสมอไป Drift เกิดจากคำกล่าวที่ผิด
แนวทางที่ดีกว่า: พิจารณาเอกสารเป็นข้อความที่ทดสอบได้ เช่น “รันคำสั่งนี้”, “เรียก endpoint นี้”, “ตั้งตัวแปรนี้” แล้วตรวจสอบข้อกล่าวหาเหล่านั้นกับรีโป ปรับแต่งโค้ด และผลลัพธ์จริง
What should I ask Claude Code to produce when checking for drift?
ขอผลลัพธ์สองอย่าง:
- รายการข้อขัดแย้ง: doc claim → repo evidence (ระบุไฟล์และช่วงบรรทัด)
- unified diff แบบเล็กที่สุด: แก้ไขที่ปลอดภัยและจำนวนน้อยที่สุดเพื่อให้เอกสารเป็นจริง
และกำหนดว่า: ถ้ามันหาเอกสารยืนยันในรีโปไม่ได้ ต้องบอกว่า “not found” แทนการเดา
Why are diffs better than asking for a full updated document?
เพราะ diff ทำให้ผู้รีวิวเห็นการเปลี่ยนแปลงได้เร็ว การเปลี่ยนแบบย่อช่วยลดการเขียนใหม่ที่แฝงข้อกล่าวหาใหม่
ค่าเริ่มต้นที่ดี: หนึ่งไฟล์ต่อ diff เมื่อเป็นไปได้ และแต่ละการเปลี่ยนมีเหตุผลสั้น ๆ ผูกกับหลักฐานในรีโป
How do I stop the model from inventing details?
ให้มันอ้างหลักฐาน:
แนวปฏิบัติ:
- ทุกข้อกล่าวหาต้องรองรับด้วยแหล่งในรีโป (router, tests, ค่า config เริ่มต้น, ผลลัพธ์ CLI help)
- ถ้าไม่มีหลักฐานให้ระบุเป็น unclear หรือ unknown
- เปลี่ยนเอกสารให้ตรงกับพฤติกรรมที่ยืนยันได้ อย่าเปลี่ยนเป็นสิ่งที่ “ดูถูกต้อง” โดยเดา
What are the most common drift problems in API documentation?
เช็คส่วนที่ผู้คนมักก็อปปี้:
- รูปแบบ header และการยืนยันตัวตน (ประเภทโทเคน, สโคปที่ต้องการ)
- ตัวอย่าง request/response JSON (ชื่อฟิลด์, ฟิลด์ที่บังคับ)
- รหัสสถานะและรูปแบบข้อผิดพลาด
- ค่า pagination/filter เริ่มต้น
- การเวอร์ชัน (v1 vs v2)
ถ้ารายการ endpoint ถูกแต่ตัวอย่างผิด ผู้ใช้ก็ยังล้มเหลว—ให้ถือว่าตัวอย่างมีความสำคัญสูง
How do I keep runbooks from causing outages when they get stale?
Runbook ล้าสมัยเมื่อความเป็นจริงของการปฏิบัติการเปลี่ยนไป
ตรวจสอบจุดสำคัญ:
- คำสั่งและ flags ตรงกับสคริปต์/เครื่องมือปัจจุบันหรือไม่
- ชื่อบริการตรงกับสิ่งที่รันอยู่จริงหรือไม่
- env vars/secrets ที่ต้องการตรงกับ deploy config และโค้ดหรือไม่
- ขั้นตอน rollback ตรงกับกระบวนการปล่อยปัจจุบันหรือไม่
- แต่ละขั้นตอนมีสัญญาณตรวจสอบแบบรวดเร็ว (ผลลัพธ์ที่คาดหวัง, health check) หรือไม่
ถ้าผู้ตอบเหตุการณ์ตรวจสอบความคืบหน้าไม่ได้ พวกเขาจะเสียเวลาในเหตุการณ์
What’s a lightweight workflow to prevent drift from returning?
กฎง่าย ๆ “แหล่งความจริง” ต่อประเภทเอกสาร:
- README: ผลลัพธ์จาก CLI help ปัจจุบัน + เส้นทางการตั้งค่าที่ทำงานได้
- API docs: คำนิยาม router + integration tests
- Runbooks: deploy configs + สคริปต์ + alerts ที่กระตุ้นขั้นตอน
แล้วฝังเข้ากับ workflow: รันการตรวจ drift บนเอกสารที่ได้รับผลกระทบต่อ PR และเก็บการแก้ไขให้เล็กและตรวจทานได้ง่าย