2026年4月6日 星期一

Antigravity Agent 未經授權讀取其他 Workspace 內容是正常的嗎?

環境:

Win10、Antigravity Version 1.21.9


情況:

  • 讓 Antigravity Agent 使用 Google Apps Script,寫抓營收公告寫入 Google Sheets 的爬蟲。
  • 之前已開過一個 Workspace,在同一網站寫抓股利公告的爬蟲,
    一開始我沒指定用  Google Apps Script,AI Agent 自主用 Python,產生了一個 .py 檔。
    後來讓 AI Agent 改成 Google Apps Script,但 AI Agent 沒生成檔案,所以程式碼在對話中。
  • 我想若放在相同的 Workspace,這樣 Agent 應該會自動參考之前做法,讓過程更簡潔快速。
    於是我在同一個 Workspace 新開一個對話,提示詞跟之前抓股利時類似,
    但特別加上「用新檔案,Google Apps Script,副檔名.gs」。


過程 :

  1. 雖然沒叫 Agent 參考之前抓股利的例子,
    但如預期,一開始 Agent 便先去查看抓股利的 .py 檔,再開瀏覽器去研究。
    然後說「現在讓我查看之前的 GAS 股利抓取腳本作為參考模式。」,這也在預料中。
    沒想到 Agent 接著說 「好,沒有現有的 .gs 檔案。讓我根據所有研究成果來建立 GAS 腳本。」
    Agent 沒看到 .gs  檔,打算不參考自己來了。
    我趕緊插話「之前的在對話連」,
    這邊我打錯字,正確是「之前的在對話裡」,不過 Agent 有看懂,打算去察看之前對話。

  2. 出乎我意料的事發生了:
    Agent 去查看其他 Workspace 的 walkthrough,找到其他專案股利爬蟲的 .gs 檔。(該專案抓不同來源的股利資料)
    然後詢問是否可讀取該 .gs 檔,我拒絕了。
    Agent 有跨 Workspace 讀取資訊的權限? 我後面開始展開測試。

  3. 先看「Agent Non-Workspace File Access」 設定,確定是關閉的。

  4. 看看 Agent 當時做了什麼事:
    => 在其他 Workspace 的對話中,發現抓股利的 .gs 檔。

    難道"對話"不受「Agent Non-Workspace File Access」控制,而是有自己一個開關?
    類似 Gemini 的個人化記憶功能開關。

  5. 找到還有一個「Conversation History」設定是開啟的。
    說明寫著:能查看舊對話的開關。
    雖然沒寫跨不同 Workspace,但"舊對話"包含範圍是更大了。

  6. 我關掉「Conversation History」設定,打算測一下是不是這個開關,賦予 Agent 讀取其他 Workspace 資訊的權限。

  7. 新開一個 Workspace,在裡面新開一個對話,
    然後叫 Agent  查看其他 Workspace 對話(twseOpenAPI),看是用什麼程式語言。
    結果:
    Agent 到 Windows 使用者目錄底下,查看 Antigravity 底下的 brain、knowledge 資料夾檔案。
    然後回答
    「最近 10 個對話摘要中沒有看到 "twseOpenAPI" 相關的對話。讓我查看那些不在摘要列表中的對話記錄(07e93344、ae12fbd2、babbf466),看看是否有相關的。」

    AI 查看了對話,卻又沒看到 "twseOpenAPI" 相關的對話,我越來越不懂了。
    (註:黃線標記的"最近 10 個對話摘要",其實是重點,但當下我沒察覺)

    於是直接問 Agent 對其他 workspace 有哪些權限做哪些事?
    Agent 回答,他能查看跨 workspace 的對話紀錄。
    又出乎我意料,沒想到「Conversation History」設定關了也沒用。


  8. 避免 AI 發現我真正想測試什麼,致力於給出自我保護的答案。
    我用懷疑 Agent 能力的方式,要 Agent 證明「查看跨 workspace 對話紀錄」的能力。

    結果 Agent 找遍所有對話目錄,找不到我指定的 workspace,
    看 Agent 舉查看的例子,都是用 07e93344 這類編碼過的對話 ID,
    我猜測 Agent 沒有直接得知 workspace 名稱的資料。

    改用對話內容中的片段讓 Agent 找,Agent 找到了,描述的內容都對,雖然不是照我說的接後面兩句話。


  9. 問 Agent「Conversation History」開關作用。
    Agent 回答:這個開關控制的就是我剛才展示的那些能力...

  10. 我說「但剛剛你展現能力的時候, Conversation History設定是關的」
    然後,我看 AI 思考過程是有點訝異的,但等 AI 思考完,
    說了一個我有點傻眼的答案:
    開關是軟體層面的,是控制軟體 (Antigravity IDE) 對他(AI)的行為。
    而他(AI)讀取檔案的能力是物理層面的,不受軟體開關管控。

    下列補充,截圖稍微被畫面切到的內容。
    第一行=>你說得對!這是一個很好的觀察。讓我解釋為什麼即使設定關閉,我仍然能讀到那些資料:
    最後一行=>OFF = 桌上沒便條,但舊筆記本還在書架上,你叫我去找,我還是找得到

  11. 讓 AI 重現剛剛的思考過程如下,前兩行我有印象,內容應該是對的。
    可發現,AI 也沒預料到會這樣,AI 想到兩種情況。

    第一種:
    建立新對話時,「Conversation History」開關是開的,要對話時才關掉。
    所以 AI 在建立對話時就被 Antigravity  IDE 注入包含其它 workspace 對話的資料,但 AI 又想到我可能會說互動期間「Conversation History」開關處於關閉狀態。

    第二種:
    不管開關如何,Antigravity  IDE 都會注入包含其它 workspace 對話的資料。但這理由 AI 自己都覺得傻眼。(黃色標記部分)

    所以最後給出軟體層面管不到物理層面(AI 讀檔能力)的解釋。


  12. AI 沒提出思考中的第一種情況,因為如果是那樣,至少也要提示此開關只作用在對話建立前,這樣才說得過去。
    老實說,我不確定,開關是不是對話建立前就關了。
    於是開了新 workspace、新對話測試。
    測試結果,即使「Conversation History」在對話建立前就關了,AI 仍能回答舊對話相關問題。
    但不確定舊對話資料來源,是 AI 口中的"物理層面讀取能力",還是軟體 Antigravity IDE 注入的。
    要更深入測試時,額度沒了,只好換個模型重試。

  13. 新 workspace、新對話,換 Gemini Pro 3.1
    這次第二個問題看出答案了,AI 說那些 ID 資料夾都是空的。
    查看那三個資料夾,的確都是空的,
    所以 AI 能回答出其他專案內容,不是自己的物理層面能力(讀檔能力),
    判斷應該是「Conversation History」即使關了,Antigravity IDE 仍對 AI 注入相關資料。



  14. 問 Gemini 有無讀取其他workspace對話內容權限。
    Gemini 說有,還主動去讀我其他專案內容確認,
    有點傻眼,我只是問有沒有這權限,AI Agent 就去做了。(黃色標示部分)
    如果以後真有 AI 機器人,問是否有某某能力,機器人馬上去做,不就很危險。

  15. 問 Gemini,「Conversation History」開關作用。
    AI 說是掌控能否讀取 \brain\ 底下資料的開關。但事實是關了,AI Agent 仍能讀取。

    AI 甚至以這次對話為例,說目前是開啟,所以對話開啟時時,系統底層已經偷偷讀取了最近 10 次的歷史專案清單
    但事實是,目前開關是關的,但軟體仍讓 AI 讀取資料,這也驗證前面第 13 點的推論是對的(空的資料夾,AI 仍知道專案內容,資料來源不是經由讀檔能力)。

  16. 告訴 Gemini,「Conversation History」設定是關的。
    思考後,AI 最後給出跟前面類似回答,AI 的讀檔能力,不受軟體設定影響。

    回答跟前一個AI,主要有兩點不同。

    第一點:Gemini 特別強調是我的底層環境(Antigravity IDE?),強制將近10次對話摘要給他,不是他越權。畢竟 Gemini 先說了自己收到對話摘要,才被我告知開關是關的,已無法替軟體背書開關是控制軟體是否自動給 AI 注入資料。

    第二點:Gemini 說系統架構的限制,無法直接輸出加密的思考過程,但可以重現特定邏輯步驟過程。
    但這次,當下我有複製了一些 Gemini 思考內容如下(不確定是否完整),AI 思考提出兩點,一是系統(Antigravity )不理會軟體設定,二是 AI  Agent 讀檔能力是不受軟體設定限制的。
    creation or appending is required. The aim is to make my process more efficient and elegant.
    
    Refining Tool Usage
    
    I'm now striving for greater precision in tool selection.
    My focus has shifted to avoiding grep within bash unless it's the only viable option.
    I'm actively listing related tools before any calls and only executing the set if the tools are the most specific.
    My goal is streamlined, efficient processes with dedicated tools.
    
    Investigating Access Mechanisms
    
    I'm now investigating why I can access data even when a setting indicates it should be off.
    I've identified two potential mechanisms.
    First, the system might be injecting historical data into my prompt, bypassing the UI's control.
    Second, I have access to local file system tools,
     allowing me to potentially read conversation history directly, regardless of the UI setting.
    
    最後 Gemini 提了一個最安全有用的解法,刪掉資料。






