Gordon 是什麼呢?
今天文章要來介紹一個 Docker 相對來說還算是新的功能,叫 Gordon (或 Ask Gordon)。這個功能可以用 Docker Desktop 側邊欄或 CLI 的 docker ai 指令操作,它使用上像是一個問答的聊天機器人,但其實不僅僅是如此而已,而是能夠去讀取目前你的 Docker 環境、容器狀態、logs、Dockerfile、compose.yaml,並在你同意後執行指令或修改檔案的 Docker AI agent。
雖然說是新功能,也是推出了好一段時間了,都上過幾次新聞了(?)。
官方目前仍標示為 Beta,並且需要 Docker Desktop 4.61.0 或更新版本才支援。
更詳細資訊可以參考官方文件:
Docker Documentation:https://docs.docker.com/ai/gordon/
如果你平常有在使用 Docker、寫 Dockerfile,或協助團隊導入容器化,在容器化的環境操作,應該很熟悉這種場景:
明明只是一個簡單的 docker run,結果容器就是起不來。😡😡😡
有時候是 port 被占用,有時候是環境變數忘了設定,有時候則是 Docker Compose 裡面服務之間連不到。這些問題都不算難,但真正麻煩的是,每次都要重新查 logs、inspect container、看 compose.yaml、確認 network、確認環境變數,最後再回頭修設定。
而 Docker 推出的新功能 Gordon,剛好就是為了解決這類日常 Docker 工作流的問題。
Gordon 是 Docker 官方整合在 Docker Desktop 與 Docker CLI 裡的 AI assistant,它可以理解你目前的 Docker 環境、容器狀態、映像檔、volume、network,也可以讀取專案目錄裡的 Dockerfile、compose.yaml 與相關設定檔。更重要的是,它不是只給你建議,而是可以在你確認後實際執行 Docker 指令、檢查 logs、修改設定檔。
我覺得這個功能非常的實用,從源頭來看,它也比其他 AI 更加推薦,因為它就是一個原生的功能,而且能夠直接在你的環境去找出問題與執行,你不需要去複製貼上到其他 LLM 詢問(可能沒頭沒尾的),也無法調查根因,也無法幫你做操作。而且它也不是很遙遠的 AI 願景,技術上老實說不是多強大與先進,而是非常貼近日常開發者會遇到的 Docker 問題,強調一個實用性。
這篇文章我會用三個簡單案例來測試 Gordon,非常簡易明瞭的案例,希望能讓大家有一些體會:
- 第一個是本機 port 重複監聽,導致容器無法啟動。
- 第二個是容器參數或設定錯誤,導致服務啟動後立刻結束。
- 第三個是 Docker Compose 裡面容器之間無法溝通。
這三個問題都很常見,也很適合觀察 Docker AI agent 到底能不能幫我們少走一點除錯彎路。
Gordon 怎麼使用呢?
如同剛剛所介紹,Gordon 是 Docker 官方推出的 AI agent。
那要如何去使用呢?其實它目前整合在 Docker Desktop 裡,也可以透過 terminal 使用。接下來的案例我打算採用 CLI 為主去使用。先來給大家看一下我的操作環境,我是使用 Windows 主機安裝了 Docker Desktop,版本截圖與輸出畫面如下:

PS C:\Users\K> Get-ComputerInfo | Select-Object OsName, OSDisplayVersion, OsBuildNumber
OsName OSDisplayVersion OsBuildNumber
------ ---------------- -------------
Git commit: f52814d
Built: Fri Dec 12 14:51:52 2025
OS/Arch: windows/amd64
Context: desktop-linux
PS C:\Users\K> docker version
Client:
Version: 29.1.3
API version: 1.52
Go version: go1.25.5
Git commit: f52814d
Built: Fri Dec 12 14:51:52 2025
OS/Arch: windows/amd64
Context: desktop-linux
Server: Docker Desktop 4.56.0 (214940)
Engine:
Version: 29.1.3
API version: 1.52 (minimum version 1.44)
Go version: go1.25.5
Git commit: fbf3ed2
Built: Fri Dec 12 14:49:51 2025
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v2.2.1
GitCommit: dea7da592f5d1d2b7755e3a161be07f43fad8f75
runc:
Version: 1.3.4
GitCommit: v1.3.4-0-gd6d73eb8
docker-init:
Version: 0.19.0
GitCommit: de40ad0
PS C:\Users\K> docker compose version
Docker Compose version v5.0.0-desktop.1Code language: JavaScript (javascript)
然後 Gordon 的功能,目前是免費的,但是要登入才可以使用的,並且預設沒有啟動。所以大家可能看到類似下圖的畫面,要記得先登入帳號之後,選擇 Enable Ask Gordon。除了畫面中可以 Enable,也可以在 Docker Desktop 右上方點選齒輪,到 Beta features 當中去勾選啟用。
也可以注意到一件特別的事情,就是在我下面兩張尚未啟動的圖案當中,我的 Enable 是灰色無法按下的,也可以看到有 “Locked by your org” 的字眼,這個其實是企業版(Business)方案當中,有建立 organization 的情況下,你在這個組織底下,如果組織管理員沒有允許的話,在這個組織底下的成員是沒有辦法啟用的,也是一種風險控管的機制。如果你是這樣的情況的話,就必須要組織的管理員去 Docker Admin Console 去更改設定才行。


