2 คะแนน โดย GN⁺ 3 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • SimpleEnglish เป็น Agent Skill ที่ทำให้ LLM เขียนเอกสารเชิงเทคนิคที่สั้นและไม่กำกวม โดยให้สอดคล้องกับภาษาควบคุม ASD-STE100 ซึ่งใช้ในวงการอวกาศและการบินมาตั้งแต่ปี 1983
  • ใช้ กฎ 53 ข้อ เช่น จำกัดความยาวประโยค ใช้ active voice ใช้ tense แบบง่าย วางเงื่อนไขไว้ก่อน คำสั่งหนึ่งรายการต่อหนึ่งประโยค และรองรับเอกสาร ข้อความข้อผิดพลาด runbook รายงานเหตุการณ์ release note prompt และการเตรียมเอกสารก่อนแปล
  • ในการประเมิน 96 ครั้งที่เปรียบเทียบ Claude 6 โมเดลกับงาน 8 แบบ ภายใต้ 2 เงื่อนไข พบว่า การละเมิด STE ต่อ 100 คำลดลงเฉลี่ย 72.9% และทุกโมเดลใช้ output token น้อยลง
  • ติดตั้งได้โดยไม่ต้องมี dependency ใน Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI และเครื่องมืออื่นที่รองรับมาตรฐาน Agent Skills ส่วนสภาพแวดล้อมที่ไม่รองรับสามารถใช้เป็น system prompt หรือคำสั่งผู้ใช้ได้
  • ผลลัพธ์ไม่ใช่การรับรองอย่างเป็นทางการจาก ASD และไม่ใช้กับงานเขียนการตลาด บล็อก หรือสำนวนแบรนด์ โหมดพื้นฐานผสานกฎโครงสร้างกับคำศัพท์เฉพาะโดเมน ส่วนการตัดสินคำในโหมดเข้มงวดต้องใช้มาตรฐานทางการ

ปัญหาที่โปรเจกต์นี้แก้ไข

  • SimpleEnglish เป็น Agent Skill ที่เปลี่ยนประโยคของ LLM ที่มักเกินจริงและกำกวม ให้ใกล้เคียงกับประโยคเชิงเทคนิคแบบ ASD-STE100 Simplified Technical English
  • ASD-STE100 เป็นภาษาควบคุมที่ใช้ในวงการอวกาศและการบินมาตั้งแต่ปี 1983 เพื่อไม่ให้ช่างซ่อมบำรุงที่เหนื่อยล้าตีความคำสั่งผิด
  • ความแตกต่างระหว่างต้นฉบับที่ Claude สร้างกับผลลัพธ์หลังใช้ Skill อยู่ที่ความเฉพาะเจาะจงและความนำไปปฏิบัติได้
    • เปลี่ยนประโยคอย่าง “ซิงก์อย่างไร้รอยต่อโดยใช้สถาปัตยกรรมที่แข็งแกร่ง” ให้เป็นเนื้อหาว่าคัดลอกตาราง Postgres ไปยัง S3 และต้องใช้ไฟล์ตั้งค่า 1 ไฟล์
    • เปลี่ยนข้อความการเชื่อมต่อล้มเหลวแบบกว้าง ๆ ให้เป็นข้อผิดพลาดรหัสผ่านของผู้ใช้ app และแนวทางแก้ไข DB_PASSWORD
    • เปลี่ยนข้อความเหตุการณ์ที่บอกว่าอาจมีผลต่อผู้ใช้บางราย ให้เป็นเวลาที่ล้มเหลว, คำขอ 12% ล้มเหลว, สาเหตุจากการ deploy และเวลาที่ rollback
  • ตัวอย่างเปรียบเทียบเพิ่มเติมสำหรับ README, ข้อความข้อผิดพลาด, รายงานเหตุการณ์ และ release note อยู่ใน examples/before-after.md

การติดตั้งและสภาพแวดล้อมที่รองรับ

  • ทำงานได้ใน harness ประมาณ 25 รายการที่รองรับ มาตรฐาน Agent Skills เช่น Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI, Goose, OpenCode
  • โปรเจกต์นี้ประกอบด้วย โฟลเดอร์เดียว ไม่มี dependency ภายนอก และใช้ไลเซนส์ MIT
  • คำสั่งติดตั้งมีดังนี้
