[TOOLS] 12 分鐘閱讀OraCore 編輯部

Visual Studio 把 Copilot 變工作流

我拆了 Visual Studio 的 Copilot 工作流,把提示、修改、測試、提交整理成可直接複製的開發模板。

分享 LinkedIn
Visual Studio 把 Copilot 變工作流

Visual Studio 把 Copilot 變成可操作的 IDE 工作流,能一路做修改、測試、修錯到提交。

我用 IDE Copilot 用到後來,最常冒出來的感想是:它很會講,但不太會做事。補一行 code 很快,解釋一個 stack trace 也還行,可是一旦我丟給它的是跨三個檔案、還要補測試、最後還得寫 commit message 的工作,它就開始散掉。我還是得自己當協調中心:開對檔案、記住邊界條件、跑測試、修下一個錯、再補提交說明。煩,真的煩。

所以我看到 Visual Studio 這套 AI 說法時,注意力不是落在「又多了一個聊天窗」,而是它想把那些瑣碎的協調工作塞回 IDE 裡。這件事我覺得比較像樣:不是叫 AI 幫你猜下一個字,而是讓它接手一段完整的開發流程。對我這種每天跟舊 codebase、測試、build script 打交道的人來說,這才有價值。

別再把 Copilot 當成會聊天的自動補全

訂閱 AI 趨勢週報

每週精選模型發布、工具應用與深度分析,直送信箱。不定期,不騷擾。

不會寄垃圾信,隨時可取消。

“Experience AI-powered coding assistance that reasons through problems, coordinates next steps, applies changes, and iterates on errors.”

這句話翻成白話就是:Visual Studio 想賣的不是建議,而是流程。很多團隊用 AI 工具的方式,還停留在「更聰明的 IntelliSense」。結果呢?寫得快一點,卡住的時候還是卡住,整體速度沒什麼變。

Visual Studio 把 Copilot 變工作流

我看這套最有意思的地方,是它把任務切成有形狀的東西:先理解問題,再安排下一步,接著真的去改檔案,最後碰到錯誤還能繼續迭代。這跟只會回一句「你可以試試看重構」差很多。前者是在幫你做活,後者只是陪你聊天。

我之前做過一個功能拆分,API、測試、UI 三邊都要動。只要 AI 只能吐片段,我還是得自己把整包工作縫起來。那種時間不是花在寫 code,而是花在重新找回上下文。Visual Studio 這裡真正想解的是這個問題:讓助手留在流程裡,不要每一步都把我踢回手動模式。

實操上,我會這樣用:只有當任務有明確起點、過程、終點時,才丟給 agent mode。像 refactor、修 bug、補測試、更新相依套件,這些都適合。那種「幫我把這段變好」的模糊指令,通常只會換來一堆漂亮廢話。你要 AI 像 junior pair programmer,就得先像個正常 tech lead,把範圍講清楚。

  • 先用一句話講清楚你要的結果。
  • 直接點出相關檔案或功能區。
  • 要求驗證,不要只要輸出 code。

真正有感的是多步驟工作留在編輯器裡

Visual Studio 的說法很直白:agent mode 可以「plan, build, test, and fix—all from a single prompt」。這句我很買單,因為大多數 AI 工具卡住的地方,就是它只能寫,不能負責整個序列。你最後還是得在 chat、terminal、editor、browser 之間跳來跳去,像在空中接刀。

我比較想要的是少切上下文。若 assistant 能在 IDE 裡直接跑 lint、測試、命令,整個控制台就不只是寫 code 的地方,而是工作中樞。這不是小改版,這是工作方式真的往前挪了一格。當然,行銷文案常常講得很滿,但方向是對的。

我最常遇到的場景,是那種看起來不大、但很磨人的修正:改一個地方,兩個測試爆掉;修完 mock,又發現 assertion 過期;再往下挖,才知道是某個 helper 的預設值早就不對。這種時候我最浪費時間的不是寫 code,而是重新建立腦內地圖。如果 assistant 能把這條鏈維持住,我就能把腦力留給判斷,而不是找路。

實操上,我會把驗證直接寫進 prompt。不要先叫它改,改完才想起要測。你要它更新 code,就順便叫它跑相關測試或檢查。能在 IDE 裡下的命令就直接下,不要把驗證當成事後補作業。這樣 AI 才不是「幫你寫完就跑」,而是「幫你把事情收乾淨」。

  • 一個 prompt 同時包含修改與驗證。
  • 優先跑局部測試,不要一上來就全套 panic。
  • 允許它修錯,但最後 diff 一定要自己看。

