---
title: 文法と用語
description: clikae のコマンド文法と語彙について、唯一の信頼できる情報源（SSOT）となるドキュメントです。
section: Reference
order: 1
---

# clikae の文法と用語 — 唯一の信頼できる情報源

このドキュメントは、clikae のコマンド文法（grammar）と語彙（lexicon）を定義します。
これが唯一の信頼できる情報源（SSOT）です。`bin/clikae`（ディスパッチ）、
`lib/commands/help.sh`、ユーザーの目に触れるすべての文言、ホームダッシュボード、
そしてドキュメント類は、すべてここに書かれている内容に従います。文法とコードが
食い違ったときは、文法が正です — コードのほうを直してください。

> コマンド表面やユーザー向けの文言に手を入れる前に、最後まで通して読んでください。

---

## 0. 核心となる一つの考え

**`clikae` は動詞です。** 名前は `CLI` ＋ `kae`（切り替え、*kirikae* —「切り替える」）
からできています。このツールの仕事はまるごと*切り替え*なので、`clikae` という語自体が
すでに「切り替える」を*意味*しています。文法はこの考えの上に組み立てられています。

- 看板となる操作 — CLI をあるタンク（tank）に向けて起動する — には、**動詞がまったく
  要りません**。動詞はプログラム名そのものだからです。`clikae claude work` は
  「claude **を** work **に切り替える**」と読めます。覚えることは何もありません。
  `clikae` の意味はもうわかっているはずです。
- 切り替え*でない*操作（作成、削除、確認、監視）には、明示的でありふれた動詞を
  そのまま使います。

これは凝った動詞を発明するのとは正反対です。私たちは `run` を `burn` に
リネームしたりはしません。プログラム名がすでに動詞を担っているところでは動詞を
**省略**し、それ以外ではどんなパワーユーザーも手に覚えているありふれた動詞を使います。

---

## 1. 二つの層、一つのルール

> **インターフェースは慣習に従う。メタファーはモデルの中に宿る。**

| 層 | ここに入るもの | ルール |
|---|---|---|
| **動詞／操作** | 入力し、タブ補完し、スクリプトに書くもの | 慣習に従う。`init` / `remove` / `list` / `status` は git、docker、npm、kubectl、gh が使うものそのまま。*切り替え*の操作は省略される（プログラム名＝動詞）。**新しく覚える動詞はゼロ。** |
| **名詞／モデル** | 読んで覚える概念 | ここで燃料のメタファーが本領を発揮する。キー入力のコストをかけずにモデルを記憶に残りやすくする。 |
| **文章／ダッシュボード** | ヘルプの導入、ステータス行、エラー、README、ボード | ここでは燃料の物語を自由に語ってよい。 |

**メタファーが満たすべきテスト：** *理解*の助けにはなってよい。*操作*に必要であっては
ならない。`clikae run claude work` に物語は要りません。メタファーを読み解かないと
使えない動詞を、私たちは決して出荷しません。

---

## 2. 用語（名詞）

| 概念 | 言葉 | 補足 |
|---|---|---|
| clikae が管理する CLI ツール（claude、codex、agy…） | **engine**（別名 CLI） | 燃料を燃やすもの。引数は `<engine>`。内部コード、アダプタ、`lib/adapters/` では `cli` という名前を保つ — ユーザーには*engine*と見える。 |
| 燃やせる一つのアカウント／設定 | **tank**（別名 profile） | 中核となる名詞。**ユーザーの目に触れるあらゆる場所で `profile` と `slot` を置き換える。** 旧来の言葉を知っている人のために、ヘルプ本体および `init`／`list` の `--help` で初出時に「（別名 profile）」と注記する。 |
| タンク内の使用枠 | **fuel** / quota | — |
| 枠を使い切ったタンク | **dry**（ガス欠）タンク | ボード上で `⚠` のバッジが付く。 |
| CLI を使うこと（燃料を消費すること） | **burn** | 文章でのみ用いる（「タンクを差し替えて、燃やし続ける」）。**コマンドではない。** |
| あるタンクがガス欠になったときに落ち込む先の控え | **あなたの他のタンク** | 別概念は不要。ボード上のタンク群が**そのまま**控えになる。（旧 `pool` コマンドは削除済み — 発見しづらく冗長だった。） |
| 進行中のセッションを別のタンクへ運ぶこと | **relay**（同じ CLI）／ **handoff**（別の CLI） | 内部用・旧来の用語。ユーザー向けの動詞は `to`（§3）。 |