那通常一般使用者的,註冊帳號完成後,直接登入 Docker Desktop,按下 Enable 就可以使用了,畫面應該會顯示如下:

在這個地方,在 GUI 的情況先來個問題,讓我們初探認識一下 Gordon。這邊我在對話視窗當中直接詢問:
list my containerCode language: PHP (php)
很快就會跳出一個畫面,我相信這邊就已經會讓大家很有感覺與警覺到幾件事情:
- 可以透過自然語言和 Ask Gordon 互動
- 它會整理與思考問題後列出它的回應與接下來的操作步驟指令
- 它會向你取得執行工具指令的權限要求

每一個對話視窗就是一個 session,所以可以根據你的需求與它回答的內容,你可以逐項地來判斷要Allow或Reject操作的要求,或是可以直接Allow for this session,允許這個對話接下來的所有操作。
也可以留意到它正確的”透過執行 docker ps -a”的方式來回答了我的問題。雖然這是一個超級無敵簡單基本的操作與回覆,但到這個地方,我們其實就對它的邏輯與功能有了基本了解。

那它也有清除 Session、建立新 Session、切換工作目錄、上傳檔案等等基礎功能,這部分我就不多著墨,進入下一個階段,用另一種方式操作 Gordon。
另一個方式其實就是我前面提到接下來的範例會以 CLI 操作為主。所以帶大家做 CLI 第一步的操作,就是開啟 Docker Desktop 當中的 terminial,然後在 terminial 當中輸入以下指令:
docker ai
#接著詢問
please list all of my containerCode language: PHP (php)
或是你要直接丟一個問題給它也可以:
docker ai "please list all of my container"Code language: JavaScript (javascript)
整個過程與邏輯當然其實和 GUI 操作大同小異,畢竟是同一個功能,只是從 GUI 改成了用 CLI 操作,所以本質上它的處理方式也是一樣的,針對要執行指令時也會提出權限要求的允許。



