讓 DSH 真正懂得使用表格 2:在 DSH 修改已開啟的表格
让 DSH 真正会用表格 2:在 DSH 里改打开的那张表
DSH 會直接修改畫面上正在使用的 SpreadJS 工作簿,但不會立即寫入磁碟;用戶確認儲存後,改動才會成為檔案的一部分。未儲存的改動會按檔案路徑暫存,重新開啟時可恢復;儲存時則會經過臨時檔案寫入、內容指紋核對及工作區範圍檢查,以避免覆蓋外部改動或寫出工作區。
2026-10-26 6
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介: 《让DSH真正会用表格》第二篇,聚焦AI改表“为何文件没变”。揭秘改动仅作用于屏幕上的活工作簿(非副本),磁盘文件保持原样——这是为避免误覆盖而设计的“提案式编辑”。保存前需用户确认,并经三重校验保障安全。改动不丢、不串、可回溯。
《让 DSH 真正会用表格》系列第二篇。上一篇《DSH 的表格插件,补上了短板》讲表格为什么难,这一篇从一个容易让人心里一紧的瞬间讲起。
让 AI 把金额列改成千分位。
它改了。屏幕上明明白白,数字之间多了逗号,表头变粗,总计行有了一层底色。没有加载,没有刷新。
然后随手在 Excel 里打开同一个文件。a
数字还是老样子。
第一反应通常是,没保存?刚才那些改动呢?
我第一次看到这个行为也愣了一下,回头翻了一遍实现才放心。文件确实没变。改动还在屏幕上,只是没有写进磁盘。这是设计。
这件事值得从头说清楚,因为它牵着一个更大的问题。AI 改的东西,什么时候才算数。

先说清楚,屏幕上那份是真的
要回答文件为什么没变,得先说清楚变的是什么。
侧边栏里开着的是一个活的 SpreadJS 工作簿对象,正在被渲染。看到的每一行、每一道边框,都是它画出来的。
AI 的改动落在它身上。同一个对象,中间没有副本,也没有先导出再导回这一步。
这里可以借一个画面。两个人站在同一块白板前,一个人擦掉一个数字、写上新的,另一个人当场就看见了。没有拍照,没有传真。改的和看的,是同一块白板。
这个区别决定了后面所有事。如果改的是副本,世界上就有两份真相,一份在屏幕上,一份在别处,中间隔着一次同步。同步会失败,会延迟,会因为谁先谁后而打架。改的是同一个对象,就只有一份真相。屏幕上是什么,就是什么。
副本模式里其实不止两份。AI 手里一份,屏幕上渲染一份,磁盘上还躺着一份原件。三份里任何一份没对上,看到的东西和文件里的东西就开始分叉。分叉之后,没有人能说出哪一份是对的。
屏幕上那份是真的。改动没有白干,它就在那儿。
文件为什么没动
这份活的工作簿,和磁盘上的那个文件,是两样东西。改动发生在工作簿里,文件没有参与。它安安静静躺在磁盘上,还是打开时的样子。