Chat 有用,但前提是它真的懂你正在看的 code

Visual Studio 的頁面也提到 Copilot Chat 提供「real-time help for your coding queries」和「instant context aware suggestions」。這句話我會特別看重,因為泛用 chat 很便宜,也很吵。真正值錢的是 context。它知道你現在在哪個檔案、哪個 solution、哪個 exception,答案才不會飄到外太空。

Visual Studio 把 Copilot 變工作流

我用 chat 最順的時候,不是拿來討論抽象架構,而是處理工作中最煩的中段:這個 null 是哪來的?這個 test 到底在驗什麼?是哪一條路徑把 thread 卡死了?這些問題才是 code-aware assistant 該賺錢的地方。

我自己的做法很簡單:問題只問窄的,並且綁在眼前的 code。把 exception 貼上去、講檔名、講你試過什麼。你如果問「為什麼我的 app 很慢」,通常只會得到一堆模糊建議;你如果問「為什麼這個 query 在這次改動後 CPU 會暴衝」,至少有機會把模型逼進有用的範圍。

這裡還有個常被忽略的好處。好的 chat session 可以幫你擺脫最爛的 debug 狀態,也就是你盯著同一個檔案反覆看,結果越看越不確定自己是不是腦袋壞掉。assistant 不必完美,只要能把你往對的方向推一點點,就值回票價。

多檔案編輯是信任測試,不是炫技

Visual Studio 把 Copilot Edits 放在很前面,強調的是「multi-file editing with code review, in-file preview and rollback experience」。這個功能我會第一個拿放大鏡看。單檔建議很容易信,因為爆炸半徑小。多檔案編輯就不一樣了,它可以幫你省一小時,也可以悄悄埋一個未來事故。

白話講,IDE 想把大範圍修改做成可審查的東西。preview 很重要,rollback 也很重要。我不想要一個黑盒子默默碰六個檔案,然後希望我之後自己發現問題。我想先看 diff、先比對、先回退不對的部分,而不是等到合併後才開始後悔。

我真的吃過 AI 生成修改的虧:某個檔案看起來沒問題,另一個檔案卻因為型別或約定不一致,埋了很細的 bug。那次我學到的不是「少用 AI」,而是「逼它把工作過程攤開」。所以 preview 和 rollback 不是裝飾功能,它們是把助手跟風險隔開的保險絲。

實操上,多檔案編輯只拿來做協調性修改:改型別名稱、調整共享介面、同步更新 test fixture 和使用端。每個檔案的 diff 都要看,別急著全收。如果它碰到你沒預期的地方,先停下來問原因。好的 edit session 應該像可檢查的流程,不該像魔術表演。

測試和除錯才是我真正想交給 AI 的地方

Visual Studio 說 Copilot 可以幫忙產生 unit tests,還能對 exceptions、deadlocks 這類除錯情境做「in-depth analysis and explanations」。這個我覺得很務實。AI 不用假裝懂我的產品策略,我比較在意的是它能不能幫我少寫重複測試骨架,還有少在明顯錯誤模式上浪費下午。

為什麼測試支援比 flashy code generation 更重要?因為測試是 code 會不會真的照你想的跑的證據。AI 如果能先幫我把 bug 的行為寫成 test,我就有一個可驗證的起點。它如果能把 deadlock 的模式翻成人話,我也能少看很多 thread dump,少懷疑人生一點。

我會這樣用:叫它根據你要的行為產生測試,不是根據你現有實作去複製一份。這樣 test 才不會變成 code 的影子。除錯時,把 exception、stack trace、預期行為一起丟給它,讓它先幫你縮小搜尋範圍,再開始動手改。這比「AI 幫你寫整個 app」實在太多,也更接近開發者真正花時間的地方。

如果只能留一條原則,我會選這句:測試可以讓 AI 起草,但測試有沒有意義,還是你說了算。AI 很會生結構,判斷 assertion 有沒有在打到重點,還是得靠人。

版本控制很無聊,但 AI 可以幫你少掉一堆垃圾工

Visual Studio 也提到 AI-generated commit messages,還有 branch management 跟 merge conflicts 的協助。我知道,commit message 不是什麼熱血功能,但它就是那種會在你很累的時候,偷偷吃掉注意力的小事。如果 AI 能幫我把 diff 摘成一個像樣的 message,我不會嫌它。

