終於到了個我覺得適合來寫一篇文章,聊聊我對 AI 的感想的時機了。

前兩年都還太早,很多東西進步的速度太快,文章會跟不上。舉例來說,假設我 2023 年底寫了篇文章,可能會說 AI 看起來厲害但工作上幫不了太多忙。若是 2024 年底寫,會說 AI 工作上可以幫忙了,但一半的工作還是要自己來。而 2025 年底的現在,又是另外一個樣子,天秤傾斜的方向愈發明顯,蹺蹺板已經快被 AI 坐到底了。

這篇零零散散來談我對 AI 的一些想法,不必然與 coding 有關。

與 AI 協作 coding 已是必然

如果有人問我工作上用 AI 寫 code 的比例,我都是這樣回答的:

一年前是 2:8,AI 是 2,現在反過來了。

AI 進化的速度超乎我的想像,我還記得一年半前你只能拿 ChatGPT 寫出個簡單的小東西,但僅過了一年,AI 就能理解你的 context 與 codebase,幫你直接改 code 加新 feature,而且準確度越來越高。

如果寫 code 這件事 AI 確實做得又快又好,都交給它其實也沒什麼不行的。這也是為什麼現在許多功能我都直接 AI 起手了,先讓 AI 去做做看,不行我再接手。

在這個前提之下,我其實很好奇現在還沒辦法用或是選擇不用 AI coding 的人是為什麼。於是我跑去社群網站中提問,得到的回答包括:

  1. 特定領域(如 Apple Metal)若網路上資源很少,AI 效果差而且常有幻覺
  2. 資安領域,AI 拒絕開發惡意程式
  3. 跨好幾個 repo 時表現不佳

看來 AI 確實還是有些弱點,但撇開這些不談的話,看起來它在一般大眾的領域上的表現,是人人都認可的。

在我自己的使用經驗看來,就算不特別調整什麼(如 rules、AGENTS.md 或是特別的 prompt),AI 的表現就已經足夠好了,好到我可以把大部分工作都交給它。

順帶一提,我日常開發是用 Cursor 搭配 Claude Opus 4.5 模型,不開 Max mode,偶爾小東西會改成用 Composer-1 模型,表現得又快又好。

我自認在 AI coding 上沒有花很多心力,不會特別去寫 spec 或是認真寫規則,但目前的成果我覺得是可以接受的。當我某天想嘗試 100% AI coding 的時候,我會再試試的。

話說本文以及後續文章,沒意外的話會一直使用 AI coding 這個詞,來表示與 AI 共同協作開發程式,不會用到 vibe coding。

理由是,當我第一眼看到 vibe coding 時,我就知道這又是個會各說各話的詞了。

有些人眼中的 vibe coding 就是跟 AI 協作寫 code,有些人的則局限於「外行人用 AI coding」或者「用 AI coding 完就不維護了」之類的。那既然每個人定義都不同,這個詞就沒什麼用處了,除了讓討論的雙方混淆以外,並沒有帶來任何額外的價值,所以我不會用它。

AI 與鴨子

在程式的領域中,有個名詞叫做「Duck typing」,原句是:

If it walks like a duck and quacks like a duck, then it must be a duck.
如果它走路像鴨子、叫聲像鴨子,那它就是鴨子。

在靜態型別的程式語言中,型別要先寫好,像是這邊傳入的 d 一定要是鴨子:

void feed(Duck d) {
    d.quack();
}

但是在動態型別的程式語言中,不管傳進來的是不是隻鴨子,反正它只要可以叫就好:

def feed(x):
    x.quack()

在這個 AI coding 盛行的時代,我認為許多人會有一個傾向,跟這個鴨子理論類似:

如果它跑起來正常,用起來正常,那就是正常

我們都是軟體工程師,所以理論上就算是讓 AI 幫我們寫 code,我們還是可以透過 code review 的方式來看它寫的對不對。但問題是,這個想法似乎有點太理想。

我看過許多人,在 AI 寫完之後,只要跑得起來,用一用看起來功能正常,就直接 merge 了,不去看 AI 最後寫出來的東西,只看用起來的行為。雖然某種程度是合理的,但前提是你用得夠徹底。

「用起來是否正常」就是一種測試,若是你的 test coverage 夠廣,那當然沒問題。但問題是,很多人就真的只是手動測一測而已,感覺沒問題就過了,而真相往往是 AI 在小細節上出錯,或是偷偷把其他無關的功能給改掉。

