在最近一輪的SpreadsheetBench評(píng)測(cè)中,UniverAgent 取得了68.86% 的 Pass Rate,位列排行榜第一,超越了包括 ChatGPT Agent 和 Excel Copilot 在內(nèi)的主流方案。
SpreadsheetBench 是當(dāng)前電子表格自動(dòng)化領(lǐng)域最具權(quán)威性的公開基準(zhǔn)之一,微軟與 OpenAI 均曾在官方文章中引用其測(cè)試數(shù)據(jù),微軟現(xiàn)任 CEO 薩提亞·納德拉(Satya Nadella)也曾在社交媒體上發(fā)表其評(píng)測(cè)結(jié)果。
![]()
![]()
![]()
這是該榜單出現(xiàn)的第一支中國(guó)團(tuán)隊(duì)。與榜上多數(shù)仍依賴 Excel 環(huán)境執(zhí)行任務(wù)不同,UniverAgent 基于自研的 Univer SDK,實(shí)現(xiàn)了全程脫離 Excel 的表格計(jì)算與推理能力,可視為一次從底層重構(gòu)電子表格智能的技術(shù)躍遷。這一成績(jī)的取得,并非單純依賴于更強(qiáng)的基座模型,而是源于我們對(duì)“電子表格 Agent”這一命題的系統(tǒng)性重構(gòu):從“生成腳本操作文件”的輔助工具,轉(zhuǎn)向“基于在線環(huán)境、具備混合執(zhí)行能力的自主智能體”。
本文將從技術(shù)視角拆解 UniverAgent 在 SpreadsheetBench 上的表現(xiàn),探討它是如何在理解(Understanding)、準(zhǔn)確性(Accuracy)和定位(Positioning)三個(gè)維度上建立優(yōu)勢(shì)的。
![]()
一、SpreadsheetBench:真實(shí)業(yè)務(wù)場(chǎng)景的試金石
許多 AI Demo 看起來很美,但在真實(shí)業(yè)務(wù)中往往“一碰就碎”。SpreadsheetBench 的價(jià)值在于它提供了一個(gè)基于真實(shí)任務(wù)的嚴(yán)謹(jǐn)參考框架。
它包含912 個(gè)來源于真實(shí)場(chǎng)景的任務(wù),涵蓋了從數(shù)據(jù)清洗、復(fù)雜計(jì)算到格式調(diào)整的全流程。與簡(jiǎn)單的“玩具數(shù)據(jù)集”不同,SpreadsheetBench 重點(diǎn)考察三個(gè)互相關(guān)聯(lián)的維度:
1. UNDERSTANDING(理解能力):能否準(zhǔn)確理解自然語言指令中的業(yè)務(wù)意圖,并正確識(shí)別相關(guān)的數(shù)據(jù)區(qū)域(而非誤用無關(guān)區(qū)域)。
2. ACCURACY(結(jié)果準(zhǔn)確性):數(shù)值計(jì)算是否精確,公式邏輯是否正確,數(shù)據(jù)類型(如日期、貨幣)是否符合規(guī)范。
3. POSITIONING(定位準(zhǔn)確性):結(jié)果是否寫入了指定的工作表和單元格,且不破壞原有的表格結(jié)構(gòu)。
這三個(gè)維度彼此牽制、很難被單一技術(shù)路徑同時(shí)兼顧:?jiǎn)渭兊?Python 腳本容易算對(duì)數(shù)值(Accuracy),但很難處理復(fù)雜的格式和位置約束(Positioning);單純的 Excel 公式能處理位置,但難以應(yīng)對(duì)復(fù)雜的邏輯推理(Understanding)。
UniverAgent 的高分,正是因?yàn)樗ㄟ^系統(tǒng)設(shè)計(jì),在這三個(gè)維度上取得了平衡。
二、核心差異:系統(tǒng)工程勝于模型參數(shù)
在 SpreadsheetBench 榜單上,我們可以看到多種技術(shù)路線。UniverAgent 的核心差異在于:我們沒有把電子表格簡(jiǎn)單視為一個(gè) CSV 文件或一個(gè) API 對(duì)象,而是圍繞其結(jié)構(gòu)化、富交互、在線化的特性,設(shè)計(jì)了一整套 Agent 架構(gòu)。
這套架構(gòu)包含三個(gè)關(guān)鍵支柱:
1. 表格友好的上下文工程:通過 `SpreadsheetOverview` 和 `GetRangeData`,構(gòu)建高信噪比的“地圖”與“放大鏡”。
2. CodeAct + Planning 執(zhí)行策略:引入多輪思考循環(huán)與自適應(yīng)緩存,替代脆弱的“一次性腳本”。
3. 在線混合執(zhí)行架構(gòu):Python 負(fù)責(zé)重?cái)?shù)據(jù)分析,JavaScript (Univer SDK) 負(fù)責(zé)精細(xì)表格操作,兩者在在線環(huán)境中無縫協(xié)作。
三、上下文工程:構(gòu)建高信噪比的“地圖”與“放大鏡”
電子表格任務(wù)的一大挑戰(zhàn)是上下文(Context)爆炸。一個(gè)幾千行的表格直接轉(zhuǎn)為文本會(huì)瞬間耗盡 Token 預(yù)算,且丟失關(guān)鍵的結(jié)構(gòu)信息(如合并單元格、公式引用)。
UniverAgent 設(shè)計(jì)了兩層上下文抽象來解決這個(gè)問題。
1. SpreadsheetOverview:全局“地圖”與信息壓縮
`SpreadsheetOverview` 的作用是讓 Agent 在消耗極少 Token 的前提下,看清整個(gè)工作簿的結(jié)構(gòu)。它不僅僅是數(shù)據(jù)的截?cái)嗾故荆艘幌盗兄悄軌嚎s策略。
以一個(gè)簡(jiǎn)單的銷售數(shù)據(jù)表為例,原始電子表格中的內(nèi)容大致如下(只展示關(guān)鍵列):
![]()
以下是一個(gè)典型的 Overview 輸出示例,可以看到它如何將一張包含數(shù)據(jù)的表格“濃縮”為結(jié)構(gòu)化視圖:
# Spreadsheet Context
Spreadsheet Overview
- Total Sheets: 1
- Active Sheet: 'Sales'
## Sheet: 'Sales'
- Sheet Used Range: A1:D35 (35 rows × 4 columns)
- Tables Found: 2
- Formulas Found: 2
### Table 1: A1:D25
|A1,Product|B1,Category|C1,Quantity|D1,Price|
|A2,Laptop|B2,Electronics|C2,5|D2,1200.00|
...(中間行被省略)
|A25,Monitor|B25,Electronics|C25,2|D25,350.00|
### Formulas (0 formula group)
- None
### Table 2: B32:D35
|B32,Category|C32,Total Quantity|D32,Total Sales|
|B33,Electronics|C33,40|D33,48000.00|
|B34,Furniture|C34,10|D34,2000.00|
|B35,Office Supplies|C35,5|D35,1000.00|
### Formulas (2 formula groups)
- C33:C35 ← C33: =SUMIF($B$2:$B$25,B33,$C$2:$C$25)
- D33:D35 ← D33: =SUMPRODUCT(($B$2:$B$25=B33)$C$2:$C$25$D$2:$D$25)
關(guān)鍵技術(shù)點(diǎn)在于:
●結(jié)構(gòu)識(shí)別:自動(dòng)識(shí)別 Table 邊界(如 A1:D25),而非盲目讀取整張表;
●層次化視圖: Spreadsheet -> Sheet -> Table / Formula, 層層遞進(jìn),既展示了結(jié)構(gòu),又避免了信息過載;
●公式組聚合:如上例所示,`C33:C35` 的公式邏輯完全一致,系統(tǒng)將其聚合為一條描述 `C33:C35 ← C33: ...`。這種處理方式能將上百行的冗余信息壓縮為一行,Token 占用減少 90% 以上。
在實(shí)測(cè)中,即便是7000 行的大型工作簿,其 Overview 上下文體積通常也能控制在0.5KB 以內(nèi)。這為 Agent 提供了清晰的全局視野,顯著提升了UNDERSTANDING指標(biāo)。
2. GetRangeData:結(jié)構(gòu)化的“放大鏡”
當(dāng) Agent 需要深入處理特定區(qū)域時(shí),`GetRangeData` 提供了結(jié)構(gòu)化的局部視圖。它返回的不僅僅是二維數(shù)組,而是一個(gè)包含豐富元數(shù)據(jù)的對(duì)象:
============================================================
Range Data: A1:F32
============================================================
Metadata:
? Shape: 32 rows × 6 columns
? Formula groups: 3 (74 total cells)
? Styled cells: 15
Data Preview: (showing first 10 rows)
A B C D E F
1 SN DATE ... TOTAL ... ...
2 001 1/1 ... 1200 ... ...
...
Formula Groups: (top 15 of 3)
? D2:D74 ← D2: =IFERROR(INDEX(...))
? E2:E74 ← E2: =VLOOKUP(...)
Style Definitions: (top 5 of 5)
? 01gvvu6: fs:11|bl:1|bg:#FFFF00(3 cells)
============================================================
這個(gè) `RangeData` 對(duì)象包含三個(gè)維度的信息:
●Values:直接映射為 `pandas.DataFrame`,便于 Python 進(jìn)行向量化計(jì)算。
●Formula Groups:延續(xù)聚合策略,準(zhǔn)確描述區(qū)域內(nèi)的計(jì)算邏輯。
●Styles:將樣式定義(如 `bg:#FFFF00`)與引用解耦,使 Agent 能感知顏色、字體等視覺線索(這在處理“標(biāo)紅異常值”類任務(wù)時(shí)至關(guān)重要)。
這種分層設(shè)計(jì),確保了 Agent 既能“看全”也能“看細(xì)”,為后續(xù)的精準(zhǔn)操作打下基礎(chǔ)。
四、執(zhí)行策略:從“一次性腳本”到 CodeAct 循環(huán)
面對(duì) SpreadsheetBench 中的復(fù)雜任務(wù),試圖生成一段完美的“一次性腳本”往往是徒勞的。UniverAgent 采用了CodeAct (Code as Action)架構(gòu),將執(zhí)行過程拆解為多輪交互循環(huán):
Thought(思考)→ Code(編碼/工具調(diào)用)→ Observation(觀察結(jié)果)
1. 動(dòng)態(tài)規(guī)劃與自我糾錯(cuò)
在每一輪循環(huán)中,Agent 都會(huì)根據(jù) `Observation` 修正自己的認(rèn)知。
● 如果發(fā)現(xiàn)數(shù)據(jù)格式與預(yù)期不符,它會(huì)調(diào)整清洗邏輯;
● 如果寫入結(jié)果后發(fā)現(xiàn)位置偏移,它會(huì)讀取結(jié)果區(qū)域并重新調(diào)整坐標(biāo)。
這種“小步快跑、實(shí)時(shí)反饋”的機(jī)制,極大地提升了任務(wù)的ACCURACY和POSITIONING表現(xiàn)。
2. 自適應(yīng)消息緩存(Adaptive Message Cache)
多輪交互雖然穩(wěn)健,但會(huì)帶來上下文過長(zhǎng)的問題。UniverAgent 引入了自適應(yīng)消息緩存機(jī)制,充分利用 LLM 的 Prompt Caching 功能。系統(tǒng)會(huì)根據(jù)對(duì)話輪數(shù)自動(dòng)插入緩存斷點(diǎn),使得歷史上下文(包括龐大的表格結(jié)構(gòu)信息)無需重復(fù)計(jì)算。這不僅降低了推理成本,更顯著提升了長(zhǎng)鏈路任務(wù)的響應(yīng)速度。
五、架構(gòu)優(yōu)勢(shì):在線環(huán)境與混合執(zhí)行
UniverAgent 的另一大護(hù)城河,在于其運(yùn)行環(huán)境。與基于 `openpyxl / VBA` 等依賴 Excel App 操作本地文件的離線方案不同,UniverAgent 直接運(yùn)行在Univer 在線表格引擎之上。
1. Python + JavaScript 混合雙打
在處理復(fù)雜任務(wù)時(shí),單一語言往往力不從心。UniverAgent 創(chuàng)造性地采用了混合執(zhí)行模式:
●Python (pandas/numpy):負(fù)責(zé)“重”邏輯。例如多表合并、透視分析、復(fù)雜統(tǒng)計(jì)。Python 在數(shù)據(jù)處理上的生態(tài)優(yōu)勢(shì)在這里得到了最大化釋放。
●JavaScript (Univer SDK):負(fù)責(zé)“細(xì)”操作。例如設(shè)置條件格式、調(diào)整列寬、插入圖表、精確寫入單元格。這些是 DOM 無關(guān)的 Headless 環(huán)境,保證了渲染的一致性。
示例場(chǎng)景:
下面我們用一個(gè)簡(jiǎn)單例子展示混合執(zhí)行模式的優(yōu)勢(shì):
任務(wù):從某個(gè)銷售明細(xì)區(qū)域中,按類別匯總銷售額,并把結(jié)果寫回到當(dāng)前表格的指定區(qū)域。
importpandasaspd
# 1. 通過工具獲取數(shù)據(jù)
range_data=get_range_data("A1:C100")# 假設(shè)列為: Category, Item, Amount
df=range_data.to_dataframe()
# 2. Python 側(cè)進(jìn)行數(shù)據(jù)分析
totals=df.groupby("Category")["Amount"].sum()
categories=list(totals.index)
values=list(totals.values)
# 3. JavaScript 側(cè)寫入結(jié)果
js_code=f"""
() => {{
const workbook = univerAPI.getActiveWorkbook();
const sheet = workbook.getActiveSheet();
const categories = {categories!r};
const values = {values!r};
// 從第 0 行第 5 列開始寫入結(jié)果(也就是 F1 開始)
for (let i = 0; i < categories.length; i++) {{
const row = i; // 0-based 行號(hào)
const colCategory = 5;
const colAmount = 6;
sheet.getRange(row, colCategory).setValue(String(categories[i]));
sheet.getRange(row, colAmount).setValue(Number(values[i]));
// 金額列設(shè)置為貨幣格式
sheet.getRange(row, colAmount).setNumberFormat("$#,##0.00");
}}
return {{
success: true,
writtenRows: categories.length
}};
}}
"""
result=eval_js(js_code)
print(result)# => {'success': True, 'writtenRows': N}
這種分工使得 UniverAgent 既擁有數(shù)據(jù)分析的深度,又具備原生表格操作的精度。
2. 在線協(xié)作的天然優(yōu)勢(shì)
基于在線架構(gòu),UniverAgent 的每一次操作都是對(duì)“活”的表格進(jìn)行的。這意味著:
●狀態(tài)自然保持:無需反復(fù)讀寫文件,中間狀態(tài)實(shí)時(shí)駐留在內(nèi)存中。
●所見即所得:Agent 的操作可以實(shí)時(shí)同步給人類用戶,便于人機(jī)協(xié)作與監(jiān)督。
●版本控制:利用在線表格的版本回滾能力,Agent 的誤操作可以被輕松撤銷,大大降低了實(shí)驗(yàn)成本。
六、結(jié)語:邁向自主電子表格工程
SpreadsheetBench 的 68.86% 只是一個(gè)數(shù)字,它背后反映的是電子表格自動(dòng)化從“玩具”走向“工具”的技術(shù)跨越。
UniverAgent 的實(shí)踐證明,通過極致的上下文工程、穩(wěn)健的 CodeAct 循環(huán)以及原生在線的混合架構(gòu),AI 完全有能力勝任復(fù)雜的電子表格工作。我們不再是在生成一段輔助腳本,而是在構(gòu)建一個(gè)能夠理解業(yè)務(wù)、精準(zhǔn)執(zhí)行、自我糾錯(cuò)的電子表格工程師。
未來,隨著模型能力的提升和工具鏈的完善,我們期待看到更多企業(yè)級(jí)場(chǎng)景下的自動(dòng)化落地,讓數(shù)據(jù)處理真正回歸價(jià)值本身。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.