需求一变,全部重来
- 需求 v1
- 人工程师手动改参数
- 人工程师在光学软件里逐项设置、触发优化和各项分析
- 人工程师逐张截图
- 人工程师手抄数字、拼报告
- 需求又变了——再从头走一遍
以前,需求一变,工程师就要从改参数、跑分析、截图、抄数到拼报告,整个重来一遍。现在,人只做三件事——说需求、确认、签核; 其余由 AI 编排、LensBench 计算,报告里的每个数都按证据 id 核对。
人做的事AI 助手软件计算
把最后一面的厚度改成近轴焦点 solve,看看总长变了多少。
先预演,还没写入:
-surf 6 R=-18.39533 T=42.20778 +surf 6 R=-18.39533 T=solve(marginal_height,0) -var R1..R6 T6 +var R1..R6
焦距、F 数都没变,总长长了约 0.23 mm。确认执行吗?
对话是示意;diff 与指标是 LensBench 在参照设计 Cooke 三片式上实算的输出。
对 AI 说一句话,它先预演:改了哪几个数、一阶量怎么变,都摆在你面前,你确认才真正写入。
想试一个方向就试:换一块玻璃、加厚一片、让 AI 跑一轮优化。哪里变好、哪里变坏,并排一看就清楚;不满意,一步回去。
处方差异面 1 T 3.26 → 4.00 · 面 3 玻璃 F2 → SF2 · 面 6 T 42.44 → 45.49
| 像质(复色) | 第 2 条改动之前 | 现在 | |
|---|---|---|---|
| RMS 0°(µm) | 16.02 | 7.53 | 变好 |
| RMS 14°(µm) | 21.17 | 30.14 | 变差 |
| RMS 20°(µm) | 23.42 | 24.88 | 变差 |
| MTF 0° T @ 45/mm | 0.206 | 0.521 | 变好 |
| MTF 14° T @ 45/mm | 0.649 | 0.021 | 变差 |
| MTF 20° T @ 45/mm | 0.072 | 0.271 | 变好 |
| 最大畸变(%) | 0.047 | 0.166 | 变差 |
演示:三条改动按 AI、手改、命令行三种来源记进同一份改动日志;日志、对比与回退都是 LensBench 实跑的输出(Cooke 三片式)。
AI 报一个数,你怎么知道它不是编的、不是过期的?每个分析结果都带证据 id,能追到是哪一次真实计算。
$ lb spot cooke.lens 点列图(µm,参考 chief,6 环) 视场 RMS@0.4861 RMS@0.5876 RMS@0.6563 RMS 复色 GEO 复色 ---- ---------- ---------- ---------- -------- -------- 0 3.830 4.695 6.455 5.112 9.591 14 15.939 17.634 19.443 17.730 48.313 20 13.008 12.142 13.921 13.044 37.506 证据 ev-77aeb49c1a
最后一行就是证据 id:凭它能查到这次计算用的模型、引擎和取样参数。
50 / 50
解析解金标准核对通过
期望值用独立公式算出,不调用 LensBench
27 / 29
公开设计与独立实现逐光线一致
往返重建后近轴量与光线落点对账,容差 1e-9;其余是已查明原因的口径差异
33 / 33
与商业软件逐项对照通过
3 个设计,期望值由商业软件直接算出;更多设置还在核,我们不说「完全等价」
数字取自 2026-10-18 的验证报告。
桌面端是主力,网页版用来先试,MCP 接你自己的 AI。桌面端、命令行和 MCP 走的是同一张命令表、同一个 Rust 内核,算出来的数一模一样。
3D 画布、表格、文本三处同步;改动时间线、复核与签核都在这里。计算在你的电脑上,设计留在你的电脑上。
下载免安装,在浏览器里先试、做演示;正式的项目放到桌面端做。
与桌面端并到同一个内核:进行中
打开 web.optic.chatClaude Code、Claude Desktop、Cursor、Cherry Studio、Trae 等客户端经 MCP 调用同一张命令表;lb mcp-config 一条命令配好。
把 AI 接进来近轴与实际光线追迹、光线瞄准、各种面型、玻璃色散,都在自研的 Rust 内核里算。光学核心是纯 Rust、没有第三方依赖; 大批光线分块并行,后台算的时候界面不卡。每张图、每个证据 id 都记着引擎构建号。
4–23×
局部优化提速
Cooke 三片式 2.7 s → 0.35 s;不做光线瞄准时结果逐位相同
5–8×
35 项分析整体提速
6 个参照设计上,逐项结果逐位相同
提速倍数:10-16 在开发机上实测,对照的是基于 Python 的参照实现。
从处方、分析、优化到出报告,同一份文本,同一套命令。
表格、文本、命令三处实时同步:在表格里改一个半径,文本里只变那一个数,注释和排版原样保留。
玻璃按「厂商:牌号」精确匹配,绝不悄悄换成别的玻璃;也能直接用你自己的 AGF 玻璃库,13 种色散公式都支持。
点列图、光扇、MTF、场曲畸变、Seidel……每张图都有同一份数据的数字页。
efl target=50mm tol=1%✓ 50.0214 mmdistortion max=1%✓ 0.06155 %mtf freq=30/mm field=0.7 dir=T min=0.3✗ 0.1638评价函数用熟悉的操作数名,验收规格单独写;改完设计,以 verify 的结论为准。
让 AI 写脚本:打开镜头、调操作数、取分析数据、出图,结果直接落在本地文件里。人也能自己写,写法是 numpy 风格。
from lensbench.workspace import Lens L = Lens("cooke.lens") L.effl() # 50.0214 L.plot("spot", out="spot.png")
设计是你电脑上的一个文本文件,光学计算也在你的电脑上跑。
.lens 是纯文本:放进 git 做版本对比和回滚,发给同事直接能开;随时导出 .zmx 带走,不被锁在一个软件里。
.lens 指南只用桌面端和命令行时,设计不离开你的电脑。接 AI 时,设计发给哪家模型由你选的客户端决定; AI 只能读写你指定的项目目录,设计文件里的文字一律当数据、不当指令。
AI 的安全边界「AI 越能干,这道确认就越重要。」
双高斯
EFFL 100 mm · F/5 · 半视场 14°
examples/double_gauss.lens
Cooke 三片式
EFFL 50.02 mm · F/5 · 半视场 20°
examples/cooke_triplet.lens
Petzval
EFFL 50.58 mm · F/1.4 · 半视场 7°
examples/petzval.lens
远摄
EFFL 127.02 mm · F/5.6 · 半视场 10°
examples/telephoto.lens
广角
EFFL 16.67 mm · F/4 · 半视场 50°
examples/wide_angle.lens
折转反射镜
EFFL 49.21 mm · F/4.92 · 半视场 3°
examples/fold_mirror.lens
抛物面反射镜
EFFL 100 mm · F/5 · 半视场 0.5°
examples/parabola.lens
单透镜
EFFL 50.84 mm · F/5.08 · 半视场 5°
examples/singlet.lens