**`profile` と `slot` はユーザー向けの文言から退役しました。** これらは内部識別子と
ディスク上（`~/.clikae/profiles/<engine>/<tank>/`、`profile_dir`、`profiles_root`）でのみ
生き残ります — ストレージのレイアウトや中核関数を**かき回したりはしません**。ユーザーが
目にする言葉はただ一つ、*tank* です。

---

## 3. 文法（動詞）

### 3.1 切り替え — 省略された動詞

| 入力 | 意味 | 置き換える対象 |
|---|---|---|
| `clikae` | タンクボード（ホーム）を開く。 | — |
| `clikae <engine> <tank>` | `<engine>` を `<tank>` に切り替えて、**まっさらな状態で開始**する。 | `run` |
| `clikae <engine>` | タンクが一つ → そこへ切り替える。複数 → 一覧／選択。なし → 作成を提案。 | — |
| `clikae <engine> <tank> -- <args>` | …`<args>` をそのまま CLI に渡しつつ。 | `run … -- …` |

### 3.2 セッションを運ぶ — `to`

`to` は **「いまの作業を一緒に連れていく」** ためのマーカーです。`clikae to codex` は
「codex **に**切り替える」と読め、まっさらに始めるのではなく*現在のセッションを運びます*。

| 入力 | 意味 | 置き換える対象 |
|---|---|---|
| `clikae to <tank>` | このシェルの現在のセッションを、**同じ CLI の別タンク**へ運ぶ → 本物の `--resume`。 | `relay` |
| `clikae to <engine> [tank]` | それを**別の CLI** へ運ぶ → そのエンジンは他所のセッションを再開できないので、clikae は書き起こした**ブリーフ（brief）**を渡す（コールドスタート）。 | `handoff` |

ソースは自動検出されます。まず実行中の環境変数、次に — 素の切り替え／エイリアス／`.app`
はエンジンを prefix 代入付きで起動し、それが親シェルには届かないため — **このディレクトリで
最も新しいトランスクリプトを持つタンク**（ステートレス、「さっきここにいたセッション」）を
見ます。シェルをあるタンクに明示的に固定したいときは `eval "$(clikae env <engine> <tank>)"`
を実行します。clikae は**どの仕組みを使ったかを常に告知**するので、resume か brief かの
違いは覚える必要なく実行時に示されます。

```
✓ carried your live session → claude/personal (thread resumed)
⚠ codex can't resume a claude session — handed it a written brief (cold start)
```

> **正確に（タンクは燃料以上のものを保持する）。** `to` が運ぶのは**セッションの
> トランスクリプト** — スレッドは続きます — であって、エンジンの*長期記憶*ではありません。
> 長期記憶はタンクのディレクトリ内（例：`CLAUDE_CONFIG_DIR` 配下にある claude のファイル
> メモリ）にあり、ソース側のタンクに残ります。つまり「再開」とは会話のことであって、
> 頭脳のことではありません。タンク間でメモリを運ぶ／共有することは、別個の、将来の
> オプトイン機能です（§10 のリンク／オーバーレイ案を参照）。「コンテキストはそのまま」と
> 言わないでください。

`to` の引数は、**まずエンジン名、次に現在のエンジンのタンク**として解決されます
（ステートレスで予測可能：既知のエンジン名なら常にそこへ渡る）。明示的に区別したいときは
`clikae to <engine> <tank>` とします。clikae は何を解決したかを常に告知するので、推測が
外れても目に見え、訂正できます。

### 3.3 管理 — ありふれた慣習的な動詞

これらは切り替え**ではない**ので、明示的でありふれた動詞をそのまま保ちます。燃料の言葉を
無理に押し付けたりはしません。

