> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nomo.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# 在 iPhone 上看著、批准並回覆 Antigravity sessions

> 幾個步驟就能為 Google Antigravity 設定好 Nomo、配對手機，然後在 iPhone 上跟著你的 sessions — 指令和檔案變更都能「允許」或「拒絕」，還能停止和回覆。

在 iPhone 的鎖定畫面和動態島上，看著你的 Google Antigravity sessions。當 Antigravity 想執行一個指令或變更一個檔案時，手機會問你要「允許」還是「拒絕」。你也可以在手機上停止一個 session，或傳訊息給它。

Antigravity 桌面應用程式和 `agy` 命令列工具都能用。

> [!NOTE]
>
> Sessions 屬於 Nomo Pro。你的手機需要 Nomo **2.3.5** 以上，Mac 上需要外掛程式 **2.3.5** 以上。

## 設定步驟

**1. 打開終端機**

在你的 Mac 上打開「終端機」App。它在「應用程式」>「工具程式」裡。

**2. 執行安裝工具**

複製下面這一行，貼到終端機裡，然後按下 Return：

```bash theme={null}
bunx nomo-ai --antigravity
```

沒有 `bunx`？改用 `npx nomo-ai --antigravity`。

你應該會看到：

```
✅ Antigravity is connected to Nomo. Restart Antigravity, then type /nomo-pair.
```

**3. 重新啟動 Antigravity**

完全結束 Antigravity，再重新打開它。如果你有在用 `agy`，也把它關掉再重新啟動。

> [!WARNING]
>
> 別跳過這一步。在 Antigravity 重新啟動之前，Nomo 都不會運作。

**4. 輸入 /nomo-pair**

在 Antigravity 的對話裡輸入下面這行並送出：

```
/nomo-pair
```

**5. 選擇 Allow**

Antigravity 在執行 Nomo 的指令之前會先問你。請選擇 **Allow**（允許）。

你應該會看到瀏覽器打開一個有 QR code 的頁面。

在 Antigravity 桌面應用程式裡，第一個 Nomo 指令可能會顯示一行 `operation not permitted`。這是正常的 — Antigravity 會自己在沙箱外重試。等著就好。

**6. 掃描 QR code**

在 iPhone 上打開 Nomo → **Sessions** → **配對電腦**，然後掃描 QR code。

你應該會在 Antigravity 裡看到：「Done! This computer is connected to your phone.」（完成！這台電腦已經連上你的手機。）

**7. 在 Antigravity 裡送出一則訊息**

開始一段對話，隨便送出什麼都可以。

你應該會看到這個 session 出現在 Nomo 裡，在你那台電腦的 **Antigravity** 分頁底下。沒有 Antigravity 分頁？點一下 **+** 按鈕（「選擇代理」），把 Antigravity 打開。

![「選擇代理」選單，Claude Code、Codex 和 Antigravity 已勾選，OpenCode 和 Cursor 未勾選](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agent-chooser-antigravity.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=ab74b8032196071cf1d9440a4533eb24)

![「選擇代理」選單，Claude Code、Codex 和 Antigravity 已勾選，OpenCode 和 Cursor 未勾選](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agent-chooser-antigravity-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=4bd4ead034460b3f0e88379704e07878)

從 + 按鈕打開的「選擇代理」。Antigravity 已勾選，所以它有自己的分頁。

> [!TIP]
>
> \*\*已經從 Claude Code、Codex、OpenCode 或 Cursor 配對過了？\*\*一次配對涵蓋整台電腦。跳過步驟 4–6 — 安裝工具會改成提示你「type /nomo-status to check」（輸入 /nomo-status 確認）。

> [!TIP]
>
> \*\*這台電腦沒有瀏覽器？\*\*改輸入 `/nomo-pair code`。Antigravity 會顯示一組短代碼。在 iPhone 上打開 Nomo → **Sessions** → **配對電腦** → **輸入代碼**，把它打進去。代碼 10 分鐘後過期。

