Mark Ku's Blog

前言:我的 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,同一時間只跑一個請求,忙的時候自動排隊。

記憶:交給 Hindsight

Agent 要記得群組裡聊過什麼、誰負責什麼,我沒有自己寫一套,而是接上 Hindsight,讓它專門處理記憶:

Hermes Agent 透過 Hindsight API 存取記憶:Retain、Recall、Reflect 三個動作,底層是 PostgreSQL + pgvector
Hermes Agent 透過 Hindsight API 存取記憶:Retain、Recall、Reflect 三個動作,底層是 PostgreSQL + pgvector
  • Retain:把對話、日記、文件變成可以查的記憶。
  • Recall:回答前先從記憶裡找相關的事實。
  • Reflect:問題比較複雜時,自己多步搜尋,再整理成答案。

底下是 PostgreSQL 加 pgvector,同一個地方存結構化的事實、實體與關係,也存向量和全文索引。記憶和工具一樣,是 Agent 外面的一層服務,之後換 Agent 框架也帶得走。

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

用聲音跟大家打招呼

最簡單的例子:叫它用聲音跟大家打招呼。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 有多聰明,而在你給了它多好用的工具。

作者

Mark Ku

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

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可。

站長的公司

Vibe Coding 架構規劃與陪跑

團隊已經用 AI 做出小工具,卻怕壞了沒人修、需求一變就不敢改?226 Network 幫你把程式放進 Git、密碼另外保管、排程搬上固定主機,再補上交接文件與測試。

熱門文章

View all
Mark Ku
··638

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··260

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··213

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··208

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
Mark Ku
··206

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調