| コマンド | 目的 |
|---|---|
| `clikae init <engine> <tank>` | タンクを作成する。（`--alias` を付けるとシェルのエイリアスも書き込む。） |
| `clikae remove <engine> <tank>` | タンクを削除する（ディレクトリ、エイリアス、.app）。 |
| `clikae rename <engine> <old> <new>` | タンクをリネームする（ディレクトリ、エイリアス、ログインを引き継ぐ）。 |
| `clikae git-id <engine> <tank> [--name N --email E \| --unset]` | タンクに任意の **git コミット用 ID** を付与する。設定すると `clikae env` が `GIT_AUTHOR_*`／`GIT_COMMITTER_*` も export するので、そのシェルでのコミットは、エンジンのアカウントのメールではなく、あなたが意図した ID で刻まれる（issue #22 / HANDOFF §13）。素直なメタデータ動詞（タンクの状態を作成・確認する）で、燃料のメタファーはなし。正直に言うと：環境変数は `git config` には勝つが、明示的な `git -c user.email=…` には勝てない。効くのは以後のコミットのみ。 |
| `clikae tanks`（エイリアス：`clikae list` / `ls`） | すべてのタンクを、ログイン中のアカウントとともに一覧する。`tanks` が正典 — 既存の `adapters` コマンドと同じ**名詞のクエリ**であって、造語の動詞ではない。`list`／`ls` は慣習として、また GUI の `list --json` のために残す。 |
| `clikae status [cli]` | **このシェルで**各 CLI がどのタンクにいるか。 |
| `clikae to [target]` | セッションを先へ運ぶ。引数なし＝燃やす順での次のタンク（あなたのタンク群が控えになる）。 |
| `clikae auto [ask\|safe\|full]` | （BETA、claude）ガス欠タンクで、監督付きの起動がどこまで自力で運ぶか。 |
| `clikae watch <engine> [tank]` | ガス欠タンクに気づき、燃やす順での次のタンクへの引き継ぎを提案／自動実行する。 |
| `clikae burn <engine> <tank> --artifact <path> (--prompt-file <f> \| -- <cmd…>)` | タンク上で**ヘッドレス**のタスクを実行し、それが生成すべき成果物（artifact）で検証する（終了コードでは決して検証しない — `codex exec` は制限がかかっても 0 で終了する）。このタンクがガス欠になったら、同じタスクを次の控えタンクで再発火する。タスクの渡し方は**簡単な方法**（`--prompt-file`／`--prompt` ＋ `--add-dir`：clikae が各エンジンのヘッドレス書き込みフラグをアダプタから埋めるので、エンジンをまたぐ再ルートも破綻しない）か、**パワーユーザー向けの方法**（生の `-- <cmd…>`）のどちらか。切り替えのヘッドレス版にあたる：バッチ／並列はオーケストレーターの仕事のまま。`burn` は、それがファンアウトして再発火する単一タスクの単位。`--to` で次の遷移先を明示的に強制できる。 |
| `clikae conduct --leg <e>/<t>… (--prompt-file <f> \| --prompt <s>)` | **（BETA）** 垂直オーケストレーションのプリミティブ：一つのプロンプトを N 個のアカウントへ**並列に**展開し、それぞれが自分のタンク（自分の枠）上でヘッドレス・**読み取り専用**で動く。そして各レグの全出力を集め、captured／dry の表を出力する。clikae は**判定しない** — N 個の結果ファイルと正直な表を渡すので、勝者はあなた（または指揮者として振る舞うセッションモデル）が選ぶ。頭脳と筋肉の分担：clikae は筋肉（アカウント、ガス欠検出、並列ルーティング）、指揮者は頭脳。設計上、読み取り専用なので、レグが共有ツリーを壊すことはない。書き込み／実装のトーナメントはオーケストレーターの仕事のまま。 |
| `clikae migrate [cli]` | 手作りの config ディレクトリ＋エイリアス構成を取り込む。 |
| `clikae app` / `clikae alias` | macOS ランチャーを生成する／シェルのエイリアスを書き込む。 |
| `clikae lang [en-US\|ja-JP\|zh-TW]` | インターフェース言語（ダッシュボード＋プロンプト）を表示または設定する。ボードの `l` キーで言語ピッカーが開く。 |
| `clikae doctor` / `info` / `adapters` / `demo` / `help` / `version` | 確認／メタ。 |

---

## 4. 構文解析と優先順位

`bin/clikae` は最初の引数を次の順で解決します。

