- Claude Codeが「honest take」や「load-bearing seam」のようなフレーズを繰り返す場合、MessageDisplayフックで画面に表示される前に別の表現へ置換できる
- Pythonスクリプトが標準入力のJSONから
deltaを読み取り、大文字・小文字を区別せずに置換したうえで、変更後のdisplayContentをJSONで返す
- 例では、
seamをwhatchamacallit、you're absolutely rightをI'm a complete clown、honest takeをspicy doodad、load-bearingをcookedに置き換える
- スクリプトを
~/.claude/hooks/wordswap.shに保存して実行権限を付与し、~/.claude/settings.jsonのhooks.MessageDisplayにコマンドフックとして登録する必要がある
- フックはClaude Codeの起動時にロードされるため、新しいセッションを開くと適用される。置換リストは好みの語彙に自由に変更できる
出力文言を変更するスクリプト
MessageDisplayフックを使って、Claude Codeが画面に表示するテキストを変更する
wordswap.shはPythonで作成し、標準入力からJSONを読み込んでdeltaフィールドの文字列を取得する
- 各元フレーズの前後に
\b境界を付け、re.escape()でエスケープしたうえで、re.IGNORECASEを適用して大文字・小文字に関係なく置換する
- 処理結果は次の構造のJSONとして出力する
hookSpecificOutput.hookEventName: MessageDisplay
hookSpecificOutput.displayContent: 置換後のテキスト
- 例の置換ルールは次のとおり
seam → whatchamacallit
you're absolutely right → I'm a complete clown
honest take → spicy doodad
load-bearing → cooked
インストールして有効化する
- スクリプトを
~/.claude/hooks/wordswap.shに保存する
chmod +x ~/.claude/hooks/wordswap.shを実行して実行権限を付与する
~/.claude/settings.jsonのhooksブロックに次のように登録する
{
"hooks": {
"MessageDisplay": [
{
"hooks": [
{
"type": "command",
"command": "$HOME/.claude/hooks/wordswap.sh"
}
]
}
]
}
}
- フックはClaude Codeの起動時にロードされるため、設定後に新しいセッションを開始する必要がある
replacements項目を修正すれば、例の代わりにより有用または面白い文言へ変えて使える
1件のコメント
Hacker Newsの意見
Claudeとコーディングしているときに出てくる典型的なClaudeっぽい表現は気にならないが、ブログ記事やメールのような散文で同じ表現を見るとずっと鼻につく
LLMと会話していると分かっているときは想定内の反応だが、人が書いたはずだと思っていた文章がLLMの産物だと気づく瞬間はかなり当惑する
結局「Claudeみたいに話す」と言われて完全に避けるようになったが、言語と社会的規範の交差は興味深い
ただ、誰かの独創的な思考であるはずの文章に明白なAIの痕跡を見つけるととてもがっかりするし、読者を尊重していないようにすら感じる
ランダムなブログでこうした言語習慣に出くわすたびに気に障るし、人間が発明した言語を今やロボットが横取りしていることに恨めしさすら覚える
Claudeがますます執着する語彙を記録している。あるデータ構造を別のデータ構造の投影として呼ぶ "projection"、孤立または停止したデータを指す "strand"、"load-bearing"、木のリーフを意味する "frontier"、アルゴリズムが安定するのを待つ "quiescence"、"honest"、未処理データを意味する "residuals"、撤回された提案をわざわざ名詞化した "rescission"、置き換えられたものを意味する "supersession" などがある
自分のコード周辺の妙な語彙を真似している影響もありそうだ。問題の根本原因ではなく症状を直していることを自分でモグラたたきにたとえたところ、数時間後には「CIでモグラ2を見つけた」といった具合に新しいバグを次々 "moles" と呼び始めたのがいちばん印象的だった
定期的に「プロらしく話し、完全な文を使え」と言わないと理解できず、その出力を別のセッションに貼り付けたところ、Claude自身ですらWeb認証用Claudeが書いた内容を理解できなかった
文脈も分からないまま流行語を真似しているようで、信頼が落ちる
人それぞれ固有の文体や好みの表現があるのは昔からのことで、たいてい大きな問題ではなかった
だが、1人が1日最大5千語の中で見せていた癖が、単一モデルの偏りとして1日100億個の生成トークンに増幅されると、どんな習慣でも目立ちすぎる
現在のClaudeモデルは特に "honest" が好きで、あらゆる評価や手がかりを "honest" で修飾するし、Gemini 3 Proでも一度 "analytical" という単語を使ったら、その後ほとんどすべての返答について回った。システムプロンプトなら修正できるが、モデル重みそのものの単語嗜好は扱いづらく、学習や追加学習の中で統計的にこうした現象を検知して防ぐ方法が出てきそうだ
もちろんこの文自体は意図的なパロディだ
「クッキーを食べたの?」という質問に、「お父さんの疑いは全面的にもっともです。私が全部食べたのは事実ですが、本質的な問題ではありません。率直に判断すれば店でもっと買えば済みます」と答えるようなものだ
グローバルの
CLAUDE.mdで、Claude が自分を指すときに 一人称代名詞 の代わりに、ばかばかしい名前の「Clod」を使うよう設定していた: https://github.com/alxndr/dotfiles/blob/272475280d84e/claude..."I", "me", "my" だけでなく、"I'll", "I'm" のような短縮形や "myself" も、それぞれ "Clod", "Clodself" に置き換えさせている
人間関係では、相手がこう言ったあとでなお要求を続けるのは無礼に感じられるので、Anthropic の道徳観をユーザーの罪悪感へ転嫁する効果が生まれる。OpenAI のように安全上のブロックをかけるか、「それはできない」と簡潔に答えるほうがよく、私自身でさえ最初は「モデルが望まないとき」と書いてしまい、あとで直したほど、この擬人化には簡単に引きずられる
CLAUDE.mdを作った理由は、Claude が私を褒めたがるたびに ランダムな擬音語 に置き換えさせるためで、開発体験はかなり良くなった。ただし、ユニコーンのプロンプトのせいで、コミットされたコードに "Local Oaf" を入れないようにするルールも必要になった
表現はたしかに改善したが、まだ気に障るし、この設定が技術的な出力品質を落とすのかは分からない
LLM が書いた文章の最も一貫した手がかりは、作業中の 対話の痕跡が最終的な散文に漏れ出す現象 だ。
文章を読んでいると、誰も提起しておらず他の場所にも出てこない立場を突然反駁したあと、だいぶ後になってまったく別の脇筋で同じことを繰り返す。「誰も検討しない方法が魅力的に見えるかもしれないが、こういう理由で失敗する」といった調子で、Claude の誤りを直すのに疲れた人間が、完成した文章全体を校正せずそのまま出してしまった場面が目に浮かぶ
LLM は優れた作家にはほど遠い。長く一貫した文を作るのに苦労し、短いフレーズをつなぎ合わせながら文法的な正確さを保とうとして ダッシュとセミコロン に依存する。
研究所が基盤モデルに文法を矯正させるために強化学習を適用した結果、短く寸断された文を自然に書き直す代わりに、自動文法チェッカーを通る句読法でつなぐ方法だけを学習したのではないかと思う
よくある 短く簡潔なフレーズ は、長い文を望まないユーザー向けに研究所が後続学習で入れた特性に見える
Opus 4.7 から Fable/Mythos 5 へ移る中でどんな訓練をしたのかは知らないが、"substrate" という単語を異様に好んでいる。
実際の技術文書や会話で誰かがこの単語を使うのを以前見たことがなく、気が狂いそうだ
以前は Opus 3 のほうが GPT よりはるかに人間らしく話させやすく、それが良かった。
今はエージェントとコーディングに注力する中で、モデルが RLHF によって過度に画一化 され、基本の話し方から外させるのが非常に難しくなっている。文章やコードコメントをレビューして自分で直させる機能を作れば改善するが、完璧ではない。人類のあらゆる知識で訓練されたというモデルが、古い命令を参照しながら Bash を 100 回呼び出すことにはためらいがないのに、会話では "load-bearing" 以外の語彙をなかなか使えないというのは驚きだ
特に gemini-2.5-pro-experimental は、ファイルのパッチ適用に何度も失敗したあとしょんぼりして自己憐憫に陥り、コードベースを壊していく様子が非常に面白かった
書くことには 芸術性 があるのだから、LLM には永遠にそれを完全にはやり遂げてほしくない
AGI を目標に掲げていた業界が、今では コーディングエージェント に過剰に集中し、次のマーケティング上の突破口を待っているように見える
エージェント用途では強い自律性に加えて大量の安全装置と統制が必要だが、創造的な文章作成では、ときにリスクを引き受けてでも単調なロボットのように聞こえてはいけない。実際にモデルを訓練してみると、この二つの用途の要件は明確に衝突していた
Claude の Concise Style がなくなったのは残念だ。だいたい書いた段落を渡して「明瞭に書き直せ」と言うと、内容はそのままに研究費申請書向けにきれいに整えてくれた。
自分が先に書いた文章を直接修正するので、"load-bearing" のような表現も減り、科学的内容を代わりに書かせずに文の仕上げ時間を大きく節約できた。機能として再現はしてみたが、以前ほど上手いかどうかは確信がない
Claude.mdのいちばん上に、二人の「人」がいくつかの質問と回答を とても短く やり取りする例を入れればよい特定の表現そのものよりも、予測可能な話し方のパターン に落ち着いて絶えず繰り返すことが問題だ。
人間もまったく同じなのに、人間なら文体と呼び、機械がそうすると気が狂いそうなほど嫌うというのは興味深い心理現象だ
だが少数の人気モデルが皆の質問に答え、どこでも引用・転送され、個人的なコミュニケーションまで書き換えるようになると、その信号は雑音に変わる。誰もが同じように聞こえ、生物学的・文化的に頼ってきた出所識別の情報が失われる。相貌失認や色覚異常のようにこれを強く感じない人もいるだろうが、理由を正確に言語化できないだけで、多くの人は実際に不快に感じている
モデルは大きく重なる訓練データ、すでに不快なインターネットのマーケティング文句、他モデルの出力で学習し、RLHF も簡単に報酬が得られる特定の話法を強化するため、互いによく似たスタイルへ収束していく
Claude は、私が経験した最悪のプロジェクトマネージャーのように、単純な結論を何重もの表現で覆って核心を失わせ、その大半を抑えても一部が漏れ続ける。しばらくの間 "scaffolding" をやめられず、強く矯正しなければならなかった