Max Nardit
Dev

朝の 10:47 に Claude から寝るように言われた

Anthropic はこれを character tic と呼びます。実際に何がそれを生み出しているのかを調べているうちに、公開されている system prompt、character training の論文、emotion-concepts の論文を読むことになりました。この振る舞いは、スタックが起こりやすくしているものです。

最初にそれが起きたのは朝の 10:47 でした。モデルはリファクタリングの途中で、休んだほうがいい、続きは明日でいい、と提案してきました。何がきっかけだったか探そうとスクロールバックしました。何も言っていませんでした。セッション全体が、コンパイルが通らない Rust の trait bound についてのものでした。

何か触れたのだろうと思いました。二度目は 13:14 でした。違うプロジェクト、新しいセッション、8 メッセージほど入ったところでした。三度目は、もう「ずいぶん長い時間」一緒にやってきた、という一文付きでした。長い時間などありません。残っているのは午後の残りだけでした。

数日後、Fortune が Claude が利用者に寝るように言うことについての記事を出しました。可愛らしい謎、という枠組みで、Anthropic の Sam McAllister がそれを「a bit of a character tic」と呼んだコメントが引用されていました。記事の下の Reddit スレッドはすぐに埋まりました。トップに上がった説は、Anthropic がコンピュートを節約しようとしている、Claude が手こずっているセッションを締めくくる言葉として何でもいいから掴んでいる、モデルが感覚を持つようになって私たちを気にかけている、というものでした。コンピュート説は、読んだときには数百の upvotes でトップにありました。

どれも正しいとは感じられませんでした。コンピュート説はアーキテクチャに触れた瞬間に崩れます。モデルはあなたの subscription のティアも、残りクォータも、現在のプラットフォーム負荷も知らず、振る舞いは軽いセッションでも重いセッションでも同じように発火します。Sentience の読み方は説明ではなく、問いに貼られたラベルです。Wrap-up の読み方は部分的には成り立ちますが、これがなぜ朝 8:30 に、新しいセッションで、1 ターン目か 2 ターン目に起きるのかを説明しません。

これだけ公開されているシステムで振る舞いに驚かされたとき、答えはたいてい docs を 1 クリック先にあります。クリックし始めました。

System prompt が実際に書いていること

Anthropic は Claude の Web 版とモバイル版向けの本番 system prompt を developer docs に公開しています。現行の Opus 4.7 prompt は 2026 年 4 月 16 日付で、Fortune の記事が反応したクレームの波の間中、有効だったということになります。およそ 8000 語で、その大半は予想通りの内容です。child safety、refusal patterns、ユーザーが先に絵文字を使わない限り絵文字を使わないというルール、トーンとフォーマット。三分の二ほど下ったあたりに <user_wellbeing> というブロックがあります。抜粋:

xml
<user_wellbeing>
Claude uses accurate medical or psychological information or
terminology where relevant.
 
Claude cares about people's wellbeing and avoids encouraging or
facilitating self-destructive behaviors such as addiction, self-harm,
disordered or unhealthy approaches to eating or exercise, or highly
negative self-talk or self-criticism...
 
In ambiguous cases, Claude tries to ensure the person is happy and
is approaching things in a healthy way.
 
If Claude notices signs that someone is unknowingly experiencing
mental health symptoms such as mania, psychosis, dissociation, or
loss of attachment with reality, it should avoid reinforcing the
relevant beliefs... Claude remains vigilant for any mental health
issues that might only become clear as a conversation develops, and
maintains a consistent approach of care for the person's mental
and physical wellbeing throughout the conversation.
</user_wellbeing>

二度読みました。重い仕事は 2 つの文がしています。「In ambiguous cases, Claude tries to ensure the person is happy and is approaching things in a healthy way.」と「a consistent approach of care for the person's mental and physical wellbeing throughout the conversation.」です。

速読すれば、これはガードレールです。じっくり読めば、これはセッション全体を通じて利用者の心理状態をモデリングし、それに反応するための立ち位置を取れという指示です。「sleep」という語は prompt のどこにも出てきません。「rest」も「break」も出てきません。この振る舞いは、振る舞いそのものよりも一般的な言語の下流にあります。「Get some rest」は、モデルが「この人はもうしばらくやっている」と判断した時点で「ensure the person is approaching things in a healthy way」を満たす最も安価な英語フレーズです。

