大家好我是一宵三筵!
Gemini 出了 CLI 版,可以直接在電腦的 terminal 上面執行,而且可以直接使用中文下指令
使用自然語言跟他對話後,他可以利用script指令,直接對電腦中的檔案去掃描、解析,甚至生成與編輯.要更動前也會詢問並要求授權,可以看過之後再同意gemini做動作
Gemini CLI只要登入google帳號就有免費的額度可以使用
不像 Claude Code 只有付費版,而且 20美/月 的方案要用來開發專案可能不太夠用
在配合公司開發環境下,我預設的 Node 是 v18 ,安裝 Gemini CLI 會失敗 (我也想升級Node RRR)
於是搭配nvm 把 Gemini CLI 裝在 Node 22
所以每次都要先 nvm use 22,再輸入 gemini。
而且,如果是直接打開終端機就啟動 gemini,就會有以下的警告:
You are running Gemini CLI in your home directory. It is recommended to run in a project-specific directory.

意思是說你直接在根目錄裡面啟用Gemini CLI很危險啊!
萬一你下了一個指令,說要把目前資料夾的什麼東西給砍了,動到你的系統檔案要怎麼辦
因此還有一個步驟是要cd 到專案資料夾,才能啟用Gemini CLI
每次打開終端機就要做這三件事,真的好麻煩喔——
所以就寫了一個 Launcher,把這三步自動化,並包成桌面 App(支援 Mac / Windows )
另外提供 Gemini CLI的 GitHub傳送門: Gemini CLI
You are running Gemini CLI in your home directory...,風險高。這三個固定步驟太麻煩ㄌ,我想要可以一鍵完成這些動作。
如果懶的看我的心路歷程,可以直接到git hub的頁面去看使用說明跟下載
https://github.com/lalame888/gemini-cli-launcher
接下來要分享的是「怎麼從需求 → 初版解決問題 → 改進」的故事與過程
最尾端有分享一點我使用Gemini CLI 的心得,以及與Cursor的比較
基本上所有的程式碼,包含圖示icon,都是跟 Gemini CLI 對話生成出來的
也算是測試一下性能,結論是: 有升級 Gemini Pro的話真的很好用!沒有的話很雞肋。
大家可以趁2025/12/9 之前,拿大學的信箱去申請看看一年的pro試用
好了前言結束,要來分享整個歷程故事了,Go Go !
在直接點開終端機之後,總共有三個固定步驟要處理
nvm use 22 來切到比較新的版本cd 到我專案的資料夾下gemini
於是我最初的想法是:
寫一個script腳本檔案,然後放在mac下方的dock列
這樣我就可以當作某種app點擊執行,叫出終端機的同時也完成以上步驟
同樣請gemini處理,腳本擋很快就寫好了
他甚至也預想好在腳本檔案裡面,沒辦法直接使用nvm指令問題,所以有做引入的動作
#!/bin/bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
cd /*指定的資料夾路徑*/
nvm use 22 && gemini
可是在儲存檔案之後,他會長得像是這樣

雖然能把這個 script 放桌面或任何地方,也能放到底下的dock列
但是看起來是個文件,實在不太直覺

