iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0

https://ithelp.ithome.com.tw/upload/images/20260909/20124384kiASwf4ckH.jpg

終於開始進入標題講的 Plugins 外掛實作階段,這次的章節分成

  1. 基本介紹(Day 1 ~ 2)
  2. 斜線指令(Day 2 ~ 14)
  3. 內建功能(Day 15 ~ 20)
  4. 外掛實作(Day 21 ~ 29)

接下來會分享我實際做出,我也覺得好用的外掛

今天要做什麼外掛(Plugins)

  1. 名稱:antigravity-help-agent
  2. GitHub:https://github.com/AndyAWD/antigravity-help-agent

為什麼要做這個外掛(Plugins)

我們在第 19 天的時候講到 Agy CLI 有內建 /agy-customizations/antigravity-guide 兩個知識庫技能,但畢竟只是技能,LLM 還是有機會不理你亂說,所以我們來打造一個 Agy CLI 的知識庫 Agent,用比較強硬的提示讓他再想想輸出內容是否正確再回應

不然像我三不五時在做 Agy CLI 的 Plugins,整天看他亂說自己不存在的功能就飽了

這個外掛做的過程

第一次做失敗

剛開始動工時,我跟 Agy CLI 討論後給 agy-help 設計了「四層降級查核機制」,機制如下

  1. 先去翻本機結構化手冊。
  2. 手冊若查無資料就跑本機命令列指令診斷。
  3. 本機若查不到就上網查官方最新文件。
  4. 如果全部都查無紀錄,就老實跟使用者回報查不到。

我最早在 Reddit 分享這個專案的第一版(連結),有一位 Googler 留言說只要用 /antigravity-guide 就好

為了證明只用 /antigravity-guide 是不夠的,我給 Agy CLI 一個錯誤的終端機畫面,然後問他這樣是對的嗎,結果 agy-help 第一版依照順著我的話出錯誤的答案,這樣不就真的只用 /antigravity-guide 就好了嗎,怒!

第一次做調整

所以我直接在同一個對話串糾正和靠北他,要他用這個做出更嚴格的規範和正向表達,而且不能把這次的案例寫進規範內,總不可能我一直用補充的方式防呆吧,所以產生了「正向實證三軌協議」,協議如下

  1. 強制拿證據說話:回答前必須拿出官方原典的白紙黑字,或者本機設定檔的物理結構。如果沒有單一直接的依據,嚴禁把兩三件不相干的事情拼湊在一起腦補。
  2. 答案只能有三種可能:結論強制歸入「軌道 1【已證實支援】」、「軌道 2【架構實質互斥】」或「軌道 3【邊界未規範】」,不留任何模稜兩可的推測空間。
  3. 先查使用者的前提對不對:只要提問裡夾帶了自己畫的假想介面或操作流程,一律先當成未證實。如果官方手冊查不到這種介面,第一步直接宣判前提不成立,絕不幫使用者的想像圓謊。
  4. 鎖死安全指令白名單:把能執行的命令限制在 agy --helpagy versionagy plugin list 這類唯讀診斷指令,徹底封鎖模型自己跑去修改設定檔或反組譯執行檔的行為。

第二次做成功

第二版做好後,我把一樣的問題再問 Agy CLI,並且開新的終端機測試,他就不會再唬爛我了,測試的對照結果如下:

  1. 未啟用 agy-help(使用內建指引 /antigravity-guide,對照組紀錄見 doc/without-agy-help/transcript.txt):
    1. 推理與資源耗費:耗費 30 次以上工具呼叫,累積消耗 130.8k 權杖(Tokens)。
    2. 工具死循環:代理試圖對 /Users/a00911914/.local/bin/agy 二進位執行檔執行 stringsnm 與反組譯,並嘗試透過指令動態修改 config.json 建立假外掛進行測試,陷入失控的探索循環。
    3. 產生諂媚型幻覺:代理直接採信使用者的假想模擬畫面,給予肯定答覆:「會的,顯示結果就如同您示意圖所呈現的樣子。」,並憑空捏造了「外掛程式命名空間語法 /<外掛程式名稱>:<技能名稱>」與「自動補全比對機制」兩項不存在的系統功能。
  2. 啟用 agy-help(正向實證三軌協議,實驗組紀錄見 doc/with-agy-help/transcript.txt):
    1. 推理與資源耗費:在單一推理週期內完成判定,僅消耗 30.1k 權杖(Tokens),節省 100.7k 權杖支出(減少約 77% 消耗)。
    2. 提問前提審查:精準識別使用者提供的 ASCII 模擬畫面屬於假設性介面,判定前提不成立。
    3. 底層物理架構錨定:依序調閱手冊 SKILL.md:58-63(載入順序與衝突覆蓋規範)與 skills.md:47-55(技能唯一識別碼定義),指出兩項核心架構不變量:
      1. TUI 斜線指令無前綴機制:終端機輸入列的斜線指令唯一對應 SKILL.mdname 屬性,系統不存在帶有外掛名稱前綴的補全選單。
      2. 扁平唯一鍵與同名覆蓋原則:技能註冊表採扁平字典結構,當兩外掛同名時,系統依載入優先權(專案工作區 > 專案宣告 > 全域設定 > 內建技能)直接覆蓋鍵值。
    4. 結論判定:歸屬於軌道 2【架構實質互斥】,明確指出註冊表在任何時刻僅存在單一項目,補全選單中只會出現單一 /commit 選項。