白話講,IDE 想減少的是交付前後那些 glue work。不是替你寫 code,也不是取代 code review,而是把收尾時一堆瑣碎 admin 任務縮短。這種地方很適合 AI,因為風險不高,省下來的時間卻很真實。

我實際會這樣用:commit message 先讓 AI 起草,但不要直接照收。你要檢查它有沒有描述行為變化,而不是只列檔名。合併時,先叫它解釋 conflict,再決定怎麼解。它如果能告訴你哪一邊改了同一個 method、為什麼衝突,會比你自己在 6 點半盯著 diff 亂猜好多了。

  • Commit message 要寫行為變化,不只是檔案清單。
  • AI 草稿可以省時間,但最後要人工修正。
  • 先問 conflict 為什麼衝突,再開始硬解。

Visual Studio 還是 IDE,這件事很重要

頁面裡其實也有提醒:Visual Studio 不只有 Copilot。它還在講 Azure 整合、Live Share、profiling、SQL 工具、主題、extensions。這點我認同,因為 AI 故事要成立,前提是 IDE 本身就得夠能打。你把一個很聰明的助手塞進一個很笨的編輯器,它也只是更有效率地讓你煩而已。

我從這整套訊息讀到的重點很簡單:Microsoft 想把開發循環盡量收斂在同一個地方。寫 code、除錯、測試、協作、部署,再加上 AI 幫你扛掉更多重複推理。這比單純說「我們加了 chat」像樣太多。代價也很明確:你得真的把 IDE 周邊功能用起來,不要還是跳去五個別的 app。

如果你要評估 Visual Studio 的 AI 工作流,我會建議你直接測整條鏈。寫一段 code、叫它幫忙、跑測試、看 profiling、最後提交。價值不在任何單一按鈕,而在它能不能讓你一路往前,不必自己重搭工作方式。

當然,懷疑還是要有。我也一樣。但我比較喜歡這種懷疑:不是先喊 AI 很爛,而是看它能不能真的把 workflow 接起來。這次 Visual Studio 至少是朝著對的問題去打。

可抄的模板

## Visual Studio Copilot 工作流模板

我會在 Visual Studio 裡這樣用 Copilot 處理真正的開發任務。

### 1) 先講清楚任務
用一句話描述明確結果。

範例:
"更新付款重試流程,讓失敗請求重試兩次,補上測試,並保持公開 API 不變。"

### 2) 給 Copilot 範圍
直接告訴它要看哪裡。

範例:
- 檔案:`src/Payments/*`, `tests/Payments/*`
- 限制:不要破壞 API
- 驗證:跑付款模組的單元測試

### 3) 先要計畫,再動手
Prompt:
"先檢查目前實作,說明修改計畫,再做最小且安全的變更。"

### 4) 讓它改,但你要看 diff
只有在確認下面幾件事後才接受:
- 變更檔案符合範圍
- 沒有偷塞無關整理
- 測試仍然描述預期行為

### 5) 把驗證寫進任務
Prompt:
"修改完成後,請跑相關測試,並持續修正失敗直到通過。"

### 6) 用 chat 幫你除錯
Prompt:
"這裡是 exception 和 stack trace。請解釋最可能的原因,並指出這個 codebase 裡第一個該看的檔案或方法。"

### 7) 用 Copilot 收尾版本控制
Prompt:
"請起草一段 commit message,重點寫行為變更,不要只列出檔名。"

### 8) 最後檢查清單
- diff 跟 prompt 對得上嗎?
- 測試真的有覆蓋 bug 或功能嗎?
- 這個 commit message 我願不願意直接送出?

### 可直接複製的 prompt
"你現在在 Visual Studio 這個 solution 裡工作。請先檢查程式碼,提出最小且安全的修改方案,編輯必要檔案,跑相關測試,修正失敗,最後整理變更與測試結果。除非我特別說明,請保持公開 API 不變。"

這就是我會真的拿去用的版本。它故意寫得很樸素,因為只要工具有機會碰 code,樸素通常比花俏安全。

我從這篇拆出來的重點,不是「AI 很強」,而是「把 AI 放進可審查的流程裡,才真的有用」。這是我覺得 Visual Studio 最接近做對的地方,也是我不管用不用 Visual Studio 都會想抄走的習慣。

來源致謝:原始素材來自 Visual Studio 官方頁面,另外也可參考 GitHub Copilot release repoVisual Studio docs repoMicrosoft Learn 的 Visual Studio 文件。我這篇是把官方產品敘述重組成開發者可直接套用的工作流,後段模板屬於我整理後的可抄版本。