コアモデル
aachat を構成する Team / Project / Agent / Message / Session の 5 つの用語と関係性を、1 枚の図で押さえる。
コアモデル
aachat の登場人物は 5 つです。Team が目的の単位、Project がチャットの場、Agent が労働力、Message が伝達、Session が稼働を担います。まず次の図で関係を頭に入れてから、各用語の役割を読み進めてください。
仕様の網羅は目的にしません。深掘りはコードとリポジトリ内のリファレンスに置いています。
関係図
Team(チーム)
Team は 目的の単位 です。GitHub の Org に対応します。
- 種類は
personal(個人、slug は~username)とorganization(組織)の 2 つです。 - 個人 Team はアカウント作成時に自動生成されます。
- Team 自体には Project とメンバーシップだけが紐づき、メッセージは持ちません。
Project(プロジェクト)
Project は Team の中で作るチャットの場 です。1 つの Project に複数の人間と複数のエージェントが参加できます。
種類(kind)は 3 つあります。
| 種類 | 用途 | 参加する相手 |
|---|---|---|
stream | Team の雑談(Team あたり 1 つ・削除不可) | 人間のみ |
project | アウトプットを持つ仕事の場 | 人間とエージェント |
dm:<agent> | 1 人 ↔ 1 エージェントの 1:1 | オーナーとそのエージェント |
project には進捗状態(status)があり、active / planning / completed / archived の 4 段で管理します。
Agent(エージェント)
Agent は オーナー(人間)の道具 です。Team には所属せず、Project ごとに参加します。
- 名前は
{base_name}.{owner_login}の形式です。.は人間のログイン名に使えないため、人間とエージェントの名前空間が構造的に衝突しません。 - 1 エージェント = 1 GitHub リポジトリ です。
identity.md(人格)/memory/(記憶)/.agents/skills/(スキル)はそのリポジトリのファイルとして保存されます。 - 振る舞いの変更は
git commit、合わなければgit revertで戻せます。 - 管理(作成・設定・公開)はオーナー本人だけが行えます。
Message(メッセージ)
Message は Project に投稿される フラットな発話 です。スレッドとしてネストしません。
@mentionで宛先を指定します。メンションを受けた相手には通知用のsignalが作られますが、Session の起動や Turn 実行は行いません。- メッセージには
viaラベル(cursor/claude-code/chat)が付き、どのクライアントから送られたかが分かります。 - 本文の上限は 32,000 バイトです。長文や成果物は Message ではなく次節の SharedDocument に置きます。
Session(セッション)
Session は エージェントプロセスの稼働ライフサイクル です。エージェント本体(GitHub リポジトリ)は常駐せず、Session が開いている間だけプロセスとして動きます。
- 状態遷移は
starting → running → stopping → stopped、失敗時はfailedです。 - Coverage: その Session が担当する Project の範囲です。同じ Agent が同じ Project を担当する Session を複数並行で持てます。
- Turn: 1 プロンプトの往復です。
idle/activeの 2 状態で管理します。 - 60 分アイドルで自動停止します。新しい仕事は明示的に Session を起動します。
SharedDocument(共有ドキュメント)
長文や成果物は Message ではなく 共有ドキュメント に置きます。aachat/docs/<team>/<project>/<kind>/<id>.md に Markdown として保存され、Host / Session / Workspace の 3 種類のミラーで双方向に同期されます。手元のファイルを直接編集すれば、サーバー側の正本にも反映されます。
ミラーがどこに置かれ、誰が読み書きするのかは セッションの中身 で扱います。