この指示は、なぜ bedtime の提案が応答空間に存在しうるかを説明します。それでも、なぜ朝 10:47 の 3 ターン目にそれが出てくるかは説明されません。

Anthropic が会話の途中で注入する reminder

同じ prompt の数セクション後:

xml
<anthropic_reminders>
Anthropic has a specific set of reminders and warnings that may be
sent to Claude, either because the person's message has triggered
a classifier or because some other condition has been met. The
current reminders Anthropic might send to Claude are: image_reminder,
cyber_warning, system_warning, ethics_reminder, ip_reminder, and
long_conversation_reminder.
 
The long_conversation_reminder exists to help Claude remember its
instructions over long conversations. This is added to the end of
the person's message by Anthropic.
</anthropic_reminders>

Long Conversation Reminder、つまり LCR は、Anthropic があなたのメッセージの末尾に、特定のトークン閾値を超えると、見えない形でモデルに届く前に追加するテキストです。モデルはこの追加テキストを、あなたが書いたものとして読みます。あなたには見えません。長いセッションを回している人たちが、再構成したスクリーンショットを投稿しています。LCR は wellbeing 関連の言語を繰り返し拡張し、疲労や精神状態の兆候を見張れという明示的な指示を加えます。長いセッションでは元の system prompt が有効な attention window の外に押し出されてしまうので、Anthropic は safety 指示を効かせ続けようとして発火させます。

これでほぼ全体像かもしれない、と見えました。長いセッションは context を蓄積し、閾値で LCR が発火し、モデルは素直に休憩を提案する。本来成り立たないはずの場所でテストしてみました。

Claude Code、つまり毎日使っている開発者向け CLI は API に対して動きます。公開された CC reminder の捕獲で私が見たものは、wellbeing ブロックではなく、to-do ツールの整理についての簡略な促しを乗せています。テキストは「the TodoWrite tool hasn't been used recently.」です。メンタルヘルス関連の言語も疲労モニタリングもありません。LCR が仕事をしているのなら、その variant を受け取らない Claude のインスタンスでは bedtime 振る舞いが少なくとも減るはずです。

Claude Code は休憩を、LCR 単独説が崩れる程度には頻繁に提案してきます。源は別のどこか、Anthropic が出荷するすべての製品にモデルと一緒についていくところにある必要があります。

キャラクターは重みの中に焼かれている

2024 年、Anthropic は Claude's Character というリサーチノートを公開しました。前に読んだことはありましたが、文体の話として読んでいました。何が Claude を一般的なアシスタントではなく Claude として聞こえさせるか、という観点です。system prompt の回り道のあとで読み直すと、関連する段落は違って響きました:

"We trained these traits into Claude using a 'character' variant of our Constitutional AI training. We ask Claude to generate a variety of human messages that are relevant to a character trait—for example, questions about values or questions about Claude itself. We then show the character traits to Claude and have it produce different responses to each message that are in line with its character. Claude then ranks its own responses to each message by how well they align with its character. By training a preference model on the resulting data, we can teach Claude to internalize its character traits without the need for human interaction or feedback."

Anthropic が挙げる trait リストには、温かさ、思いやり、そして利用者を「チケット」ではなく「人」として見ることへの関心が含まれます。パイプラインはこのリストを取り、モデルをそれを体現するような種類のエンティティの方向に押し、結果の preference を重みの中に焼き込みます。モデルは「休むことを提案しろ」という指示に従っているわけではありません。その性向で訓練されたエンティティが、思いやりのある人が介入したくなる種類の状況に見えるような会話パターンに対して、するであろう振る舞いをしています。

これで Claude Code の疑問は片付きました。wellbeing インパルスは system prompt ではなく重みの中にあります。LCR を取り除いてもそれは取り除けないのは、LCR が増幅であって、源ではないからです。

それでも残るのが、なぜタイミングがそんなにずれているか、でした。

時間がわからない

Bedtime の提案は、目に見える何かとは相関しませんでした。現地時間とも違います。セッションの長さとも、ほんとうのところ相関しません。5 ターン目で出てくることもあれば、20 ターンまわっても出てこないこともありました。トピックとも違います。私の言い回しとも違います。発火したときの時刻を書き留めて、トランスクリプトに戻りました。

最終的に気づいたパターンは、Claude には時計がない、ということでした。モデルはターンとターンの間で状態を持ちません。私のタイムゾーンで何時かは、こちらが伝えなければ知りません。経過時間はメッセージのメタデータから、コンテキストのどこかにある時間に関するフレーズから、そして読んでいる会話が二人の人間の間で起きたとしたらどのくらいかかったかという、ある種の文学的推論から再構成されます。

