【茶包射手日記】使用 WSL 執行 Github Copliot CLI
| | | 0 | |
繼 Open AI Codex CLI、Colude Code 之後,Github 不干示弱,也推出自己的 CLI 版 AI 輔助程式開發客戶端 - Github Copilot CLI。VSCode 跟 Visual Studio 裡已經有 Copilot Agent 模式了,為什麼還要再做一個 CLI 版?程式寫多了,往往會愛鍵盤勝過愛滑鼠,CLI 萬歲... (懂的都懂)

Copilot CLI 支援 Linux、macOS、WSL,也支援 Windows PowerShell,但仍屬實驗性質。CLI 常需調用指令操作檔案、存取資源,不同 Shell 環境指令有別,不管 ChatGPT、Claude 還是 Gemini,對 Linux bash 的熟悉度永遠強過 PowerShell。所以,雖說 Copilot CLI 也支援 PowerShell,但內行的人都知道選 WSL 才能獲得商務艙的體驗。(開場畫面的下方也在消毒,說 PowerShell 版屬實驗性質,如還不順狀況可考慮改用 WSL)
Coplit CLI 預設使用 Claude Sonnet 模型(可改為 GPT-5),計費方式為發一次 Prompt 扣一點(延伸閱讀:Github Copilot 使用模型怎麼選?計費方式與適合場景 (202508版)),我 9 月額度還剩很多,趁著 10 月重置前拿來玩 Copilot CLI 剛好。
我的 WSL 經驗有限,這回是第一次高強度使用,結果就遇上問題了。先說結論:Linux 版本很重要!
從一開始用,我就花了數小時克服種種不順,氣到想罵髒話。
首先是登入身分保存問題:

使用 /login 完成 Github 帳號登入後,Copilot CLI 問我,因為沒設機密資料保險箱,是否同意用明碼儲存 Token。我知道這種情況很多人會秒選同意,完全不影響使用...

但,我可是會清查家中手機平板 MAC 跟 IP 地址的辣個男人,store the token in the plain text 猶如直達天頂的隱形城牆,我過不去...
研究後發現,Copilot CLI 沿用 Github CLI 的做法,若未使用 Keyring 等安全機制,oauth_token 會以明碼存在 /.config/gh/hosts.yml。如果若設定妥當,則可改用 gnome-keyring 之類的服務儲存身分授權資料。但問題 gnome-keyring 是桌面軟體,要調整到能在 WSL 使用有一堆眉角,反正我是失敗了,直接放棄 改走另一條路,先用 Windows 版 Github CLI gh auth login 完成登入,在 WLS 端可使用 export GITHUB_TOKEN=$("/mnt/c/Program Files/GitHub CLI/gh.exe" auth token) 存成環境變數,堅守 oauth_token 不落地。
而設定 GITHUB_TOKEN 環境變數後,Copilot CLI 會直接使用該身分登入:

但之後我又陸續遇到 Copilot CLI 執行 ls、sed 等 bash 指令時冒出奇怪錯誤,愈想愈不對,這堆問題不該只有我遇到吧?Copilot CLI 如果有這麼多問題,早被噴爆了吧?
我想起查 gnome-keyring 時有人提到升級 Ubuntu 22.04 正常的事,回頭檢查我的 WSL 版本,這才發現幾年前安裝時我選的 OS 居然是 Ubuntu 20.04,登楞!!
果斷重裝 Ubuntu 22.04 後,一路順行。/login 後自動彈出 GNOME Keyring 管理介面,這才是 WSL 應有的美妙操作體驗啊~~

學到教訓,要用 WSL 時記得選主流版本但別太新(看到有人回報在 24.04 上遇到問題),省得要縮在牆角悲唱金包銀。
【同場加映】
查問題過程又學到一招,在 WSL 共用 git-credential-manager.exe。
是的,你沒看錯,在 WSL 裡也可以跑 Windows 執行檔,就跟 Windows 桌面可以跑 Linux 的檔案總管一樣。這是所謂的 WSL Interop (Windows/Linux 互動機制),WSL 針對 Windows 可執行檔 (MZ/PE) 在 Linux 端註冊了 binfmt_misc 規則,偵測到 .exe 便透過 WSL 的 init/interop 橋接程序,把執行請求委派給 Windows 的 CreateProcess 等機制執行,啟動的 Windows 程式以目前的 Windows 使用者身分執行,並與 WSL 行程共享標準輸入輸出管線,因此可在 WSL 內進行管線、重導向與背景執行,行為近似原生 Linux 指令。參考
官方文件有Git 認證管理員設定說明, git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe" 即可搞定。之後 git clone/pull/push 私有庫時,便可共用 Windows 環境的 Git 認證設定。
Comments
Be the first to post a comment