(備註:CLI 要退出 Ask Gordon,就按 Ctrl + C 就可以了)
不管是 GUI 還是 CLI 都要留意一下關於目錄的問題,如果你要讓 Gordon 分析某個專案,建議先切到該專案目錄:
cd ~/my-docker-lab
docker ai
因為 Gordon 會把目前 session or shell 所在目錄當成工作目錄,也就是它分析 Dockerfile、compose.yaml、設定檔時的預設 context。
同樣再次說明,根據 Docker 官方文件,Gordon 可以協助解釋 Docker 指令、搜尋 Docker 文件、撰寫或修改 Dockerfile、除錯容器啟動失敗、管理 containers、images、volumes、networks 等工作。它可以讀取容器 logs、檢查 Docker 狀態,也可以在你同意後執行 shell 指令或修改檔案。
這裡有一個很重要的觀念:Gordon 不是完全自動幫你亂修系統。
它預設會在執行 shell 指令、修改檔案、抓取網路資料之前,先提出它想做什麼,然後等待你批准。你可以同意、拒絕,或要求它換一種方式處理。Docker 官方也提醒使用者,AI 仍然可能犯錯,所以在批准前要確認指令、容器名稱、image tag、volume mount、port mapping 是否符合你的意圖。
這點我覺得設計得很合理。
因為 Docker 很常牽涉到本機檔案、volume、網路設定,甚至可能有資料庫資料。如果 AI agent 可以不經確認直接刪 container、刪 volume、執行 docker system prune,那反而會變成新的風險。(雖然後來還是會提到風險)
所以 Gordon 比較像是一位懂 Docker 的助教。它可以幫你看現場、提出判斷、建議修法,甚至幫你執行,但最後仍然由你決定要不要批准。
案例一:本機 Port 重複監聽,容器無法啟動
畢竟這個功能的設計與用途,就不是一個困難或複雜的功能,所以相信經過剛剛的解釋與操作,大家應該都能很熟悉。我們也就馬上來進入按例。第一個案例是最常見的 Docker 新手問題之一:port 被占用了。
假設我先啟動一個 nginx,讓它使用本機的 8080 port:
(以下的指令都可以直接複製貼上到 terminal,就可以跟著我一起操作完成了!)
docker run -d --name web1 -p 8080:80 nginx:alpineCode language: CSS (css)
確認它有正常啟動:
docker ps
接著我故意再啟動第二個 nginx,也想綁定同一個本機 port:
docker run -d --name web2 -p 8080:80 nginx:alpineCode language: CSS (css)
這時候通常會看到類似這樣的錯誤:
PS C:\Users\K> docker run -d --name web2 -p 8080:80 nginx:alpine
63c6663c39ee87aa70e2976dd40c26d127091d5e57bee9a8a8b0c07dfdb9b8da
docker: Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint web2 (4bf8b6dbff0a9a0a54d712722f31a630e11b5acef847b44534cd6e9b72f390
88): Bind for 0.0.0.0:8080 failed: port is already allocated
Run 'docker run --help' for more informationCode language: JavaScript (javascript)
對於有些人來說,可能真的完全看不懂。看不懂的人,早期可能直接 google 搜尋關鍵字,而現在可能就複製貼上到 ChatGPT 去詢問原因;而聰明如你,相信看到 “port is already allocated”,就知道是監聽埠重複了。
傳統上,我們會自己檢查:
docker ps -a
或是在 Windows / macOS / Linux 上檢查是哪個 process 占用 port。
但如果改用 Gordon,我可以直接問:
docker ai "I tried to run a second nginx using 'docker run -d --name web2 -p 8080:80 nginx:alpine' but it failed. Please diagnose the problem and suggest a fix."Code language: JavaScript (javascript)
或更直接一點:
docker ai "why can't my container bind to port 8080?"Code language: JavaScript (javascript)

它會發現 web1 已經使用了本機的 8080:80 port mapping,因此 web2 不能再使用同一個 host port。
也提供給你了這個問題修復的解法(也就是要讓你可以順利啟動第二個nginx的方法)。它也好心的建議你可以移除那個沒有成功啟動的 web2 容器。
當然有更酷的方式,就是直接交給它處理。
我直接告訴 Gordon 以下的內容,也就是它剛剛已經找出原因也分析了要執行的操作指令,我直接讓它去幫我完成那些指令,解決我的問題:
please run the command above, fix the problem.
而輸入之後,觀察結果也可以發現 Gordon 漂亮地完成任務,刪除了失敗的web2,並且在 8081 Port 運行了新的web2。

這個案例其實很簡單,但很適合說明 Gordon 的價值。
因為對熟悉 Docker 的人來說,這種錯誤一眼就知道。但對初學者或開發團隊成員來說,他可能只看到一大串錯誤訊息,不知道問題是 Docker image 壞掉、容器內服務壞掉,還是本機 port 被占用。
Gordon 的價值不是讓高手知道自己已經知道的事情,而是把「查狀態 → 看錯誤 → 對應 Docker 行為 → 提出修法」這個流程變成一段對話。
案例二:容器參數錯誤,導致服務啟動後立刻結束
第二個案例,我們來測試一個常見的參數問題。
很多官方 image 啟動時都需要必要的環境變數。例如 MySQL 第一次初始化時,通常需要設定 root password,或指定允許空密碼。假設我故意少給必要參數:
docker run -d --name mysql-bad mysql:8Code language: CSS (css)
接著檢查狀態:
docker ps -a
你可能會看到容器已經 exited:
mysql-bad mysql:8 ExitedCode language: CSS (css)
這時候傳統除錯方式是看 logs:
docker logs mysql-bad
通常會看到它提醒你缺少必要設定,例如需要設定 MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD 或 MYSQL_RANDOM_ROOT_PASSWORD 其中之一。

