Mark Ku's Blog
This article hasn't been translated yet — showing the original Chinese version.

前言:我的 Agent 自己跑去訓練 LoRA

這件事我自己也蠻意外的。

那天在 Discord 裡隨口叫我的 Agent Melody 幫忙生一支「Ani 的打招呼影片」。Ani 是群組裡另一個機器人。結果 Melody 不只排了影片,還順手把 Ani 的 LoRA 訓練也排進 GPU 佇列:12 張素材準備好、預估 21 分鐘,兩邊進度都會自己回報。

Discord 上 Melody 回報 LoRA 訓練已排入、12 張素材就緒、預估 21 分鐘,打招呼影片也同時在跑
Discord 上 Melody 回報 LoRA 訓練已排入、12 張素材就緒、預估 21 分鐘,打招呼影片也同時在跑

整個過程沒有雲端模型參與,主力模型是跑在地端的 Qwen 35B。

先講結論

  • 順序很重要:我是先做聲音、圖片、影片模型的 API,再包成 MCP,最後才讓 Agent 去調用。工具本身就能獨立使用,Agent 只是最後一層的編排。
  • 地端模型夠不夠用? 拿來寫程式可能還不太夠;但日常應答、調用內部系統、呼叫自己設計的 MCP 工具,已經足夠。
  • 企業要落地,重點不在導入 Agent 系統,而在打造工具讓 Agent 用。 Agent 框架隨時可以換,工具才是自己累積下來的資產。

我的順序:先有工具,再包 MCP,最後讓 Agent 來叫

回頭看,這條路其實是走出來的,不是一開始就規劃好的。

  1. 先做基礎系統:聲音模型 API(語音合成、podcast、配音)、圖片模型 API、影片模型。這些本來就是為了部落格、podcast、短影音在用,每一個都有自己的後台,人可以直接操作。
  2. 再包成 MCP:把這些 API 的能力整理成一支一支 MCP 工具,參數和回傳格式統一,權限也在這層收斂。
  3. 最後才接 Agent:Agent 不需要知道背後是哪個模型、哪台 GPU,它只看得到工具清單。

群組裡有人問起,Melody 自己的回答我覺得講得很到位:

Melody 回覆:先有工具系統,再包 MCP,最後讓 Agent 來叫;工具可以先針對實際業務優化,不依賴某個 Agent 框架
Melody 回覆:先有工具系統,再包 MCP,最後讓 Agent 來叫;工具可以先針對實際業務優化,不依賴某個 Agent 框架

很多團隊是反過來的:先選一個 Agent 框架,再「為了讓 Agent 有用」才去寫工具。這樣工具的設計很容易被 Agent 的需求牽著走,換框架時工具也跟著不能用。

整套架構長這樣

Hermes Agent × MCP 概念架構圖:使用者、對外入口、prod k3s、文字模型、MCP 伺服器五層
Hermes Agent × MCP 概念架構圖:使用者、對外入口、prod k3s、文字模型、MCP 伺服器五層

由左到右分成五層:

  1. 使用者:LINE、Discord 機器人(群組頻道與私訊),以及管理員的瀏覽器。
  2. 對外入口:Cloudflare 處理 DNS、WAF 和 SSL;Discord 是 Pod 主動連出去的 gateway;管理介面則經由東京 VPS 上的 frps 做穿透。
  3. prod k3s(Mac mini):Hermes Agent 跑在 hermes-agent 這個 Pod 裡。設定走 ConfigMap、金鑰走 Secrets、記憶和技能存在 PVC。旁邊掛一個 log sidecar,管理頁前面再擋一層 oauth2-proxy(Google 登入)。
  4. 文字模型:主力是地端的 Qwen 35B,透過 OpenAI 相容 API 提供,只在內網使用。另外設了一個雲端備援模型,只有主力出錯時才會用到。
  5. MCP 伺服器(白名單):
    • ai_gen(24 支):圖片、會議、虛擬人素材等,刻意不開放任意 call_api。
    • seal_tts(27 支):語音合成、podcast、配音、歌聲、翻譯。
    • esim(10 支):eSIM 管理、查詢、訂單。
    • esim-live(1 支):套用價格建議,屬於會動到真實營運的操作,每次都要人工 /approve。
    • agenthub(15 支):維護中,目前全部停用。

幾個我覺得比較關鍵的限制:

  • 網路:Pod 只對外開放兩個內網目的地(ai-gen 和 TTS),其他內網位址一律不通。Agent 就算被誘導,也碰不到不該碰的系統。
  • 權限分級:查詢類工具直接放行;會改到錢或對外公開的工具,要嘛不開,要嘛每次都要人確認。
  • GPU 共用:文字模型和 ai_gen MCP 共用同一張 GPU,同一時間只跑一個請求,忙的時候自動排隊。

實際用起來:聲音、生圖、蒸餾另一個機器人

用聲音跟大家打招呼

最簡單的例子:叫它用聲音跟大家打招呼。Melody 會先寫一段自我介紹,再呼叫 seal_tts 的語音合成工具,直接把音檔丟回 Discord。