這或許就是惰性吧,是許多人會有的一種「偷懶」的傾向,甚至我自己有時候也會。當 AI 一口氣寫了 1 萬行程式碼,每個檔案的每一行我都是陌生的,這時候一行行看而且要理解它的邏輯,就需要花費不少時間。

當這樣的想法出現時,就會傾向不看程式碼了,只看成品,只要能符合需求就讓它過,不去管那 1 萬行程式碼。「就算有問題,之後再修就是了」,也有許多人是這樣想的。

然而,這也是許多 bug 的根源,甚至到後來變成修 bug 地獄,AI 能修的就能修,不能修的,連工程師自己也修不了,因為他自己根本沒搞懂這些程式碼在幹嘛。

這是一個需要解決的問題。

我自己能想到的方法有兩個,第一個是全部賭在 AI 身上,AI 寫 code 之後 AI review,然後 AI 自己修正。最後的品質全部取決於 AI 自身,我們只是多加了一些程序跟環節,試圖讓 AI 自我修正。

第二個是:「強調測試」。

人跟 AI 一起寫測試,人來負責確認測試是可靠的。當我們確認測試是可靠的以後,確實實作就不是這麼重要了,至少產品是能用的而且沒問題。

這也是我聽過有些人抱持的觀點,就是在 AI 時代中,會重新定義所謂的「code quality」。許多常見的 best practice 都將變得不再重要,例如說某些程式碼的寫法,是為了讓人類好讀,所以這樣寫。

那若是未來看 code 寫 code 的主力變成了 AI,是不是比起讓人類好讀,讓 AI 好讀會變得更加重要?

這個派系算是比較激進的了,類似於「AI 完全取代人類」這種,認為未來寫 code 的主體是 AI,所以以前給人的那些規則都會被改寫,會以「AI 能改能看懂」為優先。

另一個偏中立的路線則是「AI 人類協作派」,讓 AI 照著優秀的軟體工程師的守則開發,人類從中督導並且協助,最後還是人類自己最懂所有的 code,只是實作細節交給 AI。

但不管你支持的路線是哪個,我覺得「強調測試」這點都是不變的,當測試涵蓋率變高而且變得準確,我們就能更好地確保產品的品質,不用怕改壞東西。

代理人的戰爭

我覺得我們離全 agent 的時代越來越近了,這是我這陣子看到一些資安相關文章的感想。

無論是現實生活中的網路攻擊有賞金的 bug bounty 還是 CTF,都已經有了全自動化的 AI agent,並且證實了是可行的。

先聲明一點,「可行」當然不代表「完全取代人類」,這是兩回事。「可行」指的是「部分操作上可以取代人類」,例如說某些常見的固定流程,可以全部讓 agent 去搞定。

當攻擊的 AI agent 變得可行,防守端就也會需要個 AI agent 來協助,否則真人的速度跟不上 AI agent 24 小時不斷的攻擊。

從整體產業的角度看來,應該是一種提升吧?看起來人可以不用花時間在那些繁瑣且固定的事情上面,那些都交給 AI 了,所以整體品質的下限被提升,只要有 AI agent 幫你做事,下限都能顧到。

而人要做的事情就是去研究那些 AI 做不到的,更複雜的東西,或者是去思考如何 build 出一個更厲害的 AI agent。

但身為一個人類,儘管我可以理解這對整體會是更好的,但依舊感到有點惆悵。雖然我們常說寫程式是手段,手段是為了達成目的,可是身為一個工程師,我可能對手段日久生情了,除了最後的目的以外,我同時也喜愛著寫 code 本身。

我享受寫 code 的過程,享受把自己的 code 變得好讀、好維護,能夠去欣賞程式碼本身的美。但是這些現在都被 AI 給取代掉了,似乎我做得沒有比它好。

「親手做的」這件事情對你來說有多重要?雖然很多人喜歡說「過程比結果重要」,但那是真的嗎?

比起「這是我用 AI 寫的」,或是「我寫的 AI agent 找到了這些漏洞」,我可能會更喜歡「這是我親手寫的」或「我自己找到了這個漏洞」。儘管「我開發的機器人發現了這個東西」,也是我自己的功勞,我自己的努力,但我可能還是想成為那個當事人,而不是透過機器人這一層。

時間與誠意

當你出了一個作業,你要怎麼知道學生有付出努力了?或是,當某個人做錯事而你要求他寫道歉信,你該怎麼知道他的道歉是有誠意的?

