AIに過去の会話や分岐を調べさせる:Wesh sysfs
以前のチャットや別の分岐・チャットグループに、今の質問に役立つ決定が残っていることがあります。Naidanのブラウザ内シェルWeshは、許可した会話履歴を/sys/fs/naidanにファイルとして示します。
Naidanを開き、以前の会話をモデルに活用させたいチャットを選びます。
今のチャットにない決定を使う
古い会話や別の分岐で決めたことは、現在の会話の経路には含まれない場合があります。その履歴へのアクセスを許すと、モデルは以前の記述を探し、今の質問への回答に生かせます。
会話履歴をファイルシステムにする理由
Weshは、許可したチャットのメッセージと分岐を読み取り専用のファイルとして示します。専用の取得ツールから履歴全体を受け取る代わりに、モデルは既存のシェルコマンドを組み合わせられます。grepで一致するファイルを探し、sedでMarkdownのパスに絞り、headで候補の件数を抑えられます。途中の全文はシェルのパイプ内にとどまり、絞った結果だけがモデルに返ります。サーバーモデルなら、その出力は設定した接続先へ送られます。
例:チャットグループや分岐をまたいで探す
たとえば「別のチャットグループや分岐も含め、以前に保存先について話した箇所を探し、関係する記述を今回の回答に使って」と頼みます。
すべてのチャットを許可している場合、シェルを使うモデルは、次のように表示対象のチャットからMarkdownファイルの候補を一覧できます。検索語は実際の会話に合わせて変えます。
grep -r -l '保存先' /sys/fs/naidan/chats | sed -n '/\.md$/p' | head -n 10出力されるのは最大10件の候補Markdownパスで、関連箇所を網羅した一覧や決定の判定結果ではありません。モデルは選んだファイルの本文と該当チャットのメタデータを読み、別の会話経路はbranches/leaves-md/から確認できます。current-chat/content-md/には、現在選ばれている分岐のメッセージだけがあります。
モデルが読める会話の範囲を選ぶ
以下の設定は、モデルが次にシェルを使うときと、新しく作るWesh ターミナルのセッションに適用されます。マウントをオフにすると、この仮想ファイルシステムは追加されません。表示範囲で会話履歴は絞れますが、どの有効な範囲でも保存済みバイナリファイルは全件読めます。
| マウントと表示範囲 | 会話データ | 保存済みバイナリファイル |
|---|---|---|
| マウントオフ | Naidanのsysfsはマウントされません。 | Naidanのsysfsはマウントされません。 |
| 現在のチャット | 現在のチャットのメタデータとメッセージ。チャットグループに属する場合はそのグループのメタデータも読めます。同じグループのほかのチャットの会話本文は読めません。 | 保存済みのバイナリファイルを全件一覧・読み取りできます。 |
| 現在のチャット+チャットグループ | 現在のチャットと、所属するチャットグループ内のほかのチャット。 | 保存済みのバイナリファイルを全件一覧・読み取りできます。 |
| すべてのチャット | 現在使っているNaidan空間に保存されたチャットとチャットグループ。 | 保存済みのバイナリファイルを全件一覧・読み取りできます。 |
現在のチャットでも、所属グループのメタデータにはグループ名、システムプロンプト、モデル設定、マウント、所属チャットのIDなどが含まれます。保存済みファイルには別チャットの画像添付なども含まれます。この範囲を確認してからマウントを選んでください。
AIのアクセスを有効にして範囲を確かめる
チャットの入力欄にあるツールを開き、シェルをオンにします。現れたシェル設定のマウント /sys/fs/naidanをオンにします。初めてマウントをオンにすると表示範囲は現在のチャットになります。モデルにシェルを使わせる前に、上の表を見て範囲を選んでください。初期設定で継承や変更がなければ、シェルもマウントもオフです。継承や保存済みの設定がある場合は、このチャットに表示されるスイッチを確認してください。
自分でも範囲を確かめるには、チャット上部のその他の操作メニューからWesh ターミナルを開きます。セッションがなければ自動で作成されます。以前のセッションのタブがある場合は、以下のコマンドを入力する前に+ 新規を選びます。新しいセッションはこのチャットのマウント範囲を使います。
ターミナルのセッションは作成時のマウントを使い続けます。マウントや表示範囲を変更した後、または別のチャットに切り替えた後は、+ 新規から現在のチャットと範囲のセッションを作ります。以前の範囲を使うセッションを終了するには、タブの×を選んでセッションを閉じるを確定します。ターミナルのウィンドウを閉じるだけでは、再度開いたときにセッションが残ります。
パスからメッセージと分岐を探す
これはWesh内の読み取り専用の仮想マウントで、端末のLinuxの/sysではありません。主な入口を示します。IDを含む名前は保存済みデータごとに異なります。
current-chat- 現在のチャットへのリンク。metadata.mdとmetadata.jsonはチャット設定、content-md/とcontent-json/は現在の分岐のメッセージを1件ずつ示します。branches/leaves-md/には、別の分岐の末端までの会話経路があります。
chats/- 選んだ表示範囲で読めるチャットのディレクトリ。各チャットには同じメタデータ、本文、分岐の構造があります。
current-chat-group- 現在のチャットがグループに属するときのグループへのリンク。現在のチャットでもメタデータは読めます。
chat-groups/- 表示対象のチャットグループ。現在のチャットでは現在のグループのchats/一覧へのアクセスは拒否されます。
hierarchy/- 表示対象のチャットのサイドバー構造に沿ったリンク。
binary-objects/by-id/- 保存済みバイナリファイルのIDごとのディレクトリ。各IDにmetadata.md、metadata.jsonと実データのdataがあります。
version- この仮想マウントのNaidanのバージョン文字列。
Wesh ターミナルで読めるファイルを確かめる
まずマウントと現在のチャットを調べます。メッセージのファイル名には番号、役割、メッセージIDが入るため、先にcontent-md/を一覧し、実際に表示された名前を指定して読みます。content-json/にはJSON形式、branches/leaves-md/には別の会話経路があります。
ls /sys/fs/naidan
cat /sys/fs/naidan/current-chat/metadata.md
ls /sys/fs/naidan/current-chat/content-md保存済みオブジェクトのIDを一覧し、実際に表示されたIDを下のパスに当てはめます。metadata.mdまたはmetadata.jsonには名前、MIMEタイプ、サイズ、作成日時が載ります。dataには実際のバイト列があります。画像などのバイナリはcatで全体を表示せず、wc -cでバイト数、xxd -l 32で先頭バイトを確認できます。
ls /sys/fs/naidan/binary-objects/by-idID一覧で見つけた名前を{id}に入れます。次は貼り付けるコマンドではなく、パスの形式です。
/sys/fs/naidan/binary-objects/by-id/{id}/metadata.md/sys/fs/naidan/binary-objects/by-id/{id}/data
ほかのマウントとの関係
通常のチャットツール設定でシェルだけをオンにしても、表示範囲が「なし」ならこのマウントはオフのままです。シェルツールは別にマウントしたフォルダでは作業できます。モデルがシェルツールを使うときも、設定されたsysfsの範囲が適用されます。
Wikipediaをオンにすると、シェルとこのマウントも有効になります。マウントがオフなら現在のチャットが選ばれ、既存の表示範囲が有効なら維持されます。取得した記事本文が80行を超えると、Naidanはバイナリファイルとして保存し、このマウント内のファイルのパスをモデルに渡します。シェルで必要な部分を読めます。同じマウントからほかの保存済みバイナリファイルも読めます。
端末のフォルダのコピーやリンクは別のボリュームマウントで、それぞれのパスと書き込み権限があります。このsysfsをオンにしても、端末で選んでいないフォルダは開かれません。
コマンドを使わずに見るなら、チャット上部のファイルエクスプローラーから同じマウントのパスを辿れます。このチャットの表示は、設定のファイルにある保存済みファイル一覧とは別です。