2 điểm bởi GN⁺ 2 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • SimpleEnglish là một Agent Skill buộc LLM viết tài liệu kỹ thuật ngắn gọn, không mơ hồ theo ngôn ngữ kiểm soát ASD-STE100, vốn được dùng trong ngành hàng không vũ trụ từ năm 1983
  • Công cụ này áp dụng 53 quy tắc như giới hạn độ dài câu, thể chủ động, thì đơn, đặt điều kiện trước, một chỉ dẫn cho mỗi câu, đồng thời hỗ trợ tài liệu, thông báo lỗi, runbook, báo cáo sự cố, ghi chú phát hành, prompt và chuẩn bị dịch
  • Trong 96 lượt đánh giá so sánh 6 mô hình Claude trên 8 tác vụ dưới 2 điều kiện, số vi phạm STE trên mỗi 100 từ giảm trung bình 72,9%, và số token đầu ra cũng giảm ở mọi mô hình
  • Có thể cài đặt không phụ thuộc trong Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI và các công cụ khác hỗ trợ tiêu chuẩn Agent Skills; ở môi trường chưa hỗ trợ, có thể áp dụng qua system prompt hoặc chỉ dẫn người dùng
  • Kết quả không phải chứng nhận chính thức của ASD, và không áp dụng cho marketing, blog hay văn phong thương hiệu. Chế độ mặc định kết hợp quy tắc cấu trúc với từ vựng miền, còn việc đánh giá từ ngữ ở chế độ nghiêm ngặt cần tiêu chuẩn chính thức

Vấn đề mà dự án giải quyết

  • SimpleEnglish là một Agent Skill biến các câu văn cường điệu và mơ hồ do LLM tạo ra thành câu kỹ thuật gần với ASD-STE100 Simplified Technical English
  • ASD-STE100 là một ngôn ngữ kiểm soát đã được dùng trong lĩnh vực hàng không vũ trụ từ năm 1983 để kỹ thuật viên bảo trì đang mệt không hiểu sai chỉ dẫn
  • Khác biệt giữa văn bản gốc do Claude tạo và kết quả áp dụng Skill nằm ở tính cụ thể và khả năng thực thi
    • Câu “tận dụng kiến trúc vững chắc để đồng bộ liền mạch” được đổi thành nội dung sao chép bảng Postgres sang S3 và cần một tệp cấu hình
    • Thông báo lỗi kết nối chung chung được đổi thành lỗi mật khẩu của người dùng app và hành động sửa DB_PASSWORD
    • Câu mô tả sự cố rằng có thể đã ảnh hưởng đến người dùng không xác định được đổi thành thời điểm lỗi, 12% yêu cầu thất bại, nguyên nhân triển khai và thời điểm rollback
  • Có thêm các ví dụ so sánh cho README, thông báo lỗi, báo cáo sự cố và ghi chú phát hành tại examples/before-after.md

Cài đặt và môi trường hỗ trợ

  • Hoạt động trên khoảng 25 harness như Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI, Goose, OpenCode... có hỗ trợ tiêu chuẩn Agent Skills
  • Dự án chỉ gồm một thư mục, không có phụ thuộc ngoài và dùng giấy phép MIT
  • Lệnh cài đặt như sau
npx skills add AminBlg/SimpleEnglish
  • skills CLI phát hiện agent đã cài và cài Skill vào đích mà người dùng chọn
  • Có thể thử trước khi cài bằng lệnh sau
npx skills use AminBlg/SimpleEnglish@simple-english
  • Trong môi trường không hỗ trợ SKILL.md, có thể đưa prompts/system-prompt.md vào system prompt, AGENTS.md hoặc .cursorrules
    • Cũng có phiên bản khoảng 60 token cho môi trường có ngân sách token nhỏ
    • Có thể dùng bằng cách yêu cầu viết tài liệu kỹ thuật hoặc chỉ dẫn “rewrite this with simple-english”

