最近朋友問我可不可以不透過 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.