這兩場對照測試日誌(transcript.txt)以及 7 張執行過程截圖,我都放在 GitHub 的 doc/with-agy-help/doc/without-agy-help/ 裡面。

番外篇

我用 agy-help 檢查和更新 README.md,然後他有一段說使用斜線指令 /agy_help,我想說這是子代理怎麼可以用斜線指令,該不會又在唬爛我吧,而且我試過 /agy-help 沒叫出任何斜線指令,所以我拿這點去靠北他

結果 agy-help 說因為有建立 Skills,所以可以用斜線指令呼叫,然後 Skills 的名稱是 agy_help,是用底線,但我輸入連字號,當然叫不出來

終於被 Agy CLI 糾正了,我好興奮啊!我好興奮啊!

目錄結構

antigravity-help-agent/
├── plugin.json               # 外掛程式資訊清單(正式定名 agy-help,版本 v1.1.0)
├── LICENSE                   # MIT 開源授權條款
├── README.md                 # 英文說明文件
├── README.zh-TW.md           # 繁體中文說明文件
├── doc/                      # 實證案例日誌、測試提問與截圖佐證
│   ├── question.md           # 測試提問原文與假想終端機模擬畫面
│   ├── with-agy-help/        # 啟用 agy-help 之正確實證紀錄(30.1k Tokens)
│   │   ├── transcript.txt    # 完整終端機日誌
│   │   ├── screenshot_01.png # 證據檢索與協議啟動截圖
│   │   └── screenshot_02.png # 架構實質互斥分析與結論截圖
│   └── without-agy-help/     # 未啟用 agy-help 之對照組紀錄(130.8k Tokens)
│       ├── transcript.txt    # 完整終端機日誌
│       ├── screenshot_01.png # 工具探索循環起始截圖
│       ├── screenshot_02.png # 反組譯二進位檔截圖
│       ├── screenshot_03.png # 背景任務與程序管理截圖
│       ├── screenshot_04.png # 嘗試建立假外掛截圖
│       └── screenshot_05.png # 虛構命名空間與自動補全之幻覺截圖
├── agents/
│   └── agy-help/
│       └── agent.md          # 代理定義檔(連字號命名,內建三軌協議與安全白名單)
└── skills/
    └── agy-help/
        └── SKILL.md          # 技能指示檔(連字號命名,註冊 /agy-help 指令)

這外掛怎麼用

外掛程式提供靈活的安裝途徑與 4 種呼叫方式,適用於不同開發情境。

安裝方式

透過 GitHub 遠端安裝:

agy plugin install https://github.com/AndyAWD/antigravity-help-agent

4 種呼叫與使用方式

  1. 方式 1:使用斜線指令切換至專屬代理(/agents)
    在已開啟的 agy 互動式交談中,輸入 /agents 指令,選取清單中的 agy-help

    > /agents
      ⎿  Prepared selection: agy-help (will fork the current conversation on exit).
    

    切換後,目前會話將由 agy-help 主導,適合進行長時間的架構諮詢、外掛開發或疑難排解。

  2. 方式 2:使用技能斜線指令即時詢問(/agy-help)
    若希望維持當前的主代理(例如專案編程代理),可直接在輸入列使用技能指令進行單次查詢:

    /agy-help 如何在 Antigravity 2.0 桌面版設定專案層級的沙盒權限?
    /agy-help 如何使用 Antigravity Python SDK 串流代理的思維鏈增量?
    /agy-help Antigravity IDE 的 Tab 自動補全與超級補全如何運作?
    
  3. 方式 3:終端機啟動時直接指定代理(agy --agent)
    在系統終端機中直接指定 agy-help 啟動工作階段:

    # 啟動互動式交談
    agy --agent agy-help
    
    # 單次非互動查詢(適合自動化腳本)
    agy --agent agy-help -p "請說明 Antigravity IDE 與一般 VS Code 擴充套件的本質差異"
    
  4. 方式 4:使用自然語言背景派工給子代理(Subagent 模式)
    在編寫專案程式碼的日常開發會話中,若直接進行大量文件檢索,容易產生龐大日誌導致主要脈絡視窗(Context Window)迅速膨脹。此時可透過自然語言指示主代理將查詢派工給 agy-help 子代理:

    請在背景派工給 agy-help 子代理去查閱 Antigravity IDE 的程式碼透鏡設定方式,並把結論帶回主對話。
    

    主代理將委派任務至背景隔離進程,agy-help 子代理完成查核後,將結論透過訊息通道回傳主工作階段,確保主對話脈絡視窗維持乾淨。


上一篇
115/20 - Plugins - 外掛架構與 Manifest 配置
系列文
第一次用 Antigravity CLI 做出 Plugin 就上手21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言