在某些事情上,我們通常會用時間來衡量。例如說做這個手工藝品要花 100 個小時,代表他願意付出這麼多的時間,誠意滿點。這個作業要去各個網站查資料並且整合在一起,預估要花個半天才能做完,他願意付出這麼多時間做作業,從成果中能看到他的努力。

「這個手工卡片一定做很久吧」、「這卡片滿滿的字一定花了很多時間」,也都是常見的,所謂衡量「誠意」的方式。

當然,有些事情需要的時間會隨著每個人的能力不同而變化,一般平均可能花 3 個小時,有些人只要 2 個小時等等。但無論如何,至少都會有一個預期的下限存在,比方說這個工作量就算你再強,最少也要 2 小時才能做完,不可能再低了。

之所以會拿時間來當作衡量誠意的標準,大概是因為它姑且是個較公平的方式吧——每個人擁有的時間都是一樣的。雖然有些時間是可以用錢來取得的,例如說直接花錢找人做事,但若是把「一定要本人做」也考量進去的話,應該沒有比這更公平的。

時間具有排他性,所以他做了 A 就無法做 B,在眾多的事情中,他選擇把最稀缺的寶貴資產用在 A 上,就說明了他願意付出時間,間接表示了他的誠意。

但 AI 出來以後,有些事情就變了。

我怎麼知道他付出多少時間?通常我們只能從產出來反推,例如說這篇文章字很多內容很豐富,一定需要花很多時間。但現在,三萬字的文章可能是三分鐘內由 AI 寫完的。

從文情並茂的自我介紹到落落長的道歉文,只要是文字,AI 都可以幫你搞定。只要簡單兩三句話,就能自動長出任意指定長度的文字。所謂的「AI 味」只會慢慢模糊,現在很多文章就已經看不出來是 AI 寫的了。

在這個前提下,我們該怎麼衡量誠意?從文字來衡量誠意,是不是已經不可能了?用時間來作為衡量誠意的標準依舊可行,但問題是從產出來衡量時間已經失效了。

雖然時間少不一定代表沒有誠意,這我知道也可以理解。但仔細想想,有些事情還是得用時間來衡量對吧,那這些該怎麼辦呢?

70 分的詛咒

假設 AI 可以用三分鐘就做出 70 分的東西,那還有多少人會花 300 分鐘,去追求 80 分呢?

現在就是這樣的,AI 可以很快地把下限提高,你隨便給一句話一個指令,很快就能產出個可以用的東西。儘管 UI 花花綠綠,有點小 bug,但它可以用,也可以滿足最核心的需求,我稱之為「70 分的產品」。

但是當你想改善它的時候,就不是這麼簡單的一件事了,你可能要自己去想、去找出有哪些地方可以改進,然後跟著 AI 一個一個去調整。這個過程可能會需要百倍的時間,例如說 300 分鐘或是更久。

在沒有 AI 的時代,光是要達到 70 分可能就需要 300 分鐘,所以達到 70 分跟 80 分的時間可能是 1:1。但是現在 AI 可以讓 70 分變得唾手可得,只需要 3 分鐘就可以搞定,比例變成 1:100。

那這是否會成為追求 80 分的一種阻礙?

當大家都滿足於 70 分,就不會有人再去追求進步,去想說:「這邊可以更好用啊,這裡應該要改一下」。就算要改,也會因為需要花十倍甚至百倍的時間去調整,而選擇不去做。

這會不會是一種 70 分的詛咒,儘管 AI 拉高了整體的下限,讓每個產品都能做到 70 分,但卻也因為這點,讓一些原本想做到 80 的人滿足於現況,不再追求進步。

還是說這種人根本不存在,想做到 80 分的人,不管要花多久就是會做到 80 分,那些止步於 70 分的人就算沒有 AI 也會止步,從頭到尾這都是兩種不同的人,70 分的詛咒根本不存在。

分辨不出的真實性

科技的進步,讓電子垃圾也變得越來越多。

現在不管到哪裡,都充斥著一堆利用 AI 製造大量垃圾而獲利的人。「製造垃圾而獲利」這件事情一直都存在,但是 AI 的出現使得成本變得更低,造假的成本變低,讓「分辨真實性」這件事情變得更困難。

文字是假的,圖片是假的,影片也是假的。

某個帳號在社群網站上推薦了一個零食,以前的我可能會認為他是真的喜歡所以推薦。但現在會先懷疑,這是不是公關公司的 AI 假帳號來業配,或者是某個代購業者發的文。

