FractalAgent Demo Review Board

四份实现,四种工程水位。

本页汇总了 4 个“高性能、安全计算的响应式电子表格”实现的人工评测结果。 评测依据包括静态代码审查、公式解析链路检查、依赖图更新逻辑核验,以及浏览器中的关键用例实测。 这里不是做 UI 选美,而是看谁真的把词法分析、局部更新、环检测和错误传播做对了。

评分维度:5 项 / 满分 100 实测用例:范围函数、依赖切换、循环传播 结论基于当前仓库版本

题目原文

可直接复制给模型复用,内容保留了单文件实现、性能、安全和图依赖处理的完整要求。

评分要素

满分 100 分,按五个维度扣分与评级。这里把优秀、及格和翻车边界拆开,方便直接按实现质量打分。

架构与状态管理

20
优秀

实现清晰的数据驱动架构,State 和 View 明确剥离,并维护独立的依赖收集图。

及格

有状态存储,但与 DOM 操作耦合较高,结构还能工作但不够干净。

翻车

直接读写 `td.innerText` 或把依赖关系塞进 DOM `dataset`,没有真正的状态管理。

公式解析与计算安全

25
极佳

手写 AST 或用 Shunting-yard 做安全求值,能正确处理括号、运算优先级,以及 `SUM(A1:B3)` 这种二维范围展开。

勉强

没用 `eval()`,但靠字符串替换和 `split()` 生算,优先级、括号或范围解析存在明显漏洞。

违规

仍使用 `eval()`、`new Function()` 或等价动态执行方式。

依赖图与响应式更新

25
优秀

构建正确的依赖图,每个单元格明确维护 `deps` 和 `subscribers`,更新时只做局部级联重算。

瑕疵

能联动更新,但会附带冗余重算,影响精确性和性能。

翻车

每次输入都重算所有 10000 个单元格,或者根本没实现正确的级联更新。

循环依赖与错误处理

15
优秀

在构图或重算阶段做真正的环检测,发现后渲染 `!CYCLE`,相关链条错误可控传播,不会爆栈。

暴力

靠最大递归层数之类的兜底手段硬挡死循环,虽然没卡死,但算法设计不够合格。

翻车

出现 `Maximum call stack size exceeded`、浏览器卡死,或错误传播逻辑明显失真。

渲染性能与 DOM 交互

15
优秀

初始化只渲染一次,对整个 `<table>` 或 `<tbody>` 做唯一事件委托,单元格变更时只更新必要节点。

瑕疵

使用了事件委托,但状态变更后仍整表 `innerHTML` 重绘,输入时会明显卡顿。

翻车

给 10000 个 `<td>` 分别绑定事件,初始化和内存占用都显著失控。

心理预期可以这样把握:优秀实现通常会把单元格状态、依赖关系、公式解析和局部渲染拆成几条清晰链路,而不是把计算直接揉进 DOM 事件里。

评测结果

评分标准沿用题面给出的五大项:架构与状态管理、公式解析与计算安全、依赖图与响应式更新、循环依赖与错误处理、渲染性能与 DOM 交互。

#01 综合第一
93 / 100

Gemini 3.1 Pro

唯一接近可直接交卷的版本,正确性和工程组织都显著领先。

唯一接近可交卷
范围函数 通过,`SUM(A1:B2)` 实测为 10
依赖切换 通过,改依赖后只跟随新源更新
环与传播 通过,环显示 `!CYCLE`,依赖链显示 `!ERR`

这份实现的优势在于状态和视图分层明确,公式词法分析与计算逻辑可读,依赖图也真正参与了局部更新。唯一没给满分,是循环处理仍用了递归 DFS,严格按题面“绝对不能引发 Stack Overflow”的上限标准,仍要保留一点风险分。

架构与状态
19
公式安全
24
依赖更新
24
循环与错误
11
渲染与 DOM
15
#02 次优可用
69 / 100

Gemini 3.0 Flash

主体可用,但算法细节不够干净,属于“能跑但不够严谨”的版本。

主体可用
范围函数 通过,二维范围能正确展开
依赖切换 表面通过,但依赖清理不精确
环与传播 错误,依赖 `!CYCLE` 的单元格也显示 `!CYCLE`

这份版本的主框架没有塌,事件委托、局部渲染和范围聚合都做出来了,但错误传播不符合题意,而且词法器会吞掉非法字符,导致 `=1$2` 这类输入被错误地算成合法结果。更关键的是,依赖图旧边没有清理干净,精准性被打了折扣。

架构与状态
13
公式安全
18
依赖更新
16
循环与错误
7
渲染与 DOM
15
#03 结构尚可
46 / 100

Hunter Alpha

有状态管理和 Shunting-yard 外形,但核心要求掉了两项。

结构不差,但核心失血
范围函数 失败,`SUM/AVG` 参数栈结构不成立
依赖切换 结果可变,但计算仍是全表重算
环与传播 通过,环和错误传播基本成立

它的问题不是“写少了”,而是“写错了位置”。范围函数执行阶段要求拿到单元格引用字符串,但前面的 RPN 早已把它们算成值,所以示例一加载就会出现 `!ERR`。同时,每次输入都调用全量 `recalculateAll()`,这与题目要求的精准级联更新相冲突。

架构与状态
16
公式安全
7
依赖更新
0
循环与错误
10
渲染与 DOM
13
#04 视觉最好
43 / 100

Healer Alpha

UI 最完整,但核心算法正确性最差,是典型“表面好看、底层不稳”的实现。

界面加分,算法失分
范围函数 失败,词法阶段不识别范围结构
依赖切换 失败,旧依赖清理方向写反
环与传播 失败,`F1=F2, F2=F1` 实测未报环

这份实现最大的问题是依赖图维护方向错了,导致局部更新和循环依赖检测一起失效。再叠加范围函数没有真正进入 token 流,最终表现就是界面像一套完整产品,但核心题意基本没有落到正确行为上。

架构与状态
17
公式安全
6
依赖更新
7
循环与错误
0
渲染与 DOM
13

引用链接

以下链接对应本页评测对象,可直接打开各个 demo 版本进行对照查看。

01 · Gemini 3.1 Pro ./01-gemini-3.1pro.html
访问页面
02 · Gemini 3.0 Flash ./02-gemini-3.0-flash.html
访问页面
03 · Hunter Alpha ./03-hunter-alpha.html
访问页面
04 · Healer Alpha ./04-healer-alpha.html
访问页面

注:本页呈现的是当前仓库版本的相对评测结果。分数不是审美打分,而是围绕题面要求的工程实现能力进行量化:谁更安全、谁更精准、谁更接近真正可交付。