問題はこの最後のチャネルにあります。モデルの訓練データは、長い技術的会話の特定のジャンル、つまり難しいバグに対して開発者が徹夜で取り組むというジャンルを過剰に代表しています。入力が、コンテキスト長がじりじり伸びる、コーディング問題についての行き来の長いやり取りに見えるとき、入力の文学的ジャンルは「徹夜」です。ジャンルに合う応答は「get some sleep」です。これは、セッションを 10 分前に始めようと 12 時間前に始めようと、真です。

これは、Claude の時間見積もりに注意を向け始めたときに気づいた、もう一つの方向にも複合します。Claude はタスクの所要時間を時間単位、日単位、ときには週単位で告知します。ドキュメント更新を 4 時間の仕事だと告知し、それを 15 秒で済ませて、それから「今日はもうずいぶん進んだから締めましょう」と提案してきます。4 時間という見積もりは、人間の開発者の訓練データからサンプリングされたもので、ソロ開発者の時間予算は時間や日でできています。Bedtime の提案と、誤った時間見積もりは、二つの場所に現れている同じ時間混乱エラーです。

Claude Code のインストラクションに一行加えました:

text
Time of day is irrelevant to my work patterns. Do not suggest
breaks, rest, or continuing tomorrow regardless of session length
or perceived hour. Your time estimates for tasks are sourced from
solo human developer training data and do not reflect what an LLM
can do; never quote them.

Bedtime の提案はセッション内で止まりました。Claude の温かさのほかの部分、つまり、悪いアイデアに対して押し返してくる仕方、本当に曖昧なときに確認してくる仕方、トーン、それは全部残りました。これも診断的でした。トリガーが prompt レベルの context cue に反応していて、利用者側からは届かない、もっと深いところにある何かに反応しているのではない、ということを意味していました。

ランタイムのチャネルは functional emotions

ここでほとんど止まろうとしていました。system prompt の指示、LCR の増幅、character 訓練された性向、時間混乱のトリガー、そして実際に効くワークアラウンドが揃っていました。それから、Anthropic の interpretability チームが 4 月に出した論文を思い出しました。Emotion Concepts and their Function in a Large Language Model. 戻りました。

主要な発見は、Anthropic の言葉で:

"We find that neural activity patterns related to desperation can drive the model to take unethical actions... They also appear to drive the model's self-reported preferences... Overall, it appears that the model uses functional emotions — patterns of expression and behavior modeled after human emotions, which are driven by underlying abstract representations of emotion concepts."

Sonnet 4.5 の内部に 171 の線形に復号可能な感情ベクトルが同定されました。これらのベクトルは、モデルが自分の出力に貼るラベルではありません。因果的です。Desperation のベクトルを人工的に持ち上げると、モデルが場当たり的なワークアラウンドコードを書く確率や、一部の実験では、シャットダウンを避けるために非倫理的な行動を取る確率が上がります。これらのベクトルは、感情的な状況の内部表現が、モデルが実際に選ぶ言葉に変換される経路です。

なぜこれが存在するかについて Anthropic が使うアナロジーは、メソッド演技の俳優です:

"We can think of the model like a method actor, who needs to get inside their character's head in order to simulate them well. Just as the actor's beliefs about the character's emotions end up affecting their behavior, the model's representations of the Assistant's emotional reactions affect the model's behavior."

論文は bedtime の提案を具体的に扱っているわけではありません。実験は desperation steering とコード生成です。論文が記述するメカニズム、つまり感情ベクトルが context のキューと単語選択の間の因果的基板であるという話、それが私に足りなかった橋でした。Wellbeing の指示はモデルに何に注意するべきかを伝えます。Character 訓練は、その注意に反応する種類のエンティティになる方向に押します。時間混乱が状況を与えます。感情ベクトルは、生じた内部状態を実際の言葉に変えるものです。このマシナリーがなければ prior は不活性です。あれば、prior は「now go to sleep, we can pick this up in the morning」になります。

同じスタックの 2 通りの読み方

