這陣å?我迷上了 OpenClaw。 一開始å?ªæ˜¯å¥½å¥‡ï¼Œæƒ³çŽ©çœ‹çœ‹ AI agent...
用 AI Agent 幫客戶寫 Power Automate Flow, 從 80 個 Action 到 17 個
分享這兩天用 AI Agent + MCP 幫客戶開發 Power Automate 的經驗。
客戶需求
客戶è¦?å?šä¸€å€‹æ–‡ä»¶è™•ç?†çš„自動化 - 有人上傳 Word å ±å‘Šåˆ° SharePoint list,Power Automate 自動把它轉 PDFã€?å˜åˆ°å°?應的 document libraryã€?發 Teams messageã€?寄 email。ä¸?å?Œçš„æ–‡ä»¶é¡žåž‹è¦?å˜åˆ°ä¸?å?Œçš„地方ã€?發到ä¸?å?Œçš„ channel。
客戶本來有一套在用的,3 種文件類型,用 Switch 分�。我�幫他們�一個新的給�一個團隊用,這次有 6 種文件類型。
我就想,���直接� AI agent 幫我�。
讓 Agent 讀�有的 Flow
我用的是 Claude(在 VS Code 裡�跑),�� Flow Studio MCP 連到客戶的 Power Automate 環境。MCP 讓 agent �以直接讀 flow definition�deploy 修改�trigger 測試�看 run history, �用開 Power Automate designer。
ç¬¬ä¸€æ¥æ˜¯è®“ agent 讀ç?¾æœ‰çš„ flow:
agent → list_live_flows → 找到�有的 flow
agent → get_live_flow → 讀完整的 flow definition
Agent 看完之後馬上ç?†è§£æ•´å€‹çµ?構:trigger 是 SharePoint list item created,Apply to Each è·‘ attachments,裡é?¢å…©å€‹ Switch block 分文件類型, 一個處ç?† PDF è½‰æª”è·Ÿå˜æª”,一個處ç?† Teams message è·Ÿ email。
第一版:直接照抄
Agent 直接照抄�輯,把 3 種改� 6 種 => 6 個 case 的 Switch,�個 case 裡�一整組�複的 action。deploy 上去,80 幾個 action。
其實也�是�行,畢竟舊的那一套也是我�的,�構一樣。�是改 bug 的時候在 Switch 裡�改有點麻煩, 6 種文件類型就�改 6 次,很容易�。
舊版 Switch 長這樣:
3 個 case 展開,�個 case 裡�一整組�複的 action, Compose�HTTP Graph�Send email�Post Teams message。新版� 6 個 case,改一個 bug �改 6 次。
第二版:Dictionary Lookup
然後我丟了我�公 John Liu 的一篇 blog 給 agent 看, split twice pattern,用 config �代 Switch 的寫法。
Agent 看完之後建è°ç”¨ dictionary lookup。å?šæ³•æ˜¯ï¼š
- 一個 Compose action 放 JSON config,6 種文件類型當 key,value 放 library IDã€?Teams channel IDã€?mailing list 欄ä½?å??稱
- 後�所有 action 都用
outputs('Compose_Config')?[triggerBody()?['Type/Value']]去查表 - 兩個 Switch ç ?掉
80 幾個 action 變 17 個。
左邊是 Compose Config çš„ JSON, 6 種文件類型當 key,æ¯?個 key 放å°?應的 library IDã€?channel IDã€?mailing list 欄ä½?。å?³é‚Šæ˜¯ä¹¾æ·¨çš„ Apply to Each,一組共用的 action 處ç?†æ‰€æœ‰æ–‡ä»¶é¡žåž‹ã€‚åŠ æ–°çš„é¡žåž‹å?ªè¦?在 config åŠ ä¸€ç†ã€‚
Deploy 之後æ‰?是真æ£è¸©å?‘的開始
新版 deploy 上去之後跑了第一次, 壞了。
SharePoint connector 有些é™?制是文件上寫ä¸?清楚的ã€?path æ ¼å¼?è·Ÿä½ æƒ³çš„ä¸?一樣ã€?JSON å—串組出來多了一個 single quote 就壞掉ã€?欄ä½?æ›´æ–°é‚?輯沒寫好會互相蓋掉。
�次都是這個 loop:
agent → update_live_flow(deploy 修改)
agent → trigger_live_flow(跑一次)
agent → get_live_flow_runs(看 run history)
agent → get_live_flow_run_error(找到哪個 action 壞掉)
agent → get_live_flow_run_action_outputs(看 input/output 確��題)
→ 改 code → � deploy
來回了大概 7 次。ä¸é–“é‚„ cancel 了 11 個壞掉的 run。
�點是這 7 次我都沒有打開 Power Automate designer。
全部都是 agent 自己 deployã€?自己跑ã€?自己看錯在哪裡ã€?自己改。我å?ªæ˜¯åœ¨æ—?邊看它跑,å?¶çˆ¾æ??示一下方å?‘(åƒ?是丟 John çš„ blog 給它看)。
為什麼 MCP 是關�
如果 agent 沒有 MCP,它還是å?¯ä»¥ deploy flow。但 flow 壞掉的時候,它看ä¸?到 run history 裡é?¢çš„ error detail è·Ÿ action input/outputã€‚ä½ å°±è¦?自己去 Power Automate designer 看錯在哪,然後把 error message è·Ÿ input/output 貼回去給 agent。
有了 MCP,agent �以直接:
- 讀�有的 flow(
get_live_flow) - Deploy 修改(
update_live_flow) - Trigger 測試(
trigger_live_flow) - 看 run history 跟 action-level 的 error(
get_live_flow_runs�get_live_flow_run_error) - 看�個 action 的 input/output(
get_live_flow_run_action_outputs)
差別就是 agent 能ä¸?能自己跑完 deploy → test → debug çš„ loop。能跑的話,一個下å?ˆæ?žå®šã€‚ä¸?èƒ½çš„è©±ï¼Œä½ å°±æ˜¯é‚£å€‹ loop 裡é?¢çš„人肉 middleware。
想試試看的話:Flow Studio MCP �費方案有 100 次 API call,��信用�。
�用 VS Copilot, Claude 跟�種 MCP-compatible agent.
John 的 split twice pattern 原文:johnliu.net
Catherine Han, Flow Studio