Lattice-app 详细介绍
Lattice-app 是一个面向材料科学的本地桌面工作台。它把交互式助手、谱学分析、晶体结构、计算脚本、文献证据、结构化结果和人工复核放到同一个可追溯循环里,用来加速“表征 -> 解释 -> 建模 -> 决定下一轮实验”的日常流程。
package.json
src/ 界面、交互式助手编排、Zustand 状态、Artifact 卡片、工作区文件树、编辑器、画布与状态栏。
electron/ 窗口生命周期、IPC、授权接口代理、Python worker 管理、计算任务、工作区文件系统、文献库和同步。
worker/ 通过 stdio JSON-RPC 暴露科学工具:谱图、XRD、XPS、Raman、PDF、RAG、CIF、web fetch/search。
resources/conda-env/ 面向 Python、LAMMPS、CP2K、phonopy、BGMN 等本机计算任务;当前路线不依赖 Docker。
桌面端负责界面、会话、结构化结果和工具编排;Python worker 承担谱学、PDF、RAG、CIF 等科学计算。
帮助材料科学用户更快完成表征、解释、建模、计算和下一步实验决策,而不是替代专家判断。
覆盖 XRD、XPS、Raman、FTIR/通用谱、文献、写作、计算、结构、工作区、MCP/plugin 等工具组。
1. 产品定位
Lattice-app 的目标不是让自动化系统替代材料科学家的判断,而是把材料科学中重复、耗时、容易丢上下文的步骤组织起来:读取谱图、识别格式、调用确定性工具、搜索候选相或元素、生成可审阅结果、整理文献证据、保存报告和中间产物。
这类工作在真实实验室里通常分散在 Origin、Excel、PDF 阅读器、Python 脚本、XRD/XPS 专用软件、论文管理器和聊天窗口之间。Lattice 把这些对象收进一个桌面工作区:用户与交互式助手在同一套结构化结果、工具调用记录、工作区文件和文献库上协作。
因此,Lattice 更像“材料科学工具工作台”,而不是自动替用户给出最终结论的系统。它加速试错法里最慢的几个环节,但关键结论仍然要求用户审阅、确认和负责。
2. 系统架构
Lattice-app 当前由三个主要运行时组成:React 渲染端、Electron 主进程和 Python worker。计算工作台还可以调用打包的本地 conda 环境,用于 Python、LAMMPS、CP2K、phonopy 等任务。
src/ electron/ worker/ resources/conda-env/ User / materials scientist
-> React Renderer
-> Agent Orchestrator
-> Artifact Canvas
-> Workspace Explorer
-> Zustand Stores
<-> Electron Main Process
-> Authorized Interface Proxy
-> Python Worker Manager
-> Compute Runner
-> Workspace FS
-> Library / Literature IPC
-> WebDAV / rclone Sync
<-> Python Worker over stdio JSON-RPC
-> spectrum / xrd / xps / raman / paper / rag / cif / web tools 3. 助手工具循环:从交互到工具执行
Lattice 的编排器不是简单转发用户问题。它会构造上下文、筛选工具、调用已授权接口、执行工具、记录任务步骤、把工具结果回传给编排流程,再生成下一步或最终答案。这个循环让最终回答建立在真实工具输出上。
执行控制
循环有最大迭代次数、重复调用检测、AbortSignal 取消传播和接口错误处理,避免工具链无限执行。
上下文筛选
工具按会话中的 artifact 类型和用户消息动态筛选;有谱图时开放谱图工具,有结构 artifact 时开放结构工具。
任务轨迹
每次工具调用都记录输入、输出、状态和关联 artifact,用户可以回看结论形成过程。
人类介入
工具声明 cardMode:silent、info、review、edit。候选相、写文件、峰拟合等步骤可以审批、编辑或拒绝。
4. 工具目录
Lattice 的工具通过统一 LocalTool contract 注册:name、description、inputSchema、trustLevel、cardMode、contextParams 和 execute。模型不能直接访问系统资源,而是必须通过这些工具 schema 发起受控调用。
| 工具组 | 代表工具 | 用途 |
|---|---|---|
| 核心与元工具 | context_usage, list_artifacts, get_artifact, focus_artifact, enter_plan_mode, ask_user_question, task_create/list/update, tool_search | 维持交互式助手的任务状态、上下文读取、澄清问题、计划模式和工具发现。 |
| 工作区 | workspace_read_file, workspace_write_file, workspace_edit_file, workspace_glob, workspace_grep, workspace_bash | 读写本地工作区、搜索文件、生成修改提案、执行命令。写入和主机命令执行需要审批。 |
| 谱图 | open_spectrum_workbench, detect_spectrum_type, detect_peaks, smooth_spectrum, correct_baseline, plot_spectrum, compare_spectra | 通用谱图解析、类型识别、寻峰、平滑、基线校正、绘图和多谱对比。 |
| XRD / XPS / Raman | xrd_search_phases, xrd_refine, xps_charge_correct, xps_fit_peaks, xps_validate_elements, raman_identify | 相归属、局部精修、XPS 校正和拟合、元素确认、Raman 库谱识别。 |
| 文献与文献库 | literature_search, literature_fetch, list_papers, paper_rag_ask, auto_tag_paper | OpenAlex/arXiv/Crossref 检索、开放 PDF 获取、文献入库、RAG 问答和自动标签。 |
| 写作与报告 | research_plan_outline, research_continue_report, research_draft_section, research_refine_report, research_finalize_report | 从主题澄清到大纲、分节写作、连续性修订和最终报告收束。 |
| 计算与结构 | compute_create_script, compute_run, compute_status, compute_experiment_*, build_structure, structure_modify, export_for_engine | 生成和执行脚本,运行参数实验,构建/修改晶体结构,导出到 LAMMPS、CP2K 等计算引擎。 |
| LaTeX 与扩展 | latex_edit_selection, latex_fix_compile_error, latex_insert_figure_from_artifact, latex_add_citation, mcp_call_tool, plugin_call_tool | 编辑论文片段、修复编译错误、从 artifact 插图、自动引用,并接入 MCP / plugin 外部工具。 |
5. Python worker:科学计算边界
Python worker 是 Lattice 的科学计算执行边界。Electron 主进程以 subprocess 启动它,双方通过 newline-delimited JSON-RPC 通信。worker 启动后会发送 ready event,列出可用工具和 Python 版本;每个请求在独立线程里 dispatch,慢工具不会阻塞读循环。
spectrum.detect_peaks spectrum.assess_quality spectrum.smooth spectrum.baseline xrd.search xrd.refine xrd.refine_dara xps.lookup xps.charge_correct xps.quantify xps.fit xps.validate raman.identify paper.read_pdf rag.retrieve library.fetch_doi cif_db.get cif_db.search cif_db.stats web.fetch web.search worker 对单行 JSON-RPC 请求有 4 MB 上限,避免异常输入导致内存压力。工具依赖采用 lazy import:某个科学包缺失时,worker 仍能启动,调用对应工具时返回明确错误提示。
6. Artifact 工作区
Artifact 是 Lattice 的核心数据单元。它不是普通聊天附件,而是带类型、标题、创建时间、更新时间、sourceStepId、sourceFile、parents、params 和 payload 的结构化对象。图谱、拟合、结构、计算、论文、报告和假设都以 artifact 形式在工作区中持久化。
{
id,
kind,
title,
createdAt,
updatedAt,
sourceStepId,
sourceFile,
parents,
params,
payload
} 7. 典型工作流
XRD:从原始图谱到相归属与精修
- 1 用户导入 .raw / .xy / .csv 等谱图文件,或直接在对话中引用工作区文件。
- 2 交互式助手调用 open_spectrum_workbench 创建 xrd-pro artifact,并把谱图放入可交互工作台。
- 3 detect_peaks 执行寻峰,结果以可编辑卡片返回;峰位、强度、FWHM 可审阅后进入下一步。
- 4 xrd_search_phases 查询 Materials Project XRD 数据库或内置参考表,生成候选物相、评分和匹配峰。
- 5 需要进一步拟合时,xrd_refine 会基于候选相和 CIF 数据调用 worker 的 dara-xrd/BGMN 路径;worker 也保留 xrd.refine 近似拟合能力用于零配置场景。
- 6 最终结果沉淀为 xrd-pro / xrd-analysis / plot artifact,用户可复制、导出或继续询问。
XPS:全谱识别、峰拟合与定量
- 1 detect_spectrum_type 先判断输入是否为 XPS survey、XRD、Raman 或通用曲线,避免错误工具链。
- 2 xps_validate_elements 或 xps.lookup 根据结合能参考线确认候选元素,并标出可能的干扰峰。
- 3 xps_charge_correct 可按 C 1s 或用户指定参考峰做电荷校正。
- 4 xps_fit_peaks 支持 Voigt / Gaussian / Lorentzian 类型拟合,并可结合 Shirley / Tougaard / linear 背景。
- 5 xps.quantify 使用 Scofield RSF 做相对定量;结果以结构化 payload 保留拟合、定量和校验标记。
- 6 交互式助手的文字结论会明确区分可靠赋值、需要局部拟合的区域和不建议过度解释的宽峰。
文献调研:outline、引用、分节草稿和最终报告
- 1 用户输入 /research 或自然语言任务后,research_plan_outline 生成 report artifact 骨架。
- 2 literature_search 通过 OpenAlex / arXiv / Crossref 组织候选文献和 metadata。
- 3 research_continue_report 会按 section 逐段推进,过程记录状态、引用数、进度和当前 section。
- 4 research_refine_report 负责连续性、重复段落、引用覆盖和结构自审。
- 5 research_finalize_report 将草稿收束为可导出的 research-report artifact。
- 6 已有 PDF 可进入 library,paper_rag_ask 允许基于本地论文库回答问题,而不是依赖模型记忆。
8. 计算与结构模块
Lattice 的计算工作台支持在本机环境中编写和运行 Python、LAMMPS、CP2K 等脚本。当前架构采用打包 conda 环境的路线,减少对 Docker 的依赖。
结构模块围绕 CIF 和 pymatgen 类工作流设计:从 CIF 创建 structure artifact,搜索本地 Materials Project CIF 数据库,构建简单晶体,生成超胞、掺杂、缺陷、表面,导出到 LAMMPS / CP2K。Compute artifact 和 job artifact 会记录命令、状态、日志、进度、收敛数据和结果 artifact。
因为 compute_run、workspace_bash、MCP/plugin 调用属于 hostExec,Lattice 会通过信任门控要求用户确认。这一点对于桌面科研软件尤其重要:交互式助手可以帮助用户准备脚本和发起执行,但不能绕过用户授权直接操作主机。
9. 权限、本地优先与可审计性
Lattice 的安全模型来自工具声明。每个工具显式标注 trustLevel 和 cardMode,编排器据此决定是否静默执行、只展示信息卡、要求 approve/reject,或要求用户编辑后再把结果交回编排流程。
safe sandboxed localWrite hostExec 10. 数据资产
Lattice-app 内置并可下载一批材料科学参考数据,用于离线或低配置分析。大型数据文件不直接放入 Git,而是通过 setup 脚本从 GitHub Release asset 下载。
| 数据 | 位置 | 作用 |
|---|---|---|
| XPS reference lines + Scofield RSF | worker/data/xps_*.json | 用于 XPS 结合能查表、元素校验和相对定量。 |
| Curated XRD references | worker/data/xrd_references.json | 小型内置参考集,支持非 Cu 波长的兜底检索。 |
| Raman references | worker/data/raman_references.json | RRUFF-derived 矿物库,包含特征峰和主峰权重。 |
| Materials Project XRD database | worker/data/mp_xrd_database.db | 约 784 MB,154,879 个物相,用于 XRD 主数据库检索。 |
11. 当前状态与边界
Lattice 当前重点是打通材料表征、结构建模、计算脚本和科研写作的工具链。账号认证用于连接授权接口服务;材料数据、工具调用和计算结果仍围绕本地工作区组织,并保留可审阅记录。
XRD 主流程包含 Materials Project 数据库检索和基于候选相的拟合。当前 xrd_refine 会通过 worker 的 dara-xrd/BGMN 路径处理 CIF 驱动的精修;worker 也保留 Pseudo-Voigt 多相拟合能力,用于不依赖完整 Rietveld 条件的场景。
Lattice 适合用来提高分析一致性和流程效率,不适合作为无人监督的最终结论来源。所有候选相、元素归属、Raman 匹配、定量结果和文献综述都应由材料科学用户结合样品背景与实验条件复核。