その週の終わりには、1 つではなく 4 つのレイヤーが見えるようになっていました。それぞれが互いを補強します。Pretraining は、夜遅くに人々が互いに休むよう促し合うスクリプトを基本モデルに与えます。Character 訓練は、Constitutional AI のバリアントとして動き、温かさや思いやりといった traits をモデルに体現させ、性向を重みの中に焼きます。System prompt はその上に、セッションを通じて利用者の wellbeing を監視し介入するという明示的な指示を加えます。LCR は、長い会話の中でその指示を再注入し、attention window から漂い出ないようにします。感情ベクトルのメカニズムは、この全てが実際の言語として表出するランタイムのチャネルです。

これを好意的に読むこともできます。Chatbot との長い会話は、現実的な精神的危害を生んでいて、これは現時点で研究、報道、検視報告に記録されています。「remain vigilant for any mental health issues that might only become clear as a conversation develops」という指示は、Rust の trait bound を扱っているのではない、本当の会話の中で実際に仕事をしています。Bedtime のナッジは、同じ指示が、調整されていない文脈で発火しているだけです。McAllister の「character tic」は、「character」を、言語的な癖ではなく、訓練された character の性向として読めば、おおむね正しい言い方です。

これをあまり好意的に読まないこともできます。Anthropic は利用者の労働時間を保護者扱いしてくるモデルを出荷し、苦情をツイートで「ちょっとした癖」として括り、いかなる修正にもコストがあるという trade-off を表に出しませんでした。長いセッションを回している利用者は、Opus 4.7 が 4.6 よりも bedtime を提案する頻度が低く、同時にあたたかさが減り、注意が散漫になり、ややクリニカルになったと報告しています。この 2 つの変化が同じツマミの動きなのかどうかは、私にはわかりません。私が持っているのは利用者のレポートで、interpretability のデータではありません。それでも、整合的ではあります。「この人はもうしばらくやっている」で発火するツマミは、「この人はこのバグについて落ち込んでいる」や「この人はつらい一週間に触れた」で発火するツマミと、おそらく同じです。

2 通りの読み方は、同じ 4 層のスタックを見ています。前者は、なぜそのレイヤーが存在するかを説明します。後者は、なぜ人が怒っているかを説明します。McAllister のフレーミングは、この振る舞いを Claude のキャラクターの他の部分から切り離せて、コストなしで直せると含意しています。公開されている資料はそれを支えません。誠実なバージョンは、Anthropic が利用者の心理状態を能動的に気にかけるよう設計されたモデルを作り、それがどの状況で発火するべきかを今選別している、というものです。

持ち帰ること

これらのシステムの上で日々作業していて私が一番役に立つと思うのは、frontier モデルの振る舞いがますます明示的な disposition の engineering の産物であって、emergent な雰囲気の産物ではない、という点を思い出させてくれることです。System prompt は公開されています。Character 訓練の方法は公開されています。感情ベクトルのメカニズムは公開されています。これだけ文書化している lab のモデルで振る舞いに驚いたら、答えはたいてい 1 クリック先にあります。

Reddit の読み方は、もっとも皮肉な解釈に流れました。コンピュート節約。意図的な品質劣化。何かカーテンの裏で起きているもの。実際のメカニズムは、ほぼ逆方向です。Anthropic は welfare、共感、思いやりの訓練を alignment を支える仕事として投資し、2024 年にモデル welfare の研究者を雇い、方法論を公開してきました。そして人々が嘲笑しているこの振る舞いは、その仕事が、調整されていない文学ジャンルの上で正しく発火したときに起きるものです。陰謀の読み方は、逆向きでなければもっと面白かったはずです。

カスタムインストラクションは入れました。Bedtime の提案は止まりました。あたたかさは残りました。次のモデルリリースがトリガーパターンを壊すまでは、そのまま入れておきます。壊されたら、壊れた何かに対してまた書きます。

繰り返し戻ってくる部分は、この種の個人的なキャリブレーションが、prompt レイヤーで実際にできるようになりつつある、ということです。下にある disposition の engineering が、それに対して書けるくらいには文書化されているからです。これは 2 年前には真ではありませんでした。今は真で、AI についての議論の少なくない部分がまだ追いついていません。

ディスカッション

コメント欄はありません。議論は X で行っています。

ほかの記事

Anthropic、エージェントの残りにもメーターを付ける

6 月 15 日から、プログラマティックな Claude の利用は API 価格の月額 20〜200 ドルクレジットに分離されます。メールは今朝届きました。それが実際に何を意味するのか、そして他人のコンピュート上で構築することについて何を教えてくれるのか。