ドキュメント · 05

ファイル 形式.

CommandAGI のすべてのものは、読み取り、差分の確認、コピーができる普通のファイルです。ここは、その一覧です。

基本ルール

  • 普通のファイルだけを使います。 ファイルが記録中に大きくなることが、最も大きな動きです。対象は、ストリームの records.jsonl、メディアファイル、実行の members.jsonl です。隠れたデータベース、ポインタファイル、バンドルはありません。
  • 参照はパスと ID で示します。 実行は、いまそのパスにあるアセットを使います。ハッシュは固定しません。
  • フォルダがプロジェクトです。 プロジェクトの構成は、ワークベンチに固定されていません。
  • レベル。 すべての定義、ワールド、設定は、クラウドまたはローカルに、グローバル、ユーザー、プロジェクトの各レベルで置けます。広いレベルから具体的なレベルへ順にマージされます。

デバイス

devices/<id>/definition.tsx です。そのアセットは devices/<id>/assets/ に置きます(例: model.glb)。定義はコードです。ワークベンチがそれを実行し、定義された <device> を読み取ります。

定義では、機械の情報(name、manufacturer、model_number、product_url など)、3D の model、channels を指定します。

tsx
export default () => (
  <device name="CNC 3018" manufacturer="…">
    <channel id="gcode" dir="duplex" medium="records" format="gcode-chat" dialect="grbl" transport="serial" baud={115200} />
  </device>
);

dir は in、out、duplex のいずれかです。medium は records、video、audio、bytes のいずれかです。ワールドのユニットは、チャンネルを上書きできます。

ワールド

worlds/<id>/world.tsx です。一つの <world> を宣言するコードです。

tsx
export default () => (
  <world name="Shop floor" kind="physical">
    <space origin_mm={[0, 0, 0]} size_mm={[6000, 4000, 3000]} />
    <unit uid="mill-1" name="Mill" device="../../devices/cnc-3018/definition.tsx" position={[1200, 800, 0]} rotation={0} />
  </world>
);

ワークベンチでの編集は、最小の変更としてコードに書き戻されます。

kind は physical または simulation です。ワールドは 3D シーン(model、.3d.tsx)を指定できます。シミュレーションの場合は、シミュレーションファイル(sim、.sim.json)も指定できます。ワールドは 3D モデルではなく、実行はワールドではありません。

実行とストリーム

runs/<run>/ は、一つのワールドでの一つの実行です。

ファイル内容
run.jsonid、world、kind(session、recipe、thread のいずれか)、started、ended、from(分岐元の実行と時刻)
members.jsonl参加した人と物。参加するたびに追記されます
steps.jsonlレシピの手順
streams/<uid>.<channel>@<replica>/一つのストリームです。stream.json と、そのデータ(records.jsonl、または一つの video.webm/.mp4、audio.webm/.mp4、data.bin)を含みます
streams/chat@<replica>/会話のスレッドです
streams/sim@<replica>/、streams/sim-input@<replica>/シミュレーションのフレームと、それに適用された入力です
evidence/証拠として保存されたファイルです

レコードは、JSON の一行です。

json
{ "t": 7.180, "seq": 41, "hlc": "001790561647180-00000", "src": "operator", "kind": "note", "text": "agent:night-shift: run_program", "by": "agent:night-shift" }

src は device、sim、operator のいずれかです。kind は command、event、ack、reply、state、evidence、note のいずれかです。seq は必ず増えます。不明な状態は { "kind": "state", "status": "unknown" } と書きます。

ドキュメント

エディターのドキュメントは、それぞれ一つの JSON ファイルです。{ "format": "commandagi-document", "kind", "title", "meta", "body" } の形です。大きなアセットは、その横の <name>.assets/ フォルダに入ります。

拡張子開くもの
.3d.tsx3D 設計(パーツ、アセンブリ、シーン)
.cam.tsx、.slice.tsxCAM と スライシング モードの 3D 設計です。プログラムは、その横に .gcode として保存されます
.nest.tsxベクター アプリのネスティング モード(レーザーとシートの加工)です。コードで書きます
.draw.tsx、.paint.tsx、.img.tsx描画、ペイント、画像編集です。コードで書きます。ピクセルは、その横の画像ファイルに残ります
.vid.tsx動画エディターです。コードで書きます。メディアは、その横のファイルに残ります
.mus.tsx音楽です。コードで書きます
.geo.tsx地経済のワークスペースです

その他の形式

ファイル内容
<name>.sch.tsx + <name>.pcb.tsxコードで書いた回路です。回路図と、それを指定する基板です
<name>.sheet.tsx、<name>.page.tsx、<name>.deck.tsxコードで書いたワークブック、ページ、スライド デッキです。シート、ドキュメント、デッキのエディターが、編集のたびにファイルへ書き込みます
<name>.sim.jsonシミュレーションです
<name>.trials.json実験です。パラメーターを変えた多数のシミュレーション実行です
<name>.graph.jsonグラフ(知識、メモリ)です
<name>.dashboard.tsxコードで書いたダッシュボードです。ペインと、それが表示するファイルを含みます
<name>.geo.tsxコードで書いた地経済のプロジェクトです
<name>.opgraph.tsxコードで書いたノード グラフです
<name>.task.tsx、<name>.project.tsxコードで書いたタスクとプロジェクトです
<name>.market.jsonl市場のテープ、板、注文、ポジションです
calendar/<calendar>/<event>.ics、contacts/<email>.vcfカレンダーと連絡先です
.xlsx、.md、.pdf、.ipynb、.gcode、.step、.stl、.glb などそのまま開きます。種類ごとのエディターで開きます

設定

設定は、VS Code と同じ settings.json ファイルです(コメントを使えます)。レベルごとに一つあり、広いレベルから具体的なレベルへ順にマージされます。順番は、クラウドとローカルのグローバル レベル、所属する組織、アカウント、このコンピューター(~/.commandagi/settings.json)、このプロジェクト(.commandagi/settings.json)です。

json
{
  "workbench.theme": "dark",
  "threads.agentControl": false,
  "devices.lanListener": true,
  "[.gcode]": { "editor.default": "gcode" }
}

"[.ext]" のブロックは、一つのファイル拡張子の設定を上書きします。