1. **予約コマンドか？**（`init`、`remove`、`list`、`tanks`、`status`、`to`、
   `watch`、`auto`、`burn`、`conduct`、`rename`、`git-id`、`migrate`、`env`、`app`、`alias`、
   `lang`、`run`、`continue`、`relay`、`handoff`、`doctor`、`info`、`adapters`、
   `demo`、`home`、`help`、`version`、加えて `agy`／`dashboard`／`ls`／`rm` のエイリアスと
   `-h/--help/-v/--version`）→ そのコマンドを実行する。（`git-id` は
   `git_id.sh` コマンドへルーティングされる — `-` を `_` にしたファイル／関数を持つ
   唯一の動詞。）
2. **そうでなければ、既知の CLI か？**（`lib/adapters/` のアダプタ、または
   `lib/targets/` のターゲット、例：`claude`、`codex`、`agy`）→ §3.1 の**素の切り替え**。
3. **それ以外** → 不明。エラー＋`help` を表示する。

驚かれないよう、その帰結も明文化しておきます。

- 予約コマンドが勝ちます。もし予約語そのままの名前を持つ CLI があった場合は、明示的な
  エイリアス経由で到達します：`clikae run <engine> <tank>`。
- `clikae <engine> --help` は曖昧なので推測しません。clikae 自身のヘルプは
  `clikae help <engine>`、CLI 向けのフラグは `--` の後に置きます
  （`clikae <engine> <tank> -- --help`）。

---

## 5. `to` の落とし穴 — そしてその無害化のしかた

`clikae claude work`（まっさらに開始）と `clikae to claude work`（セッションを運ぶ）は
一語しか違いません。素の切り替えは何も**壊しません** — 元のタンクのトランスクリプトは
あとで `to` で戻れるようにちゃんと残っています — ので、`to` を忘れたコストはたいてい
一手の無駄で済み、回復できます。

本当に痛むのはただ一つ、**いまいるタンクがちょうどガス欠になった**ときです。限界に
ぶつかって、続けたいのに、黙ってまっさらに始まるのは意図の真逆です。だから緩和策は
**意図的に狭く** — そこでのみ発火します。

**緩和策（オプション B）：** 素の切り替えは、一般的にセッションを意識するのではなく、
**ガス欠を意識します**。`clikae <engine> <tank>` が呼ばれたとき、そのエンジンで現在
いるタンクが**枠を超えている（dry）**場合、clikae は黙ってまっさらに始めません。TTY では
こう尋ねます。

```
claude/main is out of fuel right now.
  ❯ Carry this session over to work   (= clikae to)
    Start work fresh
```

非対話的（パイプ／スクリプト）には**まっさらに開始**をデフォルトとしつつ、こう表示します：
`hint: to continue this session, use  clikae to claude work`。

現在のタンクがガス欠**でない**ときは、素の切り替えは静かに即座に行われます — 別のタンクへの
切り替えはおそらく意図的なものだと尊重するからです。これにより、ただ一つのプロンプトを、
製品の核心の瞬間（ガス欠 → タンクの差し替え）にぴたりと置き、それ以外の場所には置きません。

---

## 6. Antigravity（agy）も同じ文法に畳み込まれる — 特別な動詞なし

このエンジンの正典の名前は **`agy`** です — それがこの CLI が自分自身を呼ぶ名前であり、
エンジン引数は常にバイナリ名（`claude`、`codex`、`gh`）というルールに一致します。
`Antigravity` は文章や UI のタイトルで使う固有名（「Antigravity (agy)」）であり、
`antigravity` は隠れた長い形のエイリアスとしてのみ生き残ります。**あなたが入力するのは
`agy` です。**

agy は `~/.gemini` をハードコードし、あらゆる環境変数を無視し、config ディレクトリの
フラグも持たないため、他のエンジンのようにシェルごとに切り替えることができません。clikae は
`~/.gemini` をシンボリックリンクでタンクディレクトリ間で差し替えることで対応します — 機械全体で
一度に一つのタンクだけが有効になる、グローバルなパワーモードです。ユーザーがこのために
別個のコマンドツリーを覚えることはありません。agy は*他のすべてと同じ動詞*を使い、
**特別なサブコマンドはゼロ**です。