若是十年前在 PTT 看到一萬字的文章,會覺得寫得真用心,現在看到相同的東西,可能會先懷疑是不是 AI 寫的,背後的目的又是什麼。我所看重的真實性,已經變成了一種營利的手段,只是為了獲取更多利益而被虛構出來的東西。

有些人根本不在意是不是 AI,反正只要最後寫出來的東西合他胃口就行,是真是假根本不重要,重點是那個故事本身想傳達的東西。

但我沒辦法,我在意真實性,我在意某件事情是不是有真實發生過。就算是一個我認同的概念,只要搭配虛構的故事,我就不會買單。但判斷真實性這件事情變得越來越困難,我只能逐漸轉向「預設任何事都是假的」這個立場。

除非有經過可信任的第三方證實、證據夠明確或者是我信任的朋友所述說的事情,否則我都一概先認為那是網路假文章。

AI 是手段,不是目的

「如果哪天透過訓練 AI,可以讓 AI 用我的口吻寫出類似的文章,那我寫作的意義是什麼?」

我曾經想過這個問題,而我給不出答案,但我現在可以了。

有些人寫文章的目的只是為了推銷自己,或是推銷某些東西。想要達成這個目的,所以透過寫文章。而這個文章是誰寫的其實並不重要,你寫的我寫的隔壁老王寫的還是 AI 寫的都一樣,所以交給 AI 寫就好。

但我寫文章,是因為我想寫。

我寫技術文章,除了想分享某些技術的東西以外,也是我自己整理想法的一個手段,如果不是我親手寫的,就沒有意義。

我寫這些非技術文章,是因為我想記錄或傳達我的想法。同樣地,我也覺得非得要我親手寫才行。就算 AI 能寫出跟我一樣的東西,我也還是要自己親手寫,因為「我想寫」這件事情本身就是目的,而 AI 只是手段。

所以課堂上的作業可以讓 AI 寫,技術文章的翻譯可以讓 AI 翻,因為透過 AI 可以幫助我更好地達成目的。

但是我寫部落格就是為了透過我的手,紀錄我想寫的東西,這個 AI 幫不上忙。

不是所有 AI 都可以代勞的事情,都應該交給 AI。舉個例子,我有一陣子很喜歡看那種電影解說的影片,那些我沒時間看的電影,用十分鐘就能了解劇情。我沒有傲慢到會覺得我把電影看完了,但我會覺得知道劇情很有「收穫」。

但我看一看之後發現,這不是我要的。我看電影只是為了知道劇情嗎?不是的,電影不只有劇情,還有畫面、聲音、分鏡跟光影等等,這些全部綜合在一起,才是一部完整的電影,才是導演想訴說的故事。

「好好看完一部兩小時的電影」是許多現代人已經喪失的能力,因為習慣了短影片的那種滑滑滑,10 秒內就要得到刺激,看 20 分鐘的 YouTube 影片就已經想轉台。

這就跟 AI 摘要一樣,你可以摘要所有東西,但不代表你應該這樣做。對於一些實用性的東西我覺得沒什麼問題,例如說摘要一篇論文,然後再去找感興趣的地方深入閱讀。

但我不會拿來摘要村上春樹,我讀村上春樹又不是想學什麼東西,我在意的、想得到的是我閱讀文字時的那個感受,這一定要是文字本身才能帶給我的,只有劇情的摘要是沒有靈魂的。

AI 是個很好的工具,但「這個地方適不適合用 AI?」則是個需要自己思考的問題。

結語

我對 AI 還是又愛又恨的。

AI 在許多領域帶來的改變,說穿了就是讓生產力大幅提高,而且是以十倍百倍那樣子的速度。這個工具可以運用在好的地方,也可以運用在壞的地方。

這就像是 blockchain 有很多有趣又合法的應用,但同時也有許多人拿來詐騙或洗錢一樣。

當我原本就看不慣的東西,因為 AI 而變得更猖狂時,我就更看不慣了。例如說內容農場、AI 文、AI 假帳號或是販賣焦慮等等,AI 讓這些垃圾的產出變得更容易。

但與此同時,我自己用 AI 翻譯部落格,用 AI 在工作上寫 code,平常查資料也是先問 AI,整理資料也是 AI 幫忙,也是著實的 AI 受益者。

寫到這裡,才發現或許 AI 能強迫自己反思一些事情吧,去想自己到底在意的是什麼,注重的價值觀是什麼,不管在哪個時代,都需要找到能與自身和平共處的方式。

我可能還沒找到,還需要一點時間,但至少先透過這篇把一些想法紀錄起來了。