[C#] C# 串 GitHub Copilot CLI 實測,不用 Visual Studio 也能讓 AI 幫忙寫程式

  • 386
  • 0

最近朋友問我可不可以不透過 Visual Studio or Visual Code 呼叫 Github Copilot 

感覺起來他就是要幹大事,其實問一下 AI 就知道可以不過我還是測試一下

畢竟可以讓程式自己寫程式,一直都是工程師的浪漫?

1. 先安裝 且運行起來 GitHub Copilot CLI 

這一步也很簡單,基本上就是打開 powershell  然後輸入下面指令



    winget install GitHub.Copilot
    copilot --version
    copilot
    

基本上這邊沒啥雷,他會給你一個驗證碼,然後你在 "瀏覽器" 登入你的 github 然後到這網址

https://github.com/login/device

輸入 powershell 那邊給你的 device code.


 


2. 接來就是 C# 部分,先安裝 SDK :  https://www.nuget.org/packages/GitHub.Copilot.SDK

之後就是寫 code 的部分,這邊就簡單啦,完全可以問 AI ,但是因為版本一直改

一開始他給的程式碼,我跑起來都會直接失敗,這邊我附上執行成功的 程式碼


      
      
      
		static async Task Main(string[] args)
        {
            try
            {
                await using var client = new CopilotClient();

                // 如果你的版本需要明確啟動 CLI,可以保留這行
                await client.StartAsync();

                await using var session = await client.CreateSessionAsync(new SessionConfig
                {
                    //gpt-4.1 for free account
                    //Model = "gpt-4.1",
                    Model = "gpt-5-mini",
                    Streaming = true,

                    // 新版 SDK 需要提供 permission handler
                    OnPermissionRequest = PermissionHandler.ApproveAll
                });

                // 用來避免同一輪 stream 結束前,主程式就跑下一輪
                TaskCompletionSource? currentResponseTcs = null;

                session.On(ev =>
                {
                    switch (ev)
                    {
                        case AssistantMessageDeltaEvent deltaEvent:
                            // 逐字 / 逐段輸出 assistant 回應
                            Console.Write(deltaEvent.Data.DeltaContent);
                            break;

                        case SessionIdleEvent:
                            // 這一輪完成,換行並通知主流程可以繼續讀下一次輸入
                            Console.WriteLine();
                            currentResponseTcs?.TrySetResult(true);
                            break;
                    }
                });

                Console.WriteLine("Copilot Console 已啟動");
                Console.WriteLine("輸入 exit 可離開");
                Console.WriteLine();

                while (true)
                {
                    Console.Write("You : ");
                    var input = Console.ReadLine();

                    if (string.IsNullOrWhiteSpace(input))
                    {
                        continue;
                    }

                    if (input.Equals("exit", StringComparison.OrdinalIgnoreCase))
                    {
                        break;
                    }

                    Console.Write("Copilot: ");

                    // 每一輪都建立新的等待物件
                    currentResponseTcs = new TaskCompletionSource();

                    // 送出訊息
                    await session.SendAsync(new MessageOptions
                    {
                        Prompt = input
                    });

                    // 等 stream 完整結束
                    await currentResponseTcs.Task;

                    Console.WriteLine();
                }

                await client.StopAsync();
            }
            catch (Exception ex)
            {
                Console.WriteLine("發生錯誤:");
                Console.WriteLine(ex);
            }
        }

      
      
    
  

這邊我做個比較,因為我用到一半發現免費帳戶真的噴很兇,就直接付款看一下比較圖

我的 prompt : 

只輸出可直接貼上的 C# 方法實作程式碼,不要任何解釋、前言、後記、標題、markdown code fence、類別、namespace、using 或多餘文字,也不要修改方法簽名;回覆內容只能是這一個完整方法:private void LockAndWrite(string path, string conent) { }


Modal : gpt-4.1


 

 

Modal : gpt-5-mini


 

來一段簡單的小結

gpt-4.1 跟 gpt-5-mini 能力差很多,如果可以用 gpt-5-mini  就不要用 gpt-4.1 

雖然看起來,我只是把問程式建議的動作或是自動寫程式的動作從 "瀏覽器" , "IDE" 中搬出來

當然就變得讓自動寫程式有可能性,畢竟身為工程師的浪漫就是希望一切都按照計畫運行

當然這一步只是開始,之後有機會夢想就是在透過另一個 AI 來稽核整流程,讓人類盡量少介入的情況下

完成專案,雖然夢想很美,但是真的要拿來幹大事還有很多問題,畢竟跟 AI 的 "認知對齊" 一直都是一個痛點

不過現在迭代速度很快,誰知道未來呢,或許下下周就有哪位大神配合 AI 解決了這問題 :)

--
本文首發於 C# 串 GitHub Copilot CLI 實測,不用 Visual Studio 也能讓 AI 幫忙寫程式 ~ 當麻許不會寫程式

--

---

The bug existed in all possible states.
Until I ran the code.