DeepSeek Harness 插件:SpreadJS 驅動

前言

DeepSeek Harness (DSH) 通過插件機制擴展能力,允許 AI Agent 在 Web UI 中與後端資源交互。在電子表格場景下,如果需要在瀏覽器界面中實時打開、新建或修改 Excel 文件,就需要一個前端驅動來橋接 AI 工具與 SpreadJS 引擎。該插件旨在解決 AI 無法直接操作 Web UI 中電子表格的問題。

這是什麼

grapecityxa/dsh-plugin-spreadjs-driver 是一個客戶端插件,由 GrapeCityXA 維護。它允許 AI 在 DSH Web UI 中打開、新建和操作 SpreadJS 工作簿。

其核心邏輯是“橋接”:
* Editor 負責:擁有 Workbook 實例、SpreadJS 引擎、界面加載、保存和恢復。
* Driver 負責:提供 AI 工具、路由聊天請求、執行 JavaScript 代碼。

插件不包含 SpreadJS/Designer 引擎,也沒有運行時依賴,完全依賴配套的 Editor 提供環境。

安裝與依賴

使用前需滿足環境要求:Node.js >= 22.19,DSH 版本 >= 0.2.0-rc.2。

該插件必須與 @grapecity-software/dsh-spreadjs-editor 配合使用。兩者需安裝到同一個 web profile 中:

dsh plugin --profile web add @grapecity-software/dsh-spreadjs-editor
dsh plugin --profile web add @grapecity-software/dsh-spreadjs-driver

配置完成後,在 DSH Web UI 的“設置 → 電子表格編輯器”中選擇該 driver,並等待加載完成。

核心工具

插件提供三個核心工具,用於狀態查詢、文件操作和代碼執行:

  • sjs_live_status:查詢當前聊天的連接狀態及可用工作簿。
  • sjs_live_open:打開工作區文件並等待 Workbook 就緒;通過 create: true 參數可從內置空白模板新建 .xlsx。
  • sjs_live_execute:在 editor 提供的 Workbook 實例上執行 JavaScript 代碼。

典型用法

打開或新建工作簿

在 AI Skill 的上下文中調用工具:

// 新建文件
sjs_live_open({ path: "test-output/report.xlsx", create: true })

執行代碼修改數據

在執行工具中編寫 JavaScript,使用提供的 sheet()、setValue() 和 snapshot() 等輔助函數:

const s = sheet()
s.setValue(0, 0, '合計')
return snapshot()

執行期間,代碼運行在 editor 頁面環境,修改會立即顯示在界面上。

注意事項與機制

  • 獨佔鎖機制:執行 sjs_live_execute 期間,editor 會授予獨佔 lease,阻止用戶在執行期間進行併發編輯、保存或導出操作。
  • 保存時機:修改僅實時顯示在 editor 中。只有當用戶在 Web UI 中手動請求保存時,數據纔會寫入磁盤。腳本中調用 save: true 不會直接觸發保存,而是將狀態標記爲“待保存”。
  • 環境隔離:執行環境提供 spread/workbook、GC、sheet(name?)、snapshot()、console 和 signal(AbortSignal)。結果必須可 JSON 序列化。
  • 兼容性:同一聊天有多個可用實例(如多個標籤頁)時,必須通過 sjs_live_status 獲取完整的 id 並指定給 target,不要自行拼接路徑。
  • 純 CLI 限制:服務端無需安裝 Chrome/Edge,但純命令行模式無法操作工作簿,必須依賴 Web UI。

生態與鏈接

該插件遵循 MIT 許可證。DSH 插件生態與 DeepSeek 或幻方無官方從屬關係。

  • 目錄頁:[catalog_url]
  • 源碼:[github_url]
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