Sử dụng trong môi trường không có terminal

  • Gói trả phí Claude.ai hỗ trợ Skill sẵn
    • Lưu SKILL.md
    • Bật thực thi mã tại Settings → Capabilities
    • Tải tệp lên tại Settings → Customize → Skills → Upload
    • Khi bật Skill, nó sẽ được áp dụng cho các yêu cầu viết tài liệu kỹ thuật
  • ChatGPT không hỗ trợ Skill, nên dùng bản prompt
    • Đưa khối trong prompts/system-prompt.md vào Settings → Personalization → Custom Instructions, Project hoặc chỉ dẫn của Custom GPT
  • Trong Gemini, tạo Gem rồi dán cùng prompt đó vào phần chỉ dẫn
  • Với chatbot khác, đính kèm tệp prompt hoặc dán nội dung rồi chỉ dẫn áp dụng cho mọi đầu ra

Quy tắc viết lấy từ ASD-STE100

  • Skill áp dụng 53 quy tắc trong 9 mục được tạo ra năm 1983 cho tài liệu kỹ thuật
  • Các quy tắc chính như sau
    • Câu chỉ dẫn tối đa 20 từ, câu giải thích tối đa 25 từ
    • Trong toàn bộ tài liệu, mỗi từ chỉ dùng với một nghĩa để tránh lẫn lộn giữa các cách diễn đạt như check, verify, confirm, validate
    • Chỉ dùng thì đơn, và viết trực tiếp ai đã cập nhật cái gì thay vì “has been updated”
    • Không dùng dạng động từ -ing và các mệnh đề phụ gắn với nó
    • Dùng thể chủ động để bỏ các cách diễn đạt gián tiếp như “it should be noted that”
    • Cấm should, would, may, might, nhưng cho phép can, will, must
    • Đặt điều kiện trước mệnh lệnh để người dùng không đọc điều kiện quá muộn
    • Mỗi câu chỉ chứa một chỉ dẫn
    • Giữ mạo từ và that, không biến câu thành kiểu điện tín dù có ngắn
  • Toàn bộ quy tắc diễn đạt lại, bao gồm ví dụ phần mềm, có trong SKILL.md
  • Vì marketing nằm ngoài phạm vi áp dụng STE, các câu marketing trong README không áp dụng các quy tắc này, và Skill cũng chỉ áp dụng cho việc viết tài liệu

Phạm vi áp dụng ngoài tài liệu kỹ thuật

  • use-cases.md cung cấp quy tắc cho nhiều định dạng khác nhau
    • Thông báo lỗi được viết theo thứ tự: điều gì đã xảy ra, nguyên nhân, người dùng cần làm gì
    • Runbook tương tự sổ tay bảo trì nên áp dụng STE trực tiếp
    • Báo cáo sự cố dùng quá khứ đơn để bỏ cách diễn đạt mơ hồ và vòng vo
    • Các thay đổi breaking trong ghi chú phát hành được cấu thành như cảnh báo: mệnh lệnh trước, rủi ro sau
    • AGENTS.md và system prompt được xem là quy trình cho độc giả không thể đặt câu hỏi, nên cấm should vì mô hình có thể hiểu là tùy chọn
    • Tài liệu được chỉnh trước khi dịch thành dạng dễ đọc cho người không phải bản ngữ và giảm chi phí bản địa hóa
  • Không áp dụng cho câu chữ marketing, văn phong blog, viết lách thương hiệu, và việc giọng văn phẳng là đặc tính có chủ đích