这是刻意的。
网页应用大多默认自动保存,用久了会形成一种预期,改了就存了。表格编辑器没有跟这个预期走,因为表格的改动常常是整片版式,改一个字段的情况反而少。自动保存一次,可能就把一次试验性的调整写进了文件。
一条 AI 的改动在成为事实之前,先是一个提案。看过,觉得行,它才变成文件的一部分。这个顺序看着慢,实际是在保护用户。可以看,也可以改主意。底色深了浅了,都能再调。整个过程里,磁盘上的东西一直没被碰过。
如果 AI 一改就写盘,面前就没有一张可以商量的表了,只有一份随时可能被覆盖的文件。改错一个字,也得先接受它已经写进磁盘这个事实,再去修。那不是一个好的工作方式。
我们内部也有人第一次用时以为坏了,跑来问是不是没存上。这个误会本身说明设计是对的。改动停在看得见的地方,不会悄悄发生。
那改动会不会丢
这是紧接着的担心,也很合理。
不会丢。机制值得说清楚,因为它和自动保存不是一回事。
改动留在工作簿里。切走标签页再切回来,它还在。关掉标签页,DSH 会把这份未保存的工作簿按文件路径收好。下次打开同一个文件,只要磁盘上那份没被别人动过,改动会被放回来,面板角落也会说明它是从缓存里恢复的。
多个文件之间也不会串。缓存按文件路径分开,A 文件的改动不会出现在 B 文件里。同名文件在不同目录下,也各自算各自的。
如果磁盘上那份已经变了,另一个会话里的 AI 改过,或者自己用 Excel 存过一版,它不会默默用其中一份盖掉另一份,而是给出选择。用手里的改动,还是用磁盘上的版本。
整页刷新是另一回事。浏览器会先拦一下,要求确认是否离开。
改动有一个去处。磁盘有没有变,取决于最后那次确认。
什么时候文件才会变
只有一种情况,按下保存。
这是这条链路上唯一一次真正的落地。也正因为只有这一次,它值得多花点功夫。
我们在这里放了三道检查。
第一道,写入不是覆盖。保存时先在同一个目录里写一个临时文件,写完再一次性改名替换。任何时刻有别的程序在读这个文件,读到的要么是旧的完整版,要么是新的完整版。读到一半的情况不存在。
第二道,保存前对指纹。打开文件时记下它的内容指纹,保存前再核一次。文件在外部被改过时,右侧面板会先刷新到磁盘上的最新内容。如果改动恰好发生在保存的瞬间,宿主会拿基线再核一次,对不上就拒绝写入。它不会替人把别人的改动盖掉。
第三道,写不出工作区。目标必须落在当前会话的工作区里,越界直接拒绝。
三道检查各自只做一件事,合起来让另一件事成立。当一个工作区里同时有多个 AI、多个人在动文件时,这套东西还能一起用。
没有这三道检查,AI 改表格只能在一个人的桌面上成立。放进团队工作区,靠的就是它们。
冲突检测的意义在多会话场景里最明显。两个 AI 同时改一份表,一个改表头,一个加列。谁后保存,谁就会看到拒绝提示,不会把前一个人的改动悄悄盖掉。提示本身不解决问题,但它把谁先谁后变成了一个可以处理的问题。
谁来决定这张表由谁改
讲到这里,还有一个前提没说。AI 怎么拿到侧边栏里打开的那张表。
答案在 DSH 的设置里。「电子表格编辑器」这一页有一个开关,决定由谁来驱动打开的那张表。
这个开关是每个部署自己的事。同一个团队里,有人用我们的 driver,有人以后可能用别的实现。选择记在各自的环境里,不互相影响。
开关的默认状态是没有启用 AI。对不了解这套东西的人来说,这个默认值更安全。
这两个插件是成对安装的,侧边栏里的表格编辑器,和给 AI 用的表格 driver。今天这个开关指向我们提供的 driver。以后如果这一层有新的参与者加入,这个开关同样是它们的入口,驱动同一个编辑器,服务同一张打开的表。
不启用它的时候,编辑器本身就是一个正常的表格工具。能开、能看、能改、能存。想自己动手的时候,它不会挡路。
以后
这次讲的是一条指令改一张表。往后走,我们希望模型在这条路上需要即兴发挥的地方越来越少。更多的操作会以现成工具的形式提供,模型负责选择和填参数,不需要每次现场写一段程序。
工具会越来越厚。不变的是那个顺序。AI 先改看着的那张表,确认,文件才变。
工具变多之后,模型需要现场发挥的空间会变小,但这不妨碍它仍然重要。选哪个工具、按什么顺序组合、改完怎么验证,这些判断仍然在模型这一侧。
这也是这套东西愿意把工作簿留在屏幕上的原因。选择权在用户手里,模型才有机会解释自己为什么这么改。
想试试
來源:阿里雲開發者社區 AI · developer.aliyun.com