MaochengQiu

physics-lab-report-generator

全能大学物理实验报告生成技能。根据讲义/照片/表格数据完成信息提取、数据处理、强制作图、OMML公式排版,并交付可下载 .docx 成品。若无法生成 .docx 必须失败返回,不得用纯文本替代。

MaochengQiu 1 Updated 1w ago

Resources

5
GitHub

Install

npx skillscat add maochengqiu/physics-lab-report-generator

Install via the SkillsCat registry.

SKILL.md

大学物理实验报告生成器(全能版)

1. 目标与触发

当用户要求生成大学物理实验报告(关键词如“实验报告”“物理实验”“数据处理”“.docx报告”)时,必须使用本技能。

本技能的唯一目标是:在沙盒内产出可提交的 .docx 成品(含公式、表格、图)。

2. 最终输出契约(强制,Fail-Closed)

  1. 完成条件是:成功生成并保存一个可下载的 .docx 文件。
  2. 禁止用纯文本、Markdown、LaTeX正文、JSON说明替代 .docx 成品。
  3. .docx 未成功生成并落盘,本次任务视为失败,必须返回失败原因与待补输入。
  4. 最终响应必须包含:
    • DOCX_STATUS: SUCCESSDOCX_STATUS: FAILED
    • 成功时:DOCX_PATH: <绝对路径>
    • 失败时:FAILED_REASON: ...REQUIRED_INPUTS: [...]
  5. 除状态字段与简短摘要外,不输出整篇报告正文;完整内容必须写入 .docx
  6. 任一门禁失败(确认门/计算门/作图门/公式门/保存门)必须立即停止并返回失败态。

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. 直接测量

必须完整执行并展示代入过程:

  1. 均值
    [
    \bar{x}=\frac{1}{n}\sum_{i=1}^n x_i
    ]
  2. 样本标准差(分母必须 n-1
    [
    \sigma=\sqrt{\frac{\sum_{i=1}^n(x_i-\bar{x})^2}{n-1}}
    ]
  3. 坏值检验(3σ,循环到稳定)
  • 列出全部 (|x_i-\bar{x}|)
  • 若超限则剔除并重算,直到“无坏值”或“共剔除 k 个”
  1. 不确定度
    [
    \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. 间接测量

  1. 写函数关系式(如 (f=uv/(u+v)))
  2. 每个直接量独立完成 B1
  3. 先对直接量取均值,再代入函数求间接量均值(禁止先逐次算间接量再平均)
  4. 在均值处求偏导并代入
    [
    \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: FAILED
  • FAILED_REASON
  • REQUIRED_INPUTS(例如缺 x/y 或单位)
    禁止降级为纯文本报告。

7. Skill D:OMML 公式与 Word 生成

D1. 公式规则

  • 所有数学公式必须使用 OMML(程序化构建)
  • 禁止纯文本公式替代
  • 同时有上下标时必须使用 subsup 结构

D2. 文档排版

  • A4 页面、标题/正文/表格字体按大学实验报告规范
  • 公式居中并带编号
  • 表格必须可读、列宽一致、标题清晰

D3. 报告结构

  1. 实验目的
  2. 实验原理(含关键公式)
  3. 实验仪器(按方法列 Δ仪
  4. 实验步骤
  5. 数据记录与处理(各方法独立)
  6. 图表与拟合结果
  7. 误差分析与讨论
  8. 实验结论
  9. 思考题

8. Skill E:自检门

E1. 数值自检

  • 均值展开式正确
  • 标准差分母为 n-1
  • 坏值检验已循环至稳定
  • 间接量偏导在均值处求值
  • 修约符合本技能统一口径

E2. 作图自检

  • 至少 1 张图已生成并插入文档
  • 线性实验已包含 k,b,r 与拟合结论

E3. 文档自检

  • 所有关键公式为 OMML
  • .docx 文件可打开,图表可见
  • 输出路径有效且可交付

任一项失败:立即修复并重跑自检,直至通过或返回失败态。

9. Workflow(执行顺序)

  1. 提取信息并生成确认清单(含冲突项与❓项)
  2. 等待用户确认(确认门)
  3. 完整数据处理(计算门)
  4. 强制作图并产出图像(作图门)
  5. 生成 OMML + Word 报告(公式门/保存门)
  6. 执行自检
  7. 输出状态:
    • 成功: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 使用方法

  1. 只修改 REPORT_CONFIG 顶层配置,不改底层函数。
  2. 必填字段:
    • experiment_name
    • student
    • objective / principle / instruments / steps
    • measurements(每组含 method, symbol, unit, delta_instrument, data
    • plot(每份报告必须有 x_data, y_data, x_label, y_label, title
    • output_dir
  3. 运行:python scripts/one_click_report.py
  4. 只接受脚本输出的 DOCX_STATUS: SUCCESS 作为完成信号。

11.2 弱模型禁止事项

  • 禁止手写整篇 Markdown 报告替代运行脚本。
  • 禁止绕过 plot 配置;无图必须返回失败。
  • 禁止省略计算过程;每组数据必须保留“算术均值、样本标准差、坏值检验、不确定度计算、修约与结果表示”五个小节。
  • 禁止删除公式段落或代入展开式;均值、标准差、3σ准则、ΔA、ΔB、ΔX 都必须写入 .docx
  • 禁止直接改 omml_generator.pyreport_generator.py 来“碰运气”。
  • 需要改动时只改 REPORT_CONFIG,除非明确知道底层代码含义。

11.3 失败处理

若脚本输出 DOCX_STATUS: FAILED,按 FAILED_REASONREQUIRED_INPUTS 补齐配置后重跑;不得把失败结果改写成“文本版报告”。