新的時代有新的解決方法,既然有了AI,這時候我們就可以不用用傳統方式,我們可以直接問 Gordon:
docker ai "my mysql-bad container exited immediately. Please inspect the logs and tell me how to fix the docker run command."Code language: JavaScript (javascript)
[Option] Gordon 可能會先提出要執行:(在我的案例當中,它只要求了logs,就解決了)
docker ps -a
docker logs mysql-bad
docker inspect mysql-bad
以下是我的執行結果截圖,大家可以參考看看,由於AI判斷與分析,不見得大家診斷方式都會是一致。但最終得到的結果與建議應該都會是正確的。

我批准後,它就會根據 logs 判斷問題不是 MySQL image 壞掉,而是啟動參數缺少必要環境變數,提出了一些修正的方式。我看到它推薦 Option 1,所以我直接請它根據 option 1 run command。
基本上它執行之後,除非你允許接下來全部(也就是approve all tools this session),否則每一步都會詢問,如果你想要好好觀察它的行為,或是你在比較敏感的環境操作,需要小心起見的話,也可以自行每次觀察視窗,來每次按 Y 進行核准每一個操作行為。

最後它透過以下的指令完成了我這次的問題:
docker rm mysql-bad
docker run -d --name mysql-good -e MYSQL_ROOT_PASSWORD=yourpassword mysql:8
並且也確認 MySQL 容器啟動是正常的。
如果要進一步測試,可以執行:
docker exec -it mysql-good mysql -uroot -p
輸入剛剛設定的密碼後,就可以進入 MySQL。

這個案例可以凸顯 Gordon 另一個重要用途:它不只是看容器有沒有起來,而是會結合 container logs 與 image 常見使用方式來判斷問題。
很多 Docker 問題其實不是 Docker Engine 本身有問題,而是 container image 啟動時需要特定設定。像資料庫、Message Queue、身分驗證服務、監控系統,常常都有必要環境變數、volume、初始設定檔。如果少了一個參數,容器會直接退出。
這種時候,docker logs 本身已經有答案,但不是每個人都知道要看哪一段。Gordon 的角色就是幫你把 logs 轉換成可以執行的修正方案。
第二個案例,老實說對許多已經使用過容器的技術人員來說,也完全不是問題。但挑選這個案例的時候,其實我就有這樣的想法。其實第二個案例的問題與除錯,可能是對於非技術人員或無容器使用經驗的人來說,已經是”自行除錯會有一點困難的了”,所以也可以從這一案例當中知道,其實 Gordon 具備了一些讓沒有經驗或不會除錯的人,可以開始踏入這個領域進行嘗試,也省去了很多除錯的時間與難度。
案例三:Docker Compose 容器間無法溝通
第三個案例,我們來看 Docker Compose。
這也是我覺得 Gordon 很有價值的地方。因為 Docker Compose 的問題通常不是單一容器,而是多個服務之間的網路、service name、depends_on、環境變數、port mapping 混在一起。
我們先建立一個測試目錄:
mkdir docker-gordon-compose-lab
cd docker-gordon-compose-lab
我先說明一下接下來的檔案內容用途:
「這個 Compose 檔案定義了一個 Nginx 網頁伺服器,透過改寫設定檔案監聽 8080 Port,以及一個會等候 3 秒後執行向 Nginx 網頁請求測試的 curl 服務」
建立一個簡單的 compose.yaml:
【🧠挑戰!這邊的 compose.yaml 實際啟動後,curl 是無法成功連線的,可以先來肉眼觀察挑戰看看問題在哪裡?如果看了超過 15 秒還沒發覺的話,好好考慮未來使用 Gordon 吧!】
services:
web:
image: curlimages/curl:latest
command: sh -c "sleep 3 && curl -v http://localhost:8080"
depends_on:
- nginx
nginx:
image: nginx:alpine
command: >
sh -c "echo 'server {
listen 127.0.0.1:8080;
server_name localhost;
location / {
return 200 \"密碼就在這裡,但你看不到!\n\";
}
}' > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"Code language: PHP (php)
嘗試啟動:
docker compose up
當然,沒有意外的話就是會失敗 Failed 的啦~
這個 compose 檔案看起來好像沒什麼問題,但其實 web 服務裡面的這行是錯的:
curl -v http://localhost:80Code language: JavaScript (javascript)
在容器裡面,localhost 指的是 web 容器自己,不是另一個 nginx 容器。
在 Docker Compose 的預設 network 裡,服務之間應該用 service name 互相溝通。因此 web 要連到 nginx,應該使用:
http://nginx:8080Code language: JavaScript (javascript)
這時候我們可以問 Gordon:
docker ai "my Docker Compose web service cannot reach nginx. Please inspect compose.yaml and diagnose the networking issue."Code language: JavaScript (javascript)
Gordon 可能會讀取目前目錄下的 compose.yaml,也可能提出執行:
docker compose ps
docker compose logs
docker compose config
接著它應該會指出:在 Docker Compose 中,容器間通訊應該使用 service name,而不是使用 localhost。
由於我在這次詢問之後,直接選擇了 ALL 允許它接下來所有操作。所以它直接幫我修改了compose.yaml。
修正後的 compose.yaml:
services:
web:
image: curlimages/curl:latest
command: sh -c "sleep 3 && curl -v http://nginx:8080"
depends_on:
- nginx
nginx:
image: nginx:alpine
command: >
sh -c "echo 'server {
listen 0.0.0.0:8080;
server_name localhost;
location / {
return 200 \"密碼就在這裡,但你看不到!\n\";
}
}' > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
expose:
- "8080"Code language: PHP (php)
並且它也自動執行了 docker compose up,在 terminal 當中也看到了 Curl 成功離線取得 200 OK 回應和內容。