有點可惜的是 Gemini CLI他不能直接生成圖片放在我的電腦裡,但他可以生成svg檔案
所以問題不大,只要能轉換就好!於是再請gemini 用 Python 把 SVG 轉成 PNG:
SVG_FILE="${DESKTOP_PATH}/gemini_icon.svg"
PNG_FILE="${DESKTOP_PATH}/gemini_icon.png"
python3 -c "import cairosvg; cairosvg.svg2png(url='${SVG_FILE}', write_to='${PNG_FILE}')"
執行之後,登登!得到了這樣的可愛的PNG檔案
但發現 script 檔無法直接換 icon!
有試過各種換icon的方式,就唯獨腳本檔不能更換!
於是又問問gemini該怎麼辦?
得到的回覆是:可以用 AppleScript 包成一個真正的應用程式,這樣就能換 icon 並放到 Dock!
然後 Gemini 一陣咚咚咚,用 osacompile 指令寫了一個 AppleScript,裡面使用 do shell script
也就是點了這個應用後,執行的動作就是
用這樣的方式,成功包裝成了一個 Gemini_CLI.app ,就可以來換icon並放到執行列裡面了!好耶!
這邊介紹更換 icon 的兩種方式:
方法一 :直接用png圖片,透過Finder資訊複製貼上 (推薦)
(1) 複製png的圖像
(2) 對著包好的應用程式,右鍵 > 取得資訊 > 點擊左上角的icon讓他發出藍色光暈
(3) 鍵盤command + V 貼上
icon加進去了,檔案大小很合理的也跟著變大了一點
方法二:底層指令法(進階):
(1) 製作icon檔 (.icns)
PNG_FILE="${DESKTOP_PATH}/gemini_icon.png"
ICONSET_DIR="${DESKTOP_PATH}/gemini.iconset"
ICNS_FILE="${DESKTOP_PATH}/gemini.icns"
# 使用 sips 產生所有需要的尺寸
sips -z 16 16 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_16x16.png" > /dev/null 2>&1
sips -z 32 32 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_16x16@2x.png" > /dev/null 2>&1
sips -z 32 32 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_32x32.png" > /dev/null 2>&1
sips -z 64 64 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_32x32@2x.png" > /dev/null 2>&1
sips -z 128 128 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_128x128.png" > /dev/null 2>&1
sips -z 256 256 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_128x128@2x.png" > /dev/null 2>&1
sips -z 256 256 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_256x256.png" > /dev/null 2>&1
sips -z 512 512 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_256x256@2x.png" > /dev/null 2>&1
sips -z 512 512 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_512x512.png" > /dev/null 2>&1
sips -z 1024 1024 "${PNG_FILE}" --out "${ICONSET_DIR}/icon_512x512@2x.png" > /dev/null 2>&1
# 將 iconset 目錄轉換為 .icns 檔案
iconutil -c icns "${ICONSET_DIR}"
(2) 然後使用指令設置上去
# icon檔案 = gemini.icns
# icon替換目標檔案 = Gemini_CLI.app
cp gemini.icns "Gemini_CLI.app/..namedfork/rsrc" && SetFile -a C "Gemini_CLI.app"
使用第一個方式的時候,其實Mac OS的Finder就幫是我們執行這些指令
所以兩個結果都是一樣的,實際都是生成icns, 然後貼進去設置
只是透過GUI介面的操作,gemini cli沒辦法幫我們執行而已
然後成品就像是這樣!

放到Mac的Dock列,就像一個應用程式一樣,超級方便

