huluTable:DeepSeek Harness Web 裏的免後端在線表格插件

前言

用 DSH 做開發或日常使用時,常有一類躲不開的活:管理一批結構化數據——任務清單、測試用例、客戶記錄、臺賬。常見的做法是開一個 Excel 文件來回導,或者自建數據庫加頁面,兩條路都不輕。huluTable 走了第三條路:它是一個 DeepSeek Harness Web 客戶端插件,安裝後在側邊欄底部出現一個 “Tables” 入口,點開是全視口的表格工作區;所有數據直接存放在瀏覽器的 IndexedDB 裏,不需要數據庫,也不需要服務端,開箱即用。

DSH 的理念是「一切皆插件」,huluTable 是這一思路在 Web 客戶端側的一個具體落地。

這是什麼

huluTable(npm 包名 dsh-hulutable-plugin,MIT 許可證,由 huluwocom 維護,當前發佈版本 v0.1)是一個 DeepSeek Harness bundle:一個攜帶補丁配置層(dsh.bundle.patch)的 npm 包。

有一處實現細節值得說明:dsh-web-app 自帶一行內置的 ui-hulutable,指向 monorepo workspace 包;這個 bundle 的 cordis.patch.yml 會禁用該內置行,並插入一個獨立行(補丁無法重命名行,所以採用 disable + insert 的方式)。安裝後生效的是獨立版本,而不是 monorepo 內置的那份。

關於命名:GitHub 倉庫是 huluwocom/hulutable-dsh-plugin,安裝命令裏寫作 github:huluwocom/HuluTable,npm 包名是 dsh-hulutable-plugin,本文統一稱 huluTable。

核心功能

表格庫與備份

表格庫支持列表、搜索、標籤、星標;可新建空白表,也可以從 6 個模板創建:Customer CRM、Projects、Finance ledger、Attendance、To-dos、Inventory。表支持重命名、複製、刪除;刪除進入回收站,保留 30 天后過期。表格庫首頁提供一鍵 JSON 備份/恢復。

網格編輯

  • 虛擬滾動,10k+ 行數據流暢渲染;
  • 雙擊單元格編輯,拖選或 Shift 擴展選區;
  • 複製粘貼兼容 Excel 的 TSV 格式;
  • 拖拽填充柄可遞增、遞減、按序列或複製填充;
  • 撤銷/重做是增量級(delta)的,只記錄變化的單元格與結構,與表格大小無關;
  • 長按拖拽可重排行/列;行、列支持複製、剪切、粘貼和右鍵菜單。

所有改動都可撤銷。

列類型、校驗與條件格式

  • 18 種列類型;
  • 列設置面板:必填、默認值、寬度、凍結、隱藏、描述;
  • 格式校驗:手機號、郵箱、URL、數字、長度、正則;
  • 下拉選項支持背景色,支持級聯選擇(map / source 兩種模式)與單擊即選的下拉選擇器;
  • 列邊緣拖拽調寬,凍結列按位置生效,重排行列後凍結跟隨;
  • 條件格式:按行/列範圍配置規則(等於、區間、包含等)上色,在列設置裏管理。

篩選、排序與統計

  • 表頭篩選:文本、數字、多選下拉、顏色;
  • 排序支持多級(Shift 疊加),篩選條件支持 AND/OR 組合,可一鍵清空;
  • 底部統計欄:求和、平均、最大、最小、計數;
  • 每列可設目標進度條,表頭顯示 chip,另有目標面板(goals panel)。

公式

fx 公式欄內置 30+ 函數(SUM、AVERAGE、IF、CONCAT、TODAY、ROUND 等),支持單元格與區間引用,修改後自動重算,且只有公式單元格參與重算。公式欄提供模板快捷插入。

視圖

同一張表可在四種視圖間切換:

  • Grid:網格編輯視圖;
  • Kanban:看板,按某個下拉列分組,拖動卡片即可推進(可當 CRM 漏斗用);
  • Calendar:日曆,按日期列展示月視圖,可跳到最早日期;
  • Chart:圖表,支持柱狀、餅圖、漏斗。

視圖支持新建、複製、重命名、刪除,並綁定各自的列。

導入導出

  • 導出 .xlsx / .csv,可選整表或當前篩選行;
  • 導入時自動做表頭檢測和類型推斷,先預覽再確認,可選擇新建表或追加到現有表。

編輯歷史與備註

每個單元格保留最近 5 條編輯歷史,懸停即可查看;單元格可加備註(角標 + 彈層,支持添加、編輯、刪除)。

易用性

界面提供中英文切換;空表有引導;表頭吸頂;橫向滾動時行號和凍結列保持固定。

性能與數據

  • 虛擬滾動只渲染可見窗口(±4 行/列的 overscan),滾動經 rAF 節流,單元格用 React.memo 緩存;
  • IndexedDB 寫入做了防抖(500ms,pagehide 時立即寫入);存儲不可用(如隱私模式)時降級爲內存模式;
  • 首次加載約 1.6MB(含 SheetJS,gzip 後約 400KB),之後走瀏覽器緩存。

安裝與啓用

