前言¶
用 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 / 幻方无官方从属关系)