BLOG.HIRO UENO.ART
← INDEX

入口は多くなくていい

MONET(僕が普段話しかけている、中心のAI)を、Obsidianにつなぐことにした。Obsidianはメモアプリで、僕はアイデアのメモや、Webで見つけた記事のクリップをここに溜めている。MONETは、それをまだ読めない。

MONETも、MONETを載せているアプリも、自分用に作っているもの。作る作業は、コーディングしてくれているClaude Code(以降Code)に頼んでいる。今回も、まずは叩き台でいいので、と頼んだ。

AIは、見えている手がかりからしか探しに行かない

前提から書いておく。

つなぐだけでは足りない。AIは、ファイルを読んだり検索したりする時に、ツールという機能を使う。ただ人間のように、無いな、探そう、とはならない。見えている手がかりがあって、初めてツールを使う。手がかりが見えない所は、AIにとっては存在しない場所になる。少し前に、MONETが過去の会話を探せるようにした時に、Codeからそう教わった(その話は別の記事で書いた)。

MONETには、会話のたびに最初から見えている索引がある。会話の記憶なら、過去の会話の要約を1行ずつ並べたもの。MONETはその行を手がかりにして、必要な時だけ中身を取りに行く。

この、最初から見えている1行のことを、ここでは入口と呼ぶ。入口が並んだ全体が索引。

Obsidianにも入口が要る。問題は、それをどんな形で、いくつ持たせるか。

最初の作りは、メモアプリのメモ1つにつき1行の入口だった

Codeが作った叩き台は、Obsidianの中の、アイデアを入れているフォルダにつながっていた。

入口は、メモ1つにつき1行。題名と一言の説明が、メモの数だけ並ぶ。MONETがメモを読むところと、新しいメモを書くところまで、Codeが確かめてあった。

索引に並べることと、読めることは別にする

それを見て僕が気になったのは、フォルダの分け方だった。

アイデアのフォルダは実験用に渡しただけ。これから情報を溜めていくなら、僕が使う場所と、MONETが書く場所は分けたい。ただ、Webクリップの保存先は動かしたくない。保存しにくくなるから。それでいてクリップは、MONETが調べものをする時に役に立つ。

場所を動かす代わりに、MONETのアプリの設定画面で選べるようにすればいいのか、と思いついた。Obsidianの直下(一番上の階層)にあるフォルダごとに、何が入っていて、MONETがアクセスしていいかを決める。

Codeはその形に賛成して、2つ足した。

1つは、索引に載せることと、読めることは別、ということ。索引には行数の上限があって、Webクリップは53本ある。1本1行で載せたら、それだけでほぼ埋まる。でも読めるようにはしておきたい。だからフォルダごとに、中身を索引に並べるかどうかを選ぶ。アイデアのフォルダは並べる。Webクリップは並べないけど、読める。

もう1つは、検索するツールが要る、ということ。中身を索引に並べないフォルダも、フォルダの説明だけは載せておく。その1行が、さっきの手がかりになる。MONETはそのフォルダがあることを知っていて、中身は検索で探す。

僕が思い描いていたのは、フォルダごとの1行と検索だった

つまりCodeの案では、並べると決めたフォルダのメモは、1件ずつ索引に載り続ける。

僕が思い描いていたものは違った。

MONETが常に持っている入口は、多くなくていい。

僕のプロジェクトを知りたければここ、クライアントのことを知りたければここ、くらいで足りる。中身の一覧を全部持つ必要は無いと思っていた。僕のこの認識は、実際に作られているものとズレてる?とCodeに聞いた。

ズレていた。しかも叩き台だけの話ではなかった。少し前にCode自身が書いた仕様書に、会話の索引と同じ形で1件につき1行、と書いてあった。叩き台はその通りに作られていた。

そのうえでCodeは、僕の考え方の方がいい、と言った。理由は3つ。

失うものも、Codeは挙げた。言われなくても気づく、ということ。索引にプロジェクトの名前の行があれば、僕がその名前を出した時に、MONETは検索しなくても気づく。入口がフォルダだけになると、MONETが自分で、検索する、と決めないといけない。

失う分は、検索ツールに付ける説明文で補う。MONETが読む、そのツールの使い方の説明。そこに、知らないプロジェクトやクライアントの名前が出てきたら、まず検索する、と書いておく。会話の記憶を検索するツールでも使った手だという。

形はこうなった。入口は、フォルダ1つにつき1行。フォルダの名前と、僕が書く説明と、MONETがそこでしていいこと。中身の一覧は、フォルダごとに選べるおまけにして、最初は切っておく。

入口にできるのは一番上のフォルダだけ。開けるまでAIには見えない

こうなると、入口をどこに置くかは、僕が決められる。

MONETに思い出してほしいものができたら、どこかのフォルダの奥に入れるのではなく、Obsidianの直下に専用のフォルダを作る。それを設定画面で入口として開ける。

Codeは、それをそのまま決まりにした。入口にできるのは直下のフォルダだけで、それより深い所は入口にしない。説明するのも、守らせるのも簡単だから。

新しく作ったフォルダは、作っただけではMONETには見えない。設定画面に未設定のフォルダとして出てきて、僕が開けた時に初めて入口になる。ここはCodeの勧めで決めた。

一覧に載っていないクリップにも、AIは検索で届いた

Codeは仕様書を書き換えて、叩き台を作り直した。

そのうえで、Codeが試しにMONETに聞いた。画像生成モデルの学習について、前にクリップしたものは無かったか。

この時点の索引に、クリップの題名は1つも載っていない。それでもMONETは検索のツールを使って、Webクリップのフォルダから該当の記事を見つけ、読んで要約した。

入口が少なくても、中まで届いた。

そのあと、仕事まわりの入口の名前を僕が決めた。ProjectsとClients、あとはTeam。プロジェクトを知りたければここ、クライアントのことを知りたければここ、と言っていた、その「ここ」に当たる。

Codeがフォルダを作り、設定画面にObsidianの欄を足して、僕が普段使っているMONETに入れた。入口は6つ。アイデア、Webクリップ、MONET自身のメモ、それにProjects、Clients、Team。MONETが書けるのはMONET自身のメモだけで、僕が使う場所とは分かれている。

MONETが見ているのは、設定に書いてある説明、という認識で合ってる?とCodeに確かめたら、合っていた。ファイルの中身は、MONETがツールを使うまで見えない。だから説明は、何が入っていて、どんな時に見ればいいかを、MONETに宛てた1行のメモとして書けばいい、とCodeは言った。

最初の叩き台では、メモの数だけ行が並んでいた。今の入口は6つ。そこに何と書くかは、僕が設定画面で決められる。