HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

LayerFS: AIコーディングエージェントのためのファイルシステム

LayerFS: The filesystem for AI coding agents (layerfs.ai)

55 pointsby l2dy29 コメント

要約

LayerFSは、AIコーディングエージェントが効率的に協調作業を行うための新しいファイルシステムです。エージェントは一時的なワークスペースで作業し、変更をコミットして永続的な履歴に保存します。これにより、大規模な並列処理と、エージェントが状態を維持する必要のない「エフェメラル(一時的)」なコンピューティングが可能になります。

全文翻訳

エフェメラル性:想像を超えたマルチエージェント開発のスケーリング

エフェメラル(一時的)なワークスペース。

永続的な共有履歴。

LayerFSは、エージェントの下に敷かれる基盤です。各エージェントは、共有されたコミット済み履歴上に完全な書き込み可能なワークスペースをマウントし、作業を行い、変更をコミットして消えていきます。

  • エフェメラルなワークスペース
  • 永続的な結果
  • 大規模な並列処理

LayerFSとDSH LayerFSとPisoon

[動画]

なぜLayerFSなのか

10のアイデア、1つのファイルシステム。

6つのコアアイデア・4つのサポートアイデア

エフェメラル・コンピューティング

コンピューティングはコマンドが実行されている間だけ存在します。

fs · アトミック書き込み → Store
書き込み
編集
削除
サンドボックス · ワークスペース per bash
マウント
実行
コミット
アンマウント
マウント
実行
コミット
アンマウント
マウント
実行
コミット
アンマウント
マウント
実行
コミット
アンマウント
マウント
実行
コミット
アンマウント

mkdir out

cat log.txt

python train.py

node build.js

UpToDate
Store
C41
C42
C43
C44
C45
C46

  • コンピューティング: エージェントは約80%を思考に、約10%をBashに費やします。
  • FS: 各ファイルツールの呼び出しは、1つのアトミックなStore操作です。
  • サンドボックス: 各Bashツールの呼び出しは、エフェメラルなワークスペースをマウントしてからコミットします。
分散型エージェント

異なるコンピューター上のエージェントが、1つのサーバーレスStoreを共有します。

store.db
C41
C42
C43
C44
C45
C46
C47
computer 1
computer 2
computer 3
computer 4

  • 共有ストレージ: すべてのエージェントが1つのStoreにコミットし、DBサーバーはありません。
  • 分散コンピューティング: 各エージェントは自身のコンピューター上で実行されます。
マルチエージェント協調

1つのプロジェクト、多くのブランチ。1つのブランチ、多くのエージェント。

main
auth
ui
login.ts
api.ts
session.ts
app.ts
xtoken.ts
app.tsx
nav.tsx

Conflict: app.tsx
app.tsx · merge markers

<<<<<<< head
C44
<Cart />

<Search /> >>>>>>> workspace

blame app.tsx
C12
import Nav
C44

<Header /> C44 <Cart /> C46 <Search /> L3 · publish L4 · publish
  • コミット: すべてのツール呼び出しは、そのブランチ上のコミットです。
  • コンフリクト: 同じファイルでの競合は、コンフリクトとして拒否されます。
  • blame: 各行は、それを書き込んだステップの名前を示します。
再帰的ファイルシステム

あらゆる深さの、あらゆるコミットを再帰的にフォークできます。

publish
0.62
0.48
0.21
0.40
0.78
0.66
0.30
0.71
0.91
0.69
pruned
pruned
pruned
pruned
pruned
★ best 0.91
explorers ×3
explorers ×3
explorers ×4
explorers ×3
explorers ×1
fork: no files copied

  • ゼロコスト: フォークはメタデータであり、ファイルをコピーしません。
  • 再帰的: RSIエージェントのためのファイルシステム、RLトレーニングのための再帰的探索。
超ストレージ最適化

10コピーが0.31に圧縮されます。