npx skills add AminBlg/SimpleEnglish
  • skills CLI จะตรวจจับ agent ที่ติดตั้งไว้ และติดตั้ง Skill ไปยังเป้าหมายที่ผู้ใช้เลือก
  • ก่อนติดตั้งสามารถทดลองด้วยคำสั่งนี้
npx skills use AminBlg/SimpleEnglish@simple-english
  • ในสภาพแวดล้อมที่ไม่รองรับ SKILL.md สามารถนำ prompts/system-prompt.md ไปใส่ใน system prompt, AGENTS.md, .cursorrules ได้
    • มีเวอร์ชันประมาณ 60 token สำหรับสภาพแวดล้อมที่มี token budget ต่ำด้วย
    • ใช้ได้โดยขอให้เขียนเอกสารเชิงเทคนิค หรือสั่งว่า “rewrite this with simple-english”

การใช้งานในสภาพแวดล้อมที่ไม่มีเทอร์มินัล

  • แผนเสียเงินของ Claude.ai รองรับ Skill เป็นค่าเริ่มต้น
    • บันทึก SKILL.md
    • เปิดใช้การรันโค้ดที่ Settings → Capabilities
    • อัปโหลดไฟล์ที่ Settings → Customize → Skills → Upload
    • เมื่อเปิด Skill แล้ว จะนำไปใช้กับคำขอเขียนเอกสารเชิงเทคนิค
  • ChatGPT ไม่รองรับ Skill จึงต้องใช้เวอร์ชัน prompt
    • นำบล็อกใน prompts/system-prompt.md ไปใส่ใน Settings → Personalization → Custom Instructions, Project หรือคำสั่งของ Custom GPT
  • ใน Gemini ให้สร้าง Gem แล้ววาง prompt เดียวกันลงในคำสั่ง
  • สำหรับแชตบอตอื่น ให้แนบไฟล์ prompt หรือวางเนื้อหา แล้วสั่งให้นำไปใช้กับ output ทั้งหมด

กฎการเขียนที่นำมาจาก ASD-STE100

  • Skill นำ กฎ 53 ข้อใน 9 หมวด ที่สร้างขึ้นในปี 1983 มาใช้กับเอกสารเชิงเทคนิค
  • กฎสำคัญมีดังนี้
    • จำกัดคำสั่งไม่เกิน 20 คำ และประโยคอธิบายไม่เกิน 25 คำ
    • ใช้คำหนึ่งคำให้มีความหมายเดียวทั่วทั้งเอกสาร เพื่อป้องกันการใช้คำอย่าง check, verify, confirm, validate ปนกัน
    • ใช้ tense แบบง่ายเท่านั้น และเขียนตรง ๆ ว่าใครอัปเดตอะไร แทน “has been updated”
    • ไม่ใช้รูปกริยา -ing และอนุประโยคเสริมที่เชื่อมกับรูปนั้น
    • ใช้ active voice เพื่อตัดสำนวนอ้อม ๆ อย่าง “it should be noted that”
    • ห้ามใช้ should, would, may, might แต่อนุญาต can, will, must
    • วางเงื่อนไขไว้ก่อนคำสั่ง เพื่อป้องกันไม่ให้ผู้ใช้อ่านเงื่อนไขช้าเกินไป
    • ใส่คำสั่งหนึ่งรายการต่อหนึ่งประโยค
    • คง article และ that ไว้ และไม่ทำให้ประโยคกลายเป็นสำนวนโทรเลขแม้จะสั้น
  • กฎการเขียนใหม่ทั้งหมด รวมถึงตัวอย่างด้านซอฟต์แวร์ อยู่ใน SKILL.md
  • งานการตลาดอยู่นอกขอบเขตของ STE จึงไม่ใช้กฎกับข้อความการตลาดใน README และ Skill นี้ใช้กับการเขียนเอกสารเท่านั้น

