使用了也好一陣子了,從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是很靈活的產品,勢頭也正好,在這浪潮我覺得會繼續發展下去,更強大起來。