CapSci 科研工作台:设计原则与操作介绍(v2)

状态:界面设计稿,尚未实现。更新日期:2026-10-20。 设计约束见 DESIGN.md 与 FRONTEND_DESIGN.md。 截图中的结构图由 ASE 与 3Dmol.js(py3Dmol)实际生成,曲线由 matplotlib 实际绘制;能量、受力等数值是样例数据,见第 5 节。

1. CapSci 是什么

CapSci 是研究员做材料计算的桌面 Agent。它的使用方式和 Claude Code、Codex 这类 Agent 一样:从对话开始,过程在对话里推进。区别在于它只调用人工批准过的计算能力,参数来源、批准和演示标记都会明确展示。

一次完整的计算是这样的:你用一句话描述目标,CapSci 从已批准的能力里匹配固定流程,在对话里向你确认几个关键值,你批准后开始计算,运行进度和结果都回到同一段对话里;需要细看的内容在右侧窗格打开。

2. 设计原则

2.1 对话主导

2.2 分区原则:对话讲过程,右侧放对象

所有篇幅大的内容都定义成有编号的对象:运行、结构、计算方法、计算单、流程、文件、运行依据。

放在对话里 放在右侧窗格
需要你决定的事:补参、确认单位、"开始计算?" 3D 结构查看器、超胞、对比初始结构
一句话结论,例如"第 17 步收敛" 完整收敛曲线、多条曲线、日志末尾
工具调用的单行记录 OUTCAR、OSZICAR、文件预览
对象的摘要卡:状态、一两个关键数字、一张缩略图 完整参数表单、各修订之间的对比
决定完成后的一行记录,例如"✓ 14:06 批准开始计算" 流程编排、运行依据

判断规则:

2.3 决策原则:决策留在对话,细节放右侧

标准是:一个人只看对话、不打开右侧,也能安全地做出这个决定。右侧是用来深入核对的,不是必经之路。

情况 对话里 右侧
简单确认:单位、一个缺参、二选一 全部在对话里,一个输入框或两个按钮就能完成 不用
复杂补参:缺好几项,或需要对照 只列缺失和待确认的项,显示"已填 7/7 · 待确认 1" 完整参数表单;改动实时同步回对话卡片
开始计算前的批准 流程与版本、你定的值、默认值、提醒、环境、演示性质、三个按钮 完整计算单、参数传递、和上一修订的差异

配套规则:

  1. 会改变决定的信息(缺失值、警告、演示标记、未确认的来源)必须出现在对话里。
  2. 按钮只有一套状态:右侧计算单底部的"开始计算"和对话里的是同一个操作。
  3. 做完决定,卡片收成一行记录,可以重新展开。
  4. 等待中的决定要看得见:输入框上方显示"等你确认 N 项",左侧会话也显示,按 Enter 确认当前项。
  5. 对话里出现新的待决定事项时,右侧不自动跳转,避免打断你正在看的内容。

2.4 对象与组件

2.5 图样实现原则

2.6 流程编排的三层

层 位置 内容 谁能操作
运行块 对话里 某一次 Skill 执行:步骤进度、当前步骤、关键数值 研究员查看
流程编排 右侧窗格(只读) manifest 的步骤、参数传递、本次运行在每步的状态、运行规则 研究员查看
能力管理 独立视图 草案、待审核、已启用;manifest 差异;审核清单;批准、启用、停用 只有批准人

Agent 在对话里最多可以起草流程草案并提交审核;草案在扫描目录之外暂存,批准前不会被导入或执行;"批准并启用"只在能力管理里出现。

2.7 可信原则

3. 界面结构

结果画面:左侧会话,中间对话,右侧窗格打开 3D 结构
结果画面:左侧会话,中间对话,右侧窗格打开 3D 结构
区域 内容
左侧栏 按项目分组的会话,每条显示状态(等你确认、运行中、已完成、失败);底部是能力库、能力管理、设置
中间对话 用户消息、工具调用行、决定记录、对象摘要卡、待决定卡;底部输入框
右侧窗格 打开的对象,以标签页呈现:计算方法、计算单、运行、结构、流程

4. 操作案例:Ni–Mo 的 SQS 生成与结构弛豫

4.1 首次启动与项目(沿用简图)

简图 A:首次启动
简图 A:首次启动
  1. 启动后本地服务自动运行;选择工作目录;连接模型(只验证连通,不代表科学能力);给第一个项目起名,也可以用"默认项目"。计算软件不在这里配置,第一次用到时在对话里配。
简图 B:项目
简图 B:项目
  1. 项目只用来组织会话和文件,不影响能力选择和参数。新建项目只需要名称,文件夹自动生成。

4.2 描述目标,在对话里完成简单确认

