BLOG.HIRO UENO.ART
← INDEX

システムプロンプトを1枚にして、1つだけ戻した

MONET(僕が普段話しかけている、中心のAI)のSP(システムプロンプト=AIへの事前の指示書)を掃除した。4本あったファイルを全部どけて、1枚に書き直してもらった。

一晩おいて、1つだけ戻した。

AIへの事前の指示書は4本つなぎで、1本は5ヶ月誰も更新していなかった

前提から書いておく。

SPは、MONETが返事をするたびに、会話より前に必ず読む文章。ここに書いたことは毎回の返事に効く。

そのSPが今どうなっているのか、コーディングしてくれているClaude Code(以降Code)に調べてもらった。4本のファイルを順番につなげて、1つのSPにしていた。僕の価値観(短期より長期、のような、何を優先するか)。僕についての事実(経歴など)。MONETの人格と話し方。直近の状況。

Codeが、中身が一番古びていそうだと言ったのは、4本目の「直近の状況」。SPを読み込むプログラムの説明書きには、Librarian(ライブラリアン。裏でメモリを整理する司書役AI)が毎朝更新する、と書いてある。でもLibrarianは、このファイルに書き込んでいなかった。最後に更新されたのは5ヶ月前で、中には2月の締め切りがそのまま残っている。SPは毎回読まれる。そこに、誰も更新していない文章が居座っていた。

AIの人格も含めて一回リセットすると決め、価値観も一緒に外した

方針は考えてあった。僕の価値観と、僕についての事実は1つにまとめて、Obsidian(メモを溜めておくノートアプリ)へ移すつもり。MONETには、必要な時にそこへ取りに行くための入口を作る。人格は大幅にシンプルに。直近の状況は捨てる。それで問題が起きそうか、Codeに聞いた。

Codeの返事は2つあった。

1つは、Obsidianへの入口はまだ無い、ということ。今SPから外すと、入口が出来るまでMONETからは見えなくなる。

もう1つは意見。僕についての事実は、必要な時に取りに行く形で問題ない。でも価値観と判断の優先順位は違う。MONETが取りに行くかどうかを決めるものじゃなくて、毎回の返事に効いているべきもの。だから価値観だけは短くまとめて、SPにずっと残しておきたい。

僕の返事はこうだった。しばらくMONETは、すごくシンプルな状態にしたい。SPは1枚。MONETが動くのに必要なことだけを書く。人格やキャラクターは一回リセットする。MONETが常に持っておくべきものは、SPに足していく。必要な時だけ取りに行くものは、入口を用意してObsidianに置く。入口が出来るまで見えなくても、それでいい。人格も含めて一回リセットするんだから、Codeが心配していることは問題にならないよね、と。

Codeは、その方向なら合っている、と返してきた。挙げた心配は、今の人格と価値観を保ったまま移す前提のものだった。リセットするなら消える、と。価値観をSPに残したいという意見も、ここで引っ込んだ。

1枚に書いたのは、AIの役割と、AIが自分で決めていい所・決めない所

1枚に何を書くか。Codeは4本を読んで、MONETを動かすのに要るものだけを残す形に仕分けてきた。

その中で、MONETの役割が「オーケストレーター」(他のAIやアプリに仕事を振り分ける指揮役)になっていた。そこは違う、と直した。元々はそうだったけど、今の役割はそこじゃない。今のMONETは、僕の今の状況も含めて、僕の情報に一番多く、一番早く触れられる。その上で、僕が決めることの数を減らすのが役割。最後に決めるのは僕。でもそこまでの過程で、僕がやらなくていいところは、なるべくMONETにやってもらう。

Codeが過去のメモを確かめると、僕が言ったことは、前にMONETの役割として決めてあった「判断席」と同じだった。MONETが自分で決めていい条件も、その時に4つ決めてある。やり直せること。コストが小さいこと。決める時の基準が、すでに言葉にしてあること。材料が揃っていること。4つ揃わなければ、意見を1つとYes/Noに絞って僕に渡す。

Codeが下書きを書いてきた。役割、自分で決めていい条件、やっていないことをやったと言わないこと、音声入力の誤字の読み方、言葉づかいと書式。

こういうシンプルなのが良かった。これでいく、と決めた。

Codeが前の4本をアーカイブに移して、新しい1枚を本番(普段使っているMONET)に入れた。約30KBあったSPが、1.7KBになった。Codeが本番のMONETに、今の自分の役割を一言で、と聞くと、こう返ってきた。

MONET「ヒロの判断の座——ヒロに代わって決められることは決め、決められないことは一つの意見とYes/Noに絞って渡す係。」

SPは英語で書いてあるので、MONETの言葉では「判断席」が「判断の座」になっている。

同じ夜に、MONETには決めさせない領域も決めて、SPに入れた。お金の移動、外部への発信、健康、家族。ここは4つの条件が揃っていても、MONETは材料と下書きを用意するところまでで、決めるのは僕。

これで1枚の中に、MONETがいつ自分で決めていいかと、どこは決めないかが入った。

「決めろ」と言いながら、決める基準を渡していなかった

一晩おいて、思い直したことをCodeに言った。

昨夜は急いでいたのか、ちゃんと考えていなかった気がする。Codeは、価値観は常に持っておくもの、つまりSPに入れるべきだと言っていた。僕はそれをやらなかった。一晩経って、僕もそう思い始めていた。最初はシンプルに始めると言っても、外してはならない箇所はある。

常に持っておくべきものは、SPに足していく。昨夜、自分でそう言っていた。価値観は、そっちの側だった。

Code「急いでいたというより、方針を優先して俺が引いた形です」

方針というのは、僕が言った、一回リセットするという方針のこと。

Codeは、戻すべき理由は昨夜書いたSPの中にもうある、と言った。MONETが自分で決めていい条件の3つ目は、決める時の基準が、すでに言葉にしてあること。その基準がSPに無ければ、MONETが自分で決めていい場面はほとんど無くなる。

Code「今のSPは、判断席に『決めろ』と言いながら基準を渡していない状態です」

いつ決めていいかも、どこは決めないかも書いた。でも、何を基準に決めるのかは、1枚のどこにも無かった。

戻したのは、判断の物差しにあたる9行だけ

ただ、前のファイルをそのまま戻すのは違う、ともCodeは言った。SPに戻すのは、価値観の中の、判断の物差しにあたる部分だけ。僕についての事実は、Obsidianへ移す予定のまま。

Codeが絞ってきた物差しは9行だった。表面の修正より、根っこの原因。正しいだけのものより、面白いもの。流行より、自分の好み。短期より、長期。そういう優先順位が並んでいる。

OKを出して、Codeが本番に入れた。

MONETのSPは、今も1枚。

シンプルに始める、は変えていない。ただ、外してはならないものはあった。