> [!WARNING]
>
> **不要把 Nomo 的 Claude Code 外掛程式匯入 Antigravity**（例如用 `agy plugin import claude`）。否則每個 session 都會出現兩次。如果你已經這麼做了，安裝工具會警告你：
>
> ```
> ⚠️ Antigravity also has the Claude Code version of Nomo ("nomo-cc") imported. It would show every session twice — please remove it by running: agy plugin uninstall nomo-cc
> ```
>
> 要修正它，請在終端機裡執行下面這行，然後重新啟動 Antigravity：
>
> ```bash theme={null}
> agy plugin uninstall nomo-cc
> ```

## 指令

在 Antigravity 的對話裡輸入這些。每一次 Antigravity 都會先問你 — 請選擇 **Allow**。

| 輸入這個 | 它會做什麼 |
| - | - |
| `/nomo-pair` | 把這台電腦連上你的手機 |
| `/nomo-pair code` | 一樣，但改用一組可以打字輸入的短代碼，而不是 QR code |
| `/nomo-status` | 確認一切正常 |
| `/nomo-status verbose` | 一樣，但列出所有細節 |
| `/nomo-approvals off` | 不再問你的手機 — 改由 Antigravity 在電腦上問 |
| `/nomo-approvals on` | 重新改回問你的手機 |
| `/nomo-approvals status` | 看手機批准是開著還是已暫停 |
| `/nomo-reset` | 從手機上清除卡住的 sessions，連線保持不變 |
| `/nomo-unpair` | 解除這台電腦和手機的配對 |

一切正常時，`/nomo-status` 會顯示像這樣的一行：

```
✅ Connected to your phone as “MacBook Pro” · Phone approvals: on · Last activity: 2 min ago
```

如果有哪裡不對，它會多加一行，告訴你該怎麼做。

連線和批准開關是這台電腦上所有寫程式的 App 共用的。在這裡關掉批准，Claude Code 和 Codex 的批准也會一起關掉。

這些指令只會在 Antigravity 裡問你，永遠不會在手機上跳出卡片。

## 你會看到什麼

