返回正文目录

0.1.42 文件接入、临时 QM 与跨源能力核对

2026-10-25。本轮使用下载的 Launcher 0.1.42 / CLI 0.1.25,按发行包 README 和脚本在 127.0.0.1:18368 启动隔离实验。Java 17.0.12、Python 3.11.5,文件解析使用随本机工作区运行时提供的 Python 与 openpyxl 3.1.5。既有 18067 服务、注册表、模型与 Chinook 原库均保持不变。

结论与教学方案

能力 本轮核对结果 教材采用方式
Excel/CSV 原生接入 标准 lite 包的 Runtime capabilities、CLI 帮助、完整 MCP 12 工具中未发现文件导入 / 上传入口 用外部 Python 读取,准备独立 SQLite,再接入 Foggy
原生临时 QM 未发现文件注册、会话临时模型、TTL 与释放的公开调用链 使用普通持久 TM/QM,明确更新与清理责任,不称为原生临时 QM
命名数据源 注册、测试、绑定与单 QM 查询通过 文件数据、独立目标库均可各自查询
同库多个 QM 的 Compose 文件账单与准备到同库的教学目标关联通过 可用于小数据准备层对齐;与原生跨源 JOIN 分开说明
不同物理库的直接 Compose JOIN 校验、预览通过,执行失败;没有形成联邦查询 当前不采用,另记校验应提前拒绝的问题
Memory Grid 标准 JAR 含 bridge,未含可选 DuckDB 模块;公开 MCP query route 只列 DSL_CTE,未发现可调用的跨源 handle/alignment 链路 暂不作为本系列已验证入口;不推断引擎所有宿主都无此能力

据此,第二十九章可采用“文件解析 → SQLite → TM/QM → CLI 查询”的组合方案。它已通过真实文件实验,不依赖尚未发布的原生文件入口。第 33 章优先延续已验证的准备层对齐;若后续新增公开跨源入口,再单独验证后更新。

发行包与目录核对

原 0.1.33 核对保留,新结论只覆盖本轮标准 lite 包与已核对公开入口。没有探测私有接口,也未运行可选源码模块。

最小实验

从公开 Chinook v1.4.5 的原始 Invoice 行导出 2012 年规范固定值 .xlsx 与 UTF-8 BOM CSV:83 张账单、47 位客户、20 个账单国家,金额 477.53。客户编号补为五位教学文本,金额沿用样例原单位,来源与转换规则另存。

文件由 Python / openpyxl 读取,先检查表头、固定值、编号类型、唯一键、日期与两位金额,再加载独立 SQLite。类型不符或公式输入按本例合同明确拒绝,未静默丢行、猜单位或把空值补零;这些复杂文件场景尚未纳入本轮通过范围。

通过公开 CLI inspect 实际表结构后建立 TM/QM,校验、加载并实时获取 JSON / Markdown。13 项正常执行通过:

每行结果、排序、金额与空值通过原始只读账单及 Decimal 独立核对。同一文件重载仍为 83 行 / 477.53。重启隔离服务后,绑定与模型保留,再执行总额与前三客户两题通过,另计 2 项执行。这证明本例普通持久模型可复用,不代表临时模型会自动过期。

样例 .xlsx 由 Artifact Tool 制作,保存后的文件用 openpyxl 逐行读取,并由语义明细查询对回原始记录;前导零真实值保留。工具 PNG 预览对纯数字文本编号的显示与实际 XLSX 有差异,本轮未将该预览用作教材配图或编号正确性的证据。首章只验证固定值文件,公式缓存 / 重算、旧 .xls、加密文件、多份增量与性能仍待相应章节验证。

新发现:跨源校验未提前拒绝

不同物理库的两个 QM 分别查询正常,Compose JOIN 的 validate / preview 却返回 valid=true。execute 执行包含两库表名的整段 SQL,失败为 COMPOSE_EXECUTE_FAILED、no such table: file_invoices,与整段计划在目标库执行的表现一致。

公开 Compose 手册说明不支持直接跨源 JOIN,应在校验阶段以来源冲突拒绝。此处按校验缺口记录,不要求未承诺的联邦执行能力。原请求、响应、正常同库对照及关键日志见问题记录,未提交 GitHub。

证据与后续

公开入口清单 · 主实验验收 · 重启与补验 · 文件项目与复跑。所有失败与正常对照分开保存,失败请求不计入通过数;跨源请求在 validate 通过后才尝试执行。

后续按第 29—34 章大纲推进,已据此开始第二十九章。本轮没有升级或重启原 18067、覆盖用户 Skill、修改引擎源码或自动提交反馈。