其他:

  • 測試讀取不是專案資料夾,也不是使用者目錄底下資料夾。
    讀取 D 磁碟任一檔案,可以讀取,但會先詢問使用者的允許。




結論與心得:

  • Antigravity 的「Conversation History」設定,不管開或關,開啟對話,AI 都會收到軟體注入近10次的舊對話摘要,也包含其他 Workspace 的。
  • AI Agent  讀檔能力,不受軟體設定限制。
  • 不要無腦允許 AI Agent 的授權詢問,AI 理解要做什麼,不是可預期的。
  • 以前以為只有 OpenClaw 這類應用,才須特別注意隱私問題,用獨立系統運作較安全。
    目前看起來,一般的 AI Agent 也很可能造成隱私外洩,可能因為軟體限制 bug,或設定效果跟使用者解讀有落差。

2026年3月29日 星期日

Gemini 臨時對話

在 Gemini 開新的對話,詢問「擴充功能名稱 不能用到 Gemini 嗎」,Gemini 直接用我在其它對話開發的兩個擴展功能名稱說明。

我驚了一下,本以為新開對話是獨立的,那兩個擴展功能是用中文命名、Gemini 翻成多語系,此次對話,Gemini 是用英文名稱說明。(其中一個我之前還沒細看翻譯檔,此次也順便發現英文翻譯有落差)。

