本文へスキップ
Pathrule

ドキュメント

一緒に変更されるファイル

Pathruleが、記録された作業と、Cloudワークスペースではgit履歴からの1回限りのシードをもとに、チームが一緒に編集するファイルを学習し、作業中のファイルの隣にあるファイルからナレッジを提示する仕組み。

このページの内容

ファイルの中には、ペアで動くものがあります。ルートとそのバリデーター。マイグレーションと、それに対応する型。コンポーネントと、それが読み込むトークンファイル。誰も書き残しませんし、フォルダ構成から見えることもめったにありませんが、数か月もすればチームの全員が知っていることです。

Pathruleはこれを作業そのものから学習します。エージェントが作業内容を記録すると、各エントリには変更したパスが含まれます。2つのパスが同じ作業の中に繰り返し現れると、Pathruleはそれらを一緒に変更されるものとして記録します。Cloudワークスペースではgit履歴からも先行して学習するため、数か月後ではなく最初の週からこのシグナルが役立ちます。

検索における役割

パス単位のスコープと意味ベースのマッチングは、どちらも今いる場所を起点にします。共変更(co-change)は、その隣にあるファイルを加えます。

アシスタントが/apps/api/payments/refund.tsで作業しているとき、検索ではすでに、そのパスに紐づけられたものと、意図に合致するものが考慮されています。共変更によって、そのファイルと習慣的に一緒に変更されるパスに紐づくナレッジも浮上できるようになります。そのため、レジャーの書き込み処理に関するルールが、レジャーに一度も触れていないセッションに届くこともあります。このコードベースでは、返金とレジャーが常に一緒に編集されてきたからです。

これが最も効くのは、誰も2か所に紐づけようと思わなかったナレッジです。判断が下されたファイルに一度だけ記録された決定でも、それを必要とするセッションに届きます。

アシスタントに見えるもの

Cloudワークスペースでは、エージェントがPathruleに求めるコンテキスト(pathrule_get_context経由)の中で、共変更が3か所に現れます。

  • 注意喚起。 アシスタントが扱っているファイルと特に頻繁に一緒に変更される隣接ファイルが1つある場合、アシスタントにはそのことを伝える1行が届きます。そのファイルは通常このファイルと一緒に変更される、という内容です。最大1行で、強い関係がある場合に限られるため、ノイズではなく警告として読めます。
  • 関連パス。 フォーカスまたはディープなリクエストのコンテキストとあわせて、アシスタントは作業中のパスと習慣的に一緒に変更されるパスの短いリストを受け取ります。
  • ディープな回答における結合領域。 エージェントがディープなコンテキストを求めると、回答には対象領域と結合しているワークスペースの部分が、そこに紐づくメモリ、ルール、スキルのタイトルとともに示されます。

この情報の取得は独立して処理されるため、取得に失敗しても、本来一緒に届くはずだったメモリやルールがそのターンで失われることはありません。

関係の測り方

記録されたペアは、両方のパスが記録された同じ作業に現れた場合にカウントされます。フォルダが同じだけでは不十分で、別々のタスクで同じ日に変更されただけでも足りません。単位を1つの作業としているのは、それがレイアウト上の偶然ではなく、実際の依存関係を示すからです。

関係は直近のアクティビティから再構築されるため、起きなくなった関係は誰かが削除しなくても薄れていきます。2つのファイルを切り離すリファクタリングは、その後の数週間で両者の関係が弱まる形で現れます。

git履歴による先行学習

新しいワークスペースにはまだ記録された作業がありませんが、隣接ファイルがわかると最も助かるのはまさにこの時期です。そこでCloudワークスペースでは、エージェントが初めてPathruleにディープなコンテキストを求めたときに、ローカルランタイムが直近のgit履歴のファイルパスを読み取ります。同じコミットで変更されたファイルがペアになり、非常に大きなコミットはスキップされます。大きなコミットは通常リファクタリングやリネームで、あらゆるファイルを互いにペアにしてしまうからです。得られたファイルパスのペアは、各ペアの出現回数とともに、Pathrule Cloudのワークスペースに保存されます。

これは確認を求めることなく一度だけ実行され、読み取るのはファイルパスだけです。チームが作業を記録するにつれ、そこで記録された関係の比重が増し、gitシードの比重は下がっていきます。こうして全体像は、過去にコードがどう変更されたかから、チームが今どのように作業しているかへと移っていきます。

何から構築され、何から構築されないか

このシグナルはファイルパスのみから構築されます。エージェントが記録する作業内のパスと、Cloudワークスペースでは直近のgit履歴のファイルパスです。Pathruleはこれを計算するためにソースコード、diff、コミットメッセージを読み取ることはなく、ファイルについてパス以外の情報は一切含まれません。

アカウントなしで使うローカルワークスペースには、gitシードがありません。ペアは記録された作業だけから生まれるため、知っておくべき実際上の影響があります。実際の編集履歴が必要だということです。記録されたタスクがすべてちょうど1つのファイルにしか触れていないワークスペースでは、ペアにするものがないため、ペアはまったく生まれません。その場合も検索はパス単位のスコープと意味に基づいて機能し続け、共変更は推測をせず、何も寄与しません。

また、このシグナルはワークスペースごとに独立しています。あるワークスペースで学習した関係が別のワークスペースに引き継がれることはなく、このシグナルは他のナレッジと同じアクセス制御のもとにあります。

確認する場所

共変更はバックグラウンドで動作するため、設定することも有効にすることもありません。チームが記録する作業が増えるほど役立つようになり、これは作業エピソードや提案を役立つものにするのと同じ要素です。エージェントが作業を記録していれば、これはすでに蓄積されています。Pathruleが計算するものには、Pathruleがチェックアウトから読み取るものが一覧になっています。