Amenbo の全体像

シリーズ・第 2 回 — 「AI エージェントのためのタスク管理をつくる」。前回はなぜつくったのか。今回は、その中身をどう組み立てたかの全体像です。

前回は「なぜ」でした。今回は「どう組み立てたか」を、個別の技術に入る前に、まず全体をざっと見ておきます。細かいところは次回以降で一つずつ掘ります。

一枚岩の Core に、2つの入口

Amenbohttps://amenbo.work/)の中身、つまり業務ロジックは、Rust の Core(amenbo-core) に全部あります。人が使う GUI(React・Tauri) と、人と AI が打つ CLI(amenbo) は、その薄い皮。両方が、同じ Core の関数を呼びます。

だから、どちらから足した機能も、同じ1つの実装に乗ります。中央サーバーはありません。

Amenbo のレイヤー構成。上に GUI(React・Tauri)と CLI(amenbo)の2つの入口があり、どちらも中央の Core(Rust・amenbo-core)を呼ぶ。ロジックはすべて Core にあり、GUI も CLI も同じ関数を呼ぶ。Core はローカルの単一 SQLite ファイル store.sqlite を読み書きする。中央サーバーはない。
ロジックは Core に1つ。GUI と CLI はその薄い皮で、同じ関数を呼ぶ

データは、フォルダでなくアプリ領域に

意外かもしれませんが、プロジェクトのフォルダにデータは入っていません。あるのは .amenbo という小さな目印だけで、中身はどのプロジェクトかを指す番号(project_id)だけです。

実体は、OS のアプリデータ領域にある単一の store.sqlite。設定や表示名は別ファイルにあり、そこも秘密は持ちません。1つのストアを、複数のフォルダから指せます。

データの置き場。左のプロジェクトのフォルダは .amenbo という目印だけを持ち、中身は project_id のみ。右の OS のアプリデータ領域に、唯一の実体である store.sqlite(1ファイル)、設定と表示名の config/identity(秘密なし)、本体を別置きした添付ファイルがある。複数のフォルダが同じ1つのストアを指す。データはリポジトリに置かない。
フォルダは目印だけ。実体はアプリ領域の 1 ファイルに集まる

ストアは、タスクと決定のグラフ

その store.sqlite の中身は、ばらばらの表ではなくグラフです。第 1 回で触れた「決定とタスクのつながり」が、そのままデータの形になっています。

前回「どのレコードを、どういう関係で読むか」と言ったのは、この構造のことです。

ストアはグラフ。プロジェクトの中に、決定(D-n)とタスク(T-n)の2種類のノードがある。決定どうしは supersede などのエッジでつながり、決定とタスクはリンクでつながり、タスクどうしは依存でつながる。
ストアの中身は、タスクと決定をエッジでつないだグラフ

この先、どこを掘るか

ここまでが全体像です。次回からは、その一部にズームインしていきます。たとえば——

まずは、「どこに何があるか」だけ頭に入れておいてください。

☕ チップを送る