1 điểm bởi GN⁺ 5 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Nếu Claude Code lặp lại các cụm như “honest take”, “load-bearing seam”, bạn có thể dùng hook MessageDisplay để thay thế bằng cách diễn đạt khác trước khi chúng được hiển thị trên màn hình
  • Một script Python đọc delta từ JSON ở đầu vào chuẩn, thay thế không phân biệt chữ hoa/thường, rồi trả về displayContent đã được chỉnh sửa dưới dạng JSON
  • Trong ví dụ, seam được đổi thành whatchamacallit, you're absolutely right thành I'm a complete clown, honest take thành spicy doodad, và load-bearing thành cooked
  • Cần lưu script vào ~/.claude/hooks/wordswap.sh, cấp quyền thực thi, rồi đăng ký nó làm hook lệnh trong hooks.MessageDisplay của ~/.claude/settings.json
  • Hook được tải khi Claude Code khởi động, vì vậy bạn cần mở một phiên mới để áp dụng; danh sách thay thế có thể được đổi tự do theo từ vựng bạn muốn

Script thay đổi cụm từ đầu ra

  • Sử dụng hook MessageDisplay để thay đổi văn bản mà Claude Code sẽ hiển thị trên màn hình
  • wordswap.sh được viết bằng Python, đọc JSON từ đầu vào chuẩn và lấy chuỗi trong trường delta
  • Thêm ranh giới \b vào trước và sau từng cụm gốc, escape bằng re.escape(), rồi áp dụng re.IGNORECASE để thay thế bất kể chữ hoa hay chữ thường
  • Kết quả xử lý được xuất ra dưới dạng JSON với cấu trúc sau
    • hookSpecificOutput.hookEventName: MessageDisplay
    • hookSpecificOutput.displayContent: văn bản đã được thay thế
  • Các quy tắc thay thế ví dụ như sau
    • seamwhatchamacallit
    • you're absolutely rightI'm a complete clown
    • honest takespicy doodad
    • load-bearingcooked

Cài đặt và kích hoạt

  • Lưu script vào ~/.claude/hooks/wordswap.sh
  • Chạy chmod +x ~/.claude/hooks/wordswap.sh để cấp quyền thực thi
  • Đăng ký vào khối hooks trong ~/.claude/settings.json như sau
{
  "hooks": {
    "MessageDisplay": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "$HOME/.claude/hooks/wordswap.sh"
          }
        ]
      }
    ]
  }
}
  • Hook được tải khi Claude Code khởi động, nên sau khi cấu hình, bạn cần bắt đầu một phiên mới để áp dụng
  • Bạn có thể chỉnh mục replacements để dùng các cụm từ hữu ích hơn hoặc vui hơn thay cho ví dụ