| 入力 | agy のふるまい |
|---|---|
| `clikae init agy work` | **初回：** トレードオフを警告し、明示的に `[y/N]` を一度尋ねてから clikae が `~/.gemini` を引き取る。そのうえでバックアップし、現在のログインを `default` タンクへ移し、`work` を作成する。**以降：** 単にタンクを作るだけ（儀式なし — 危険な一度きりの引き取りはもう済んでいる）。 |
| `clikae agy work` | 有効なタンクを `work` に切り替え（agy が稼働中なら拒否）、agy を起動する。副作用が機械全体に及ぶため、`agy is global — switched all terminals to work` と表示する。 |
| `clikae list` / `status` | agy のタンクも他と並んで現れる。`●` は唯一の有効なタンクを示し、`(global)` と表示される。 |
| `clikae remove agy work` | タンクを削除する。**最後のタンクを削除すると**、素の `~/.gemini` を復元して引き取りを解除することも提案する — それが解体で、`remove` に畳み込まれている。 |
| `clikae agy --release` | まれな「タンクは残すが `~/.gemini` の管理はやめたい」ケース：通常の単一アカウントの `~/.gemini` を復元し、シンボリックリンクによる引き取りを解除して、タンクディレクトリは後のためにディスク上に残す。フラグ（タンク名ではない → 素の切り替えと衝突しない）。 |

`clikae agy disable` / `antigravity disable` は**ありません** — それは素の切り替えと
衝突します（`clikae agy <tank>` は `disable` でも何でもタンク名として読む）。解体は
`remove`（最後のタンク）と `--release` フラグに置かれています。

要点：
- agy は**多くのタンクを持てます**（好きなだけ保管できる）。ただし機械全体で一度に
  有効にできるのは**一つだけ**です — agy のエンジンは単一のハードコードされた燃料ライン
  （`~/.gemini`）を持つからです。ボードの `●` がそれを可視化します。
- 警告と確認は**初回の引き取りのときだけ**（本物の `~/.gemini` を管理下のシンボリック
  リンクに変えるとき）に行われます。以降の `init agy <tank>` は素の `mkdir` で、
  `init claude` と同じ摩擦です。
- agy は relay／`to` の**ターゲット**にはなれますが（`clikae to agy` → ブリーフ＋起動）、
  **ソース**にはなれません（その `.pb` トランスクリプトは不透明）。`watch agy` は
  通知のみです。

---

## 7. 後方互換（隠れエイリアス）

これらは動き続けますが、`clikae help` では**宣伝されません**（`clikae help <cmd>` には
現れることがあります）。

| 隠れエイリアス | 正典 |
|---|---|
| `run <engine> <tank>` | `clikae <engine> <tank>` |
| `continue` / `relay` / `handoff` | `clikae to …` |
| `antigravity add` / `use` / `enable` / `disable` | `init` ／素の切り替え／初回 `init` ／`remove`-最後のタンク＋`--release` に畳み込み |
| `antigravity`（エンジン名として） | `agy`（正典のエンジン名。`antigravity` は隠れた長いエイリアス） |
| `list` / `ls` → `tanks`、`rm` → `remove`、`dashboard` → `home` | `tanks` が正典。`list`／`ls` はエイリアス |

スクリプトや CI では、簡潔さより明確さが勝つ場面では明示的なエイリアス（`clikae run …`）を
優先すべきです — まさにそのためにあるものです。

---

## 8. ヘルプは省略形を先頭に置かねばならない

素の切り替えには動詞がないため、教えられない限り*見えません*。ホーム画面（素の `clikae`）と
`clikae help` は、これを冒頭に置かねば**なりません**。

```
clikae <engine> <tank>     switch <engine> to <tank> and run it      ← the main thing
clikae to <where>       carry your current session elsewhere
clikae                  your tank board
clikae init <engine> <tank>   create a new tank
clikae help                full command reference
```

---

## 9. 実装チェックリスト（コードをこのドキュメントに合わせる）

- [ ] **ディスパッチ**（`bin/clikae`）：§4 の第一引数リゾルバ — 予約コマンド
      → 素の切り替え（既知の CLI）→ エラー。`to` と `tanks` を配線し、`run`、
      `continue`、`relay`、`handoff` を隠れエイリアスとして保つ。
- [ ] **素の切り替え**：`<engine> <tank>` を既存の `cmd_run` パス（env 適用＋exec）に
      通す。§5 のセッションを意識したプロンプトを追加する。
