格物:复杂表格理解工作台
格物是一个本地优先的 Excel 解析与业务理解 Agent。系统将结构解析、语义理解、数据修改分离为三个层次:结构由代码解析,语义由模型理解,修改由人工确认。
格物(Gewu)是一个本地优先的复杂 Excel 解析与业务理解 Agent。系统解析表格结构,用户确认一次解析结果,之后即可进行中文问答、表格解读、数据分析和受控的数据修改。
问题定义#
市面上的表格类 AI 工具建立在同一个假设上:表格结构是规整的。真实业务数据不满足这个假设。常见的非标结构包括四级表头、竖向合并单元格、转置矩阵、一个工作表内的多个并排子表,以及穿插在数据行之间的批注行。
现有工具在此类表格上失效的原因有两类。第一类是通用解析器无法还原表头层级和区块边界。第二类是直接调用大模型:模型产生数值幻觉(计算结果错误)和坐标幻觉(引用不存在的单元格位置),且错误无法被拦截。
技术前提#
本项目建立在一条可验证的技术事实之上:xlsx 文件是一个 zip 容器,内部为 XML 结构。每个单元格的值、公式、合并区域、边框、填充和数字格式,均可通过标准库无损读取。
因此,复杂表格的复杂性集中在排版层,而排版层包含可计算的线索:空行划分区块,空列区分子表,合并区域的拓扑对应表头层级,边框围合对应分组关系。这些线索支持确定性解析,不需要模型参与。
架构:七条分层规则#
系统的行为由七条规则约束。每条规则划分一类职责,并限制其他组件进入。
1. 结构由代码解析。 解析、区块切分、表头树构建、汇总行识别、公式勾稽全部由确定性代码完成。结构层不使用模型。解析规则外置于 rules.json,支持按企业排版定制;项目包含负向测试,验证行为由配置驱动。
2. 语义由模型理解。 模型负责意图解析(将中文问题转换为查询计划)、表格解读和分析评价。系统不执行模型产生的任何数值运算。全部统计量由引擎计算后注入上下文,模型只允许引用。项目中记录过一个实例:模型在核对错误标签时发现了引擎显示层的缺陷,此检查保留为常设校验。
3. 风险由人工确认。 解析结果呈现在确认页,用户检查后执行冻结操作。冻结表示结构定版,并启用数据修改功能。未冻结的文件处于只读状态,修改请求全部拒绝。确认动作每文件执行一次,不在后续操作中重复。
4. 记忆使用语义镜像。 解析结果写入 SQLite 镜像,内容包括表结构、列路径、记录、口径词典、备注挂接和会话历史。全部下游操作只访问镜像,不访问原文件。该设计提供三个性质:理解结果复用、操作全程可审计、模型上下文由镜像按页供给。
5. 写入采用语义定位与硬校验。 修改指令使用自然语言,例如"将 1 月祥瑞福邸的成交套数加 3"。模型只产出查询意图和操作模式,坐标由引擎查询镜像解析。写入前执行八项校验:未冻结、忽略行、只读标记、表头区域、汇总行、公式单元格、合并非左上格、越界,任一命中即拒绝。写入流程包含 diff 预览、人工确认、写后校验、自动备份和撤销支持。操作数由模型逐字复制,不经计算。
6. 文件变更由谱系接管。 系统以文件路径为身份追踪版本。用户通过本工具产生的修改无缝延续冻结状态。外部数值修改在重新导入时自动刷新,冻结保持。结构变更触发变化清单,未变区块的人工标记自动迁移,复核后重新冻结。冻结后发生外部修改的文件,写入前 hash 校验拒绝操作。
7. 修正结果沉淀为规则。 用户做出的全部判断持久化,并随文件版本迁移:区块类型修正、只读标记、口径词典、备注挂接。每次修正同时进入规则库和回归基线(当前为 117 个区块指纹)。由此得到的成本结构是:维护工作量随模板类型收敛,不随文件数量增长。同类模板的后续文件通常无需人工干预。
交付形态#
系统提供三种运行方式:网页版(将 xlsx 文件拖至启动脚本,浏览器打开工作台)、桌面版(Tauri 打包的 gewu.exe,支持拖拽文件)、命令行模式。系统本地运行,数据不出本机。配置 LLM 密钥后启用完整语义链路;未配置时,问答功能以纯代码规则运行。
截至 2026-09-29,测试门禁包含回归脚本(黄金快照 117 区块指纹与数据不变量)和 pytest 测试套件,修改引擎前后均须执行。
方法论结论#
本项目的结论是:在错误会产生实际损失的领域,AI 系统的可靠性取决于职责划分,不取决于模型能力。结构归代码,语义归模型,风险归人工,修正沉淀为规则。这套划分方法适用于其他文档理解类 Agent 的设计。