commits
1 · dedupe
12 chunks
13 chunks
14 chunks
15 chunks
11 matched · +1 new
11 matched · +1 new
11 matched · +1 new
dedup → ≈1.05 copies
→ 2 · compress
≈0.31 copies
illustrative · store.stats

  • 重複排除 (Dedup): 各コンテンツチャンクは一度だけ保存されます。
  • 圧縮: 保存されたチャンクはさらに小さくなります。
  • 比率: 10コピー → 1.05 (dedup) → 0.31 (compression) ワオ???
インスタントブートストラップ

依存関係は各マウントに含まれます。再インストールの時間を無駄にしません。

1 · git / other AgentFS
.gitignoreファイルなし

soops!
src/
package.json
.git/
node_modules/
node_modules/.cache/
.cache/
$ npm test
✗ Error: Cannot find module 'react'
$ npm install
$ npm test
✓ passed

⏱ 0:05
⏱ 0:20
⏱ 1:00
⏱ 2:00
⏱ 3:00
⏱ 4:00
⏱ 5:00
⏱ ≈5 min before the first run

clone + install, typical
⚠ wasting time · waiting on install

⌛ 2 · LayerFS
npm install committed once, back then (C12)
src/
package.json
.git/
node_modules/
.cache/
$ mount → workspace ready
$ npm test
✓ passed

instant · no install
⚡ mount 0.05 s
measured mounts: 5–20 ms
⚡⚡ ready the moment it mounts

  • Git / other AgentFS: 無視されるファイルをドロップし、再インストールします。
  • LayerFS: 無視されるファイルは、すべてのコミットに残ります。
  • 比較: 約5分のインストール時間 vs 0.05秒のマウント時間。

4つのサポートアイデア

  • 自動チェックポイント
    エージェントが行うすべてのステップは、戻ることができるチェックポイントです。
    すべての呼び出し: 各ファイル呼び出しはコミットであり、Bash呼び出しは終了時にコミットします。
    ノイズなし: 何も変更しない呼び出しは何もコミットしません。
    巻き戻し: 任意のチェックポイントからフォークし、任意のファイルを以前の状態として読み取ることができます。
  • 追記型オブジェクト
    保存されたオブジェクトは書き直されることはありません。Storeは増えるだけです。
    コンテンツアドレス指定: オブジェクトはバイトのハッシュによって名前が付けられます。
    密封: 書き込まれたパックは更新または削除されません。
    共有しても安全: ブランチはオブジェクトを共有し、リーダーはライターを待ちません。
  • コンフリクトルール (.lww)
    競合してはならないファイルを指定します。最新の編集が勝ちます。
    /.lww: ツリーのルートにあるGitignoreスタイルのルール。
    新しい方が勝ち: 両側で変更された一致ファイルは、新しい方の編集を採用します。
    対象: ロックファイル、ビルド出力、キャッシュ。
  • 大きなファイル、小さな編集
    編集のコストは、ファイルのサイズではなく、編集のサイズです。
    オーバーレイ: 書き込みは書き込まれたバイトのみを保持します。
    コミット: 編集されたエクステントとそのツリーパスのみが再構築されます。
    ストレージ: ファイルの残りは古いバージョンと共有されます。

エージェントのツール呼び出しとその履歴

HISTORY
main @ L0
0 commits · 0 live

main は中央の緑の枝であり、各publishはLayerバンドを追加します
Layer · main 上のバンド
Commit · リーフ
Branch · 枝
merge · 後ろに接合
publish · バンドを追加
stopped · 裸の小枝
名前タグをクリックしてそのブランチに焦点を当てる

store.stats
main · read-only

dedupe
1.5×

compression
3.32×

stored
9.4 MB

file
10.0 MB

logical 48.0 MB · canonical 31.2 MB · metadata 420 KB · free 180 KB · 0 commits · 1 layers

[画像]orchestrator
project · branch