ขอบเขตการใช้งานนอกเหนือจากเอกสารเชิงเทคนิค

  • use-cases.md ให้กฎที่ปรับตามหลายรูปแบบ
    • ข้อความข้อผิดพลาด เขียนตามลำดับว่าเกิดอะไรขึ้น สาเหตุคืออะไร และผู้ใช้ต้องทำอะไร
    • runbook คล้ายคู่มือซ่อมบำรุง จึงใช้ STE ได้โดยตรง
    • รายงานเหตุการณ์ใช้ simple past เพื่อตัดถ้อยคำที่ไม่แน่นอนและเลี่ยงบาลี
    • การเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้ใน release note จัดเป็นคำเตือนที่เขียนคำสั่งก่อน แล้วจึงเขียนความเสี่ยง
    • AGENTS.md และ system prompt ถือเป็นขั้นตอนสำหรับผู้อ่านที่ถามกลับไม่ได้ และห้ามใช้ should ซึ่งโมเดลอาจตีความว่าเป็นทางเลือก
    • จัดเอกสารก่อนแปลให้อ่านง่ายสำหรับผู้ที่ไม่ใช่เจ้าของภาษา และลดต้นทุน localization
  • ข้อความการตลาด สำนวนบล็อก และงานเขียนแบรนด์ ไม่อยู่ในขอบเขต และสำนวนที่ราบเรียบเป็นคุณสมบัติที่ตั้งใจไว้

ผล benchmark

  • การประเมินรันงานเขียน 8 แบบบน Claude 6 โมเดล ทั้งก่อนและหลังใช้ Skill รวมเป็น ผลลัพธ์ที่สร้างขึ้น 96 รายการ
  • การละเมิด STE ต่อ 100 คำลดลงเฉลี่ยรวม 72.9%
    • claude-opus-4-8: ลดจาก 1.05 เป็น 0.62 ดีขึ้น 41%
    • claude-opus-4-7: ลดจาก 2.28 เป็น 0.42 ดีขึ้น 82%
    • claude-opus-4-6: ลดจาก 2.24 เป็น 0.40 ดีขึ้น 82%
    • claude-opus-4-5: ลดจาก 2.55 เป็น 0.57 ดีขึ้น 78%
    • claude-sonnet-5: ลดจาก 2.67 เป็น 0.53 ดีขึ้น 80%
    • claude-sonnet-4-6: ลดจาก 2.06 เป็น 0.52 ดีขึ้น 75%
  • ทุกโมเดลมี จำนวน output token ลดลง และความยาวประโยคเฉลี่ยลดจาก 11.2 คำเป็น 9.7 คำ
  • ใช้ regex linter แบบ deterministic ที่ใช้กฎเดียวกันกับทั้งสองเงื่อนไข วิธีการและข้อจำกัดทั้งหมดอยู่ใน evals/results/RESULTS.md
  • หากมี Claude Code CLI ที่ล็อกอินแล้ว สามารถทำซ้ำได้ด้วยคำสั่งนี้
python3 evals/run_bench.py

วิธีตรวจสอบกฎ

  • Skill นี้ไม่ได้สร้างจากบทสรุปบล็อก แต่พัฒนาด้วยแนวทาง test-driven โดยอ้างอิง ต้นฉบับ Issue 9 ปี 2025
  • agent อ้างอิงที่ไม่มี Skill เขียนประโยค 40 คำ และบางครั้งสร้างหมายเลขกฎที่ไม่มีอยู่จริง
    • ผลลัพธ์หนึ่งอ้างกฎประโยคสั้นว่า “Rule 3.1” แต่ Rule 3.1 จริงเกี่ยวกับรูปกริยา
  • ต่างจากแหล่งข้อมูลรองบางแห่ง PDF ทางการอนุญาตให้ใช้ can และ will
  • หลังเขียน Skill เพื่อป้องกันความล้มเหลวของ baseline ที่บันทึกไว้ทีละข้อแล้ว ก็ทดสอบซ้ำจน agent ผ่าน สถานการณ์และผลลัพธ์อยู่ใน evals/pressure-tests.md

