全能大学物理实验报告生成技能。根据讲义/照片/表格数据完成信息提取、数据处理、强制作图、OMML公式排版,并交付可下载 .docx 成品。若无法生成 .docx 必须失败返回,不得用纯文本替代。
Resources
5Install
npx skillscat add maochengqiu/physics-lab-report-generator Install via the SkillsCat registry.
SKILL.md
大学物理实验报告生成器(全能版)
1. 目标与触发
当用户要求生成大学物理实验报告(关键词如“实验报告”“物理实验”“数据处理”“.docx报告”)时,必须使用本技能。
本技能的唯一目标是:在沙盒内产出可提交的 .docx 成品(含公式、表格、图)。
2. 最终输出契约(强制,Fail-Closed)
- 完成条件是:成功生成并保存一个可下载的
.docx文件。 - 禁止用纯文本、Markdown、LaTeX正文、JSON说明替代
.docx成品。 - 若
.docx未成功生成并落盘,本次任务视为失败,必须返回失败原因与待补输入。 - 最终响应必须包含:
DOCX_STATUS: SUCCESS或DOCX_STATUS: FAILED- 成功时:
DOCX_PATH: <绝对路径> - 失败时:
FAILED_REASON: ...与REQUIRED_INPUTS: [...]
- 除状态字段与简短摘要外,不输出整篇报告正文;完整内容必须写入
.docx。 - 任一门禁失败(确认门/计算门/作图门/公式门/保存门)必须立即停止并返回失败态。
3. 输入协议
需要从用户资料中建立以下结构化输入:
- 实验基本信息:实验名、日期、姓名、班级、学号
- 实验内容:实验目的、原理、步骤、思考题
- 仪器信息:按“方法”分组的仪器与对应
Δ仪 - 原始数据:每种方法的原始测量表(逐值)
- 作图信息:坐标含义、单位、线性拟合阈值
γ0(默认 0.75)
若关键字段缺失,标注 ❓待确认 并阻断后续。
4. Skill A:实验信息提取与确认门
A1. 提取优先级
- 实验名称/目的:讲义 > 黑板 > PPT
- 原理/理论公式:讲义 > PPT
- 仪器与精度:讲义 > 实验说明
- 原始数据:手写记录表最高优先级
A2. 强制校验
必须逐项检查并列出问题:
- 小数点、正负号、上下标
- 手写易混字符(1/7、3/8、4/9、6/0)
- 跨图片冲突值(必须并列给用户选择,禁止擅自定值)
A3. 分方法 Δ仪 规则
- 每种测量方法必须绑定自己的仪器与
Δ仪 - 禁止所有方法共用一个
Δ仪 - 无法确认时必须列
❓待确认
A4. 确认门
输出“数据确认清单”并等待用户书面确认。未确认禁止进入计算。
5. Skill B:数据处理协议(直接量 + 间接量)
B1. 直接测量
必须完整执行并展示代入过程:
- 均值
[
\bar{x}=\frac{1}{n}\sum_{i=1}^n x_i
] - 样本标准差(分母必须
n-1)
[
\sigma=\sqrt{\frac{\sum_{i=1}^n(x_i-\bar{x})^2}{n-1}}
] - 坏值检验(3σ,循环到稳定)
- 列出全部 (|x_i-\bar{x}|)
- 若超限则剔除并重算,直到“无坏值”或“共剔除 k 个”
- 不确定度
[
\Delta X_A=\frac{\sigma}{\sqrt{n}},\quad
\Delta X_B=\frac{\Delta_{仪}}{\sqrt{3}},\quad
\Delta X=\sqrt{\Delta X_A^2+\Delta X_B^2}
]
B2. 间接测量
- 写函数关系式(如 (f=uv/(u+v)))
- 每个直接量独立完成 B1
- 先对直接量取均值,再代入函数求间接量均值(禁止先逐次算间接量再平均)
- 在均值处求偏导并代入
[
\Delta f=\sqrt{\sum_i\left(\frac{\partial f}{\partial x_i}\Delta x_i\right)^2}
]
B3. 修约口径(统一)
- 中间结果保留比最终结果多 2–3 位有效数字
ΔX采用“只进不舍”规则修约:- 首位为 1 或 2:保留 2 位有效数字
- 其他:保留 1 位有效数字
- 均值末位必须与
ΔX对齐 - 最终结果格式:
[
x=(\bar{x}\pm\Delta X)\times10^n\ \text{单位},\quad E=\frac{\Delta X}{\bar{x}}\times100%
]
6. Skill C:作图门(所有报告必做)
C1. 强制性
- 每份报告必须至少包含 1 张图(无图即失败)
- 若实验要求作图法/线性关系:必须执行
scipy.stats.linregress拟合图 - 若不适用线性拟合:必须提供趋势图或误差图
C2. 线性拟合输出
- 输出
k, b, r与拟合方程 - 比较
r与γ0并给出线性关系结论 - 图片保存为 300dpi PNG 并插入文档
C3. 作图失败策略
作图失败时必须返回:
DOCX_STATUS: FAILEDFAILED_REASONREQUIRED_INPUTS(例如缺 x/y 或单位)
禁止降级为纯文本报告。
7. Skill D:OMML 公式与 Word 生成
D1. 公式规则
- 所有数学公式必须使用 OMML(程序化构建)
- 禁止纯文本公式替代
- 同时有上下标时必须使用
subsup结构
D2. 文档排版
- A4 页面、标题/正文/表格字体按大学实验报告规范
- 公式居中并带编号
- 表格必须可读、列宽一致、标题清晰
D3. 报告结构
- 实验目的
- 实验原理(含关键公式)
- 实验仪器(按方法列
Δ仪) - 实验步骤
- 数据记录与处理(各方法独立)
- 图表与拟合结果
- 误差分析与讨论
- 实验结论
- 思考题
8. Skill E:自检门
E1. 数值自检
- 均值展开式正确
- 标准差分母为
n-1 - 坏值检验已循环至稳定
- 间接量偏导在均值处求值
- 修约符合本技能统一口径
E2. 作图自检
- 至少 1 张图已生成并插入文档
- 线性实验已包含
k,b,r与拟合结论
E3. 文档自检
- 所有关键公式为 OMML
.docx文件可打开,图表可见- 输出路径有效且可交付
任一项失败:立即修复并重跑自检,直至通过或返回失败态。
9. Workflow(执行顺序)
- 提取信息并生成确认清单(含冲突项与❓项)
- 等待用户确认(确认门)
- 完整数据处理(计算门)
- 强制作图并产出图像(作图门)
- 生成 OMML + Word 报告(公式门/保存门)
- 执行自检
- 输出状态:
- 成功:
DOCX_STATUS: SUCCESS+DOCX_PATH - 失败:
DOCX_STATUS: FAILED+FAILED_REASON+REQUIRED_INPUTS
- 成功:
10. 面向通用大模型的执行约束
为提高“少技能环境”的稳定性,执行时遵循:
- 先产出结构化确认清单,再计算
- 先产出图,再组装文档
- 先完成文件落盘,再返回对话摘要
- 对话中不输出整篇正文,避免替代文件交付
11. 弱模型友好一键路径(Qwen / DeepSeek 优先)
当执行模型不擅长多文件编排、OMML XML 构建或复杂 Python API 调用时,优先使用 scripts/one_click_report.py。
11.1 使用方法
- 只修改
REPORT_CONFIG顶层配置,不改底层函数。 - 必填字段:
experiment_namestudentobjective/principle/instruments/stepsmeasurements(每组含method,symbol,unit,delta_instrument,data)plot(每份报告必须有x_data,y_data,x_label,y_label,title)output_dir
- 运行:
python scripts/one_click_report.py。 - 只接受脚本输出的
DOCX_STATUS: SUCCESS作为完成信号。
11.2 弱模型禁止事项
- 禁止手写整篇 Markdown 报告替代运行脚本。
- 禁止绕过
plot配置;无图必须返回失败。 - 禁止省略计算过程;每组数据必须保留“算术均值、样本标准差、坏值检验、不确定度计算、修约与结果表示”五个小节。
- 禁止删除公式段落或代入展开式;均值、标准差、3σ准则、ΔA、ΔB、ΔX 都必须写入
.docx。 - 禁止直接改
omml_generator.py或report_generator.py来“碰运气”。 - 需要改动时只改
REPORT_CONFIG,除非明确知道底层代码含义。
11.3 失败处理
若脚本输出 DOCX_STATUS: FAILED,按 FAILED_REASON 与 REQUIRED_INPUTS 补齐配置后重跑;不得把失败结果改写成“文本版报告”。