20260118 – N8N使用成長歷程

使用了也好一陣子了,從HomeAssistant上,轉到Synology,再改良Container。

從N8N版本一用到版本二。

歷經N8N毀滅,辛苦兩週的成果消失,直接自暴自棄,兩個月後才再次開始。

我這邊來分享一下我的心得與看法。

凡事備份最重要

在開始時,什麼都沒有,所以不見也不會心疼。

但是開始運作時,大概在有十個工作流時,尤其是那種很複雜的工作流,只要不見就很痛。

每個容器化的東西,都有可能隨時消滅。

如果這服務沒有任何可靠的備份輸出,請「一定」要優先探索備份還原的手段!

容器化的備份指南

以下是個人偏好

我喜歡容器都掛載專案資料夾的資料夾作為儲放,不使用Docker volume沒辦法在host系統上直接取出來的。

習慣性掛載,所以重要的檔案基本上都能備份到,寫compose.yaml時也會知道。

image基本上在網路上長存,如果是大專案那就不用擔心棄坑,小專案是會遇到棄坑的。
如果部署是使用指定版本,建議image也備份。

最後是先停止運作後,再整個專案資料夾壓縮備份,再重啟。
專案資料夾包含compose.yaml以及使用到的資料,這樣子方便解壓縮後,移到其他的機器上部署,一個docker-compose up就輕鬆了。

慘痛的經驗

備份時沒有停止運作,像是使用Sqlite就會鎖住。

有些工作流每分鐘來一次,而且重點是不停下來,就不會釋放Sqlite存取權,資料庫都是寫入狀況。

只要來點意外重啟,就能讓DB缺資料或毀損,然後再透過自我修復把那些毀損的清掉。

於是只剩下「上次停機時的那些」。

我仍建議直上外部DB,我的HomeAssistant也是,我的N8N目前也是,Sqlite簡易好用,但也有侷限性,為了不要讓憾事發生,早點改用postgres。

那次Crash,消失的不只是時間累積,還是那時候所做的構思,現在不見得能夠再造回來。
就因為N8N沒有很好的備份機制,沒有內建每天備份,至少目前沒有,所以只有用土砲方式造。

HomeAssistant備份機制演進

我在五年前就開始使用HomeAssistant,現在仍然是重要的家庭中樞。

一開始只有內建手動備份,運作也可能隨時會毀滅掉,不過手動備份檔讓我拯救好幾次,不致於消失掉太多設定,都還能補回來。

後面有人造出Google Drive備份,也有造出SMB備份,那時候才是安心的時刻。

我想「隨時都要準備好萬一這東西毀壞,我能很快速修復還原嗎?尤其是這種很新穎但不穩定的新東西。」

能使用雲端備份後,HA的穩定度也上升很多,真要到我拿備份檔拯救的次數大幅下降,甚至一年都沒有發生。

就在去年,HA也內建雲端備份功能,我就也轉回到HA本身的雲端備份功能,很感謝那時候寫雲端備份大神的貢獻,至少每天都有備份,不會讓成果與資料一夕全毀。

N8N備份現況

N8N資料主要分三塊:工作流、認證資訊、資料表。

基本上要備份也是使用這三塊去備份。

我的方法與想法是比較通用的,不管這些細節資訊都把專案資料夾備份,先停再備後開,這招除了N8N之外,其他容器化服務也能適用這一套方式。

但是缺點會有停機時間。

Host本身可以再搭配雲端同步或是腳本把備份檔上傳。

但我仍希望N8N做出備份匯出的功能,畢竟透過內建這樣的機制去完成備份還原是更令人安心的。

※另外一個我大量使用的Moodle也有這種狀況,教材更大

如何創造工作流

https://www.bnext.com.tw/article/89778/enterprise-gai-transformation-strategy-process

今天剛好看了上述的文章,我覺得蠻能闡述是如何從0到1,再從1到100。

公司有找外面的講師講AI課程,這一年下來,工作導不了AI,沒有AI,為什麼?就卡死在這第二階段。

若以我的人力質量需求理論來說:質不夠,可以邊做邊學去彌補,但會花更多時間。

短期來看,這非常勸退人,先不管能不能帶來收益,一定是會花很多時間,成效未知,自身經驗與知識也不足,這一試有可能就沒有辦法順利完成工作事項。

所以要保留一段時間,也要求提出一些構想或是成果,不然將不會驅動導入事件發生。

工作流都是因應「需求」而生,建議是簡單、重複、明確的那種,導入大語言模型可以增加親切度。

工作流是簡單的小任務,例如查詢資訊、更新資料、接收訊息等。而後就可以做到接收訊息後,查詢資訊並更新資料。