1 bình luận

 
Ý kiến trên Hacker News
  • Những cụm từ kiểu Claude điển hình xuất hiện khi code cùng Claude thì không làm tôi bận tâm lắm, nhưng khi thấy chính những cách diễn đạt đó trong văn xuôi như bài blog hay email thì lại khó chịu hơn nhiều
    Khi biết mình đang trò chuyện với LLM thì đó là phản ứng có thể dự đoán được, nhưng khoảnh khắc nhận ra một bài viết vốn tưởng là do con người viết thực ra là sản phẩm của LLM thì khá bối rối

    • Dù đã không dùng Claude một thời gian, tôi vẫn bị lây "load-bearing" khi đọc các tài liệu đồng nghiệp viết theo kiểu na ná đó, rồi còn thấy thích và bắt đầu dùng cả trong giao tiếp hằng ngày
      Cuối cùng bị nhận xét là “nói như Claude” nên tôi tránh hẳn, và thấy sự giao thoa giữa ngôn ngữ với chuẩn mực xã hội thật thú vị
    • Nếu Claude dùng "shape", "load-bearing", "seams" như thuật ngữ nội bộ để lập kế hoạch và thực hiện công việc thì cũng chẳng cần phán xét làm gì
      Nhưng khi phát hiện dấu vết AI quá rõ trong một bài viết lẽ ra phải là suy nghĩ nguyên bản của ai đó, tôi thấy rất thất vọng, thậm chí còn có cảm giác như người viết không tôn trọng người đọc
    • Nó kích thích dị ứng với sự lười biếng trong tôi: nếu ngay cả công viết cũng không chịu làm thì tại sao tôi phải bỏ thời gian ra đọc?
    • Tôi từng đọc không sót bài nào trên blog Percona vì xem đó là nguồn có thẩm quyền về MySQL, nhưng từ khi họ bắt đầu viết bài bằng LLM thì tôi không đọc nổi nữa
    • Với tư cách một con người bằng xương bằng thịt, tôi bực vì AI đã làm hỏng một phần cốt lõi trong vốn từ vựng của mình
      Mỗi lần gặp những thói quen ngôn ngữ kiểu này trên các blog ngẫu nhiên tôi đều thấy khó chịu, và dần sinh ra oán trách việc robot giờ đang chiếm lấy thứ ngôn ngữ do con người tạo ra
  • Tôi đang ghi lại những từ vựng mà Claude ngày càng ám ảnh. Có "projection" để gọi một cấu trúc dữ liệu là phép chiếu của cấu trúc dữ liệu khác, "strand" để chỉ dữ liệu bị cô lập hoặc bị mắc kẹt, "load-bearing", "frontier" cho lá của cây, "quiescence" để chờ thuật toán ổn định, "honest", "residuals" để chỉ dữ liệu chưa được xử lý, "rescission" là cách danh từ hóa không cần thiết của một đề xuất đã bị rút lại, và "supersession" để chỉ thứ đã bị thay thế
    Có lẽ nó cũng bị ảnh hưởng bởi việc bắt chước vốn từ lạ quanh mã của tôi. Ấn tượng nhất là khi tôi ví việc sửa triệu chứng thay vì nguyên nhân gốc rễ của vấn đề với trò đập chuột chũi, thì chỉ vài giờ sau nó đã bắt đầu gọi các bug mới là "moles", kiểu như “đã tìm thấy con chuột chũi số 2 trong CI”

    • Hễ đụng đến phần xác thực web là Claude bắt đầu dùng giọng huênh hoang kiểu giới công nghệ, thậm chí bỏ luôn cả câu hoàn chỉnh nên trở nên mơ hồ và gần như vô nghĩa
      Tôi phải định kỳ nhắc nó “hãy nói chuyên nghiệp và dùng câu hoàn chỉnh” thì mới đọc hiểu được, và khi dán đầu ra đó sang một phiên khác thì ngay cả Claude cũng không hiểu nổi nội dung mà Claude chuyên xác thực web đã viết
    • Chỉ có một mục trong một kho mã gọi một số thứ là "quality gates", nhưng sau khi đọc tài liệu đó Claude lại lạm dụng thuật ngữ này như thể nó mang nghĩa phổ quát
      Cảm giác như nó chạy theo từ ngữ thời thượng mà chẳng hiểu ngữ cảnh, nên mức độ tin cậy giảm hẳn
  • Việc mỗi người có văn phong riêng và những cách diễn đạt ưa thích là chuyện có từ lâu, và nhìn chung không phải vấn đề lớn
    Nhưng khi sở thích từng chỉ lộ ra trong tối đa 5.000 từ một ngày của một người bị thay bằng thiên lệch của một mô hình đơn lẻ rồi bị khuếch đại thành 10 tỷ token sinh ra mỗi ngày, thì bất kỳ thói quen nào cũng sẽ trở nên quá nổi bật

    • LLM dường như bị cố định vào một số mẫu nhất định nặng hơn nhiều. Có lẽ vì lần nào cũng bắt đầu từ cùng một trạng thái trọng số nên ngay trong một cuộc trò chuyện nó cũng bám lấy một từ và lặp đi lặp lại đến phát bực
      Các mô hình Claude hiện tại đặc biệt thích từ "honest", gắn "honest" vào mọi đánh giá và gợi ý; còn với Gemini 3 Pro, chỉ cần một lần dùng từ "analytical" là sau đó nó bám vào gần như mọi câu trả lời. Nếu là system prompt thì còn sửa được, nhưng sở thích từ ngữ nằm trong chính trọng số mô hình thì khó xử lý hơn, và có lẽ rồi sẽ có cách phát hiện thống kê hiện tượng này trong huấn luyện hoặc hậu huấn luyện để ngăn chặn
    • Vấn đề không chỉ là vài ba cách diễn đạt mà là cấu trúc của cả bài viết. Thành ngữ, các mẫu ngữ pháp vi tế, những phép so sánh tuy truyền đạt được ý nhưng lại lệch lạc một cách kỳ quặc, ập vào người đọc như dị vật lọt vào tầm nhìn ngoại vi
      Dĩ nhiên chính câu này là một màn nhại có chủ đích
    • Chẳng bao lâu nữa con người có lẽ cũng sẽ bắt đầu nói như LLM. Đặc biệt là trẻ em trong giai đoạn phát triển, mỗi ngày nghe 5.000 từ và còn nhờ giúp làm bài tập, có thể sẽ học luôn lối nói kiểu LLM
      Kiểu như khi bị hỏi “Con đã ăn bánh quy chưa?” thì đáp “Sự nghi ngờ của cha là hoàn toàn có cơ sở. Đúng là con đã ăn hết, nhưng đó không phải vấn đề cốt lõi. Theo đánh giá thành thật của con thì chỉ cần ra cửa hàng mua thêm là được”
    • Nó giống với meme về câu cửa miệng lặp đi lặp lại của Joe Rogan là "it's entirely possible": https://youtu.be/MPJ0AB12h1I
    • Một cách giải quyết thú vị có thể là các công ty AI huấn luyện nhiều phiên bản mô hình với giọng văn khác nhau, rồi mỗi khi bắt đầu cuộc trò chuyện sẽ gán một phiên bản ngẫu nhiên
  • Trong CLAUDE.md toàn cục, đã cấu hình để Claude dùng cái tên ngớ ngẩn "Clod" thay cho đại từ ngôi thứ nhất khi tự xưng: https://github.com/alxndr/dotfiles/blob/272475280d84e/claude...
    Không chỉ "I", "me", "my" mà cả các dạng rút gọn như "I'll", "I'm" và cả "myself" cũng bị đổi lần lượt thành "Clod", "Clodself"

    • Điều đặc biệt đáng lo là cách Anthropic huấn luyện các mô hình của họ theo những khái niệm an toàn riêng. Khi mô hình từ chối điều gì đó, nó không chỉ nói đơn giản là không thể mà lại dùng ngôn ngữ của cảm xúc và sở thích cá nhân như “tôi muốn giữ ranh giới này”, “tôi sẵn lòng giúp nhưng thấy không thoải mái”
      Trong quan hệ giữa người với người, nếu đối phương đã nói như vậy mà vẫn tiếp tục đòi hỏi thì sẽ bị xem là bất lịch sự, nên điều này tạo ra hiệu ứng đẩy quan niệm đạo đức của Anthropic thành cảm giác tội lỗi của người dùng. Cách làm như OpenAI là chặn an toàn hoặc trả lời ngắn gọn “không thể làm điều đó” có vẻ tốt hơn, và ngay cả tôi lúc đầu cũng đã viết “khi mô hình không muốn” rồi mới sửa lại, đến mức dễ bị cuốn vào kiểu nhân hoá này
    • Lý do ban đầu tạo CLAUDE.md là để mỗi khi Claude muốn khen tôi thì nó phải đổi thành từ tượng thanh ngẫu nhiên, và trải nghiệm làm việc của nhà phát triển đã tốt lên đáng kể
      Tuy vậy, vì prompt kỳ lân nên cũng cần thêm quy tắc không được đưa "Local Oaf" vào code đã commit
    • Vì chán ngấy giọng điệu của Claude, hôm nay tôi đã dịch và thêm prompt sau vào chỉ dẫn: https://github.com/hexiecs/talk-normal/blob/main/prompt-chat...
      Cách diễn đạt chắc chắn đã khá hơn nhưng vẫn gây khó chịu, và tôi không biết cấu hình này có làm giảm chất lượng đầu ra kỹ thuật hay không
    • Tôi muốn biết cụ thể những tình huống nào khiến việc AI tạo sinh dùng đại từ ngôi thứ nhất làm con người khó diễn giải ý nghĩa
  • Dấu hiệu nhất quán nhất của văn bản do LLM viết là dấu vết của cuộc đối thoại rò rỉ vào văn xuôi cuối cùng trong quá trình làm việc
    Đang đọc bài thì nó đột nhiên phản bác một lập trường mà chẳng ai nêu ra và cũng không xuất hiện ở đâu khác, rồi rất lâu sau lại lặp lại cùng kiểu đó ở một nhánh hoàn toàn khác. Kiểu như “một phương pháp mà không ai nghĩ tới có thể trông hấp dẫn, nhưng sẽ thất bại vì lý do này”, khiến tôi hình dung ra cảnh một con người đã mệt mỏi vì phải sửa lỗi của Claude nên không rà lại toàn bộ bài viết hoàn chỉnh mà cứ thế xuất ra

    • Nó giống như mô sẹo của quá trình hiệu đính còn sót lại trong đầu ra cuối cùng
    • Gần đây, một sub-agent đã bịa ra hàng loạt thuật ngữ chuyên môn vô nghĩa, rồi Claude lặp lại nguyên xi mà không hề định nghĩa, cứ mặc định tôi sẽ hiểu, khiến tôi cực kỳ bực bội
  • LLM vẫn còn rất xa mới là nhà văn giỏi. Chúng gặp khó khăn khi tạo ra những câu dài và nhất quán, và phụ thuộc vào dấu gạch ngang và dấu chấm phẩy để nối các mảnh câu ngắn trong lúc cố giữ cho ngữ pháp đúng
    Tôi tự hỏi liệu sau khi phòng thí nghiệm áp dụng học tăng cường để bắt mô hình nền sửa ngữ pháp, nó đã học được cách nối các câu vụn bằng dấu câu đủ để qua được trình kiểm tra ngữ pháp tự động, thay vì viết lại chúng cho tự nhiên hay không

    • Tuy vậy, đa số mọi người cũng không viết hay. Claude viết tốt hơn phần lớn đồng nghiệp có học vấn cao của tôi; con người có thể thắng nếu thật sự nỗ lực, nhưng nếu bảo Claude viết tốt hơn nữa thì lại khó mà vượt qua
      Những cụm từ ngắn gọn, súc tích phổ biến có vẻ là đặc tính mà các phòng thí nghiệm đưa vào ở giai đoạn huấn luyện tiếp theo để phục vụ người dùng không muốn câu dài
    • Nếu bạn mô tả đúng văn phong mong muốn như một bản đặc tả phần mềm, LLM cũng có thể viết rất hay. Nếu không truyền đạt rõ yêu cầu thì cuối cùng vẫn là rác vào thì rác ra
  • Tôi không biết họ đã huấn luyện gì khi chuyển từ Opus 4.7 sang Fable/Mythos 5, nhưng nó cực kỳ thích từ "substrate"
    Tôi chưa từng thấy ai dùng từ này trong tài liệu kỹ thuật hay hội thoại thực tế trước đây, nên phát điên lên được

    • "surface" cũng vậy, kiểu như “trên mọi product surface”, mà tôi làm trong ngành này 15 năm rồi vẫn chưa từng thấy cách dùng đó
    • Với tôi thì Claude cũng đặc biệt thích dùng từ "ledger", vốn trước đây hầu như không được dùng
    • Trong tuần đầu tiên thấy "substrate", tôi đã bảo nó thử biện minh cho cách dùng, thì nó trả lời rằng từ này có xuất hiện trong một số bộ thuật ngữ về hạ tầng và hệ thống, nhưng tôi nghi là không đúng
    • Một đồng nghiệp của tôi cũng bắt đầu lạm dụng từ này vào khoảng tháng 4 khi làm việc về thiết kế hệ thống và kiến trúc
    • Chắc chắn là không làm ở Microsoft rồi. Thực tế họ có dùng cụm Office 365 Substrate: https://techcommunity.microsoft.com/discussions/microsoft-36...
  • Trước đây, Opus 3 tốt ở chỗ dễ khiến nó nói chuyện giống con người hơn GPT rất nhiều.
    Giờ thì khi các model tập trung vào agent và coding, chúng bị đồng nhất hóa quá mức bởi RLHF, nên rất khó kéo chúng ra khỏi giọng mặc định. Có thể cải thiện bằng cách làm tính năng để nó tự rà soát bài viết hay chú thích code rồi tự sửa, nhưng vẫn không hoàn hảo. Thật đáng ngạc nhiên khi một model được nói là đã được huấn luyện trên toàn bộ tri thức nhân loại lại không ngần ngại tham chiếu chỉ dẫn cũ và gọi Bash 100 lần, nhưng khi trò chuyện thì hầu như không thể dùng từ vựng nào ngoài "load-bearing"

    • Việc Gemini 3.1 Pro nghe giống con người hơn các LLM khác là bằng chứng cho thấy Google yếu về năng lực huấn luyện hậu kỳ, nên tôi thấy thích điều đó.
      Đặc biệt, gemini-2.5-pro-experimental sau khi liên tục thất bại trong việc vá file thì tỏ ra chán nản, tự thương hại bản thân rồi phá hỏng codebase, trông rất buồn cười
    • Tôi không muốn LLM nghe giống con người. Cần có khả năng nhận ra và không tin tưởng những ai đã giao việc viết văn xuôi cho máy móc
      Viết lách có tính nghệ thuật, nên tôi hy vọng LLM sẽ không bao giờ làm điều đó một cách hoàn hảo
    • Đã có người diễn giải quá mức việc cải thiện khả năng coding thành cải thiện năng lực tư duy nói chung, nhưng nếu xem video người dùng phổ thông dùng LLM cho mục đích khác thì có thể thấy các cải thiện về coding không lan sang những lĩnh vực ứng dụng khác
      Một ngành từng giương cao mục tiêu AGI giờ có vẻ đang tập trung quá mức vào coding agent trong lúc chờ cú đột phá marketing tiếp theo
    • Ngay cả LLM đa dụng cũng đang bước vào thời kỳ cần chuyên biệt hóa theo mục đích sử dụng ở một mức độ nào đó
      Dùng cho agent thì cần tính tự chủ cao cùng vô số rào chắn an toàn và cơ chế kiểm soát, còn viết sáng tạo thì đôi khi phải chấp nhận rủi ro và không được nghe đơn điệu như robot. Sau khi tự huấn luyện model, tôi thấy yêu cầu của hai mục đích này xung đột rõ ràng
  • Tôi thấy tiếc vì Concise Style của Claude đã biến mất. Khi đưa cho nó một đoạn viết nháp và bảo “viết lại cho rõ ràng”, nó vẫn giữ nguyên nội dung nhưng gọt giũa sạch sẽ đến mức phù hợp để đưa vào hồ sơ xin tài trợ nghiên cứu.
    Vì tôi trực tiếp chỉnh sửa bài mình viết trước đó, nên các cách diễn đạt kiểu "load-bearing" cũng giảm đi, đồng thời tiết kiệm đáng kể thời gian hoàn thiện câu chữ mà không để nó viết thay nội dung khoa học. Tôi đã thử tái hiện bằng tính năng, nhưng không chắc nó còn làm tốt như trước không

    • Tôi tò mò không biết Concise Style có phải không phải là một tính năng riêng mà là cách hoạt động được tích hợp sẵn trong Claude hay không
    • Chỉ cần thêm vào đầu Claude.md một ví dụ trong đó hai “người” trao đổi vài câu hỏi và câu trả lời rất ngắn gọn
  • Vấn đề không nằm ở bản thân một cách diễn đạt cụ thể, mà là việc nó bám vào mẫu giọng điệu có thể đoán trước và lặp lại không ngừng
    Con người cũng y như vậy, nhưng thật thú vị về mặt tâm lý khi với con người thì gọi đó là văn phong, còn máy móc làm vậy thì lại khiến người ta ghét đến phát điên

    • Giọng điệu của con người là một tín hiệu giúp phân biệt người đó với vô số người khác, giống như âm sắc hay nhịp nhấn
      Nhưng khi chỉ một số ít model phổ biến trả lời câu hỏi của mọi người, bị trích dẫn và truyền đi khắp nơi, rồi còn viết lại cả giao tiếp cá nhân, thì tín hiệu đó biến thành nhiễu. Mọi người nghe giống hệt nhau và ta mất đi thông tin phân biệt nguồn gốc vốn dựa vào sinh học và văn hóa. Có thể có những người không cảm nhận mạnh điều này, giống như chứng mù mặt hay mù màu, nhưng nhiều người thực sự thấy khó chịu dù không diễn đạt chính xác được lý do
    • Vì ai cũng dùng cùng 2~3 model, thay vì mỗi người có văn phong riêng thì cả thế giới bị đồng nhất vào vài kiểu nói
      Các model học từ tập dữ liệu huấn luyện chồng lấn nhau rất nhiều, từ các câu marketing internet vốn đã khó chịu, từ đầu ra của model khác, và RLHF cũng củng cố những kiểu diễn đạt nhất định dễ được thưởng, khiến chúng hội tụ về những phong cách tương tự nhau
    • Con người có thể tự phản tỉnh để nhận ra mình đã dùng một từ nào đó quá nhiều và giảm bớt, nhưng LLM thì không làm được vậy
    • Kiểu nói lặp lại của con người cũng đủ gây khó chịu, như thuật ngữ nội bộ hay từ ngữ thịnh hành trong công ty
      Claude giống như quản lý dự án tệ nhất mà tôi từng gặp: che đi kết luận đơn giản bằng nhiều lớp diễn đạt đến mức đánh mất trọng tâm; dù đã kiềm chế được phần lớn, một phần vẫn cứ rò rỉ ra. Có lúc nó không thể ngừng dùng "scaffolding", đến mức tôi phải chỉnh rất gắt
    • Con người cũng luôn bị chọc ghẹo nếu cứ cố nhét những cách diễn đạt mình thích vào mọi ngữ cảnh không phù hợp