Bối cảnh
Phỏng vấn ý đồ, dựng chân dung người viết và độc giả, nạp tài liệu nền.
đọc §1 Ý đồ và độc giảNăm trục quy trình — bối cảnh, đồng viết, phản biện, biên tập, giám định — nối nhau bằng file chứ không bằng trí nhớ hội thoại. Đổi agent giữa chừng, tắt máy rồi mở lại, chuỗi vẫn liền; và mỗi bản giao mang theo bản tự khai nguồn gốc.
essay
report.md
s-05Vấn đề này cần được nhìn nhận một cách toàn diện và khách quan hơn.
s-06Trong bối cảnh hiện nay, giáo dục đại học đứng trước một ngã ba đường.
s-07Số liệu ba năm gần nhất cho thấy điều ngược lại với giả định đó.
s-08Nói cách khác, không chỉ… mà còn là một khuôn lặp lại lần thứ ba trong bài.
Trục dọc là quy trình — năm việc phải làm để có một bài tử tế. Trục ngang là tham số — thể loại đang viết. Cách chấm một bài luận khác cách chấm một bài blog ở tiêu chí, không khác ở quy trình.
Vì vậy tri thức thể loại là dữ liệu, không phải code: cả năm trục cùng đọc một nguồn, không trục nào giữ một bản hiểu riêng rồi trôi lệch dần.
Phỏng vấn ý đồ, dựng chân dung người viết và độc giả, nạp tài liệu nền.
đọc §1 Ý đồ và độc giảDàn ý ba tầng → chờ duyệt → viết → tự khai câu nào máy viết.
đọc §2 Khung viếtChấm từng tiêu chí, soi lỗ hổng lập luận và ngụy biện. Không có điểm tổng.
đọc §3 Barem chấmSửa về phía giọng tác giả, có vùng cấm sửa: số liệu, trích dẫn, thuật ngữ.
đọc §4 Quy tắc biên tậpĐọc mù, chấm dấu hiệu, báo cáo có phản chứng và câu hỏi xác minh.
đọc §5 Chuẩn mực bắt buộcBốn hồ sơ cuối là thể loại đặc thù Việt Nam, sinh ra từ việc giám định thật
nên mới chỉ khai phần trục 5 cần. Muốn viết chúng thì dùng essay
hoặc research và nói rõ phần chuẩn mực thể loại lấy từ hồ sơ nào.
Mỗi bài một thư mục ca; mỗi giai đoạn đọc sản phẩm của giai đoạn trước và để lại sản phẩm của mình. Đổi agent giữa chừng, đóng máy rồi mở lại, hay giao cho người khác chạy tiếp — chuỗi vẫn liền, vì trạng thái nằm trên đĩa chứ không nằm trong ngữ cảnh hội thoại.
Đề bài, luận đề, độc giả, ràng buộc, con trỏ tài liệu nền.
→ context.jsonDàn ý ba tầng, duyệt xong mới viết văn xuôi.
→ draft.md→ draft.meta.jsonChấm barem thể loại, chỉ chỗ lập luận hổng, xếp việc phải sửa.
→ critique.jsonSửa từng nhát có lý do; thêm hay bớt một dữ kiện là trả lại bản gốc.
→ polished.md→ polish.diff.jsonĐọc mù, gán nhãn từng câu, báo cáo có phản chứng.
→ evidence.json→ report.mdMột hệ đánh số câu duy nhất đi suốt chuỗi. sentences.json
sinh ở Y2; Y3, Y4 và Y5 không được tự đếm câu. Đây là hợp đồng, không phải tiện
ích — ba hệ đánh số khác nhau trong cùng một ca là cách nhanh nhất để bản tự khai trỏ vào một câu
không tồn tại.
Còn điều kiện chưa gỡ được thì dừng và hỏi, không chuyển sang Y2.
Chưa được duyệt dàn ý thì không viết văn xuôi.
Phát hiện mình đã thêm hoặc bớt một dữ kiện thì trả lại bản gốc, không sửa tiếp.
Bạn cài xưởng như một plugin của agent — hoặc mở thẳng thư mục repo — rồi nói chuyện với agent bằng tiếng Việt bình thường. Chạy trên máy bạn, Windows hoặc macOS. Hướng dẫn cài từng bước →
claude plugin marketplace add ducnguyen221/agent-writing-studio
claude plugin install agent-writing-studio@agent-writing-studiogit clone https://github.com/ducnguyen221/agent-writing-studio
cd agent-writing-studio
python studio.py doctor # kiểm máy, không sửa gì · macOS: python3.12Plugin mang nguyên cây repo — năm thư mục trục, bốn skill con
của trục 5 bên trong 05-forensics/, bảy lệnh và dữ liệu dùng chung ở
shared/ — nên không chép thư mục nào bằng tay. Mở bản clone thì agent
đọc AGENTS.md trước rồi tự tìm đúng skill.
pip install underthesea python-docx pymupdf jsonschema pyyaml # macOS: python3.12 -m pip install …Không cài gì cả thì agent vẫn đọc, vẫn chấm, vẫn báo cáo được — script trong
repo là lớp kiểm chứng, không phải bộ não. Riêng
underthesea đáng cài: tiếng Việt không tách từ bằng khoảng trắng,
thiếu nó thì các bộ đếm tự hạ độ tin cậy của chính mình.
setx WRITING_STUDIO_DATA "$HOME\.writing" # Windows
export WRITING_STUDIO_DATA="$HOME/.writing" # macOS, trong ~/.zshrc
$WRITING_STUDIO_DATA/
work/<slug>/ # thư mục từng ca chạy
out/ # bản giao
corpus/ # bài hiệu chuẩn có provenance
writers/<slug>/ # tuỳ chọn: hồ sơ giọng, khi không có kho tri thức
audiences/<slug>/ # tuỳ chọn: chân dung độc giả, như trênBài của người thật, hồ sơ giọng văn và các ca chạy không nằm trong repo. Ca chạy và bản giao ở một thư mục riêng trên máy bạn — gọi là station — trỏ bằng một biến môi trường. Hồ sơ giọng, bài mẫu và chân dung độc giả nên nằm trong kho tri thức cá nhân của bạn; không có kho thì để ở station.
Thứ tự ưu tiên: tham số dòng lệnh → biến môi trường → workspace
workspace/ trong thư mục bạn mở. Không đặt biến là dùng workspace đó —
Git bỏ qua toàn bộ, không phải cấu hình gì; station chỉ cần khi bạn muốn dữ liệu sống lâu hơn
bản clone.
| Muốn gì | Nói với agent | Trục chạy |
|---|---|---|
| Chuẩn bị viết | “Tôi cần viết một bài luận về X. Dựng bối cảnh giúp tôi trước đã.” | Y1 |
| Viết nháp | “Đã có bối cảnh ở thư mục ca. Dựng dàn ý rồi viết nháp.” | Y2 |
| Phản biện | “Chấm giúp bài này theo hồ sơ research, chỉ chỗ lập luận hổng.” | Y3 |
| Biên tập | “Biên tập bản nháp này, giữ nguyên số liệu và trích dẫn.” | Y4 |
| Giám định | “Bài nộp này có dấu hiệu AI viết không? Đọc và báo cáo.” | Y5 |
Nói rõ thể loại thì tốt; không nói thì agent sẽ hỏi.
Bản giao hoàn chỉnh cho người đọc mặc định là
.docx, không phải .md: giảng viên
và biên tập viên nhận bài bằng Word.
python shared/scripts/export_docx.py polished.md \
--out "D:/thu-muc-cua-toi" --provenance polished.provenance.jsonQuy cách mặc định là chuẩn văn bản Việt phổ thông: Times New Roman
13pt · giãn dòng 1,5 · lề trên và dưới 2cm, trái 3cm, phải 2cm · heading đậm cỡ 14–16.
--out nhận thư mục hoặc đường dẫn .docx cụ
thể; --provenance chép bản tự khai nguồn gốc sang cạnh
file docx. Cần python-docx; bảng Markdown chưa được dựng thành bảng
Word — bài có bảng thì dùng pandoc.
Bản giao nằm ở thư mục của bạn, không nằm trong station.
$WRITING_STUDIO_DATA là xưởng cục bộ của agent — mọi
file làm việc ở lại đó. Bản giao ghi chính xác vào thư mục bạn đang làm việc hoặc đã chỉ định;
không ai phải mò vào .writing để lấy bài.
Namespace /agent-writing-studio:<lệnh>. Mỗi lệnh chỉ làm
đúng một bước: thiếu sản phẩm của bước trước thì nó nói rõ thiếu file gì và lệnh nào
sinh ra file đó, chứ không tự chạy lại cả chuỗi.
| Lệnh | Trục | Làm gì | Cần đầu vào | Ra file |
|---|---|---|---|---|
01-context | Y1 | Phỏng vấn ý đồ, luận đề, độc giả, ràng buộc | — (bước đầu) | context.json |
02-draft | Y2 | Dàn ý ba tầng → chờ duyệt → viết văn xuôi | context.json | draft.md · draft.meta.json · sentences.json |
03-critique | Y3 | Chấm từng tiêu chí theo barem thể loại | draft.md · sentences.json | critique.json |
04-humanize | Y4 | Sửa về phía giọng tác giả, ba chế độ đầu ra | draft.md · sentences.json | polished.md · polish.diff.json · sidecar |
05-audit | Y5 | Đọc mù → S/C → báo cáo; mặc định audit | văn bản · sentences.json | evidence.json · report.md |
deliver-docx | giao | md → docx đúng quy cách Việt, đặt vào thư mục bạn chọn | polished.md | <tên>.docx + sidecar |
list | — | In chính bảng này, đọc động từ các file lệnh | — | — |
Bảng trên là bản chép cho người đọc. Nguồn thật là bảy file trong
commands/ — lệnh list đọc thẳng từ đó,
nên hai chỗ lệch nhau thì tin list.
Cùng một danh mục dấu hiệu được dùng cho cả hai chiều. Đó là xung đột lợi ích có thật, nên nó được đo, không được hứa suông.
Một bài 994 từ do trục 2 viết trọn, không một chữ nào của người, và tự khai đúng như vậy. Trục 5 chấm mù bằng một mô hình khác, chỉ nhìn thấy bản văn:
Điểm dấu hiệu S → nhãn low_signal: không làm gì, không lưu hồ sơ nghi vấn.
Câu ở mức NOTE (đáng ghi chú) — 2/45 câu theo cách đếm tại thời điểm đo.
Câu ở mức FLAG (đáng nghi). Lớp đếm tự động, không gọi mô hình: 0 tín hiệu.
Con số 4,4% tính trên 45 câu. Sau đó một lỗi nuốt câu ngắn đã được sửa và bài có 47 câu; tính lại là 2/47 = 4,3%. Con số gốc được giữ kèm ghi chú thay vì làm tròn cho đẹp.
Đọc con số này cho đúng. Trục 2 tránh đúng danh mục mà trục 5 dùng để soi — một
danh sách, dùng theo hai chiều. Văn viết bằng cách tránh danh sách thì danh sách ấy không thấy nó.
Trên văn đã đi qua studio, low_signal khi chấm mù là kết quả kỳ
vọng, không phải bằng chứng. Ai đọc điểm thấp thành “bài này do người viết” là đọc sai.
Liêm chính đến từ provenance đi theo sản phẩm, không đến từ điểm của máy giám định.
Bản tự khai nguồn gốc — câu nào máy viết, bài đã qua biên tập máy hay chưa — nằm trong
draft.meta.json và trong file đi kèm bản giao. Câu hỏi đúng là bản
tự khai có khớp với bản văn không, chứ không phải máy có đoán ra được không.
Vì thế trục 5 có hai chế độ: blind chỉ thấy bản văn, dùng cho tài liệu
từ ngoài; audit được xem bản tự khai sau khi bản đọc mù đã
khoá, và trả về báo cáo liêm chính, không trả về điểm.
| Không kỷ luật ai | Mọi kết quả là đầu vào cho một cuộc trao đổi, không phải một phán quyết. |
| Luôn có phản chứng | Không nghĩ ra được một lời giải thích vô tội cho câu đó thì bỏ nhận định đi. |
| Văn hành chính vốn công thức | “Trong bối cảnh…”, bố cục “kết quả – tồn tại – phương hướng” là văn phong được dạy trong trường, có trước khi có mô hình ngôn ngữ. Mật độ sáo ngữ đo thể loại, không đo nguồn gốc. |
| Không né máy chấm | Trục 4 chỉ chạy trên bản thảo đã biết nguồn gốc, và mọi bản giao đều mang theo ghi chú “đã qua biên tập máy”. |
Hai con số nên nhớ trước khi tin bất kỳ máy dò AI nào. Một mô hình lớn khi được giao làm giám định viên nhận đúng 97–100% văn AI nhưng gắn nhầm hơn 95% văn người thành AI (arXiv 2308.01284). Bảy công cụ dò AI thương mại phân loại nhầm 61,22% bài TOEFL của người không nói tiếng Anh bản ngữ thành AI (arXiv 2304.02819, Patterns 2023). Cả repo này được thiết kế xung quanh hai con số đó.
Không thống nhất mấy chữ này thì cả trang trên đọc thế nào cũng được — và “đọc thế nào cũng được” là chỗ hiểu nhầm sinh ra.
SKILL.md nói cho agent biết khi nào dùng và làm theo trình tự nào.