參加 Nutrient Hackathon 後,我重新理解了「做作品」與「參加比賽」的差別
2026年9月4日 · 阅读约 2 分钟
#
最近我參加了 DevNetwork [API + Cloud + AI] Hackathon 2026 裡的 Nutrient DWS Challenge。
這不是我第一次做 AI 相關專案,但這次的經驗讓我第一次很明確地感受到:
把一個東西做出來,和把它變成一件適合參賽、可以被驗證、又不會把自己的核心價值全部公開出去的作品,其實是三件不同的事。
這場比賽最後留給我的,已經不只是某一個作品。
它反而改變了我之後參加 Hackathon 的方法。
一開始,我以為這是一場「把 API 接起來」的比賽 #
Nutrient 的題目很直接:
企業每天都在處理合約、表單、發票、身分文件、報告等文件,但在法規、稽核或高風險工作裡,「大概正確」是不夠的。
主辦方希望參賽者使用 Nutrient DWS,把雜亂的文件轉成真正可以被信任、檢查與追蹤的工作流程。
而且有一個很重要的要求:
Nutrient DWS 必須真的參與至少一個核心文件操作,不能只是為了符合比賽規則而象徵性呼叫一次 API。
官方也很明白地暗示了他們想看的方向:
AI 可以做大量工作,但在不能猜的地方,要讓人介入;而整個過程最好可以留下可以重播、追查與稽核的紀錄。
提交本身也很典型 Hackathon:
專案名稱與一句話介紹、Repo 或分享連結、安裝說明,以及一支 2~4 分鐘、能看見端到端流程實際運作的 Demo。
一開始看起來,就是典型的:
「找問題 → 接 API → 做介面 → 錄 Demo → Submit。」
但實際做下去之後,我發現真正困難的地方完全不在這裡。
第一個問題:API 能跑,不代表作品成立 #
接上 Nutrient DWS 並不是最難的部分。
真正的問題是:
如果把 Nutrient 拿掉,這個作品是不是幾乎完全一樣?
如果答案是「是」,那表示 Sponsor integration 很可能只是裝飾。
所以我開始不再問:
「我有沒有用 Nutrient?」
而是問:
「Nutrient 在整個因果鏈裡,究竟完成了什麼不可忽略的工作?」
例如:
文件進來之後,Nutrient 負責抽取內容、保留來源位置、建立可以回到原文件驗證的證據。
接下來系統才能判斷:
哪些資訊足夠明確?
哪些地方需要人確認?
最後又是根據什麼證據產生結果?
這時候 API 才不只是 API。
它變成整個產品可信度的一部分。
這也是我後來很重視的一條原則:
Sponsor 技術不需要是全世界唯一能做到這件事的工具,但它必須對作品產生真實、可見、可以驗證的貢獻。
第二個問題:功能存在,不代表評審看得到 #
做專案的人,很容易有一種錯覺。
因為自己知道整個系統怎麼運作,所以會覺得:
「這個功能不是很明顯嗎?」
其實完全不是。
評審看到的是幾分鐘的影片、一個 Submission Page、一份 README,可能再加幾張 Screenshot。
他們沒有參與開發,也不知道我們腦中的架構。
於是我開始把 Demo 想成另一種產品。
它不是「產品介紹影片」,而是一條證據路徑。
我後來比較認同的結構是:
Problem
↓
Real Input
↓
Sponsor Technology
↓
Observable Evidence
↓
Human Action
↓
Observable State Change
↓
Result
↓
Scope Boundary
也就是說:
不要先花兩分鐘解釋 Architecture。
先讓人看到事情真的發生。
文件真的進來。
Nutrient 真的處理了它。
來源真的能找到。
人真的可以介入。
介入之後狀態真的改變。
最後再說這件事為什麼重要。
這件事也讓我重新理解「展示」。
好的 Demo 不是把作品講得很厲害。
而是讓重要主張旁邊直接出現證據。
第三個問題,也是這次最意外的問題:到底應該公開多少? #
這反而成為整場比賽對我影響最大的一件事。
Hackathon 很鼓勵大家展示:
程式碼、GitHub、Architecture、流程、測試、Demo、README。
工程師也很自然會覺得:
「公開越多,技術可信度越高。」
但是做到某個階段,我開始發現另一個風險。
假設單獨看:
README 沒問題。
Demo 沒問題。
Schema 沒問題。
Tests 好像也沒問題。
Architecture Diagram 也沒有完整 source code。
可是如果把:
README
+ Demo
+字幕
+ Schema
+測試名稱
+ UI State
+ Architecture Diagram
全部拼起來呢?
一個熟悉這個領域的工程師,有沒有可能把核心機制反推出來?
這讓我第一次真正理解:
保護技術,不能只靠「Source Code 不公開」。
產品的 state 名稱、欄位名稱、測試案例、錯誤訊息、UI 關係、流程圖,全部可能洩漏 Architecture。
所以我後來開始把公開內容分成幾個層次。
有些東西可以大方證明:
Nutrient API 的真實整合、Synthetic Demo Data、來源頁面、文件 highlight、human review、基本錯誤處理、產品限制。
有些東西可以展示「發生了什麼」,但不一定需要解釋完整的「為什麼會這樣發生」。
例如可以讓人看到:
HUMAN REVIEW
PROCEED
BLOCKED
卻不一定需要把所有 transition conditions、priority rules、authority logic 全部公開。
至於真正構成長期競爭力的東西,例如:
核心決策邏輯、狀態轉移規則、搜尋與最佳化方法、完整 adversarial tests、內部 policy、未來 architecture,
就需要另外做公開決策。
這後來變成我很喜歡的一句話:
Open the proof. Protect the recipe. Audit the combination.
中文就是:
公開證明,保護配方,審核組合。
這套思考後來也正式被我整理成參加其他競賽時使用的 Disclosure / IP 控制方法。
我也因此改變了 GitHub 的使用方式 #
以前很自然的做法可能是:
Private Repo
↓
做完
↓
刪掉不想公開的東西
↓
改成 Public
現在我會更傾向:
Private Development Repo
↓
Disclosure Review
↓
Clean Export
↓
Sanitized Submission Repo
也就是:
母體繼續完整保存。
比賽需要什麼,再建立一份適合 Submission 的乾淨版本。
因為真正需要保護的,不一定只是一兩個檔案。
Git history、測試、schema、fixtures、internal identifier,甚至 README 的敘述,都可能彼此拼出原本不打算公開的東西。
而且比賽結束,也不代表所有東西就應該立刻 Open Source。
比賽之後還可以重新決定:
哪些適合公開?
哪些適合繼續開發?
哪些可能有商業價值?
哪些需要進一步處理智慧財產問題?
這對我來說,是這次比賽非常重要的一課。
回頭看,我得到的並不只是一個 Hackathon Project #
如果只看表面,Nutrient Challenge 是一場文件 AI 的 Sponsor Challenge。
但對我而言,它實際測試了更多東西:
我能不能找到真正適合 Sponsor 技術的問題?
能不能把 API 從「有使用」變成「有必要存在」?
能不能把一個 AI 系統的能力變成可以被評審驗證的證據?
能不能在幾分鐘內讓沒有參與開發的人理解它?
能不能誠實區分:
已完成的功能、真正測過的結果、Demo Data、估算,以及還只是 Roadmap 的東西?
更重要的是:
我能不能在想贏得比賽的同時,還記得保護比賽之後的自己?
這一題,我以前其實沒有認真想過。
這次最大的收穫,不一定要等比賽結果才知道 #
Hackathon 很容易讓人把成功定義成:
有沒有得獎。
但現在我比較願意把每一場比賽看成一次高壓測試。
它會逼你在有限時間裡回答很多平常可以逃避的問題:
這個問題真的值得解嗎?
你的技術真的有差異嗎?
API 真的在工作嗎?
作品真的能重跑嗎?
評審真的找得到證據嗎?
公開出去的東西,會不會讓你之後後悔?
哪些功能其實根本不值得做?
這些問題的答案,就算最後沒有變成獎項,也會留下來。
Nutrient 這一輪對我最大的影響,就是讓我開始把「參加比賽」從一次性的作品製作,慢慢變成一套可以重複使用的工程與決策流程。
所以如果有人問我:
「這次 Nutrient 比賽你做了什麼?」
我現在可能不只會回答那個 Project 做了什麼。
我更想回答:
這場比賽讓我第一次建立了一套方法,去思考什麼應該做、什麼必須證明、什麼可以公開,以及什麼值得保留下來。
對我來說,這可能比單純多做一個 Demo 更有價值。