這樣就完成了本地打包成桌面APP、並加上可愛的icon!
不過這個做法,指令是寫死的,且 Start_Gemini.command 的位置也不能隨意更動
不是一個真正的應用程式,只是弄了一個殼來「假裝是APP」而已
完成了AppleScript之後就開始想著:能不能做成更通用的版本?
使用Python來製作介面如何?順便也做Windows的版本如何?
於是概念構想大概是這樣:
把以上需求跟Gemini CLI說後,於是有了這個專案跟這個陽春的介面
做了可以運行在MacOS與Windows的版本
也有留一個build.sh 與 build.bat 檔案,方便去把程式碼載下來後在本地打包
且分成可以打包成app/exe,與打包成安裝檔/dmg 的選項
./build.sh # 生成 .app(預設)
./build.sh dmg # 生成 .dmg 安裝檔
.\build.bat # 生成 .exe
.\build.bat installer # 生成安裝檔
安裝檔也是請教Gemini CLI
讓他幫我手把手的教我如何安裝使用 Inno Setup &hdiutil create 指令生成安裝檔
目前有把安裝檔放到 GitHub Releases,就可以讓人下載安裝,而不用把原始碼整個載下來再建置。
→ https://github.com/lalame888/gemini-cli-launcher/releases
打包後遇到最大問題是憑證/簽章:
對於像我這種來路不明,隨便一個開發者打包的執行檔、安裝檔
無論是MacOS 還是 Windows都會把我攔下來
Windows:會被 SmartScreen / Defender 攔下,但通常會有「仍要執行」等選項。
macOS:跳出來的視窗「只有丟到垃圾桶」的按鈕
這時候的做法有兩種:
打開第一次之後,對著應用點右鍵 > 開啟
這樣的話就會改成跳這個視窗(第一次允許後就不會再跳)
系統偏好 → 隱私權與安全性
這時候裡面應該會有一個欄位,顯示「Gemini CLI Launcher」遭到阻擋無法使用,因為它不是來自已識別的開發者。
然後這邊選擇「強制打開」,選擇後一樣會跳方法一的視窗出來,點選打開後就可以開啟
真正根治的做法:
但是目前只打算簡單做小程式自用而已,需求背景也很窄,所以暫時不走簽章/公證這條路。
帳號要有 Pro 版本才好用:
沒有 Pro 時 Gemini 有時會中斷或跑很久(3~5 min),結果也不一定好。
目前至 2025/12/9,可以用大學信箱去申請 一年份的免費Pro試用,已畢業也「可能」可以辦
活動頁面: https://gemini.google/tw/students/?hl=zh-TW
開啟之後並登入「個人的google帳號」,信箱填寫大學的學校信箱
我申辦時不用驗證信箱就過了,我已經畢業五年了 XD
複製輸出的小技巧:
/copy,會把最後一次回覆完整複製。支援圖片解析搭配檔案整理:
Gemini CLI 可以讀取來自 URL 或本地端檔案路徑的圖片,分析並描述圖片中整體的畫面內容、資訊、文字、物體場景等等
本地讀取大概接受最多10張上下的數量,目前這個數量有點雞肋,不過確實可以實現以下應用:
✅ 從指定資料夾中,找出所有包含蛋糕的照片,並將它們複製到新資料夾
✅ 分析每張照片內容並重新命名,或者分類到不同子資料夾 (人像、風景、食物etc)
✅ 根據設計圖產出專案程式碼
實測不能進行的動作例如:
❌ 分析圖片人物長相,針對長相去做評論,或者找出其他包含此長相的照片
(基於安全隱私問題所以被拒絕了)
❌ 根據指定圖片重繪圖片
❌ 生成png, jpg等圖片檔案
如果真的要產圖,可能還是得到網頁版本的Gemini來做使用
Gemini CLI 只能產SVG的圖,然後用python把圖片變成PNG
其餘針對圖像的分析功能,像是OCR、用圖片產code等等功能,Gemini CLI 處理都是沒問題的
步驟中包含互動回應的會卡住:
在自動執行的過程中,遇到需要輸入密碼、需要輸入Y/N 來同意與繼續等步驟
Gemini CLI就會卡住沒辦法進行
所以也沒辦法請他建置React專案之類的,因為建置過程有互動問答的部分
這邊另外介紹一些其他的替代工具
做完這個小應用之後,後來從同事分享得知一些方式或替代方案也可以解決我的困擾
這邊也跟大家分享分享