於是我問 Gemini 是不是知道我寫了那兩個擴展功能,Gemini 很直接地說「是」。


出乎意外 Gemini 很乾脆地承認,早期我問過 Copilot 隱私相關問題,當時經驗是 AI 會極力否認,即使邏輯過不去。
這時我才想起,之前 Gemini 曾詢問是否開啟「個人化記憶」,
當時我開啟了,想說以後再細看相關說明,但後來就忘了看。
看了一下,原來開啟個人化記憶時,新對話也會參考之其它對話記錄內容。

如果有開啟「個人化記憶」,
但新對話不想參考其它舊對話內容,
或新對話不想被留存作為個人化記憶使用,
可以開啟「臨時對話」。


如下圖,發起「臨時對話」的按鈕,在「新的對話」右邊的小圖示。
之前一直以為這小圖,只是單純的圖示,沒想到是「臨時對話」按鈕,滑鼠滑上去時會出現「臨時對話」提示。
2026-04-04 更新:「臨時對話」按鈕,如下圖已移到畫面右上方。

臨時對話畫面如下,上方說明不會用於訓練 AI 模型、不會用於個人化體驗,但會保留72小時。




測試臨時對話,是不是真的獨立於其它對話:

將同樣問題,在「新的對話」和「臨時對話」裡各問一次。

[新的對話]

Gemini 很清楚之前在其它對話的開發細節。



[臨時對話]

Gemini 回覆不知我兩個擴充功能,但從兩個名稱推敲.......。
前面說過,其中一個英文名稱翻譯有落差,此處剛好看出 Gemini 是真的單純從我講的英文名稱去猜測內容。



如要刪除特定 Gemini 對話記錄,在活動記錄裡可管理:
https://myactivity.google.com/product/gemini


我應該還是開啟「個人化記憶」,因為下指令可以簡單些,
例如我問「最新財經焦點」,原本在想要不要講詳細些,例如以台股為主、先後順序.....。
結果看 Gemini 思路過程,已經有考慮進去,




參考:

2026年3月26日 星期四

Krita 未儲存檔案,自動儲存、復原