1 · 匹配与简单确认
1 · 匹配与简单确认
  1. 输入"生成 Ni₀.₈₇₅Mo₀.₁₂₅ 的 FCC SQS,并进行结构弛豫"。对话里出现两行工具调用:读取能力目录、匹配能力,选定 sqs_vasp_relax。
  2. 两个简单决定直接在对话里完成:组分是原子分数还是质量分数(两个按钮),以及初始晶格常数 a₀(一个输入框)。也可以直接用一句话回复。此时右侧窗格是收起的。

4.3 复杂补参:右侧打开完整计算方法

2 · 复杂补参
2 · 复杂补参
  1. 点"查看完整计算方法(7 项)",右侧打开表单,按流程步骤分组,每项带来源标记。
  2. 对话里只保留待确认的一项(主元素 Ni,从描述中提取)。在右侧或对话里确认都行,两边同步。

4.4 批准开始计算

3 · 开始计算前的批准
3 · 开始计算前的批准
  1. 本机还没配过 VASP 时,CapSci 会在对话里列出自动检测到的 vasp_std,点一下即可使用,配置结果留在对话里成为一行记录。
  2. 批准卡列出:流程与版本、你定的值、默认值、提醒、环境、演示性质、预计时长。按 Enter 或点"开始计算";右侧同时打开完整计算单,底部按钮是同一个操作。

4.5 运行中

4 · 运行中
4 · 运行中
  1. 对话里是运行摘要卡:当前步骤、离子步、最大受力、已用时间,加一条受力趋势线。
  2. 右侧自动打开一次运行对象:收敛曲线每个离子步刷新,步骤列表、OSZICAR 末尾。"停止生成回复"和"取消运行"是两个操作,取消需要再确认。

4.6 结果

5 · 结果
5 · 结果
  1. 对话里是一句结论和结果摘要卡(结构缩略图、每原子能量、晶格常数、最大受力),带演示标记,下面是后续操作。
  2. 右侧打开 3D 结构:旋转、缩放、换样式、对比初始结构,下方是结果表和文件。
3Dmol.js 渲染的弛豫后超胞
3Dmol.js 渲染的弛豫后超胞

4.7 失败

6 · 失败
6 · 失败
  1. 失败卡说明在哪一步、因为什么停下、有限重试用到哪里、错误码和诊断编号,以及"不会自动换方法"。
  2. 右侧是诊断:电子步 |ΔE| 曲线(两次重试都在 1e-4 附近振荡)、重试记录、OSZICAR 末尾、保留的中间文件。点"修改参数,新建任务"回到补参。

4.8 查看流程编排

7 · 流程编排
7 · 流程编排
  1. 在对话里问"这个流程是怎么编排的",或点运行块的"查看编排",右侧以只读方式打开:输入值、每一步调用的工具、参数如何从上一步传过来、本次运行在每步的状态、运行规则。

4.9 能力管理:审核 Agent 起草的流程

8 · 能力管理
8 · 能力管理
  1. 研究员在对话里说"先只算静态能量看看",Agent 起草了 sqs_vasp_static 并提交审核。批准人在能力管理里看到 manifest 差异和审核清单:两项自动检查已通过,四项人工审核勾完前"批准并启用"不可用。批准后从下一个任务起生效。

4.10 计算环境(设置)

简图 E:计算环境
简图 E:计算环境
  1. 设置里的计算环境是统一的"软件与资源"列表,字段由能力声明。通常不用专门来配:缺什么会在对话里提示,就地补上。

5. 图样是怎么做出来的

截图里的科学图样都是用真实的库生成的,脚本和产物在 figures/:

图样 生成方式
Ni–Mo 超胞(32 原子,4 个 Mo) ASE 3.29 建 2×2×2 FCC 常规胞,按最远点选 4 个位点替换为 Mo,导出 POSCAR_initial、CONTCAR、CIF(gen.py)
3D 结构图 py3Dmol 2.5(3Dmol.js)渲染 CIF,无界面 Chrome 截图(render3d.py)
收敛曲线、趋势线、自洽失败曲线 matplotlib 3.11(gen.py)

说明:

6. 与当前实现的差距

7. 截图清单

文件 内容
img/01-match.webp 匹配与简单确认(对话内完成)
img/02-params.webp 复杂补参(右侧计算方法)
img/03-approve.webp 开始计算前的批准
img/04-running.webp 运行中(右侧实时详情)
img/05-result.webp 结果(右侧 3D 结构)
img/06-failed.webp 失败(右侧诊断)
img/07-flow.webp 流程编排(右侧只读)
img/08-admin.webp 能力管理(审核 Agent 起草的流程)
img/A-first-launch.webp、B-projects.png、E-environment.png 沿用的低保真简图
img/struct_big.webp、conv_done.png、scf_fail.png 生成的科学图样原图