生命中的不完美... 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 作者: David - 7月 14, 2009 你有三分零二秒嗎? 建議您靜下心來看這段影片...人生就是這樣, 拱手一生, 記憶最深的卻是, 這一些點點滴滴的不完美, 凝聚成我們心中的完美。 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言 坎尼寫道… 很感人的影片,害我哭了
GitHub Copilot SDK:當你的程式碼有了自己的靈魂 作者: DD - 2月 06, 2026 上個月協助客戶做技術評估時,他們的 CTO 會後跟我聊了個問題。 「你知道我們團隊最近在研究把 AI 整合進現有的系統與開發流程…」他闔上記事本(實體,有紙張的那種),帶著思索的表情說到「你知道的,其實就自動化一些日常任務,像是程式碼掃描、Code Review、各種文件生成、自動化測試、應用程式部署、以及運行狀況檢查…這些。我們一開始看了 OpenAI API、後來也研究過 GitHub Copilot CLI、但最近又出了 GitHub Copilot SDK,老實說,不太確定該選哪個?」 他頓了一下,「還有,開發人員是不是常用一個 GitHub Copilot Agent? 它和 GitHub Copilot CLI 是什麼關係? 我們的開發主管說他每天都在用 GitHub Copilot, 但我不確定這幾個東西到底是不是在做同一件事…」 我打開投影片準備跟他慢慢解釋,心裡想「呵呵,你不是第一個問的…最近有太多人對這些新工具"們"感到困惑。很正常,你沒搞混我才覺得奇怪…」 GitHub Copilot SDK 是啥? 最近我發現,只要聊到 Copilot,幾乎一定會卡在這個地方。 先講結論:GitHub Copilot SDK 是 GitHub 提供的一套 “開發套件” ,讓開發人員可以在自己的程式裡面整合 GitHub Copilot 的能力。 注意,是 整合 GitHub Copilot 的能力 ,而非在程式碼裡面整合 LLM(大語言模型) 的能力,兩者完全不同。 要在程式碼裡面整合 LLM(大語言模型) 的能力,三年前的 OpenAI API 就可以做到了。 GitHub Copilot SDK 是讓開發人員可以直接利用 GitHub Copilot 的 AI 能力來執行特定任務、調用工具,甚至讓 AI 自己進入一個工作循環,持續執行任務,並且持續改進,直到該任務真正完成。 你應該曾經在 VS Code 裡面用 GitHub Copilot Agent Mode 來產程式碼。那個嚴格來說叫做 Copilot Extension,是安裝在 VS Code、Visual Studio 裡面,自動幫你補全(或生成)程式碼的幫手,也就是現在大部分開發人員已經在用的那個 AI輔助開發工具。(也就是坊間所謂的 AI ... Read more »
開啟 teams 中的『會議轉錄(謄寫)』與Copilot會議記錄、摘要功能 作者: DD - 11月 30, 2024 在 Teams 中有一個非常好用的功能,可以透過 “謄寫” 把 Teams 的語音會議變成逐字稿,這部分當然是用到語音識別(語音轉文字)的AI技術。 開始謄寫與自動會議紀錄 當啟動一個會議之後,主席可以透過底下這個『開始謄寫』功能來開啟: 這個功能之所以重要,是因為他也是 Teams Copilot 要能夠順利使用的基礎。我們可以透過 Teams Copilot 進行會議的摘要、總結、整理、或是進行會議內容的詢問,而這後面用的則是LLM(大語言模型)的能力: 這功能對於需要參加很多會議的主管、或是在開會遲到的同仁,都是很方便的功能,可以透過詢問Copilot快速地進入會議狀況。 開啟 “謄寫” 功能 然而,這一切的基礎 “謄寫” 功能卻不是每一個機構都有預設開啟,如果你發現你的 “謄寫” 功能是灰色的(無法點選),就意味著你的組織沒有開啟(或沒有為你開啟)這個功能。 那組織的管理員該如何開啟此功能呢? 很簡單,只需要到 Teams 系統管理中心,點選 『設定和原則』 --> 『會議』: 進入 『會議』 的設定之後,找到『會議錄製』–>『轉錄』 將其『開啟』即可: 如此一來,組織內的同仁就可以順利的使用 Tteams 會議中的語音轉文字(謄寫)功能,也可以使用 Copilot 來查詢會議的內容囉。 Enjoy it~ Read more »
使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM) 作者: DD - 7月 02, 2024 最近上課常被問到,如何在地端環境搭建出大語言模型(LLM),並且呼叫其API。 一開始我不太理解為何會有這樣的需求(因為在地端自行搭建運行LLM的成本不一定比較低,即便可能比較安全),但被問多了,也就開始遍尋相關的解決方案,看看有沒有什麼最簡單的方式,可以讓開發人員在地端測試大語言模型? 後來我選擇 LM Studio ,它就是一款設計來運行大型語言模型(LLM)的平台,有個算是挺優雅的整合環境,讓一般 end-user 或開發人員,都可以輕易地在 local 端進行模型的部署和測試。 LM Studio 本身支援多種模型架構和框架,當然,最重要的是,它是免費的。 下載安裝 都很容易,我就不多說。 安裝好之後,你可以看到首頁中已經呈現了許多 Hugging Face上的模型: 這顯然是因為Hugging Face是大部分免費開源模型的集散地。 你可以搜尋自己喜歡的模型,透過LM Studio下載到local之後,就可以直接載入(下圖一): 隨手設定一下 system prompt(上圖二),然後,就可以直接對談了。(上圖三) LM Studio會使用你的GPU進行運算(如果有的話),你會發現,原來有好的設備(GPU),運行的速度可以如此之快。 Local Server 對於開發人員來說,它還有個超級更友善的功能。 LM Studio本身還提供一個 local server,可以幫你把模型包裹起來讓你直接透過API呼叫該模型的功能,例如: 上圖是我們開啟 LM Studio中 Local Server功能後的結果,你可以透過 localhost 的 1234 port 來呼叫這個被 LM Studio 運行起來的大語言模型。(有沒有發現,我們用的也是 chat/completions API) 透過Postman簡單提供一下 JSON Body: { "model": "LM Studio Community/Meta-Llama-3-8B-Instruct-GGUF", "messages": [ { "role": "system", "content": "你是AI助理,請一律用繁體中... Read more »
雖然可恥但很有用的技術 - ADO Pipeline 客製報表呈現頁面 作者: DD - 1月 29, 2026 上禮拜在改 Azure DevOps 的 Pipeline,因為客戶遇到一個很實際的問題。 用戶抱怨,每次 Pipeline 跑完,他們團隊的 PM 和相關人等都跑來問:「這次測試過了幾個?Coverage 多少?部署有沒有成功?Sonar 掃描的報表結果如何?」 苦主耐心地一一回答:「這些資訊都在 Pipeline 的 tasks 裡面啊,你們自己點進去看就好。」 但是,這些大爺們從來不想自己去一個一個 tasks 去點,他們希望有個「一目了然」的整合頁面,能直接看到他們想要的重點數字就好。 『就算我說服了他們,他們也真的自己去看,但沒多久又在 LINE 上問我:那個 Log 到底是什麼意思?這個掃描報告要在哪裡找?』 就這樣『來來回回,他們累了,我也累了。』 苦主無奈地說。 需求很簡單:給我一個摘要頁面就好 大爺們最後跟苦主說:「你能不能幫我們在 pipeline 裡面弄一個 Summary 頁面?我們只要打開就能看到重點數字,不用再去翻那些 log?」 恩恩,我被問到的就是這個… Pipeline 跑完之後,能不能有個漂亮的摘要頁面,一進來就看到重點: 測試通過幾個、失敗幾個、Coverage 趨勢 部署到哪個環境、- 有沒有什麼重要的警告 源碼掃描報告的摘要是如何? 自動化測試結果? 能不能上正式機? … 就這樣。 說的很簡單,要蒐集到需要的資訊似乎也還算容易。 但問題是,要怎麼把這些資訊「塞」進 Azure DevOps 的 Pipeline Summary 頁面? 然後我發現了個神奇的東西 在翻 Azure DevOps 的文件時,我發現一個很有趣的機制。 你知道那些客製化的 Extensions 是怎麼樣讓你在 Pipeline 的 Summary 頁面看到額外的資訊(例如掃描報告、測試報告)的嗎? 類似底下這樣: 答案可能會讓你傻眼,不是呼叫什麼 REST API、不用設定什麼 Token、也不用安裝套件。 ADO 用的方法超級簡單: 監聽你在 Build Agent 裡面的 console 輸出 。 對,就是 stdout。 你只要在 Pipeline 運行的 script 裡面 echo 一行特定格式的字串: echo "##vso[task.uploadsummary]... Read more »
敏捷導入的真相 作者: DD - 1月 16, 2026 這天 Azure DevOps 課程下課後,又有位學員留下來找我。 事情是這樣的… 他們公司政策規定要導入敏捷和ADO,但上完我的課程後,覺得有點困惑… (我內心OS: 呃? 怎麼會呢? 🤔 你不是應該上完我的課程後豁然開朗的嗎?) 他說,因為公司很多專案還是瀑布式在跑。需求從客戶那邊來的時候,動不動就是三個月、五個月這麼大包的東西。PM 離開技術圈一段時間了,也不知道該怎麼 end-to-end 切出一個迭代(兩周)內可以完成、又有價值的 PBI。 (我一邊聽,一邊想,覺得這是個難題沒錯,但其實最大的挑戰是心理障礙和習慣,因此…) 我跟他說:「其實把需求顆粒度切小,對每個人都有好處。對 PM、對客戶、對開發人員,全是利多。」 他笑的很無奈。 「這道理我可以理解,但我們的開發人員同時身兼好幾個專案,很難專注在某一個案子上。這時候,大家心態上就不想把顆粒度切小,因為怕時時刻刻被盯著要看進度。」 他停頓了一下,接著說:「所以開發人員寧願維持以前那樣一個功能做一個月、兩個月的顆粒度。這樣開發人員可以先去忙別的事情,最後幾天再來趕工。」 聽完,換我沉默想了幾秒。 因為這根本不是技術問題,也不是工具問題。這是整個組織的心態問題。 更深層的,是大家對「敏捷」的誤解。 很多人以為敏捷就是迭代、就是 Scrum、就是看板或站立會議。 但其實,真正的敏捷有一個很明顯的照妖鏡: 需求的顆粒度 。 沒有小的需求顆粒度,就沒有頻繁交付;沒有頻繁交付,就沒有敏捷。 我幾乎可以說,如果團隊無法把需求顆粒度變小,那敏捷導入十之八九是假的。 粗顆粒度的惡性循環 你在 Board(看板) 上看過那種預估要做三、五週的需求卡片嗎? 「完成訂單管理功能」(預估五週) 「優化報表系統」(預估三週) 「整合第三方金流」(預估兩週) 每次看到這種,我就知道這個團隊有問題。 為什麼?因為一個需求如果要做兩週,在這兩週裡,這張卡片的狀態是什麼?「In Progress」? 但 In Progress 告訴了我們什麼?什麼都沒有。你不知道他做到哪裡了,可能才剛開始,也可能快做完了,也可能卡住了但不好意思說。 更慘的是,開發者在自己的 branch 上悶著頭寫了兩、三週的程式碼。等到要 merge 的時候,衝突、錯誤、邏輯不一致,問題才一個一個冒出來。然後就是... Read more »
留言