# Jupyter AI Notebook 报错：重启内核后修复隐藏依赖并从头跑通

本包手写失败/修复Notebook，使用两个全新ipykernel真实执行：失败版NameError，修复版4行/总60/均值15。未运行Jupyter AI提出修复，也未操作JupyterLab桌面重启。

## 版本与门槛

Jupyter AI v3.2.0、JupyterLab4和另装Agent；参考复跑需nbformat、nbclient、ipykernel。BSD-3-Clause，模型计费由所选Agent决定。

## 操作步骤

1. 先复制失败Notebook和原数据

下载broken.ipynb与readings.csv，四台设备分钟数12、18、0、30。0是有效值，不能丢弃。先保留失败版，不要把之前内核里残留的readings变量当成文件中的定义。

2. 真实Restart后Run All重现错误

在JupyterLab重启该Notebook内核，再运行全部。第一格应在读取CSV之前使用readings，报NameError。若没报错，检查是否真的重启、当前文件是否是broken版；截图保留错误与Cell顺序。

3. 让Jupyter AI读取活动Notebook与错误

打开Chat，选择已配置的Agent，要求读取当前Notebook和错误，不只粘一行报错让它泛泛解释。使用prompt.md限定数据与断言不可改，避免Agent通过删除失败断言或改输入“修好”。

4. 检查修复是不是消除了依赖顺序

理想改动将CSV读取放到总额计算之前，最后再计算均值。要求全部依赖在Notebook内出现，不能依赖终端先运行过的变量；不需要为这道题安装额外数据平台或改变系统环境。

5. 保存副本，再清空输出重启

将实际修复保存为新Notebook，清空旧输出并重新启动内核，再Run All。执行编号和当前输出才表示这次运行；仅修复Cell单独运行成功不能证明整个Notebook从头可跑。

6. 对独立结果做断言

核对4行、总60、均值15，且D03的0分钟仍在。本站fixed-reference.ipynb为人工参考，executed-fixed-reference.ipynb保留真实新内核输出；它不是Jupyter AI生成过程的证明。

7. 用nbclient作第二条复跑路径

自己的Python环境装好nbformat/nbclient/ipykernel后运行run_fresh.py。脚本为失败与修复版各启动新内核，要求前者失败、后者成功；若内核找不到，配置自己的python3 kernelspec，不伪造成功输出。

8. 交付可复跑文件与错误依据

交付原CSV、失败版、修复版和实际执行输出，记录依赖版本与错误根因。教师/同事打开后应无需先点某个隐藏Cell。再次改代码后必须再跑全新内核，不能沿用旧的执行截图。

## 本地参考与运行

本包手写失败/修复Notebook，使用两个全新ipykernel真实执行：失败版NameError，修复版4行/总60/均值15。未运行Jupyter AI提出修复，也未操作JupyterLab桌面重启。

运行 `python3 verify.py` 检查材料；原生文档检查需要pypdf、openpyxl或lxml。需要重建参考时运行本包对应reference.py；这些脚本不调用模型。

## 官方来源

- https://github.com/jupyterlab/jupyter-ai/releases/tag/v3.2.0
- https://jupyter-ai.readthedocs.io/en/stable/releases/v3.2.0.html
- https://jupyter-ai.readthedocs.io/en/stable/users/index.html
- https://jupyter-ai.readthedocs.io/en/stable/getting-started.html
- https://github.com/jupyterlab/jupyter-ai/blob/main/LICENSE

## 素材身份与许可

本站原创教学输入与参考代码采用CC0-1.0；官方截图仅用于识别软件和说明操作入口，其版权归相应项目。工具与模型许可分别按官方来源执行。请勿将人工/参考算法文件描述成目标软件或模型的实际结果。
