URL 配置分享
Dreapex TMM 支持把整个模型快照编码进 URL 的 hash 部分,链接形如:
https://tmm.dreapex.com/#config=<base64url>
只要用户在浏览器中打开这种链接,前端会在加载完成前把模型恢复到链接中携带的状态。这给了远程协作一条零后端依赖的复现路径:把链接发出去,对方直接看到一致的结构、光学参数、Sweep 和优化器配置。
适用场景
| 场景 | 推荐 |
|---|---|
| 在聊天工具里发一个可点开的复现链接 | URL 分享 |
| 跨电脑迁移完整模型 + 计算偏好 | 优先 .tmm 文件 |
| AI Agent 在远程浏览器里完成配置后给用户看结果 | URL 分享(链接由 Agent 端生成) |
| 需要永久存档 | .tmm 文件 |
URL 链接是单向短期复现工具:体积有上限、会随 URL 长度膨胀、容易在转发时被截断。需要长期保存仍然推荐 .tmm 文件。
URL Payload 结构
被编码的对象等同于 localStorage 自动保存的快照,外加一个可选的 settings:
{
version: 1,
savedAt: string,
data: {
structure: StructureElement[],
optics: Optics,
surroundings: Surroundings,
sweepList: SweepItem[],
optimizer: {
objectives: OptimizationObjective[],
variables: OptimizationVariable[],
algorithmSettings: GridOptimizationSettings
}
},
// 仅 URL 分享时出现;localStorage 快照中不含此字段
settings?: SettingsState
}
编码管线为 JSON → DEFLATE → base64url → URL hash,整个过程无任何后端调用。
导入规则
| 数据类别 | 导入方式 |
|---|---|
模型数据(data) | 直接应用,按模块进行 Zod 校验,单模块失败时降级为默认值 |
| 性能设置 | 仅在分享链接中至少有一项 > 当前值 时弹出确认对话框;用户确认后才更新;其余字段静默跳过 |
| 主题、语言、其他偏好 | 不导入(属于本地偏好) |
| 计算结果 | 不包含(数据量大且可重算) |
性能设置仅覆盖以下四项:maxConcurrentRequests、maxSweepCombinations、maxCalculationDataPoints、maxSingleRequestDataPoints。这是为了让分享方提供的「能完整跑完该模型」的保护阈值能向用户传递,但不会偷偷压低用户的现有配置。
与本地自动保存的优先级
页面启动时如果 URL hash 带 #config=:
- URL 配置导入先执行。
- 即使导入失败、即使 hash 立刻被清空,本次会话内的
localStorage自动恢复都会被跳过。 - 之后的编辑照常触发 autosave。
这是为了尊重用户显式带分享链接进入页面的意图,避免老的 autosave 数据悄悄盖掉刚刚导入的内容。
体积安全
编码后 base64url 字符串超过 50,000 字节时,会拒绝生成链接并抛出错误。典型配置压缩后约 0.4–4 KB,远低于上限;只有结构层数 + Sweep 组合 + 大体量入射光谱同时叠加时才需要关注。
Agent / 远程浏览器侧
启用调试桥(URL 加 ?simulation_debug=1)后,可在浏览器控制台里调用:
const url = window.__SIMULATION_DEBUG__.getShareableUrl()
返回当前模型对应的完整分享链接,方便远程 AI Agent 把链接发回给用户。生产页面默认不暴露此接口。
失败提示
| Toast | 含义 | 排查方向 |
|---|---|---|
已从分享链接加载配置 | 全部模块导入成功 | 无需处理 |
分享链接已部分导入 | 部分模块结构异常被降级为默认值 | 在 toast 中查看模块列表,逐项检查 |
分享链接导入失败 | payload 损坏或不可解码 | 链接可能在转发时被截断;要求对方重新发送完整 URL |
与 .tmm 文件的取舍
| 维度 | .tmm 文件 | URL 分享 |
|---|---|---|
| 体积上限 | 实际无上限 | base64 后 50,000 字节 |
| 是否容易被截断 | 否 | 易(聊天工具 / 邮件预览常截断长 URL) |
| 包含范围 | 模型快照 | 模型快照 + 部分性能设置 |
| 适合归档 | 是 | 否 |
| 适合一键复现 | 否(需对方下载文件) | 是(点开即用) |
实际工作中常用组合:发链接给对方做快速复现,同时把对应 .tmm 文件归档到项目目录。