スキャフォールドされた Arkor プロジェクトはこんな形をしています:Documentation Index
Fetch the complete documentation index at: https://docs.arkor.ai/llms.txt
Use this file to discover all available pages before exploring further.
.arkor/(プロジェクトごと、リポジトリ内)と ~/.arkor/(ユーザーごと、ホームディレクトリ)。
src/arkor/
Arkor はプロジェクトを src/arkor/index.ts を見ることで発見します。このファイルは createArkor() の結果を露出させてください。CLI は次の 3 つのエクスポート形を優先順位順に受け付けます:
export const arkor = createArkor({ trainer })(推奨。テンプレートが生成する形)。export const trainer = createTrainer({ ... })(パワーユーザー向けショートカット。アンブレラ不要のとき)。- デフォルトエクスポート(
Arkorマニフェスト orTrainerのいずれか)。
index.ts を薄く保ちます:
index.ts だけです。
将来的に複数トレーナーを登録する場合は、ファイルを増やして createArkor に渡すことになります。今のところ API は単一の trainer だけを受け付けます。deploy と eval のスロットは型上で予約されていますが未実装です。
arkor.config.ts
pnpm create arkor はデフォルトで次の arkor.config.ts を生成します:
maxSteps、learningRate、lora など)はすべて Trainer 自体に持たせるので、プロジェクトレベルではなくトレーナーごとにコントロールできます。削除する理由がない限り、ファイルはそのままにしておいてください。
.arkor/(プロジェクトごと、gitignore 済み)
このディレクトリはコミットしないでください。
.arkor/state.json。プロジェクトのルーティング:orgSlug、projectSlug、projectId。これによってランタイムはローカルリポジトリをマネージドバックエンドのワークスペースにマップします。ファイルはensureProjectState()が作成し、これは初回の学習開始(または初回のベースモデル推論)の際に走ります。匿名ワークスペースではこの初回呼び出しで自動作成されます。OAuth ワークスペースの場合はランタイムがエラーを返します。今のところarkor loginもarkor initもこのファイルを populate しないので、{ orgSlug, projectSlug, projectId }を手動で書いて作るのが現実的なパスです。一度作られたら手で編集しないでください。.arkor/build/index.mjs。arkor buildの出力。src/arkor/index.tsを Node 22.6 ターゲットで esbuild した単一バンドルで、bare specifier は外部のままにしてあります。arkor startがこれを実行します。
~/.arkor/(ユーザーごと)
ホームディレクトリにあり、マシン上のすべての Arkor プロジェクト間で共有されます。
~/.arkor/credentials.json。認証状態。arkor login --oauth後の Arkor Cloud OAuth トークンか、未ログインで初使用時に作られる匿名トークンのいずれか。ファイルはmodeフィールドが"auth0"か"anon"でタグ付けされており、CLI はどのパスにいるかを把握します。arkor loginはこのファイルだけを書きます。.arkor/state.jsonは 作成しません。~/.arkor/studio-token(一時的)。arkor devが起動ごとに書く CSRF トークン(モード0600)。Studio が CLI のローカルサーバーへの呼び出しを認可するのに使います。arkor dev起動のたびにローテートされます。
arkor logout は credentials.json を削除します。Studio トークンはプロセス終了時にベストエフォートで削除され(arkor dev がクラッシュすると残る場合あり)、次回起動時にローテートされます。
CLI が探すもの
arkor devは Studio の Web サーバーを127.0.0.1:4000で起動し、~/.arkor/studio-tokenを書きます。src/arkor/をファイル監視はしません。Studio の/api/manifestエンドポイントは確かにrunBuildを呼びキャッシュバストクエリで再 import しますが、それは Studio UI が fetch したときだけです(現状は Run training ページのマウント時)。同じページに留まったまま学習を複数回実行すると、ビルド成果物は再利用されます。編集した後は Run training ページをリロード(あるいはターミナルからarkor build)して変更を取り込んでください。arkor devは単独で.arkor/state.jsonを書きません。arkor buildはsrc/arkor/index.ts(または渡したエントリ)を読んで.arkor/build/index.mjsを書きます。Studio の dev ループの外側で直接呼ぶ必要があるのは CI や、スクリプトからarkor startの直前に走らせる場合などです。arkor startはランナー経由でエントリを解決し、.arkor/build/index.mjsがない、もしくは明示的なエントリを渡したときはリビルドして実行します(これがtrainer.start()とtrainer.wait()を呼びます)。Studio から学習をトリガーすると内部的にarkor startがスポーンされます。
.arkor/state.json と ~/.arkor/credentials.json を覗いてみてください。