Kết quả benchmark

  • Trong đánh giá, 6 mô hình Claude thực hiện 8 tác vụ viết trước và sau khi áp dụng Skill, đo tổng cộng 96 kết quả sinh
  • Vi phạm STE trên mỗi 100 từ giảm trung bình 72,9% trên toàn bộ
    • claude-opus-4-8: giảm từ 1.05 xuống 0.62, cải thiện 41%
    • claude-opus-4-7: giảm từ 2.28 xuống 0.42, cải thiện 82%
    • claude-opus-4-6: giảm từ 2.24 xuống 0.40, cải thiện 82%
    • claude-opus-4-5: giảm từ 2.55 xuống 0.57, cải thiện 78%
    • claude-sonnet-5: giảm từ 2.67 xuống 0.53, cải thiện 80%
    • claude-sonnet-4-6: giảm từ 2.06 xuống 0.52, cải thiện 75%
  • Ở mọi mô hình, số token đầu ra đều giảm, và độ dài câu trung bình giảm từ 11,2 từ xuống 9,7 từ
  • Dùng một regex linter tất định áp dụng cùng quy tắc cho cả hai điều kiện, còn toàn bộ phương pháp và giới hạn được mô tả tại evals/results/RESULTS.md
  • Chỉ cần Claude Code CLI đã đăng nhập là có thể tái lập bằng lệnh sau
python3 evals/run_bench.py

Cách kiểm chứng quy tắc

  • Skill được xây dựng theo cách test-driven dựa trên nguyên bản Issue 9 năm 2025, không phải bản tóm tắt blog
  • Agent chuẩn không có Skill có thể viết câu dài 40 từ và thậm chí tạo ra số quy tắc không tồn tại
    • Một kết quả đã viện dẫn quy tắc câu ngắn là “Rule 3.1”, nhưng thực tế Rule 3.1 là quy tắc về dạng động từ
  • Không giống một số tài liệu thứ cấp, PDF chính thức cho phép canwill
  • Sau khi ghi nhận từng lỗi của baseline, tác giả viết Skill để chặn từng lỗi một rồi kiểm thử lại cho đến khi agent vượt qua; các kịch bản và kết quả có trong evals/pressure-tests.md

Giới hạn áp dụng và trạng thái tiêu chuẩn

  • Kết quả tạo ra không phải tài liệu được chứng nhận STE
    • ASD không chứng nhận bất kỳ công cụ nào
    • Chế độ mặc định kết hợp quy tắc cấu trúc với từ vựng miền của người dùng
    • Chế độ nghiêm ngặt gần với tiêu chuẩn hơn, nhưng việc đánh giá theo từng từ cần tiêu chuẩn chính thức
  • Kết quả được viết theo kiểu phẳng và khó hiểu sai như sổ tay của Airbus, và được thiết kế để dành văn phong có cá tính cho mục đích khác như blog
  • Khác với chỉ dẫn chủ quan kiểu “hãy viết rõ ràng”, yêu cầu “hãy viết câu không quá 20 từ” là đặc tả có thể kiểm chứng nên agent có thể tuân theo
  • ASD-STE100 là tiêu chuẩn hơn 40 năm tuổi, nhưng vẫn được duy trì và cập nhật đến Issue 9 tháng 1/2025, có đánh số và có thể kiểm thử

Giấy phép và vị thế không chính thức

  • Toàn bộ kho mã được cung cấp theo giấy phép MIT
  • Dự án diễn đạt lại các quy tắc cho mục đích giáo dục và không sao chép câu chữ đặc tả chính thức hay nội dung từ điển
  • Đây không phải dự án liên kết hay được ASD hoặc STEMG phê duyệt, và ASD-STE100 là nhãn hiệu đã đăng ký của ASD