ข้อจำกัดการใช้งานและสถานะของมาตรฐาน

  • ผลลัพธ์ ไม่ใช่เอกสารที่ได้รับการรับรอง STE
    • ASD ไม่รับรองเครื่องมือใด ๆ
    • โหมดพื้นฐานผสานกฎโครงสร้างกับคำศัพท์เฉพาะโดเมนของผู้ใช้
    • โหมดเข้มงวดเข้าใกล้มาตรฐานมากขึ้น แต่การตัดสินรายคำต้องใช้ มาตรฐานทางการ
  • ผลลัพธ์เขียนให้ราบเรียบเหมือนคู่มือ Airbus และตีความผิดได้ยาก โดยออกแบบให้เก็บสำนวนที่มีเอกลักษณ์ไว้ใช้กับงานอื่น เช่น บล็อก
  • ต่างจากคำสั่งเชิงอัตวิสัยอย่าง “เขียนให้ชัดเจน” คำสั่ง “เขียนประโยคไม่เกิน 20 คำ” เป็น สเปกที่ตรวจสอบได้ agent จึงทำตามได้
  • ASD-STE100 เป็นมาตรฐานที่มีอายุมากกว่า 40 ปี แต่ยังได้รับการดูแลและอัปเดตจนถึง Issue 9 ในเดือนมกราคม 2025 มีหมายเลขกำกับ และทดสอบได้

ไลเซนส์และสถานะไม่เป็นทางการ

  • repository ทั้งหมดเผยแพร่ภายใต้ ไลเซนส์ MIT
  • มีการเขียนกฎใหม่เพื่อการศึกษา และไม่คัดลอกถ้อยคำของสเปกทางการหรือเนื้อหาพจนานุกรม
  • โปรเจกต์นี้ไม่ได้เป็นพันธมิตรกับหรือได้รับอนุมัติจาก ASD หรือ STEMG และ ASD-STE100 เป็นเครื่องหมายการค้าจดทะเบียนของ ASD