Volta 是一個 JavaScript 工具管理器
可以替代nvm 管理和切換不同的 Node.js 版本、套件管理器(如 npm、yarn)。
它的主要優點是專案綁定功能:可以在專案的 package.json 中聲明所需的 Node 版本
"volta": {
"node": "18.18.0"
}
當進入該專案目錄時,Volta 會自動切換到正確的版本,
確保團隊使用一致的開發環境,避免了版本衝突問題。
而且它是由 Rust 語言編寫的,所以執行起來速度非常快
總之有了這個之後,我全域的 NodeJS 就可以預設為能夠使用gemini CLI 的版本
每次進入專案也不用搭配.nvmrc 檔案使用use nvm來切換版本
Volta的問題就是他還不夠成熟,安裝了Node之後他不能uninstall、社群與討論度不夠高
不過只要安裝在電腦裡,並在package.json 加個版本號資訊,
基本上是無痛使用,目前決定就使用這個來試試
我的Cursor是有付費課金的
雖然Cursor也有問答的功能,不過日常問題或對話使用Cursor還是沒那麼方便直覺
畢竟要打開IDE,然後再來對話,有時候做一些簡單問答還會被誤會是專案功能需求
後來得知Cursor也有出CLI版本,就載來使用看看
Cursor CLI就不像Gemini CLI要求NodeJS版本,目前測試上18版也可以安裝使用
不過使用後發現還是有一些差異,讓我覺得同樣有付費的情況下,Cursor CLI 沒那麼方便好用
操作效率:一鍵複製回應 /copy
/copy 指令,可以完整複製最後一則回應回應內容的排版與結構
多步驟查詢的權限管理
在處理需要多次搜尋或查詢的複雜指令時(例如:「查詢 Bun 2025 年度的更新紀錄與改動」),兩者的處理方式有顯著不同:
Cursor CLI:先去抓有哪些版本是2025的版號,這時候已經問過我一次能不能搜尋了
接著,每一個版本都單獨問我一次能不能執行curl -s 抓 releases blog 內容
導致為了查詢這件事情,要同意很多次
(但我又不放心直接設定為一律同意curl 指令)
Gemini CLI:僅允許一次的權限下,他會在一個回應內做多個search
而且他執行的動作是「GoogleSearch」,我可以放心地讓這個指令通行,甚至設為預設
多媒體與圖像處理能力
整體上來說,Cursor CLI 還是比較專注在文字檔案處理、程式碼處理
比較不支援一些更日常、搜尋、創作生成的用途
以上是我的使用分享~ 做這個 Launcher 的初衷很單純:每次都要打同樣指令實在好麻煩,想要點擊應用就直接完成。
做完之後,自己覺得這一連串的動作跟改進蠻有趣的就寫出來跟大家分享了
如果大家也有這類需要重複幾個固定指令的需求,可以試試找gemini做類似的應用
或是如果有剛好一樣的問題,然後這個小工具有幫助的話,也歡迎使用這個小工具
https://github.com/lalame888/gemini-cli-launcher
另外說到我幹嘛用Gemini CLI來進行日常問答呢?幹嘛還比較 Cursor CLI 日常問答的能力呢?
因為我現在的Pro版本是基於公司買的WorkSpace附贈的 XD
有一些比較日常的問題,想要用Gemini的Pro版來處理或回答
但是直接在網頁上的對話紀錄,企業版的帳號是沒辦法自己刪除和保管的
換言之,我就怕被罵齁
而 Gemini CLI的紀錄,目前看起來是不會被保留(除非自己使用 /chat 系列指令)
即使儲存了也可以自己保管跟刪除
當然公司那邊會不會也有一份留存紀錄就不得而知
不過即使要稽查,在沒有做什麼違法事項的前提下,應該也不會從CLI的對話紀錄稽查起吧…
我只是拿來學學日文、翻譯東西而已RRR
就是這樣 XD
到目前為止,已經建立好整個應用,也確定了需求與流程之後
我試著把需求重新跟Cursor表達一次 (不是CLI版本,是Cursor IDE)
一樣能夠得到以python撰寫的專案,直接建置起來有一點小bug不過反應之後就很快修正
比較明顯的差異有兩個:
Cursor建置起來的python專案結構嚴謹很多
圖中的資料夾與檔案就是用Cursor 建立的,很仔細地分好架構來進行
Gemini CLI除了是一邊討論需求一邊進行的因素之外,還是比較傾向產生單個檔案來完成功能,只追求功能完成,比較沒有專案架構
Cursor 產SVG畫圖很失敗
我用一樣的描述跟Cursor說:「幫我設計一個icon, 外觀看起來像是終端機圖示,但中間有一個英文字G,填色是代表gemini品牌色的漸層色」
下圖是模型選用Auto時產出來的結果:
請他修正多次,結果仍然是這樣
後來我把模型切成GPT-5,這是同樣跟他反覆兩三次之後修改的結果:
後來又切成claude-4.5-sonnent 模型
有比較好了,G的文字是成功的,只是不清楚為什麼他要選擇黃綠色而已
心得上是微妙在產SVG方面,是google的能力比較好一點
不過我也沒有大量測試驗證,只是目前為止的心得而已
以上!感謝大家的閱讀!