- [ ] **`to`**：ソースを自動検出し、resume（同じ CLI）か brief（別の CLI）かを選び、
      どちらを使ったかを告知する単一のコマンド。今日の `relay` ＋ `handoff` のふるまいを
      その背後に畳み込む。
- [ ] **agy**：`init` ／素の切り替え／`remove` で `cli ∈ {agy, antigravity}` を
      `load_adapter` の**前に**横取りする（agy にはアダプタがない）。初回の `init agy` は
      警告と確認の引き取りを実行する。素の切り替えはスロット選択＋起動＋グローバル通知を
      行う。**最後のタンクの削除は解体を提案し**、`clikae agy --release` が
      タンクは残して解除を扱う。**`disable` サブコマンドはなし**（素の切り替えと衝突する）。
      正典のエンジン名は `agy`。`antigravity` は隠れた長いエイリアスになる — 旧来の
      `cmd_antigravity` サブコマンドツリーを廃止する。
- [ ] **文言の一掃**：`help.sh`、`list` ヘッダー（`PROFILE` → `TANK`）、
      `init`／`run`／`remove` のプロンプト、エラー文字列、ホームダッシュボードにわたって
      `profile`／`slot` → `tank`（別名 profile）。ディスクレイアウトと中核関数名は
      `profile` のまま。
- [ ] **ヘルプ**：`cmd_help` を §8 に書き換える — 省略形を先頭に。
- [ ] **ドキュメント**：`usage.md` / `README.md` をこの文法に合わせて更新する。
      *推奨*の表面から `run` と `relay`／`handoff` を一掃する（エイリアスとしては残す）。
- [ ] **テスト**：第一引数の解決、`to` の落とし穴プロンプト（TTY か非 TTY か）、
      agy の畳み込み、後方互換エイリアスについて bats を書く。
- [ ] **PowerShell ミラー**：該当する箇所では同じ文法を `Clikae.psm1` に反映する。

---

## 10. 設計の未踏領域 — タンクは燃料以上のものを保持する

> 並行セッション（枠超え検出の作業、プロファイル b、2026-06-01）からの寄与。ここには
> 未踏領域として記録しており、**まだ決定ではありません** — モデルに畳み込むかどうかは
> メンテナーの判断です。

**緊張の在りか。** §2 は*燃料＝枠*、*タンク＝一つのアカウント／設定*だと言います。本当
ですが、タンクディレクトリは燃料よりはるかに多くを保持します — エンジンの**長期記憶と
あらゆるトランスクリプト**です。燃料は代替可能ですが、メモリはそうではありません。だから
「タンクを差し替えて、燃やし続ける」は、ひそかにエンジンの*頭脳*まで差し替えています。
（証拠：claude のファイルメモリは `CLAUDE_CONFIG_DIR` の中にあるので、`profiles/claude/a` と
`…/b` はまったく別のメモリストアを持ちます — 命名規則すら別々に漂流してきました。
タンク間でメモリが伝わるのは、手作りのブリッジを通したときだけです。）

**統一されるパターン。** agy の `~/.gemini` シンボリックリンク差し替え（§6）は単発の
特例ではありません。clikae は、自分の状態が*どこに*あるかをハードコードし、それが望む
カーディナリティと噛み合わないエンジンに何度もぶつかります — そしてその修正は常に、その
対応関係を作り直すためのファイルシステム的な間接化です。

| ケース | エンジンの想定 | clikae の望み | 間接化 |
|---|---|---|---|
| **agy**（§6） | ハードコードされた一つの `~/.gemini` | 多くのタンク | シンボリックリンクが**外向き**にファンする（1 パス → N の中から選ぶ） |
| **共有メモリ** | メモリは差し替えるディレクトリに同梱 | 一つの共有ストア | シンボリックリンクが**内向き**にファンする（N パス → 1 ストア） |
| **`to`**（§3.2） | トランスクリプトはタンクごとに孤立 | それをまたいで運ぶ | コピーが境界を橋渡しする |

同じプリミティブ、三つの方向。協力的なエンジン（claude／codex／gh）が易しいケース
です — 環境変数なので、`env-dir`／`env-file`／`flag` がそれを指すだけです。agy とメモリが、
同じ道具を欲しがる絡み合ったケースです。