要試著讓工作流去勝任,也就是佔有一席之地,變成生活或是工作的一部分,站穩了1,後面成長到100就會很順暢。

如何開發工作流

N8N工作流是一個個節點,去抄別人的模板也好,但是就會陷入迷思,個人建議看不懂的工作流不要用。

實戰透過ChatGPT協助,我覺得效果不好,更何況這些東西都很新穎,語言模型內可沒有優質的語料參考,就迴歸於人要如何思考與規劃,不像寫程式碼可以拋過去就能好收穫。

每一個工作流,我會對應一個筆記,基本上是寫在Notion上,包含過程歷程等等。

N8N在工作流中沒有一個很好的資訊呈現方式,就連Note也是蠻陽春的。

所以,在N8N的工作流中,使用Note去導到Notion上對應筆記,可以讓人從Notion上看到更多詳細歷程,這才是一個好方式。

ChatGPT還是LLM在生成時,畢竟是對話,久了或是常用,這些對話紀錄很難找,就算找到了,也不見得能立刻回憶起當時的想法。

使用筆記軟體搭配,整理思緒、整理相關使用資料、整理ChatGPT重點對話。

也許本次開發你覺得不太需要紀錄下來,但是,未來再進階開發呢?或是像我一樣不幸失去資料呢?

我在寫VSCode時,也是一個專案一個資料夾,會在裡面詳細紀錄一些想法與演進。但是N8N的工作流沒有辦法寫在同一頁面,所以只好透過Note連到外部去。

LLM不能幫助你節點規劃

正如我上段所說,看不懂的工作流你不應該使用。

LLM好用,但是對工作流熟悉的人是你自身,而不是LLM,除非你在提示詞寫得很詳盡,但是能寫得詳盡的人自己也能規劃出節點。

在一開始,我們就連節點能做什麼功能,該如何設定都不太清楚。

但我們可以把工作一步一步拆解,列出Step by Step,特別是有明顯先後因果的步驟。

完成後才交給LLM依據N8N的節點去規劃您寫的Step by Step要如何實踐。

全交給LLM做工作流節點自由規劃,在我的經驗來說是一踏糊塗,特別是少見的API啊,你想像跟LLM學到的想像是不同的,所以你需要自己做節點規劃。

(除非這幾年有很多人投入,累積了大量優秀的工作流,在這之前,不要相信LLM有學到何謂好的工作流

LLM能幫助你完成節點

N8N節點功能很多樣,經常會遇到「資料整理」需求,使用內建的節點往往不夠直覺,我建議直接交給code節點去整理。

如果節點需要轉換或是整理資料,我建議讓ChatGPT或是Gemini等直接用Code節點並使用JS去寫輸出。

N8N上到第二版後,python就要額外掛服務,因此語言使用JS是最簡單省事的。

以外除了Code節點,HTTP Request也是很常用的,LLM可以搜尋整理並提供範本,抄起來。

對於節點不熟悉,都可以詢問LLM去得到幫助。

工作流是輔助

企業導入AI,想像著以後都交給AI去做,人就輕鬆了,但是沒有。

工作流畢竟只是做事,他無法取代你娛樂、體驗等等。

若你也沒辦法做到的,人是造不出超越人認知的工作流,工作流也沒辦法幫助。

我的生活,工作是能用工作流輔助部分,但是下班後煮菜買東西就不能交給工作流。

我想說:不要讓工作流變成一個一定要產出成果的目標。

終究會遇到瓶頸,就會沒辦法再更多,為了達標而造,能用到的只是滿足你造出時成就感,可是後續就荒廢。

工作流是一種思考

我認為能在電腦上就做到的,都有化為工作流的可能性。

工作流是一種有條裡有先後的思考。

我在面試數個人的經驗來說,能做到掌握事件先後脈絡再答對問題的人,少。

它不是天賦,是一種技能,要做得好與輕鬆就靠經驗累積。

這樣的思考是很有價值的能力,幫助人做事時不要迷航。

現在詢問LLM是常態,但是照做發生狀況時,LLM並不會負責,而人都要對自己的人負責。

造出多個工作流之後,就會養成一種分析的習慣,分析要如何從頭走過各節點直到終點。

我的現況

N8N主要是作為定時事件以及應用服務功能串接。

最後一個工作流是造「N8N備份」,透過SSH連到NAS上執行腳本。

消失的工作流有:

  • 追蹤股票符合條件就發出通知與待辦事項
  • 設備快沒電就發出通知與待辦事項
  • 收信將一些特別信件變成待辦事項

平時我不會經常看股票、也不會看設備電量,就靠N8N定期看並通知我。

N8N是很靈活的產品,勢頭也正好,在這浪潮我覺得會繼續發展下去,更強大起來。