* session 會在你送出**第一則訊息**時出現，而不是在你打開對話的時候。
* Antigravity 工作時它顯示 `執行中`，結束時顯示 `完成`。
* 它的名稱就是 Antigravity 自己的對話標題。在 Antigravity 取好標題之前，會先用你的第一則訊息，沒有的話就用資料夾名稱。
* 標籤顯示 Antigravity 正在使用的模型。
* [動態島](https://docs.nomo.gg/zh-Hant/sessions/island.md)的運作和其他代理一樣。

## 在手機上回覆

當 Antigravity 想**執行一個指令**，或**建立或變更一個檔案**時，手機會問你。讀取和搜尋檔案永遠不會送到你的手機。

按住那個 session，或使用動態島，然後選擇：

* 「允許」— Antigravity 繼續做。
* 「拒絕」— Antigravity 跳過它，繼續做下去。
* 「拒絕並附註…」— 跳過它，並用你自己的話告訴 Antigravity 原因。

更多內容請看[在手機上回覆](https://docs.nomo.gg/zh-Hant/sessions/approvals.md)。

小提醒：

![Antigravity session Fix token refresh race 的批准卡片，請求執行 npm test，有「拒絕」、「允許」和「拒絕並附註…」按鈕](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-approval-card.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=e9e3fe7c789c7f2f3c9c7938593af49e)

![Antigravity session Fix token refresh race 的批准卡片，請求執行 npm test，有「拒絕」、「允許」和「拒絕並附註…」按鈕](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-approval-card-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=82b60c484b2831a3535f5541197a9a0c)

一個請求執行指令的 Antigravity session。

* **你自己的 Antigravity 規則優先**。被你的規則擋下的東西會一直擋著 — 在手機上點「允許」也絕不會推翻它。在 `agy` 裡，你的規則已經允許的指令會直接執行，不會問你的手機。
* **在桌面應用程式裡，什麼都會問你的手機**。Nomo 看不到桌面應用程式的權限設定，所以每一個指令和檔案變更都會送到你的手機。
* **手機不在身邊？沒關係**。如果連不上你的手機，或批准已經[暫停](https://docs.nomo.gg/zh-Hant/sessions/approvals.md#pausing-it)，Antigravity 會在電腦上問你，就和沒有 Nomo 時一樣。
* \*\*在電腦上停止了對話？\*\*手機上的卡片會自己消失。
* **等待期間，終端機裡什麼都不顯示**。請求在等你的手機時，終端機裡不會出現任何內容。這是正常的 — 請求在你的手機上。
* \*\*回覆表單開著？\*\*請求也會出現在聊天裡，你可以在那裡回答 — 請看[在聊天裡批准](#approve-in-chat)。

## 停止這一輪

在 `執行中` 的 Antigravity session 上點一下 **[停止](https://docs.nomo.gg/zh-Hant/sessions/list.md#interrupt-a-running-session)** 就能停下它。它需要綠色的 **⚡ 本機** 標籤。Antigravity 會先做完目前這一步再停下，session 會顯示 `完成`。對話仍然開著 — 送出新的訊息就能繼續。

## 從手機回覆

從 iPhone 傳一則訊息給 Antigravity session — 修正一個地方、交代下一步，或一句「繼續」。它會像你在 Mac 上打字一樣送到 Antigravity。回覆畫面是一個聊天：你的訊息在右邊，Antigravity 的請求出現在左邊。

> [!NOTE]
>
> **目前，你的 iPhone 和 Mac 必須連著同一個 Wi-Fi**，並且在 Nomo 裡打開「**[區域網路](https://docs.nomo.gg/zh-Hant/sessions/settings.md#local-network)**」。即將推出的伺服器更新之後，在哪裡都能回覆。

**1. 打開 session**

在 Nomo 裡打開你的電腦，選擇 **Antigravity** 分頁。點一下 session 的名稱。

你應該會看到這個 session 展開，詳細資訊下方有一個藍色的「**回覆**」按鈕。正在執行的 session 還有一個紅色的「**停止**」按鈕。

![已展開的 Antigravity session 列 Fix token refresh race，顯示模型、資料夾、agy CLI，以及「停止」和「回覆」兩個按鈕](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-button.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=29656b6a955b4de62f10c7d556e28d8d)

![已展開的 Antigravity session 列 Fix token refresh race，顯示模型、資料夾、agy CLI，以及「停止」和「回覆」兩個按鈕](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-button-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=ea60c2cf929f67b2dc46d70e21d645c1)

一個正在執行、已展開的 Antigravity session，詳細資訊下方有「停止」和「回覆」。

**2. 點一下「回覆」**

你應該會看到一張表單滑上來，上方是 session 名稱，下方是寫著「**傳訊息給這個 session**」的輸入框。

隨時要關閉表單，點一下右上角的 **✕**。

**3. 輸入訊息並送出**

輸入你的訊息，然後點一下箭頭。

你應該會看到訊息變成右邊的一個泡泡，下面有一行簡短的狀態。狀態告訴你這則訊息走到哪裡了 — 請看下面的列表。

![Fix token refresh race 的回覆表單，一則訊息標著「已送達」，另一則標著「等待下一步」](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-sheet.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=e183fc86ff558c17e6d10661aba26af3)

![Fix token refresh race 的回覆表單，一則訊息標著「已送達」，另一則標著「等待下一步」](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-sheet-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=00b35177b68a5ee0807f702da7e86e48)

兩則訊息：第一則已經送到 Antigravity，第二則在等它的下一步，還可以取消。

### 在聊天裡批准

回覆表單開著時，如果 Antigravity 請求執行指令，你可以直接在聊天裡回答。

**1. 找到請求**

在左邊找到來自 Antigravity 的泡泡。上面寫著「**想要執行：**」，接著是指令，然後是「**拒絕**」和「**允許**」兩個按鈕。

![顯示「等待你批准」的 Fix token refresh race 回覆表單，Antigravity 的泡泡裡寫著「想要執行：」npm test -- auth/refresh.test.ts，有「拒絕」和「允許」按鈕](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-approval.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=7b259a436d9bd30bf4c8d37da2b1cd1d)

![顯示「等待你批准」的 Fix token refresh race 回覆表單，Antigravity 的泡泡裡寫著「想要執行：」npm test -- auth/refresh.test.ts，有「拒絕」和「允許」按鈕](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-approval-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=2ab009a3417b8e567dcac86bb50f3e38)

Antigravity 在回覆聊天裡請求執行一個指令。

**2. 點一下「允許」或「拒絕」**

點一下「**允許**」讓 Antigravity 執行它。點一下「**拒絕**」讓它跳過。

你應該會看到泡泡縮成一行，說明發生了什麼 — 請看[已回答的請求](#answered-requests)。

泡泡裡的「**拒絕**」和「**允許**」按鈕永遠不會送出你在輸入框裡寫的內容。你輸入的文字會留在輸入框裡。

### 拒絕並傳送

想說不，同時告訴 Antigravity 改做什麼？一個按鈕就能同時做到。

**1. 寫下理由**

請求還在等待時，在輸入框裡寫下 Antigravity 應該改做什麼 — 例如「用 bun，不要用 npm」。

你應該會看到送出箭頭變成紅色的「**拒絕並傳送**」按鈕，輸入框上方出現一行「**將作為拒絕的理由傳送**」。

![回覆表單裡有一個等待中的 npm test 執行請求，輸入框裡有文字，還有紅色的「拒絕並傳送」按鈕和「將作為拒絕的理由傳送」這一行](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-deny-send.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=7262a8e0586d40fe651c2d4014e69341)

![回覆表單裡有一個等待中的 npm test 執行請求，輸入框裡有文字，還有紅色的「拒絕並傳送」按鈕和「將作為拒絕的理由傳送」這一行](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-deny-send-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=c814ce1ea9a4b73105a74d3ff3a5ffb3)

請求等待時輸入文字：送出按鈕變成「拒絕並傳送」。

**2. 點一下「拒絕並傳送」**

Antigravity 會跳過這個指令，並把你的文字當作理由讀到。

你應該會看到請求變成 **✕ 已拒絕**，下面引用著你的理由。

> [!TIP]
>
> 理由最多 500 個字元。超過的話，按鈕會保持一般的送出箭頭。你的訊息會等著，你回應請求後立即送達。

### 已回答的請求

| 你看到 | 意思 |
| - | - |
| `✓ 已允許 · <指令>` | 你允許了它。 |
| `✕ 已拒絕 · <指令>` | 你拒絕了它。如果用了「**拒絕並傳送**」，下面會引用你的理由。 |
| `已在電腦上回答` | 在 Mac 上回答了。 |
| `已逾時 — 在 Mac 上繼續` | 等你的手機等太久了。Antigravity 改在 Mac 上詢問。 |

### 訊息下方狀態的意思

| 你看到 | 意思 |
| - | - |
| `傳送中…` | 你的手機正在傳送。 |
| `等待你批准` | Antigravity 在等你回答聊天裡的請求。你回應後，訊息會立即送達。 |
| `等待下一步` | 你的 Mac 已經收到。Antigravity 會在它的下一步讀到。在那之前，你可以點一下泡泡上的 **×** 取消它。 |
| `已送達` | Antigravity 已經讀到了。 |
| `正在 Mac 上喚醒…` | session 已經結束，你的 Mac 正在帶著你的訊息重新啟動它。只有 Mac 真的開始重新啟動時才會顯示。這時已經不能取消。 |
| `已在 Mac 上繼續` | session 帶著你的訊息又跑起來了。 |
| `重新連線中…` | 你的手機現在連不到你的 Mac。它會自己一直重試 — 你不需要再傳一次。 |

### 在哪些情況下能用

取決於你在哪裡使用 Antigravity。

**使用 `agy` 命令列工具時：**

* **正在工作** — 訊息會在它的下一步送到。
* **已結束，`agy` 已關閉** — 你的 Mac 會帶著你的訊息重新啟動 session。你會先看到 `正在 Mac 上喚醒…`，然後是 `已在 Mac 上繼續`。
* **已結束，但 `agy` 還開著** — 訊息會等著。在你於 Mac 上的 `agy` 裡送出下一則訊息之前，它都顯示 `等待下一步`；送出之後，Antigravity 會把兩則一起讀到。

**使用 Antigravity 桌面應用程式時：**

* **正在工作** — 訊息會在它的下一步送到。
* **已結束** — 只能在 Mac 上繼續。「**回覆**」會變成灰色，下面那一行寫著「**Antigravity App 的 session 只能在 Mac 上繼續**」。

![已展開、標著「完成」的 Antigravity App session，「回覆」按鈕變成灰色，下面一行寫著「Antigravity App 的 session 只能在 Mac 上繼續」](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-idle-app.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=58448dde8f68ab4456aaacad1af4eb31)

![已展開、標著「完成」的 Antigravity App session，「回覆」按鈕變成灰色，下面一行寫著「Antigravity App 的 session 只能在 Mac 上繼續」](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-reply-idle-app-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=ef99689006efb0df74352102a5afdfd5)

桌面應用程式裡已結束的 session：「回覆」變成灰色，下面那一行說明原因。

小提醒：

* **每則訊息最多 4,000 個字元**。輸入框到這裡就不再接收文字。
* **停止永遠優先**。如果在有訊息排隊時點一下 **[停止](#interrupt)**，Antigravity 會先停下。這則訊息絕不會交給你停掉的那一輪。
* **訊息只在 Nomo 開著時保留**。如果你完全關閉 Nomo，下次打開時表單是空的。你的 Mac 已經收到的訊息還是會送到。

## 這個版本的限制

* **沒有問題，也沒有計畫**。Antigravity 的問題和計畫審核不會顯示在你的手機上。
* **沒有「在 Mac 上開啟」**。這個按鈕在 Antigravity 的 sessions 上無法使用。
* **沒有「一律允許」**。每一次回覆都是一次性的「允許」或「拒絕」。

## 有東西不能用

> [accordion] 我的手機什麼都沒顯示
>
> 1. 重新啟動 Antigravity。
> 2. 輸入 `/nomo-status`，然後選擇 **Allow**。
> 3. 照著以 ⚠️ 或 ❌ 開頭的那一行做。
>
> 還是沒有？在 Nomo 裡點一下 **+** 按鈕（「選擇代理」），把 Antigravity 打開。
>
> 如果 Antigravity 分頁顯示「**還沒有 Antigravity sessions**」，請先在 Antigravity 裡送出一則訊息 — session 要在你送出第一則訊息後才會出現。
>
> ![一台電腦的 Antigravity 分頁，顯示「還沒有 Antigravity sessions」](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-drawer-tab.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=5537ed946ad5654d0c71890164fd32aa)
>
> ![一台電腦的 Antigravity 分頁，顯示「還沒有 Antigravity sessions」](https://mintcdn.com/nomo-ba73b2e6/HJUMQrMIl3MpghxG/images/agy-drawer-tab-dark.png?fit=max\&auto=format\&n=HJUMQrMIl3MpghxG\&q=85\&s=62eaa46f7b1bf028d41660c9f54f8ff4)
>
> 還沒有 session 送達時的 Antigravity 分頁。

> [accordion] 回覆一直停在「等待下一步」
>
> 你的 Mac 已經收到這則訊息。如果 Antigravity 正在工作，它會在下一步讀到 — 執行很久的指令可能要等一下。
>
> 如果 session 已經結束，而 Mac 上的 `agy` 還開著，這則訊息會等你在那裡送出下一則訊息。在 `agy` 裡隨便送點什麼，Antigravity 就會把兩則一起讀到。也可以點一下泡泡上的 **×** 取消它。

> [accordion] Nomo 指令顯示「operation not permitted」
>
> 第一次在 Antigravity 桌面應用程式裡用 Nomo 指令時可能會出現。這是正常的：Antigravity 會自己在沙箱外重試。等它完成就好，你什麼都不用做。

> [accordion] 「回覆」是灰色的
>
> 這個 session 來自 Antigravity 桌面應用程式，而且已經結束。只能在 Mac 上繼續。請在應用程式裡送出下一則訊息。

> [accordion] 每個 session 都出現兩次
>
> Nomo 的 Claude Code 外掛程式被匯入了 Antigravity。請在終端機裡執行下面這行，然後重新啟動 Antigravity：
>
> ```bash theme={null}
> agy plugin uninstall nomo-cc
> ```

> [accordion] Nomo 指令說它找不到自己的檔案
>
> Nomo 的資料夾被搬走或刪除了。Antigravity 還是能用，但什麼都不會送到你的手機。請再執行一次安裝工具，然後重新啟動 Antigravity：
>
> ```bash theme={null}
> bunx nomo-ai --antigravity
> ```

> [accordion] 我的手機不再問我要不要批准
>
> 輸入 `/nomo-approvals on`。如果批准本來就開著，請檢查[設定](https://docs.nomo.gg/zh-Hant/sessions/settings.md#remote-approvals)裡的「在 iPhone 上回答」。

> [accordion] session 一直卡在「執行中」
>
> 等幾秒 — Nomo 會自己發現對話已經停了。還是卡住？輸入 `/nomo-reset`。

更多說明請看[疑難排解](https://docs.nomo.gg/zh-Hant/sessions/troubleshooting.md)。

## 更新

再執行一次安裝工具，然後重新啟動 Antigravity：

```bash theme={null}
bunx nomo-ai --antigravity
```

## 解除安裝

**1. 在終端機裡執行這行**

```bash theme={null}
node ~/.nomo/plugin/scripts/antigravity-install.mjs --uninstall
```

你應該會看到：

```
✅ Nomo is removed from Antigravity. Restart Antigravity to finish. Your phone stays connected for your other coding apps.
```

**2. 重新啟動 Antigravity**

結束 Antigravity，再重新打開它。

如果也要解除這台電腦和手機的配對，請在解除安裝**之前**，在 Antigravity 裡輸入 `/nomo-unpair`。

## 進階

> [accordion] 不用斜線指令
>
> 同樣的指令，改在終端機裡執行，而不是在 Antigravity 的對話裡：
>
> | | |
> | - | - |
> | 配對 | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/pair.mjs` |
> | 用打字輸入的代碼配對 | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/pair.mjs --show-code` |
> | 檢查狀態 | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/status-cmd.mjs antigravity` |
> | 暫停批准 | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/cc-permission.mjs off` |
> | 恢復批准 | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/cc-permission.mjs on` |
> | 清除卡住的 sessions | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/reset.mjs` |
> | 解除配對 | `~/.nomo/plugin/scripts/run.sh ~/.nomo/plugin/dist/unpair.mjs` |
>
> 在安裝工具後面加上 `--verbose`，就能看到它改了什麼。

> [accordion] 運作原理
>
> * **安裝工具會改什麼**。它把外掛程式 clone 到 `~/.nomo`，在 `~/.gemini/config/hooks.json` 裡加入一個名為 `nomo` 的區塊（其他每個區塊都原封不動），並把一個小型的 Antigravity 外掛程式 `nomo` — 帶著五個 `/nomo-*` 指令 — 複製到 `~/.gemini/config/plugins/nomo`。如果 `hooks.json` 不是有效的 JSON，或那裡的 `nomo` 外掛程式資料夾不是它自己的，它會拒絕執行，什麼都不改。解除安裝只會移除那個區塊和那個資料夾。
> * **Hooks**。`SessionStart`、`PreInvocation`、`PostInvocation`、`Stop` 和 `PostToolUse` 負責回報狀態。它們會立刻回覆 `{}`，在背景做自己的事，所以 Antigravity 永遠不必等 Nomo。一列是在第一個 `PreInvocation` 時出現，而不是在 `SessionStart`。
> * **批准**。一個 `PreToolUse` hook 只比對 shell 指令和檔案的寫入與編輯（`run_command`、`write_file`、`write_to_file`、`edit_file`、`replace_file_content`、`multi_replace_file_content`），逾時為 24 小時。「允許」回覆 `auto_approve`；「拒絕」回覆 `deny`，並以你的附註作為理由。其他所有結果都回覆 `allow`，把決定交還給 Antigravity 自己的設定和請求。`agy` 的 `~/.gemini/antigravity-cli/settings.json` 裡任何 `deny` 規則可能比對到的東西，永遠不會送到手機；被單純前綴的 `allow` 規則涵蓋、又沒有任何 `ask` 規則碰到的呼叫，會直接通過。
> * **失效保護**。每個 hook 指令都會先確認它的 script 還在。如果 `~/.nomo` 被搬走或刪除，它會自己回覆，所以絕不會擋住任何東西。批准 hook 裡的任何錯誤，也都會退回 Antigravity 自己的請求。
> * **停止**。你的手機會設一個一次性的旗標；下一個 `PostInvocation` 就結束這一輪。旗標設著的時候，正在等手機回覆的 shell 指令或檔案寫入會以「Stopped from phone」被拒絕。沒用到的旗標會在 10 分鐘後丟棄。Nomo 從不對 `agy` 行程送出訊號。
> * **沒有事件就結束的一輪**。當你取消一輪，或一次執行結束時，Nomo 會看著執行 hook 的那個行程和 Antigravity 自己的對話索引，把那一列標為完成。安靜了 30 分鐘的 session 會被清除，作為最後手段。卡片還在手機上時取消，卡片會被收回。
> * **回覆**。手機把一個 `send-message` 指令（一個訊息 ID 和最多 4,000 個字元）加密封裝，同時經由本機連線和中繼伺服器送出。Mac 為每則訊息寫一個只有擁有者能讀的檔案（`<conversation>.<id>.agy-inbox`）。下一次 `PreInvocation` 會把所有排隊中的訊息當作使用者訊息交給代理；在這一輪最後一步期間送達的訊息，會讓這一輪的 `Stop` 繼續一次。回條（排隊、喚醒中、已送達、已繼續、已取消、已拒絕）隨 session 的加密更新傳回。對於已經結束、而且 `agy` 已經結束執行的 `agy` 對話，Nomo 會在那個對話的資料夾裡執行 `agy --conversation <id> --print=<message>`（訊息是單獨一個引數，從不經過 shell 解析）。已結束但仍開著的 `agy` 會把訊息留到它的下一輪 — Nomo 絕不會在同一個對話上啟動第二個 `agy`。停止旗標永遠優先：訊息絕不會交給正在被停止的那一輪。沒人取走的訊息一天後刪除。Nomo 自己的 `/nomo-*` 指令永遠不會在手機上跳出卡片。
> * **標題**。以唯讀方式，用系統的 `sqlite3` 從 Antigravity 的 `conversation_summaries.db` 讀取。在它出現之前：先用對話記錄的第一行，再用工作區資料夾名稱。
> * **指令**。`/nomo-*` 指令只會執行 Nomo 自己的本機指令 — 配對、狀態、批准開關、重設、解除配對 — 每一個都要先經過 Antigravity 自己的執行指令請求。它們絕不會印出配對連結或 QR code 裡的祕密值。
>
> 完整細節在外掛程式的 [README](https://github.com/KarrixLee/nomo#install--antigravity) 裡。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.