**検討すべきアイデア：** `env-dir`／`env-file`／`flag` と並ぶ第四の戦略 —
**リンク／オーバーレイ**戦略。これは（a）agy を「ターゲットであってアダプタではない」という
変わり種ではなく筋の通った戦略にし、（b）*タンク間メモリ共有*に居場所を与え（警告付き・
可逆のオプトインで、一つの共有メモリストアを各タンクにシンボリックリンクする — §6 と
同じインフォームド・コンセント方式）、（c）`to` のトランスクリプト運搬を同じ系譜につなげ
ます。つまり「agy が同じ文法に畳み込まれる」を一段下げて「agy が同じ*状態制御モデル*に
畳み込まれる、特別な仕組みなし」へ拡張したものです。

詳細：`~/clikae-handoff-state-mapping.md`。

> §10 の残りは、その贈り物の上に積み上げたメンテナーの設計セッション（2026-06-01）です。
> いまだ未踏領域であって、出荷された決定ではありません — ただ、形は合意されています。

### 10.1 統合：clikae はエンジンの*頭脳*の制御プレーン

上の緊張は、一つの考えに解けます。clikae はすでに**エンジンの燃料がどこから来るか**
（どのアカウント／枠か）を制御しています。同じレバー — config ディレクトリへの
ファイルシステム的な間接化 — が、**エンジンのメモリ**も制御します。だからメモリも
もう一つのダイヤルにすぎず、スペクトラムを成します。

| モード | メモリの対応 | 対象 |
|---|---|---|
| **share** | N タンク → **1** ストア（ファンイン） | 複数のアカウントにまたがる自分の頭脳を集約する |
| **isolate** | N → **N**（今日のデフォルト） | 現在のふるまい。被害範囲の封じ込め |
| **evaporate** | N → **0**（使い捨てへリダイレクト） | 外科的／一時的なパワーユーザー |

agy のシンボリックリンクと同じプリミティブを、三つの目的に向けたもの。**clikae の本質を
一言で：状態がどこに、どれだけの間、どれだけ広く共有されて存在するかを制御する** — 認証／
設定について（今日）、燃料について（捉え直し）、そしていまやメモリについて。

> **派生：MCP コネクタ。** 各タンクに隔離された claude.ai のログインは、そのセッションで
> どの MCP コネクタが有効になるかも決めます — タンクを切り替えると、Stripe、Drive、
> WordPress のコネクタも一緒に切り替わります。clikae は MCP を管理しないし、コネクタを
> プロビジョニングもしません。これは単に、アカウントごとの認証の隔離が、燃料とメモリに
> 並ぶ第三の層として実を結んだものです。

**指針となる価値（メンテナー、確定）：** *集約せよ、ソースを書き換えるな。* メモリの
移動／共有／変換は、外へ向かう**コピー**に対して行われ、ソース側のタンクのメモリはその場で
書き換えられることが決してありません。relay の「コピーであって移動ではない、ソースは
無傷」と同じ DNA です。

### 10.2 ブリッジ — プラグ可能でローカルファーストな翻訳器

**エンジンをまたぐ**メモリはシンボリックリンクではありません：claude／codex／agy は
互換性のない形式でメモリを保管します。修正は handoff の既存の
`CLIKAE_HANDOFF_SUMMARIZER` を写したもの — プラグ可能でローカル／安価なモデルが意味的な
仕事をこなし、clikae は配管を回すだけです。**`CLIKAE_MEMORY_TRANSLATOR='<cmd>'`** を
提案します：model-agnostic で、**ローカルファースト**（枠を燃やさず、何も機械から
出ない — メモリは機微なものだから）。Apple Intelligence はバックエンドの一つ
（そのオンデバイスモデルは Swift の `FoundationModels` 経由でしか届かないので、小さな
`clikae-translate` シムを介する — GUI はすでに Swift）。`llm`／`ollama` も別の一つ。

**異議の焦点が形式から*損失*へ移ります。** 一度きりの handoff ブリーフのための要約器が
安全なのは、ブリーフが**使い捨て**だからです。メモリはその正反対 — 権威があり、累積し、
セッションをまたいで信頼されます。LLM が同期のたびにメモリを書き直すと漂流します（伝言
ゲーム）。だからメモリの翻訳は、レビュー可能かつ可逆として扱われねばならず、黙ってバック
グラウンドで書き直すものであってはなりません。