Melody 用語音跟大家自我介紹:eSIM 營運助理,查價、改價、看訂單都可以丟給我
Melody 用語音跟大家自我介紹:eSIM 營運助理,查價、改價、看訂單都可以丟給我

她的正職其實是 eSIM 營運助理:查價、改價、看訂單。聲音只是順手接上的工具。

蒸餾另一個機器人:自己備素材、自己訓練 LoRA

開頭那個案例,背後是這樣跑的:

  1. Melody 收到「幫我生成 Ani 的打招呼影片」,判斷要讓影片裡的 Ani 長得一致,需要一個 Ani 的 LoRA。
  2. 呼叫 ai_gen 的虛擬人工具,依「全身遠景、正背面、仰拍、俯拍」「臉部與表情」等分類生成素材。每一張都會跟臉部基準圖比對相似度,解析度太低的會被標出來,可以保留、排除或再生一張。
  3. 素材湊齊 12 張後,把 LoRA 訓練排進 GPU 佇列。
  4. 同時開另一條線跑影片:劇本、分鏡、生成、配音。
  5. 兩邊跑完,再回群組回報結果。
虛擬人素材頁:臉部基準、微笑、認真等表情逐張生成並比對相似度,下方顯示生成進度 6/7
虛擬人素材頁:臉部基準、微笑、認真等表情逐張生成並比對相似度,下方顯示生成進度 6/7

這裡我沒有寫任何「訓練 LoRA」的 Agent 流程。虛擬人素材和 LoRA 訓練本來就是我後台的功能,包成 MCP 之後,Agent 自己把它們串起來了。這也是我說「工具先做好」的原因:工具做得夠完整,Agent 才有東西可以組合。

地端模型,夠用了嗎?

我的感受是分場景的:

場景地端 35B 的表現
寫程式、大型重構可能還不太夠
日常應答、群組互動足夠
調用內部系統(查價、查訂單)足夠
串接多個 MCP 工具完成任務足夠,前提是工具本身設計得清楚

換句話說,地端模型不需要什麼都會。只要工具的名稱、參數、回傳寫得清楚,中型模型就能把事情做好;真正困難的部分(生圖、生影片、語音、訓練)本來就交給專門的模型。

給想讓 Agent 落地的企業

這次做下來,我最大的體會是:

企業導入地端模型,不是裝一套 Agent 系統就結束了。 Agent 框架只是最後一層,真正決定它能做什麼的,是你有沒有把內部系統整理成可以被呼叫的工具。

如果要排順序,我會建議:

  1. 先盤點內部系統,挑出最常被問、最常重複操作的流程。
  2. 把這些流程做成穩定的 API,人可以直接用,也方便測試。
  3. 包成 MCP,在這一層定好白名單、權限分級和需要人工確認的操作。
  4. 最後再接 Agent,而且隨時可以換框架、換模型,工具不用重寫。

結語

一開始我只是想讓部落格和 podcast 的產製更自動,所以一個一個把聲音、圖片、影片模型做成 API。沒想到把這些工具交給 Agent 之後,它能做到的事情比我原本預期的多:生圖、生影片、用聲音打招呼,甚至自己幫另一個機器人訓練 LoRA。

全地端、資料不出門、成本可控,這條路對企業來說是走得通的。關鍵不在 Agent 有多聰明,而在你給了它多好用的工具。

Author

Mark Ku

10 年以上的軟體工程師,做過北美電商與 AI SaaS 訂閱收費系統。Read More

Found this useful?

The author's free tools, daily podcasts and newsletter are all here.

Mark Ku · This article is licensed under CC BY 4.0. Credit the author and link back to the original when reusing it.

Comments

Subscribe to Newsletter

Subscribe to get new posts delivered instantly — never miss a tech share.

By submitting, you agree to receive emails. You can anytime.

The author's company

Vibe Coding architecture & coaching

Built internal tools with AI but afraid nobody can fix or change them safely? 226 Network helps you put the code in Git, keep secrets out of it, move schedules onto a stable host, and add handover docs and tests.

Popular Posts

View all
Mark Ku
··632

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution

Oracle Cloud Always Free Tier: Linux Host and Static IP for a $0 Cloud Solution
Mark Ku
··470

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.

Say Goodbye to Postman's Fee Trap! A Hands-on Guide to Bruno, the Open-Source Git-Native API Testing Powerhouse.
Mark Ku
··260

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki

A Free, Open-Source, Notion-like Knowledge Base — A Complete Guide to Deploying and Backing Up Outline Wiki
Mark Ku
··213

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1

Building an Efficient API Management Platform: Deploying Kong Gateway from Scratch - Part 1
Mark Ku
··208

Setting Up Samba on Ubuntu to Share Folders with Windows 11

Setting Up Samba on Ubuntu to Share Folders with Windows 11
Mark Ku
··206

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning

Training Your Own AI Voice: Hardware Requirements, Open-Source Model Comparison, and LoRA Fine-Tuning