GAIConf小聚 · 2026.11.11

我花了三週自動化鼎X的 UI,
然後發現根本不用碰 UI

徐銘宏 Max Hsu
COMMEET 技術長、財報狗 共同創辦人
no-ui-talk.pages.dev
泛舟哥:颱風天就是要泛舟啊,不然要幹嘛?(2015 年 TVBS 新聞畫面)
01第一直覺

老舊系統就是要用
computer use 啊,
不然要幹嘛?

  • —沒有 API、沒有文件
  • —每月 SOP 全靠人點
01嘗試了 3 週讓 Agent 自行處理後

Computer use 卡在三個地方

慢

起步太慢

三週裡換了四種
點畫面的方法,
一次比一次土炮

貴

很燒 token

每一步都要截圖、看圖、再點一次

卡

要人介入

UIPI 吞掉輸入、UAC 要人按、授權席次滿了就停

目標身為資深工程師,就是要做到快速、穩定、便宜 → 那就不能再隔著畫面操作
02換個角度

它是 client–server。
那,封包抓得到嗎?

// 客戶端設定檔裡的入口(已遮蔽)
tcp://‹ERP 主機›/ServiceProvider.rem

.NET Remoting over TCP,沒有 TLS,方法名直接可見

02Wireshark / tshark

同一個操作,錄三次

# 示意指令,主機與埠已遮蔽
$ tshark -f "host ‹ERP› and port ‹埠›" -w run1.pcapng
$ tshark -r run1.pcapng -T fields -e tcp.payload
1,952 B

查詢請求三次一樣長

97.1%

位元組完全固定

0.79 秒

真正的查詢 RPC

03反推協定

不重播封包:用原廠 DLL
正常登入,直接呼叫唯讀方法

Open→Login→ReadClientQueryProject→Close
51 秒
UI 自動化
→
12 秒
DLL 直呼,畫面完全不動
03鼎X Workflow ERP

改讀 COM 介面,無 UI 匯出訂單

Manager.Connect()
CopIS01S.Connect(9 欄封包)
AS_DataRequest('pvdMain', "TC001=‹單別›")
AS_GetRecords → MIDAS 解碼 → JSON / HTML

封包裡有憑證與 SQL,所以改讀 COM TypeLib

COPI06 訂單:20 張、66,744 bytes,解到最後一個 byte

04包成 MCP

唯讀 MCP server:6 個工具

erp_query_orders

COPI06 訂單清單

erp_get_order

單張訂單+明細

erp_get_fields

欄位 schema(不含資料)

erp_list_modules

SmartERP 模組清單

erp_list_programs

模組裡的作業清單

erp_master_data_catalog

主檔目錄

04結果

Agent 問得到,但動不了資料

// erp_query_orders 示意輸出(已遮蔽)
"customer_name": "某○○○",
"customer_po":   "<masked len=10>",

客戶資料預設遮蔽

不收 SQL、不呼叫寫入

最多 50 筆、每次留稽核

MCP client 經 SSH 連入

05最終架構

整條路,沒有一個畫面

AI Agent · MCP client · 架構元件 AI Agent MCP client 唯讀 MCP · 6 個工具 · 架構元件 唯讀 MCP 6 個工具 原廠 DLL · COM/DataSnap · 架構元件 原廠 DLL COM/DataSnap ERP 應用伺服器 · Workflow ERP · 架構元件 ERP 應用伺服器 Workflow ERP SQL Server · ERP 資料庫 · 架構元件 SQL Server ERP 資料庫 SSH
守門唯讀 · 客戶資料遮罩 · 封鎖 SQL 與寫入 · 每次留 log
06帶走三句話

沒有 API,不代表沒有協定

  • 1先問架構,先抓封包,再想 computer use
  • 2不重播封包:用原廠元件正常登入
  • 3唯讀、遮蔽、可稽核,再交給 agent
2026.07現在有 REA,agent 可以直接讀 DLL,當初三週可能縮成三天

謝謝 · 徐銘宏 Max Hsu

maxmilian@gmail.comfacebook.com/maxmilian.hsu