### 10.3 軽量か重量か — そしてアイデア B

- **軽量 — `to` ごとのメモリ注入（使い捨て）。** `clikae to codex` のとき、翻訳器は
  ソース側タンクのメモリの*関連する一片*を codex が使える形に変換し、handoff ブリーフと
  並べて**一度だけ**注入する。codex は claude の頭脳を恒久的に育てるわけではない。*この*
  続行に足るだけを知るだけ。正典のストアなし、伝言ゲームなし、並行性なし。文字どおり
  `handoff` ＋＋ ：ブリーフがスレッドを運び、これが頭脳の一片を運ぶ。**まずこれをやる。**
- **重量 — 恒久的な正典ストア。** clikae が唯一の正典メモリストアを保ち、翻訳器が
  正典↔各エンジンを担い、すべてのツールが長期記憶を共有する。終着点だが、正典スキーマ、
  **レビュー可能な同期（差分を見せて、承認する）**、漂流の制御、並行性の処理が要る。
- **アイデア B（エンジンが clikae をネイティブに読み書きする） — 半分は本当、半分は壁。**
  *すでに本当：* clikae の config ディレクトリ間接化は、メモリを物理的にすでに自分の
  ツリーに置いている — まさにこのファイルの `MEMORY.md` が
  `…/profiles/claude/b/…/memory/` 配下にある。*壁：* エンジンはメモリの*場所*のフック
  （環境変数）は公開するが、メモリの*形式*のフックは公開**しない** — claude のメモリを
  移動はできても、clikae のスキーマで書かせたり、codex に claude のファイルを読ませたりは
  できない。だから B のきれいな形＝**claude のほぼ中立な markdown を正典として採用する**。
  claude はほぼネイティブ、他は翻訳器でブリッジ。B は翻訳から逃れるのではなく、最も中立な
  形式をアンカーに選ぶことで翻訳を最小化する。（B は別の扉から到達する重量版。）

### 10.4 一時的メモリ（「evaporate」モード） — ✅ 出荷済み

外科的なパワーユーザーは、**何も覚えない**モデルを望みます。clikae はすでに config
ディレクトリの間接化を握っているので、`memory` サブディレクトリを使い捨てに向けるのは
造作もない — 同じプリミティブの三つ目の方向です。**`clikae <engine> <tank> --ephemeral` と
して出荷済み**（`lib/commands/switch.sh`）：タンクの本物の `projects/<slug>/memory` を
脇へ退避し、その場所に `mktemp -d` の使い捨てをシンボリックリンクし、エンジンを**子として**
（`exec` ではなく、なのでクリーンアップが走る）実行し、終了時に本物のメモリを復元して
使い捨てを消去します。クラッシュした実行は次の `--ephemeral` で自己回復します。ログインと
トランスクリプトは通常どおり — **メモリだけが使い捨て**です。新しい任意フック
`adapter_memory_dir <dir>` でエンジン側のゲートをかけます（claude が定義し、他は
`--ephemeral` をきれいに拒否します）。bats は `tests/bats/ephemeral.bats` に。

**正直な枠付け（書いたとおりに出荷）：** clikae が保証するのは*メモリディレクトリが
使い捨てである*こと — **一時的メモリ**であって、「どこにも何も覚えない」ではありません
（キャッシュ、シェル履歴、テレメトリ、Keychain は手の届かない外側）。`--help`／ドキュメントは
保たれるものだけを約束します。

### 10.5 出荷の順序

1. ✅ **一時的メモリ** — 出荷済み（`--ephemeral`；最小、モデル／翻訳ゼロ、外科的ユーザーに
   即座の価値）。
2. **`to` ごとの軽量メモリ注入** — ローカル翻訳器の試金石（`handoff`＋＋）。**次。**
3. **重量の正典ストア**（＝アイデア B） — ローカルブリッジが信頼できると証明され、
   使い捨ての一片だけでは足りないとわかってから。

三つとも一つの `link/overlay` 戦略（§10 冒頭）です — エンジンの頭脳に対するダイヤルとしての
clikae。

---

*この文法はスケッチではなく決定です。コードを変える前に、まずここで、メンテナーとともに
変えてください。*