1 ความคิดเห็น

 
GN⁺ 3 시간 전
ความคิดเห็นบน Hacker News
  • แค่เติมประโยค “เขียนใหม่เป็นภาษาอังกฤษเชิงเทคนิคแบบย่อ ASD-STE100” ไว้หน้าตัวอย่างหนึ่ง ก็ได้ผลลัพธ์ที่ดีพอแล้ว น่าจะใช้คำสั่งแค่หนึ่งหรือสองประโยคก็พอ เลยสงสัยว่าทำไมต้องมีสกิลขนาดใหญ่ ทั้งที่ ASD-STE100 น่าจะรวมอยู่ในข้อมูลฝึกอยู่แล้ว

    • เข้าใจความคาดหวังที่ว่าโมเดลควรนำความรู้จากการฝึกล่วงหน้ามาใช้เอง แต่ดูเหมือนว่าในขั้นตอนการฝึกช่วงหลัง ข้อมูลฝึกล่วงหน้า จะปะปนกันค่อนข้างมาก
  • ผมทำสกิลสำหรับใช้ The Economist style guide กับประโยคที่ LLM สร้างไว้: https://github.com/TAJD/economist-style-guide-plugin
    มันช่วยสร้างงานเขียนที่มีโครงสร้างค่อนข้างดีและแก้ไขง่าย

  • เป็นเนื้อหาเกี่ยวกับ การใช้ STE ผิดวิธีและการนำไปใช้ที่จำกัด: https://en.wikipedia.org/wiki/Simplified_Technical_English#M...

    • ประโยคในเอกสารวิจารณ์ที่ว่า “การเขียน STE ให้ถูกต้องต้องมีความสามารถทางภาษาอังกฤษที่ยอดเยี่ยมและมีความรู้เพียงพอในหัวข้อนั้น” น่าประทับใจ ซึ่งจริง ๆ แล้วนี่ก็เป็นเงื่อนไขที่จำเป็นสำหรับ การเขียนภาษาอังกฤษที่ดี ในทุกสาขาอยู่แล้ว ไม่ว่าจะใช้ STE หรือไม่ก็ตาม
    • LLM แปลภาษาได้ดี จึงควรเก่งเป็นพิเศษกับการเขียนแบบนี้ ที่จริงช่วงสัปดาห์ที่ผ่านมา ผมลองใช้กับทุกพรอมป์แล้ว พบว่ามันช่วยตัดความเยิ่นเย้อของสำนวนได้ดี และไม่เห็น คำขยายซ้ำซ้อน ที่มากเกินไปเลย
  • ชอบไอเดียนี้ แต่ยังไม่มั่นใจในตัวสกิลเอง อย่างไรก็ตาม ได้พบ https://vale.sh กับลินเตอร์หลายตัว เลยคิดว่าจะลองทดสอบดู

    • STE อยู่ในข้อมูลฝึกอยู่แล้ว ดังนั้นสกิลนี้จึง ซ้ำซ้อน และมีแต่ทำให้ context window ปนเปื้อน
    • อยากรู้ว่าจะใช้ Vale ในงานทำเอกสารด้วย LLM ได้อย่างไร
  • ดูเหมือนว่ามันพยายามทำหลายอย่างเกินไป และแค่ system prompt หนึ่งบรรทัดก็น่าจะทำงานได้ดีพอ: “โทเคนขาออกมีค่า จงตอบให้กระชับ และใช้ ภาษาอังกฤษเชิงเทคนิคแบบย่อ ASD-STE100

    • อยากรู้ว่าในทางปฏิบัติจะทำงานได้ดีต่อเนื่องจริงไหม แม้จะเพิ่มกฎไว้ในโปรไฟล์ผู้ใช้และ CLAUDE.md สุดท้ายโมเดลก็ยังหลุดราง แล้วใส่ศัพท์เทคนิคเต็มไปหมดใน docstring และคำอธิบาย
      ถ้ามีวิธีใดที่ทำให้คำอธิบายโค้ดง่ายและเรียบขึ้นได้ ก็พร้อมจะลองทั้งหมด ดังนั้นจึงคาดหวังกับสิ่งนี้เหมือนกัน
  • น่าขันตรงที่ตั้งแต่ README ก็เห็น สำนวนแบบ LLM ชัดเจน เช่น “9 หมวด 53 กฎ ที่เขียนขึ้นในปี 1983 โดยคนซึ่งผู้อ่านของพวกเขาอาจตายได้เพราะประโยคกำกวมเพียงประโยคเดียว” นี่ไม่ใช่สัญญาณที่ดีนักสำหรับสกิลด้านการเขียน

    • เขายอมรับเรื่องนี้อยู่ แต่ผมไม่ชอบสำนวนของ README จริง ๆ ประมาณว่า “README นี้ละเมิดกฎไปครึ่งหนึ่ง แต่การตลาดอยู่นอกขอบเขตของ STE อย่างชัดเจน และสกิลรู้เรื่องนี้จึงอยู่ภายในเอกสาร”, “ปฏิเสธข้อความการตลาด สไตล์บล็อก และงานเขียนเชิงแบรนด์ แล้วเขียนให้เรียบโดยตั้งใจ”
      แต่ละประโยคยังมีอีโมจิที่ถูกลบออกจาก HN ติดอยู่ด้วย
    • หลังจากลองใช้พรอมป์ ASD-STE100 แบบธรรมดาอยู่พักหนึ่ง ผมชอบภาษาอังกฤษแบบย่อของเอเจนต์มากขึ้นเล็กน้อย แต่มันยังเปลี่ยน โครงสร้างโดยรวม ของบทความไม่ได้
      ประโยคสั้นลง บทนำที่โอ้อวดและหัวข้อว่างเปล่าเหมือนสไลด์พรีเซนต์ลดลง ทำให้คุณภาพดีขึ้นมาก แต่ก็ยังไม่ถึงขั้นก้าวกระโดด และไม่ได้แก้ปัญหาได้หมด
    • README ดูกระชับและแม่นยำ และเมื่อทดสอบเองก็ทำงานได้ดี ดีกว่า README ที่เขียนโดยคนจำนวนมากที่ผมเห็นรอบตัว
  • ตัวอย่างแรกของมาตรฐาน Issue 9 ก็ขัดแย้งในตัวเองแล้ว Test ได้รับอนุมัติให้เป็นคำนาม แต่ไม่ได้รับอนุมัติให้เป็นคำกริยา ทว่าในตัวอย่าง STE กลับเขียนว่า “Test B is an alternative to test A”
    ถ้าไม่รู้ กฎเฉพาะของ STE ประโยคนี้กำกวมอย่างชัดเจนและห่างไกลจากความชัดเจน เว็บไซต์ทางการซ่อนการดาวน์โหลดไว้หลัง Google Form จึงทิ้งลิงก์ที่ดาวน์โหลดได้โดยตรงไว้ด้วย: https://www.asd-ste100.org/assets/files/ASD-STE100_ISSUE9.pd...

    • ไม่เห็นว่ากำกวมตรงไหน ถ้าจะอ่าน Test ตัวแรกเป็นคำกริยา ก็ต้องถือว่าใน “ทดสอบว่า B เป็นทางเลือกแทน A หรือไม่” มีการละ that ไว้ แต่ตรงแรกเป็นคำกริยา ส่วนตรงหลังเป็นคำนาม ทำให้ ความขนานทางไวยากรณ์เสียไป
      อีกทั้งการตีความว่าเป็นการสั่งให้ใครทำเช่นนั้นเองก็มีความเป็นไปได้น้อยมาก
  • สงสัยว่าเหตุผลที่ ASD-STE100 กลับมาเป็นที่สนใจกะทันหันเพราะทวีตไวรัลหรือเปล่า ได้ยินจากเพื่อนแล้วผมโพสต์สเปกไว้เมื่อไม่กี่วันก่อน: https://asd-web-be-prod.azurewebsites.net/media/wunhmi5y/asd...
    PDF ถูกห้ามคัดลอก ทั้งที่หลบเลี่ยงได้ง่าย เลยสงสัยว่าทำไมถึงทำแบบนั้น ถ้าต้องการบล็อกคำที่ไม่อนุญาต ก็ควรมีลินเตอร์คล้าย ruff สำหรับภาษาอังกฤษ ไม่เช่นนั้นเอเจนต์แทบจะแน่นอนว่าจะลืมคำสั่งบรรทัดเดียว

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

    • น่าจะควรทำเป็น เลเยอร์หลังประมวลผล มากกว่าการให้เป็นคำสั่ง
  • ใน https://youtu.be/uJblcC4lKYw มีการเปรียบเทียบและประเมินสกิล/พรอมป์หลายแบบ เช่น สกิล STE กับ กฎการเขียน 6 ข้อของ George Orwell และโดยรวม Orwell ให้ผลลัพธ์ดีที่สุด
    โทเคนที่เพิ่มเข้าไปใน input context ก็ไม่มาก และเมื่อเทียบพรอมป์สำหรับร้อยแก้วที่ใช้กฎนี้กับแบบที่ไม่ใช้ ผมชอบผลลัพธ์ที่ได้ เนื้อหาคือให้หลีกเลี่ยงอุปมาอุปไมยที่คุ้นเคย ถ้าคำสั้นใช้ได้ก็อย่าใช้คำยาว ตัดคำที่ตัดได้ออก ใช้ประโยคกรรตุวาจาแทนกรรมวาจก ถ้ามีคำทั่วไปให้หลีกเลี่ยงคำต่างประเทศ คำวิทยาศาสตร์ หรือศัพท์เฉพาะ และถ้าจะต้องเขียนประโยคป่าเถื่อน ก็ให้ยอมแหกกฎเหล่านี้เสีย

    • ไม่รู้ว่าเพราะอ่านงานเขียน AI มากเกินไปหรือเปล่า แต่สคริปต์เสียงบรรยายในวิดีโอก็ฟังเหมือนเขียนโดย Claude ที่ไม่ได้ใช้กฎนี้เลย
      มีวลีสำเร็จรูปและสำนวนเฉพาะแบบ AI มากเกินไป เช่น “พูดกันตรง ๆ การปรับปรุงด้านการแปลมีจริงแต่เล็กน้อย”, “ตอนนี้คือส่วนที่ต้องพูดตรง ๆ”, “โรคเดียวกัน แต่อาการต่างกัน”, “ตัวเลข 3% อันโหดร้ายนั้นไม่ใช่กฎธรรมชาติ แต่เป็นคุณลักษณะของ Claude”