這個問題也是非常典型的 Docker Compose 除錯題。
很多人第一次寫 Compose 時,會以為每個 container 裡面的 localhost 都是同一個地方。但實際上,每個容器都有自己的 network namespace。對 web 來說,localhost 是 web 自己,不是 host,也不是 nginx。在 Compose 預設網路裡,服務名稱會成為 DNS 名稱,所以要連其他服務,就應該用 nginx 這個 service name。
這類錯誤很適合用 Gordon 來輔助,因為它可以同時看 compose.yaml、看 logs、看目前 compose project 的容器狀態,再把 Docker networking 的概念用具體設定指出來。
Ask Gordon 適合解決哪些 Docker 問題?總結我對 Gordon 的看法
Gordon 適合解決的問題
從官方文件和這次測試方向來看,我覺得 Gordon 特別適合以下幾類問題:
- 第一種是容器啟動失敗,例如 container crash、exit code 異常、缺少必要環境變數、command 寫錯。
- 第二種是 build 失敗,例如 Dockerfile 寫法錯誤、套件安裝失敗、multi-stage build 路徑錯誤。
- 第三種是 Compose 服務互連問題,例如 service name 寫錯、port mapping 誤解、container 內使用 localhost、depends_on 與健康檢查設定不完整。
- 第四種是 Dockerfile 或 compose.yaml 最佳化,例如 image 太大、缺少
.dockerignore、沒有 healthcheck、開發與正式環境設定混在一起。
Docker 官方文件也列出 Gordon 可以用來診斷 container crash、debug build failure、修復 networking issue、調查記憶體使用量過高等情境。
Gordon 的價值:進入操作現場
我覺得 Gordon 最大的價值,不是「AI 會 Docker 指令」。
因為 Docker 指令其實網路上查得到,ChatGPT、Claude、Gemini 也都可以回答很多 Docker 問題。
Gordon 真正比較特別的是:它在你的 Docker 操作現場裡。
正所謂「遠水救不了近火,遠親不如近鄰」,你今天沒頭沒尾貼了資訊給 ChatGPT,而且它還沒辦法直接在你的電腦環境上診斷問題。倒不如直接使用 Ask Gordon,它可以看你本機有哪些 container、目前哪個 container exited、logs 寫了什麼、compose.yaml 長什麼樣、Dockerfile 在哪裡。這讓它不是只根據抽象問題回答,而是可以根據你真正的環境提出修法。
Docker 官方部落格也用一個很好的例子說明差異:一般 AI 可以解釋 exit code 137 可能代表 OOM,但 Gordon 可以檢查容器 memory limit、讀 logs、找出吃記憶體的 process,並提出修正方式。
其實這個也是 AI agent 和一般 AI chatbot 的差別。所以今天這篇文章也有一點滿有趣就是,如果你是沒有使用過所謂 AI Agent 的人,今天操作這個 Ask Gordon,也是讓你體驗了一下所謂的 AI Agent。
未來的容器除錯方式:新時代採用新的手段
從今天的介紹到案例操作下來,我相當認為 Docker Gordon 是一個值得 Docker 使用者關注的新功能。
它不是取代 Docker 基礎知識,也不是讓你不用理解 container、image、network、volume,而是讓日常除錯流程更順暢。過去遇到容器問題,我們可能會依序執行:
docker ps -a
docker logs
docker inspect
docker compose ps
docker compose logs
docker compose config
然後自己把錯誤訊息、Docker 行為、設定檔內容拼起來。
現在 Gordon 則可以把這個流程變成一段對話:
docker ai "my container failed to start, please diagnose and fix it"Code language: JavaScript (javascript)
它可以看現場、讀 logs、提出修法,甚至在你批准後幫你執行。對我來說,這代表 Docker 的使用體驗正在從「指令工具」走向「具備上下文的操作助理」。這對初學者、開發者、DevOps 團隊,甚至資安教學都很有幫助。
今天示範的案例說實在的都是簡單的場景,實務上我相信大家都「曾經遇過」或「會遇到」許許多多更複雜的環境,更困難的找到的 Bug,那些難以簡單除錯的情況,也會更顯得 Ask Gordon 厲害,能夠大展身手。
當然,我還是會強調:AI agent 可以協助除錯,但不能取代業務與工程判斷。尤其是涉及資料、volume、正式環境或敏感設定時,使用者仍然要理解它做了什麼。
但如果是本機開發、教學實驗、Dockerfile / Compose 除錯,我認為 Gordon 已經是一個非常值得嘗試的新工具。在正式環境之中,務必還是要小心使用。
身為 Docker Captain,我會把它視為 Docker 生態系中一個非常有用的小助手:不是只有把應用程式放進容器,而是讓 AI agent 也能真正理解容器化工作流,並安全地參與開發與除錯流程。
最後從資安角度提醒:AI 可以幫你修 Docker,但權限邊界更重要
雖然作為一個介紹文章,當然把 Docker Gordon 的正面好處都講完了。可是從資安來說還是要提醒大家一些事。
首先,講一下前面提到的新聞,畢竟是新的功能,又干涉到 AI 分析與操作,都是會火紅的議題。Docker Ask Gordon 也是曾經有出現過漏洞的。這個其實也不必太擔心,任何產品幾乎都有出過資安漏洞,記得持續有關心資安新聞必且有好好更新就好。
新聞連結:因AI輔助功能恐放大供應鏈風險,Docker修補Ask Gordon安全弱點
接著是關於 Gordon 用途上,我自己來說,我不會建議把它當成完全自動化的維運工具。尤其是在有 volume、有資料庫、有 production 設定的環境,任何 docker rm、docker compose down -v、docker system prune 都可能造成資料遺失。Docker 官方也提醒過,Gordon 是有可能犯錯的,使用者在批准操作前仍然應該確認指令與影響範圍。我也要替它說話一些,這完完全全不會是 Docker 或是 Ask Gordon 的問題,而是任何的 AI Agent 與 LLM 都會有的風險。
所以我的建議是:
- 在本機開發環境,幾乎是可以大膽用 Gordon 幫忙除錯。
- 在教學或 demo 環境,可以用 Gordon 讓學員理解 Docker 問題發生的原因。
- 在正式環境,則應該把 Gordon 當成輔助分析工具,而不是讓它直接修改或刪除資源。
身為資安人,我其實特別在意 Gordon 的權限模型。
Gordon 可以讀取檔案、檢查 Docker 環境、查看 container logs、執行 shell command、修改檔案。這些能力很方便,但也代表它具備相當高的本機操作能力。
根據官方文件,Gordon 預設在執行 shell 指令、修改檔案、從網路抓資料之前會要求使用者批准;使用者也可以設定工具權限、停用特定工具,或透過 allow-list / deny-list 控制可執行的命令模式。
這一點其實很重要。因為 AI agent 的安全性,不只在於模型回答得準不準,也在於它能接觸什麼資源、能執行什麼動作、動作前有沒有被審核。
如果你只是問它 Docker 概念,風險很低。但如果你讓它讀取專案目錄、修改 compose.yaml、執行 Docker CLI,那就應該養成一些好習慣,例如所有專案設定檔都進 Git、批准前看清楚指令。不要在不理解的情況下批准刪除 container、volume、network。
再次強調,這不是 Gordon 特有的問題,而是所有 AI agent 工具都會遇到的問題。AI 越能幫你做事,就越需要明確的權限邊界。
