Scrapboxに住んでるエージェント
個人のプロジェクトに書いたけどこっちに移植した
Scrapboxに住んでるエージェントならScrapboxのJSONデータを受け取るのが自然
何も明示的なミッションがないならまずは新しい順に読むのが自然
それぞれのページを読むのが初期タスクになる
1日1回起動されるなら過去24時間に更新されたページを読む
要約?
キーワードをピックアップ?
人間に対して質問する?
感想を書く?
人間も読んだもの全てに対してリアクションするわけではない
プロジェクトの目的などをプロンプトで与えるか?
これは自動化する前にローカルで動かすスクリプトを作るべきだな…
翻訳でもブログ文章作成でもなく、このScrapboxを読んで感想のブログを書くエージェントはどうか
時々質問を投げてくる
感想が日本語でも十分書けるようになれば、それを英語で書かせれば良い
"「読む」とは何か?"ではなく"何のために「読む」のか?"だ
たとえば「ざっくりどこに何があるのか把握しておいて、必要になった時に思い出せるようにする」は、今の言葉で言えばベクトルインデックスを作ることだ
これは圧縮した表現にすることで読み返しのコストを下げることが目的
reading
娯楽、情報を見つけること、理解を組み立てること
文字がずらずらと並んでいる古いフォーマットのコンテンツ
本の内容だけが組み立てる材料ではない
「見つける」と「組み立てる」のグラデーション
情報源が何で、受益者が誰なのか
これが明確でないから目的が明確にならない
このScrapboxにエージェントを住まわせようと考えた時に、暗黙に「情報源/nishio、受益者nishio」を仮定していた
これはかなり特殊な状況
例えば「情報源/nishio、受益者は日本語が読めなくて英語が読める人」なら翻訳や英語での解説を作るボットになる
「情報源は書籍、受益者はnishio」なら、僕の興味関心を理解した上で書籍の要約を作るボットになる
英語の動画とか特に「日本語でも動画などの音声インプットは苦手」な上に「英語」なので高コスト
英語の動画を代わりに見まくって面白かった時刻への要約付きリンクを生成してくれるボットなら僕は価値を感じる
受益者がエージェントそれ自体になることはできるか?
エージェントに好奇心があり、その好奇心が充足されることを価値だとすればできる
新規の情報が得られるだけではダメ
それだと乱数表を読み続けてしまう
すでに持っているものの1ステップ先が得たい?
プリセットの知識を与えるしかない
すでに持っている知識=自分のScrapbox
一旦自分のクローンにするわけ
他人のScrapboxの新着更新や、書籍やYouTube動画を入力にする
チャンクにわけてベクトル検索する
「過去の記憶から連想で見つける」に相当する
見つかってから既に繋がっているものは省く
これで「まだ繋がっていない連想」が得られる
ふうむ、となると
他の人に見せることを想定として/nishioの内容だけでベクトルインデックスを作ってるのは足りない
最初の足がかりとして有益なだけ
エージェントが「過去に読んだもの」をすべてストックするベクトルインデックスが必要である
これはもちろん他人の著作物を含むことになる
将来的には書籍を渡して読ませたりしたいが、開発の初期に関しては公開されてるScrapboxをクロールするとかで良いか
それはそれで有益なものもありそうだが雑用係っぽい
まず「自由にして良い部屋」(ボットのためのプロジェクト)を作るのはどうか
/nishioを読んで、/nishioに1日1ページ程度、「ボットのための部屋」には好きに何ページでも書く、的な感じ
omoikane-embedにScrapboxに書き込みをするスクリプトを置いて、うまく動くことまで確認した。
何か最低限のこと(処理完了!とか)を書くようにして一旦「Scrapboxと相互作用するシステムができた」とタグ打っておき、フォークして/nishio用のリポジトリを作ってガリガリ機能追加するかな…
あー、現状のomoikane-embedは「大したページ数じゃないからいいだろ」と考えて差分更新ではなく毎回全部のページをベクトルインデックスに突っ込んでるのか
/nishioに入れるならそこを直さないとだな…