前置要求:已安裝 dsh CLI,且所用的 profile 包含 @deepseek-ai/dsh-web-app(web surface)。

方式一:本地 checkout(開發或試用)

dsh plugin --profile web add /path/to/HuluTable
dsh web                          # 打開 http://127.0.0.1:3080

第一條把本地目錄作爲插件加入 web profile,第二條啓動 Web 客戶端。

方式二:從 GitHub 安裝(源碼 + 自動構建)

dsh plugin --profile web add github:huluwocom/HuluTable

這個倉庫的 prepare 腳本會直接從 src/ 構建 lib/(自包含轉譯,不做類型檢查)。pnpm ≥10 默認拒絕運行 git 依賴的構建腳本,需要把 dsh 打印出的包鍵原樣寫入該 profile 的 pnpm-workspace.yaml:

allowBuilds:
  dsh-hulutable-plugin: true

然後重新執行 add。建議固定 commit(github:you/HuluTable#<sha>),避免後續 push 靜默改變實際運行的代碼。

方式三:tarball(預構建,無需構建權限)

dsh plugin --profile web add ./releases/dsh-hulutable-plugin-0.1.0.tgz

releases/ 目錄提供 pnpm pack 產物及對應的 SHA-256 校驗和,也可以自己執行 pnpm pack 生成。

補充兩點:等包發佈到 npm 後,dsh plugin --profile web add dsh-hulutable-plugin 將與上述三種方式等效;無論哪種方式,安裝後啓動 dsh web,側邊欄底部即可看到 “Tables” 入口。

典型用法

1、啓動 dsh web,打開 http://127.0.0.1:3080,在側邊欄底部點 “Tables” 進入表格庫;
2、新建一張空白表,或從 6 個模板(Customer CRM、Projects、Finance ledger、Attendance、To-dos、Inventory)中選一個;
3、在網格里雙擊單元格錄入,拖選區域後用填充柄複製或按序列填充,右鍵行/列調出菜單,填錯了隨時撤銷;
4、數據成型後切換視圖:按某個下拉列切到看板拖卡片,按日期列切到日曆看月視圖,或在圖表視圖裏出柱狀/餅圖/漏斗;
5、需要與 Excel 互通時,導出 .xlsx / .csv(整表或當前篩選行),或導入 Excel 文件——插件會做表頭檢測、類型推斷並給出預覽,再決定新建表還是追加;
6、定期用表格庫的一鍵 JSON 備份/恢復保全數據。

開發與測試

日常開發命令:

pnpm install            # 安裝依賴,prepare 會自動執行構建(tsdown → lib/)
pnpm run build          # 構建 node 半邊 + 瀏覽器半邊(lib/index.js、lib/invariant.js、lib/client.js)
pnpm run watch          # 監聽變更並重建
pnpm run pack           # 構建並打包 tarball 到 releases/

環境要求:Node >= 22.19.0,pnpm 11.7.0(對應 package.json 的 engines 與 packageManager 字段)。

類型檢查與測試需要本地 SDK:@deepseek-ai/* 的 SDK 包尚未發佈到 npm,運行時由 web shell 提供平臺模塊,因此類型檢查和測試套件需要先鏈接一個本地的 deepseek-harness checkout:

pnpm link-sdk /path/to/deepseek-harness   # 寫入 link: devDependencies 並執行 pnpm install
pnpm run typecheck                        # tsc --noEmit
pnpm run test                             # vitest(jsdom)
pnpm run coverage                         # 100% 覆蓋率門檻
pnpm run lint                             # oxlint

構建本身(prepare / build)不需要 SDK:類型導入在轉譯時被擦除,跨插件的值導入會在構建期被純度檢查(purity gate)拒絕。

適用場景與注意事項

適合的用戶:希望在 DSH Web 客戶端內直接管理結構化數據、又不想爲一張表部署數據庫和服務端的人;需要與 Excel 文件互通的場景也在覆蓋範圍內。

使用前注意:

1、插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。huluTable 採用 MIT 許可證,源碼公開在 GitHub;
2、數據存放在瀏覽器 IndexedDB,存儲不可用(如隱私模式)時會降級爲內存模式,建議用一鍵 JSON 備份/恢復做定期保全;
3、回收站條目保留 30 天,過期即清理;
4、從 GitHub 安裝時建議固定 commit,避免遠端更新靜默改變運行內容;
5、pnpm ≥10 環境需在對應 profile 的 pnpm-workspace.yaml 配置 allowBuilds 後重新 add,見上文安裝部分。

結尾

huluTable 把「一張能用的在線表格」做成了 DSH 的一個插件:不需要數據庫和服務端,數據留在瀏覽器裏,從模板建表、網格編輯、公式篩選到看板、日曆與 Excel 導入導出,都在客戶端內完成。如果你正在用 DSH Web 客戶端,裝上試一下的成本很低。

倉庫地址:https://github.com/huluwocom/huluTable-dsh-plugin
社區目錄頁:https://www.skillhub.cn/plugins/huluwocom/huluTable-dsh-plugin (該目錄爲社區維護的獨立站點,與 DeepSeek / 幻方無官方從屬關係)

羽毛球分组比赛记分
小程序二维码

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

小夜