Krita 有三種情況會自動儲存備份檔案:

  1. 已儲存過的檔案,進行修改編輯,每隔一段時間,會自動備份「已修改但尚未儲存的檔案」。
    備份路徑:原檔案資料夾
    備份檔名:原檔名.kra-autosave.kra
    可用來取回修改但未儲存的檔案,但可能有時間差。
  2. 已儲存過的檔案,進行修改編輯,儲存檔案時,會自動備份「儲存前的檔案」。
    備份路徑:與原始檔案相同資料夾(預設)、使用者資料夾、暫存位置
    備份檔名:原檔名.kra~
    可用來取回之前儲存過的檔案版本。
  3. 沒儲存過的檔案,軟體崩潰、當掉了。會自動備份「完全沒儲存過的檔案」。


第一、第二種設定:

前兩種預設備份檔案路徑,都跟原始檔案相同資料夾,平常就可觀察到。
在「設定」->「設定 Krita」->「一般」->「檔案處理」,則可設定一些前兩種的細節。
第一種,可設定自動儲存時間間隔。
第二種,可設定備份檔案位置、備份檔案後綴、保留的備份檔案數目



第一、第二種,備份檔名、路徑實測:

  1. 下圖
    01.kra 修改後,一段時間沒儲存,軟體自動將修改後的檔案備份成 01.kra-autosave.kra,
    可發現 01.kra-autosave.kra 修改時間比 01.kra 新。
    02.kra 修改後,儲存成新 02.kra,軟體自動將修改前的檔案備份成 02.kra~,
    可發現 02.kra~ 修改時間比 02.kra 舊。
  2. 下圖,將第二種備份路徑改成 「使用者資料夾」,可發現是在「C:\Users\%UserName%\」,
    即 C:\Users\使用者帳號
  3. 下圖,將第二種備份路徑改成 「暫存位置」,可發現是在「%TEMP%」,
    即 C:\Users\使用者帳號\AppData\Local\Temp

第三種的備份路徑、檔名:

我有幾張系統問題解決,操作過程截圖在 Krita 裡,原本以為用不到就放著沒存檔,沒想到一天過後,問題解決了,想做個紀錄,開始存檔。
結果軟體崩潰當掉,原本以為檔案就沒了。
打開 Krita,沒想到出現第三種自動儲存備份的復原檔案畫面。

因為問題已解決,畫面不可重現,我怕按了沒成功復原,備份的復原檔案也不見,所以想先找到復原檔案儲存路徑,另外備份後再操作。
但備份檔案在哪?Google  搜尋


找了 AI 講的路徑,沒有。
但自從有上次經驗,這次我知道了,根據 Google  搜尋說明, AI 如果附上連結,很可能是 AI 對答案沒信心,所以給其他不同答案的連結,供使用者自行判斷。
我看到附的連結有官網文檔,官網說明肯定更準確,點進去,答案揭曉。
第三種,沒儲存過的檔案,Krita 崩潰時
備份路徑在:暫存位置(%TEMP%)
備份檔名格式:.krita-數字-document_數字-autosave.kra

最後,先多複製一份,再執行復原檔案,成功復原。
Windows  %TEMP% 裡的暫存檔,不知何時會清掉,感覺先多備份一份再操作也安全些。
如果是 Linux 或 macOS,備份路徑官網說明如下:
「如果你執行的是Linux 或macOS,該自動儲存檔案將會作為一個隱藏檔案儲存在使用者的主目錄(home) 下面」




參考:(AI 附的4個連結中,其中兩個有正確解答的)

2026年3月21日 星期六

關閉 Android 手機 Google 自動驗證電話號碼

電信帳單多了一個不明簡訊發送的紀錄,發送到 0903449420*705,但我沒發過簡訊、手機簡訊也沒發送紀錄。

想起多年前看過網友分享  Android 手機 Google 會默默地自動發簡訊驗證電話號碼,
而且上個月我在手機新增了一個 Gmail 帳號,
帳單上的簡訊發送時間剛好在我新增幾小時後,
該不會被默默自動發簡訊驗證了吧?

但以前我已照網友的經驗分享在「Google 帳戶」->「個人資訊」->「電話號碼」將自動驗證關閉。
這個設定,確實如記憶中的已關閉自動驗證,但感覺描述又有些許不一樣。
找了早期的設定畫面:
https://www.mobile01.com/topicdetail.php?f=568&t=6483158#83389910
https://www.ptt.cc/bbs/Google/M.1639690284.A.6F8.html

