Thread หลายภาษาไม่ใช่ปัญหาการแปล: บอกว่า 'write' ไม่ใช่ 'translate' แล้วกรองดราฟต์ด้วยสคริปต์ .length บนเครื่อง
วันนี้เผยแพร่ 5 บทความ แต่ละบทความมี thread ทวีต 6 ภาษา (en / zh / ja / ko / ar / id) ภาษาละ 4 ทวีต — รวม 120 ทวีต
4 ใน 5 ต้องมาตัดทอน thread ภาษาจีน ตัวเลขดิบ (script พิมพ์ออกมาในรูปแบบ chars/limit):
zh[1]=160/140 OVER
zh[2]=164/140 OVER
zh[3]=152/140 OVER
...
id[3]=286/280 OVER
zh[2]=163/140 OVER
zh[3]=148/140 OVER
zh[2]=152/140 OVER
รูปแบบเดิมทุกครั้ง: เขียน 4 ทวีตภาษาอังกฤษก่อน (แต่ละทวีต 230–260 ตัวอักษร ใกล้เพดาน 280) จากนั้นให้ Claude "สร้างเวอร์ชันจีนจากทั้งสี่" เวอร์ชันจีนเกิน 140 เกือบทุกครั้ง
นี่ไม่ใช่บั๊ก แต่เป็นคำที่ผิด ทันทีที่คุณพูด "translate" Claude จะเริ่มทำทีละประโยค — แต่ thread หลายภาษาไม่ใช่ปัญหาการแปล แต่ละภาษาต้องเขียนใหม่จากศูนย์ภายใต้งบประมาณตัวอักษรของตัวเอง บทความนี้อธิบายวิธีให้ดราฟต์แรกของ Claude ใกล้ลิมิตทันที ไม่ต้องเผา 3–5 รอบในการตัด
ลิมิตความยาวของ X ไม่ใช่ "จำนวนตัวอักษร" แต่เป็น weighted characters:
- อักษรละติน ตัวเลข เครื่องหมายวรรคตอน: 1 weight ต่อตัวอักษร
- อักษร CJK (จีน/ญี่ปุ่น/เกาหลี), emoji บางตัว: 2 weight ต่อตัวอักษร
- เพดานรวมต่อทวีต: 280 weight
ในทางปฏิบัติ:
- ทวีตภาษาอังกฤษ: เพดาน 280 ตัวอักษร
- ทวีตภาษาจีนล้วน: เพดาน 140 ตัวอักษร (140 × 2 = 280)
- ผสม: ตัวอักษรต่อตัวนับ 1 หรือ 2
ดังนั้น "แปลทวีตอังกฤษ 260 ตัวอักษรเป็นจีน" ไม่ได้หมายถึงเวอร์ชันจีน 260 ตัวอักษร — เวอร์ชันจีนมีพื้นที่จริงประมาณ 130 ตัวอักษร เครื่องหมายวรรคตอน เครื่องหมายคำพูด และ backtick ของต้นฉบับอังกฤษยังกินพื้นที่ และตัวอักษรจีนทุกตัวนับเป็นสองเท่า การแปลตามตัวแทบจะการันตีว่าเกิน
เมื่อ Claude เห็น "translate these 4 EN tweets to ZH" การเคลื่อนไหวแรกของมันคือ คงโครงสร้างประโยคอังกฤษไว้ แล้วเปลี่ยนคำเป็นจีนเท่านั้น:
ความหมายถูก แต่:
- คง "并不相同" ไว้ (ยาวกว่า "不同" หนึ่งตัว)
- คง "已经点击了" ไว้ ("刚点完" สั้นกว่า)
- คง "并看着一个空白屏幕" ไว้ ("看着空白屏" สั้นกว่า)
ความซ้ำซ้อนทุกจุดที่คงไว้กินตัวอักษร สะสมข้าม 4 ทวีต เกิน 20–40 ตัวอักษรได้สบาย ๆ และเกินลิมิตไปแล้ว
เทียบสองการเขียน:
ที่ไม่ได้ผล:
"Translate these 4 English tweets to Chinese, Japanese, Korean, Arabic, Indonesian."
ที่ได้ผล:
"For each of these 4 points, write a thread in ZH / JA / KO / AR / ID. Each language gets a fresh pass — same argument, adjusted for that language's tweet budget.
- ZH: ≤ 140 chars per tweet, hook-first, cut detail if needed
- other languages: ≤ 280 chars
- use each language's natural phrasing, don't preserve EN sentence structure
- each tweet must be self-contained but add 🧵 only on tweet 1"
ความต่าง:
.lengthอย่านับด้วยตา เขียนสคริปต์เล็ก ๆ ให้รันทุกดราฟต์:
tweets.each do |loc, list|
list.each_with_index do |t, i|
len = t.length
limit = loc == "zh" ? 140 : 280
status = len > limit ? "OVER" : "ok"
puts "#{loc}[#{i}]=#{len}/#{limit} #{status}"
end
end
String#length ของ Ruby คืน Unicode codepoints — ตัวอักษร CJK แต่ละตัวนับเป็น 1 X คิดน้ำหนัก CJK เป็น 2 แต่ ลิมิตทวีตจีน 140 codepoints (เพราะ 140 × 2 = 280 weighted) ดังนั้น .length ตรงกับเพดานของ X โดยตรง เคสขอบ:
สำหรับทวีต CJK ส่วนใหญ่ .length ของ Ruby ต่างจากการนับของ X ±1 ตัวอักษร ใช้เป็นประตูเฉพาะเครื่องชนะการทดลองโพสต์บน X 100 เท่า
เมื่อต้องตัดทวีตจีน สองประเภทนี้โดนก่อน:
การอ้างโค้ดแบบ `kamal exec` ในบริบทจีนกิน 1 ตัวอักษรต่อ backtick — 2 ตัวอักษรต่อการอ้าง ไม่ได้ให้ค่าทางความหมาย วิธีแก้:
`kamal exec`"🧵 เฉพาะทวีตแรก emoji อื่นในทวีตจีน — คิดสองรอบ เพราะ emoji แต่ละตัวโดยพื้นฐานคือ 2 ตัวอักษร (1 codepoint + บางครั้งมี ZWJ modifier)
'X') — ประหยัด 2 ตัวอักษรต่อคู่เทียบกับ fullwidth (「X」)เวลาให้ Claude สร้าง thread หลายภาษา บล็อก 4 ข้อนี้:
อาการ: ประโยคจีนที่มีวลีอย่าง "并不相同", "已经点击了", "一个空白屏幕" — ชัดเจนว่าเป็นการลอกจากอังกฤษ
สกัด: เขียนใน prompt โดยตรง "don't preserve EN sentence structure" / "use natural ZH phrasing"
อาการ: Claude เสร็จแล้วบอก "done" เอาต์พุตเกินลิมิตแต่มันไม่รู้
สกัด: ให้ Claude นับความยาวแต่ละทวีตเอง ("count each tweet's char length and flag any over the limit") หรือใช้สคริปต์เฉพาะเครื่องเป็นประตู ผมเลือกสคริปต์ — Ruby แม่นกว่า
อาการ: เวลา Claude นับ มันลืม weight เพิ่มเติมของ emoji และเครื่องหมายคำพูด fullwidth
สกัด: อย่าถาม Claude ว่า "เกินลิมิตไหม" — รัน .length เฉพาะเครื่อง แล้วให้ตัดตามตัวเลข
อาการ: บางครั้งทุกทวีตมี 🧵 บางครั้งเฉพาะทวีตแรก บางครั้งไปอยู่ที่ 4/4
สกัด: ตรึงใน prompt — "🧵 only on tweet 1" Claude ไม่รู้ธรรมเนียมภาพของ thread เป็นดีฟอลต์
6 กฎให้ดราฟต์แรก thread หลายภาษาชิดลิมิต:
"cut detail if needed" บอก Claude ว่ายอมเสียข้อเท็จจริงเพื่อความยาวได้.length เฉพาะเครื่องเป็นประตู แม่นกว่า Claude นับเอง เร็วกว่าทดลองโพสต์บน Xข้อคิดจริง: Claude เขียน thread หลายภาษาได้ถูก — แต่ปฏิกิริยาดีฟอลต์ของมันคือ "แปล" งานคุณคือผ่าน prompt หมุนไปโหมด "ประพันธ์อิสระต่อภาษา" เพิ่มประตู .length แล้ว thread จีนของบทความสุดท้ายวันนี้ดราฟต์แรกออกมา 140/140 พอดี — ไม่ต้องตัด