在 Google Antigravity 中大幅降低 Token 消耗的實戰指南
一、核心思維:精確的上下文控制(Context Control)Agent 不需要每次都看到整個專案。過大的上下文不僅貴,還容易造成記憶漂移和幻覺。1. 使用 .antigravityignore 精準排除無用檔案在專案根目錄建立 .antigravityignore 檔案,內容比 .gitignore 更嚴格:
# Antigravity 專用忽略清單
node_modules/
vendor/
dist/
build/
.git/
*.log
*.sqlite
*.png
*.jpg
*.jpeg
*.gif
*.webp
public/build/
storage/framework/cache/
storage/framework/sessions/- 不要對整個專案提問
- 使用 Antigravity 的 @檔案路徑 或 Pin 功能,只選取當前任務相關檔案
- 例如:同時 Pin app/Services/UserService.php + src/composables/useUser.ts + resources/views/filament/pages/user-settings.blade.php
- 任務結束後,立即清除對話歷史 或重置 Context,避免舊對話變成永久負擔
二、規則文件優化(Rule Compaction)規則文件雖然重要,但太長會每次都被讀取,造成嚴重 Token 浪費。最佳實踐:
- 模組化拆分規則
- LARAVEL_RULES.md(後端專用)
- VUE_RULES.md(前端 Vue 專用)
- ASTRO_RULES.md(Island 與 Client 指令專用)
- FILAMENT_V3_RULES.md(Admin 面板專用)
- 只在對應任務時才掛載相關規則
- 精煉 Markdown 寫法
- 減少敘述性段落,多使用結構化清單與表格
- 使用粗體關鍵字突出重點
- 每個規則控制在 1~2 行以內
- 優先使用「禁止事項」與「強制做法」格式
三、流程優化:減少無效思考循環1. 強制「Plan & Approve」機制在重要任務的 Prompt 中加入:
四、減少幻覺糾正的 Token 浪費「跟 Agent 吵架修正錯誤」是最燒 Token 的行為之一。有效做法:
- 提供精確片段
直接貼上相關的 interface、function signature 或既有程式碼片段,讓 Agent 參考,而不是讓它自己掃描目錄。 - 使用 One-Shot Prompt
在提示詞中直接給一個「正確示範」的小範例:markdown正確範例(請嚴格遵循此風格): ```ts export const useApi = <T>(endpoint: string) => { ... } - Reference Discovery 結合精準參考
要求 Agent 先參考特定檔案,而不是整個目錄。
五、工具層面省錢技巧總表
總結:最省 Token 的正確使用心法在 Antigravity 中,最有效的省錢行為是**「先思考,再提問」**。
- 每次提問前先整理好相關檔案
- 重要任務先要求 Agent 輸出 Plan
- 善用模組化規則與精準上下文
- 任務結束立即清理歷史
跨專案防幻覺指南:利用 Laravel-Data 打造 AI 時代的「高感度」全端架構
在前後端分離(Decoupled)的架構中,最燒 Token 的行為莫過於讓 AI Agent 在兩個獨立目錄間反覆橫跳、搜尋 API 欄位。透過 spatie/laravel-data,我們可以建立一個強大的「資訊地圖」,讓 AI Agent 讀取最少的檔案,精準寫出 100% 正確的代碼。
為什麼這是 AI 開發的最佳實踐?
傳統開發中,後端 API 資訊散落在 Controller、Resource 和 Model。對 AI 來說,這意味著要讀取數千個 Token 才能拼湊出一個 API 格式。
使用 Laravel-Data 後:
高壓縮比: 一個 200 Tokens 的 Data 類別,包含了驗證、DTO 與回應格式。
零幻覺: 強型別約束讓 Agent 沒有猜測空間。
跨專案解耦: 前端 Agent 只需「投影」後端的 Data 類別,無需理解後端實作細節。
第一階段:後端架構 —— 建立單一真理來源 (SSOT)
在 Laravel 12 中,我們廢棄傳統的 Resource,改用 Data 類別。
1. 安裝套件
composer require spatie/laravel-data
2. 定義資料合約 (Contract)
建立 app/Data/ProductData.php。這就是 AI 唯一需要閱讀的「合約」。
<?php
namespace App\Data;
use Spatie\LaravelData\Data;
class ProductData extends Data
{
public function __construct(
public int $id,
public string $title,
public int $price_cents, // 以分為單位,防止 AI 算錯浮點數
public ?string $description,
public bool $is_published,
/** @var string[] */
public array $tags,
) {}
public static function fromModel($product): self
{
return new self(
id: $product->id,
title: $product->name,
price_cents: $product->price,
description: $product->desc,
is_published: $product->active,
tags: $product->tags->pluck('name')->toArray(),
);
}
}
第二階段:Antigravity 配置 —— 建立 AI 存取協議
要在前端目錄開發時不產生幻覺,我們必須在專案根目錄建立規則。
1. 建立 .antigravity/rules/API_RULES.md
# API 溝通協議
1. **參考對象**:前端開發時,必須優先讀取後端目錄 `@backend/app/Data/` 下的對應 Data 類別。
2. **禁止自創欄位**:嚴禁根據猜測撰寫 Vue 組件中的變數名,所有欄位必須與 Data 類別屬性 100% 匹配。
3. **回應結構**:API 成功回傳統一為 `{ "data": T }`。
第三階段:實戰工作流 —— 如何省下 70% Token?
這是最核心的操作技巧,避免讓 Agent 漫無目的地搜尋。
Step 1: 精準 Pin (釘選)
當你需要開發「產品列表」前端功能時,不要讓 Agent 掃描整個後端。
指令範例:
「我要實作產品列表 UI(Vue 3)。請參考後端的
@backend/app/Data/ProductData.php,幫我產生對應的 TypeScript Interface,並完成列表渲染邏輯。」
Step 2: 檔案投影 (Projecting)
Agent 讀取 ProductData.php(約 200 Tokens)後,會在前端生成:
interface Product {
id: number;
title: string;
price_cents: number;
description: string | null;
is_published: boolean;
tags: string[];
}
一旦 Interface 生成完成,立刻解除釘選 (Unpin) 後端檔案。接下來的 UI 調整,Agent 只需要看這份 Interface,不再需要回頭讀取後端。
第四階段:總結 —— 效益對比
| 指標 | 傳統全端開發 | Laravel-Data + Antigravity 模式 |
| Token 消耗 | 高 (需掃描 Route, Controller, Model) | 極低 (精準讀取單一 Data 檔) |
| AI 幻覺率 | 高 (常猜錯欄位名、忘了 nullable) | 接近 0 (屬性即合約) |
| 維護成本 | 高 (修改後端要手動改三處) | 低 (只需修改 Data 類別) |
架構師建議
在中大型網站中,AI 的效率取決於你給它的「資訊密度」。laravel-data 將原本混亂的 API 結構壓縮成一份乾淨的「說明書」。
當你讓 Antigravity 的 Agent 習慣於「先讀 Data 檔,後寫前端碼」的節奏時,你不但省下了大筆的 Token 費用,更獲得了一個永遠不會寫錯 API 欄位的完美隊友。
沒有留言:
張貼留言