1 bình luận

 
Các ý kiến trên Hacker News
  • Chỉ cần thêm câu “hãy viết lại bằng tiếng Anh kỹ thuật giản lược ASD-STE100” vào trước một ví dụ là đã cho kết quả khá ổn. Có lẽ chỉ cần một hai câu hướng dẫn là đủ, nên tôi thắc mắc vì sao lại cần một skill khổng lồ, trong khi ASD-STE100 rất có khả năng đã nằm trong dữ liệu huấn luyện

    • Tôi hiểu kỳ vọng rằng mô hình phải tự biết tận dụng kiến thức tiền huấn luyện, nhưng có vẻ ở các giai đoạn huấn luyện về sau, dữ liệu tiền huấn luyện bị trộn lẫn khá nhiều
  • Tôi đã tạo một skill áp dụng hướng dẫn phong cách của The Economist cho câu do LLM sinh ra: https://github.com/TAJD/economist-style-guide-plugin
    Nó tạo ra văn bản có cấu trúc tương đối tốt và dễ biên tập

  • Đây là nội dung về việc dùng sai STE và mức độ áp dụng hạn chế: https://en.wikipedia.org/wiki/Simplified_Technical_English#M...

    • Câu trong tài liệu phê bình rằng “để viết đúng bằng STE, cần có trình độ tiếng Anh xuất sắc và đủ kiến thức về chủ đề đó” rất ấn tượng. Đây đơn giản là điều kiện cần để viết tiếng Anh tốt trong mọi lĩnh vực, bất kể có dùng STE hay không
    • LLM dịch thuật tốt, nên lẽ ra phải đặc biệt giỏi kiểu viết này. Thực tế, trong tuần qua tôi đã áp dụng vào mọi prompt và thấy nó hiệu quả trong việc loại bỏ sự rườm rà của văn phong; tôi cũng không hề thấy tình trạng diễn đạt bổ nghĩa trùng lặp quá mức
  • Tôi thích ý tưởng này nhưng chưa tin chắc vào chính skill đó. Thay vào đó, tôi đã tìm thấy https://vale.sh và vài linter khác, nên định thử nghiệm

    • STE đã có trong dữ liệu huấn luyện, vì vậy skill này là trùng lặp và chỉ làm nhiễu cửa sổ ngữ cảnh
    • Tôi tò mò có thể tận dụng Vale như thế nào trong công việc viết tài liệu bằng LLM
  • Có vẻ nó làm quá nhiều việc; một dòng system prompt là đủ để hoạt động khá tốt: “Token đầu ra rất quý, hãy trả lời ngắn gọn và dùng tiếng Anh kỹ thuật giản lược ASD-STE100

    • Tôi tò mò liệu nó có thật sự tiếp tục hoạt động tốt không. Dù đã thêm quy tắc vào hồ sơ người dùng và CLAUDE.md, cuối cùng mô hình vẫn đi chệch hướng và nhồi đầy docstring cùng phần giải thích bằng thuật ngữ kỹ thuật chuyên môn
      Tôi sẵn sàng thử bất cứ cách nào giúp phần giải thích mã dễ hiểu và đơn giản hơn, nên cũng kỳ vọng vào cách này
  • Thật mỉa mai là ngay từ README đã lộ rõ văn phong đặc trưng của LLM, kiểu “9 mục, 53 quy tắc được viết năm 1983 bởi những người mà chỉ một câu mơ hồ cũng có thể khiến độc giả thiệt mạng”. Đây không phải tín hiệu mấy hứa hẹn cho một skill viết lách

    • Họ có thừa nhận điều này, nhưng tôi thật sự không thích văn phong của README. Kiểu như: “README này vi phạm một nửa số quy tắc, nhưng marketing nằm ngoài phạm vi STE một cách rõ ràng, còn skill biết điều đó và ở trong phạm vi tài liệu”, “nó từ chối câu chữ marketing, phong cách blog và lối viết thương hiệu, đồng thời cố ý viết phẳng”
      Mỗi câu còn có emoji kèm theo, đã bị HN loại bỏ
    • Sau khi dùng prompt ASD-STE100 thông thường một thời gian, tôi thích tiếng Anh giản lược của agent hơn một chút, nhưng nó không thay đổi được cấu trúc tổng thể của bài viết
      Câu ngắn hơn, các đoạn mở đầu cường điệu hoặc tiêu đề mục rỗng tuếch như slide thuyết trình giảm đi, nên chất lượng cải thiện đáng kể; nhưng không mang tính đột phá và cũng không giải quyết triệt để vấn đề
    • README trông ngắn gọn và chính xác; tôi tự thử thì thấy hoạt động tốt. Nó tốt hơn nhiều README do người viết mà tôi từng thấy quanh mình
  • Ngay ví dụ đầu tiên của chuẩn Issue 9 đã tự mâu thuẫn. Test là danh từ được chấp thuận nhưng không được chấp thuận như động từ, vậy mà câu ví dụ STE lại là “Test B is an alternative to test A”
    Nếu không biết quy tắc riêng của STE, đây rõ ràng là một câu mơ hồ, rất xa với sự rõ ràng. Vì trang chính thức giấu bản tải xuống sau Google Form, tôi để lại cả liên kết có thể tải trực tiếp: https://www.asd-ste100.org/assets/files/ASD-STE100_ISSUE9.pd...

    • Tôi không thấy nó mơ hồ ở chỗ nào. Muốn đọc Test ở đầu là động từ thì phải hiểu rằng that đã bị lược trong câu “hãy kiểm tra xem B có phải là phương án thay thế cho A không”, nhưng khi đó ở đầu là động từ còn ở sau là danh từ, làm phá vỡ tính song song
      Hơn nữa, cách hiểu rằng câu đó đang ra lệnh cho ai đó thực hiện hành động như vậy tự thân đã rất khó xảy ra
  • Tôi thắc mắc liệu lý do ASD-STE100 đột nhiên được chú ý có phải là một tweet viral không. Tôi nghe từ bạn bè và đã đăng đặc tả vài ngày trước: https://asd-web-be-prod.azurewebsites.net/media/wunhmi5y/asd...
    PDF bị cấm sao chép, dù có thể dễ dàng vượt qua, nên tôi không hiểu vì sao họ làm vậy. Nếu muốn chặn các từ không được phép, cần một linter kiểu ruff cho tiếng Anh; nếu không, agent gần như chắc chắn sẽ quên hướng dẫn một dòng đó

  • Tôi tò mò những hướng dẫn như thế này ảnh hưởng thế nào đến trí tuệ hay năng lực suy luận của mô hình. Nếu chúng thay đổi đầu ra hoặc quá trình suy nghĩ, năng lực của mô hình cũng có thể thay đổi, đặc biệt nếu trong quá trình huấn luyện nó không được rèn để dùng ngôn ngữ như vậy

    • Có lẽ nên triển khai như một lớp hậu xử lý hơn là đưa vào dưới dạng hướng dẫn
  • Trong https://youtu.be/uJblcC4lKYw, người ta so sánh và đánh giá nhiều skill/prompt, gồm cả skill STE, với 6 nguyên tắc viết của George Orwell, và tổng thể Orwell cho kết quả tốt nhất
    Số token thêm vào ngữ cảnh đầu vào cũng không nhiều; khi so sánh prompt văn xuôi có áp dụng các quy tắc này với prompt không áp dụng, tôi thích kết quả hơn. Nội dung là tránh ẩn dụ quen thuộc, không dùng từ dài nếu từ ngắn đã đủ, bỏ mọi từ có thể bỏ, dùng chủ động thay vì bị động, tránh từ nước ngoài, thuật ngữ khoa học hoặc thuật ngữ chuyên môn nếu có từ thường ngày, và hãy phá vỡ các quy tắc này thay vì viết một câu man rợ

    • Có lẽ vì tôi đã đọc quá nhiều bài do AI viết, nhưng bản thảo lời dẫn trong video nghe cũng như được Claude viết mà không áp dụng bất kỳ quy tắc nào
      Có quá nhiều sáo ngữ và cách diễn đạt đặc trưng của AI, như “nói thật thì cải thiện dịch thuật là có thật nhưng nhỏ”, “giờ đến phần thành thật”, “cùng một căn bệnh nhưng triệu chứng khác nhau”, “con số 3% tàn nhẫn đó không phải quy luật tự nhiên mà là đặc tính của Claude”