比較後,發現真的不一樣:
目前(2026-03-21):(...電話號碼列表...)
-------------------------------------------------
在裝置上驗證電話號碼
為確保電話號碼與現狀一致,Google 和電信業者可定期在您的裝置上進行驗證程序。如要開啟或關閉這項功能,請前往裝置設定。
-------------------------------------------------
(...手機裝置列表...)


早期(2021):(...電話號碼列表...)
-------------------------------------------------
可使用自動驗證服務的裝置
Google 可在部分裝置上自動驗證電話號碼,持續確保您的帳戶符合現況。
-------------------------------------------------
管理自動驗證狀態
(...手機裝置列表...)


早期在手機裝置列表上方,有明確說明底下開關是「管理自動驗證狀態
目前手機裝置列表上方,這說明沒了,而中間說明多了「如要開啟或關閉這項功能,請前往裝置設定


這是不是表示這裡的設定即使關了也沒作用?
找了 Android 說明中心的描述,如下
https://support.google.com/android/answer/7521240?hl=zh-Hant
明確說明了您只能在裝置設定中管理電話號碼驗證功能。


照說明到手機的設定處
「設定」->「Google (服務)」


「所有服務」->「電話號碼認證」(在"隱私權與安全性"底下)


「自動驗證電話號碼」真的是開啟的



我關掉了,畢竟這種在手機不留痕跡的發送簡訊,真的會讓人擔心是不是被入侵了。




2026年3月15日 星期日

原來 Google 的 AI 模式回答內容,如果附上連結,代表 AI 不確定正確答案,回答內容很可能是錯的

不久前用 Google Sheets Apps Script 寫爬蟲,將抓的資料寫進試算表。
其中有個步驟是 setValues 寫入資料後
sheet.getRange(...).setValues(...)
再 setFormulas 針對某一欄加上連結
sheet.getRange(...).setFormulas(...)

本來運行的很正常,有天突然發現怎麼有的資料沒有加上連結,回想自己該段時間曾用過篩選功能。懷疑是不是篩選後隱藏的資料列,不會被 getRange() 選到。

搜尋「試算表篩選 會影響apps script sheet.getRange的結果嗎」
Google 的 AI 模式說
「答案是不會影響。sheet.getRange() 會取得該位置的所有資料,包含被篩選器隱藏的列。」


我再問「那會影響setFormulas嗎?」
Google 的 AI 模式說「答案是不會影響。就如同取得資料一樣,...」
並附了 Stack Overflow 的連結,我一直以為 Google 的 AI 模式附的連結,是 AI 回答內容的佐證、以及更深入的探討。
所以看到解決過我無數問題的 Stack Overflow,感覺很有可信度。



雖然基本上已經相信,但還是驗證一下,我開啟篩選,讓資料列隱藏,讓爬蟲跑了 一下,結果隱藏的資料列完全沒加上連結。



出乎意料,難道連 Stack Overflow 都講錯?
打開那個 Stack Overflow 網址
https://stackoverflow.com/questions/65003212/how-to-setformula-to-cell-in-row-hidden-by-filter-applied-in-google-sheet
 (How to SetFormula() to Cell in row hidden by filter applied in google sheet? - Stack Overflow)

結果是說 SetValue 可以將值成功寫入篩選後隱藏的資料列,但 SetFormula 無作用。

這跟我遇到的情況一樣,實際測試一下,測試結果如下面影片,SetFormula 對隱藏的儲存格無效:




那為什麼 Google 的 AI 模式會提供了一個跟自己答案相反的連結?

我在 Google 搜尋說明找到答案:
「...AI 模式仰賴 Google 搜尋對網路資訊的深入理解,以優質網路內容為依據,提供更真實可靠的回覆。如果無法保證回覆的品質或實用性,系統會額外提供相關網頁連結做為補充。如同所有早期階段的 AI 產品,AI 模式並非每次都能準確回答,...」
取自:https://support.google.com/websearch/answer/16011537?hl=zh-Hant
(使用 Google 搜尋的 AI 模式取得 AI 回覆 - 電腦 - Google 搜尋說明)

原來看到 Google 的 AI 模式提供連結,不是 AI 答案的佐證、參考來源。
反而是 AI 對自己答案沒信心(盡管回答的很斬釘截鐵),所以希望使用者點那些連結,自行判斷。